All posts
ResearchBacktestingArbitrageStrategy Research

The Polymarket Spot-Lag Edge Is Real. It Is Also About $100 Deep.

Buy the side that spot has already confirmed, before Polymarket reprices. Unlike most strategies people claim, this one survives contact with the data — with a z-score of 15. The reason it hasn't made everyone rich is sitting in the order book.

12 min read

There is a story that circulates every few months: a bot turns a few hundred dollars into several hundred thousand trading Polymarket crypto Up/Down markets, with a win rate around 98%. The described mechanism is always the same — it does not predict anything. It watches spot on Binance or Coinbase, and when the move is already confirmed but Polymarket has not repriced yet, it buys the side that has effectively already won.

Most strategy claims fall apart the moment you test them. This one does not. We measured it across thousands of trades on real order book snapshots and the edge is not just present, it is overwhelming — a z-score of 15.22 at the best entry point.

Then we measured how much money you can actually put through it.

The test

  • Universe: every resolved BTC, ETH and SOL 5-minute Up/Down market in the archive, 5 August – 5 September 2026.
  • Signal: at the entry moment, compare the snapshot's spot reference price to the market's opening reference price. If spot is above the open, Up is currently winning.
  • Trade: buy the side spot implies, at the ask.
  • Filter: only when spot has already moved by at least a given number of basis points — the "confirmed move" the strategy depends on.
  • Exclusions: markets where either side has no resting asks. No offer means no trade.

Result 1: the edge scales with the size of the move

Spot move at T−60sTradesAvg costWin rateEdgeROIzVerdict
< 2bps (flat)6,08268.51¢68.61%+0.10pp+0.15%0.18Noise
2–5bps5,44884.44¢84.71%+0.27pp+0.31%0.54Noise
5–10bps3,65889.72¢91.25%+1.53pp+1.71%3.28Significant
10–20bps1,45690.95¢95.26%+4.31pp+4.74%7.74Significant
20bps+32391.59¢96.90%+5.32pp+5.80%5.52Significant
Entry 60 seconds before expiry. The pattern is monotonic — the bigger the confirmed move, the more the market underprices it.

When spot has barely moved, the market prices it correctly — +0.10pp is nothing. As the move gets larger the market falls further behind: at 10–20bps it is underpricing the implied side by 4.31 percentage points, and at 20bps+ by 5.32.

The monotonicity is what makes this credible. A spurious result would be noisy across buckets. This one increases cleanly with signal strength, in the direction the mechanism predicts — exactly what a real inefficiency looks like.

Result 2: timing dominates everything

Holding the signal constant at ≥10bps and varying only when you enter produces the single biggest effect in the study.

Entry pointTradesAvg costWin rateEdgeROIz
180s before expiry4,54687.63¢88.32%+0.69pp+0.79%1.45 (noise)
60s before expiry1,45690.95¢95.26%+4.31pp+4.74%7.74
30s before expiry59580.55¢94.62%+14.08pp+17.48%15.22

At three minutes out the same signal is worth nothing — z = 1.45, indistinguishable from noise. At sixty seconds it is worth 4.74%. At thirty seconds it is worth 17.48%.

The mechanism is intuitive once you see it. With three minutes left, a 10bps move genuinely can reverse, so the market is right not to price it as settled. With thirty seconds left the same move is close to decisive — but the quotes have not caught up. Note the average cost actually falls to 80.55¢ at T−30s while the win rate stays above 94%: the market is offering 80¢ for something that resolves in your favour 19 times in 20.

Result 3: the constraint nobody screenshots

An edge is worth the money you can put through it. So we measured the dollar notional resting within one cent of the ask at the moment each signal fired.

Spot moveSignalsMedian $ available25th pct75th pct
< 5bps11,530$80$26$245
5–10bps3,658$123$48$329
10–20bps1,456$114$46$288
20bps+323$90$23$222
Notional available within 1¢ of the best ask on the side the signal points to, at the moment of entry.

The median opportunity is about $114 deep. A quarter of them are under $50. That reframes everything above:

10–20bps at T−60s≥10bps at T−30s
ROI per trade+4.74%+17.48%
Median size available~$114~$114
Profit per opportunity~$5.40~$19.90
Opportunities in 31 days1,456595
Theoretical monthly ceiling~$7,900~$11,800
Upper bounds assuming you win every race, fill the full median size at the top of book, and pay no fees. You will not.

Why this edge survives

Most documented inefficiencies get arbitraged away. This one persists, and the depth data explains why: it is too small to be worth industrialising and too fast to be captured casually.

  • Capacity is the moat, inverted. A fund that needs to deploy millions cannot use a $114-deep opportunity. The edge is only interesting to someone operating at hobbyist size, which keeps competition thin.
  • It is a latency race, not an analysis edge. The information is public and unambiguous — spot moved. Everything comes down to who reaches the stale quote first. Milliseconds decide it, not insight.
  • Taking liquidity means someone is losing. The counterparty is a market maker whose quote is stale. As makers tighten their reaction time, the window narrows. The edge you measure today is partly a measure of how slow the current makers are.
  • The window is structurally short. Concentrated in the final 30–60 seconds of a five-minute market, several times an hour, per coin.

If you are going to build it

  1. Stream, do not poll. At T−30s a polling loop is already too late. Subscribe to the CLOB market channel and a spot feed — see the WebSocket guide.
  2. Measure your own latency before writing strategy code. If your signal-to-order path is over ~200ms, the quote is gone. This is an infrastructure project with a strategy attached, not the reverse.
  3. Size to the book, not to your conviction. Read the resting depth and cap the order at what is actually there. Walking the book converts a 17% edge into a loss faster than anything else in this study.
  4. Expect a lower win rate live. You will get filled preferentially on the trades that are about to go wrong — the quote sitting there at T−30s is sometimes stale for a reason. Adverse selection is not modelled in any of the numbers above.
  5. Test the cancel path first. See how to build a Polymarket trading bot.

Honest limitations

  • One month. 5 Aug – 5 Sep 2026. A calmer or wilder month would give different numbers.
  • Top-of-book fills assumed. We charge the best ask for the whole trade. Real fills are worse.
  • No adverse selection modelled. In production, the trades you win the race for are disproportionately the ones the maker wanted to cancel.
  • No fees, gas or infrastructure cost. A colocated setup to win these races is not free, and the ceiling above is roughly the cost of a modest server.
  • Sample shrinks at T−30s. 595 trades, versus 1,456 at T−60s — fewer snapshots that close to expiry with both sides quotable. The z-score is high, but the estimate rests on less data.
  • The counterparty adapts. This measures how slow market makers were in one month, not a permanent property of the market.

That said, this is the only strategy we have tested on this data that produces a large, monotonic, statistically overwhelming edge. Compare it with buying favourites, which wins 97.70% of the time and still loses money.

The distinction between the two is the whole lesson: an edge comes from being right about something the price has not absorbed yet, not from being right about the outcome. Everyone at T−30s knows which side is winning. Only the stale quote is worth anything.

All of it was computed from PolyTest snapshots — spot reference price, both sides' asks, and 8 levels of book depth at sub-second resolution. Polymarket's own API cannot support this test: a resolved market's book returns 404 and its price history returns 200 with an empty array. Start free to run your own version.

Frequently asked questions

Is the Polymarket spot-lag arbitrage strategy real?
Yes, measurably. Across BTC, ETH and SOL 5-minute markets over 31 days, buying the side already implied by a confirmed spot move produced a statistically overwhelming edge: +4.31 percentage points at 60 seconds before expiry when spot had moved 10-20bps (z = 7.74), rising to +14.08 percentage points at 30 seconds before expiry (z = 15.22). The edge increases monotonically with the size of the spot move, which is what a genuine inefficiency looks like.
How much money can you make with Polymarket lag arbitrage?
Far less than the returns suggest, because the opportunities are shallow. The median notional resting within one cent of the ask when the signal fires is about $114, so a 17.48% edge is roughly $20 per opportunity. With 595 qualifying opportunities in a month at the 30-second entry, the theoretical ceiling is around $11,800 — assuming you win every race, fill the full median size, and pay no fees. Real results are materially lower.
Are the viral Polymarket bot win rates fake?
Not necessarily. A 94.62% win rate at 30 seconds before expiry is exactly what our data shows for this strategy, and tighter filters would push it higher. What the screenshots omit is order book depth — the edge only exists in roughly $100 clips — and the fact that win rate says nothing about return on a fixed-payout contract until you know the entry price.
Why hasn't the Polymarket lag edge been arbitraged away?
Because its capacity is too small to attract serious capital and its speed requirement is too high for casual traders. A fund deploying millions cannot use a $114-deep opportunity, so competition stays thin. It is also a pure latency race on public information rather than an analytical edge, and it depends on how slowly current market makers update their quotes — as they get faster, the window narrows.
When is the best time to enter a Polymarket Up/Down trade?
For this strategy, as late as your infrastructure allows. The same 10bps spot signal is worth nothing 180 seconds before expiry (+0.69pp, z = 1.45), +4.31 percentage points at 60 seconds, and +14.08 percentage points at 30 seconds. The market prices confirmed moves progressively worse as expiry approaches, so the edge lives almost entirely in the final minute.
What data do you need to backtest a Polymarket arbitrage strategy?
Point-in-time snapshots containing both sides' ask prices, the spot reference price at the same instant, and order book depth — the depth is essential, because without it you cannot tell whether an edge is tradeable in size. Polymarket's API cannot provide this for resolved markets: the book returns 404 and price history returns an empty array. You need an archive recorded while markets were running.

Get the historical data Polymarket does not keep

PolyTest records Polymarket crypto Up/Down markets as they run — 240M+ snapshots with 8 levels of order book depth, sub-second timestamps, and resolved markets preserved. Free tier, no card.

Keep reading