tickfoundry
capture livesign inget the data →
§ research / 001

Anatomy of a last-minute goal:
Spain–Belgium through the order book.

world cup 2026microstructureTickFoundry Research · 2026-07-11 · data: 2026-07-10, all times UTC

Spain beat Belgium 2–1 in Friday's World Cup quarterfinal, and until the 89th minute they were heading out of regulation tied. Then Mikel Merino scored, 117 seconds after coming on. On Polymarket, the "Will Spain win on 2026-07-10?" market repriced from 26¢ to 90¢ — a 62-point move, 80% of it inside 0.65 seconds.

Everyone can see that move in a price chart. What a price chart can't show is what happened inside the market while it moved: the spread blowing out to 31¢, resting liquidity evaporating to $1.3k, and the first aggressive fill landing 35 milliseconds before the book itself had visibly repriced. Polymarket's order book runs off-chain, so none of this is in on-chain data. We record the live book feed — every quote, every level, every fill, with nanosecond receive timestamps. This note is what that data shows for one match.

The market

The main match event carried three markets — Spain win, Belgium win, draw. Across their six outcome tokens we recorded $11.1M in fills (56,914 trades) on the day, $5.9M of it in-play, and 135,504 top-of-book updates during the match window alone (the World Cup series as a whole produced 7.2M book updates that day). For open play the book was tight: time-weighted spread of 0.24¢ pre-match, 0.28¢ in the first half, 0.29¢ in the second. Prediction markets get called illiquid; a sub-0.3¢ spread on a coin-flip-priced contract is anything but — until news hits.

Line chart of implied win probability for Spain, Belgium and the draw through the match, with the three goals marked
Fig 1 — mid-price of the three match markets, 5s samples. Ruiz's opener (19:29:53), De Ketelaere's equalizer (19:40:43), Merino's winner (20:49:29). Note the draw (amber) grinding from 28% to 68% as regulation wound down 1–1.

Three goals, three repricings

Each goal is a natural experiment: how fast does a prediction market absorb a discrete, unambiguous news shock? Measured from our receive clock, anchored on the first ≥3¢ move of the Spain-YES mid:

goalbook time (UTC)spain-yes mid80% repriced inmax spreadbook-move → first print
1–0 Fabián Ruiz19:29:53.25658¢ → 78¢1.20 s22¢+217 ms
1–1 De Ketelaere19:40:42.98983¢ → 57¢0.39 s11.8¢+167 ms
2–1 Mikel Merino20:49:29.25826¢ → 90¢0.65 s31¢−35 ms

The last column is the interesting one. On the first two goals the pattern is what you'd expect: market makers pull and reprice their quotes, and the first aggressive fill at the new level prints ~200ms behind the book. On the winner, it inverts — the first ≥3¢-away fill lands 35ms before the book's own mid has moved 3¢. The fastest reaction to Merino's shot wasn't a maker pulling quotes; it was a taker lifting stale offers.

Step chart of best bid and ask for Spain YES in the sixty seconds around the winning goal, with individual trades overlaid
Fig 2 — Spain YES top of book, 20:49:15–20:50:15, every update. Dots are individual fills, sized by USD. The book goes from a 0.3¢ spread at 26¢ to a 31¢ spread, reprices, and is quoting ≤1¢ wide again ~7 seconds after the goal. Peak message rate: 146 book updates in one second.

How much stale liquidity was actually there to take? Less than the folklore suggests. In the goal window, Spain-YES traded $679k across 1,673 fills — but only $13.5k of it filled at 60¢ or below. The "free money" a fast trader could theoretically harvest from slow quotes was two hundred-odd small fills that were gone within instants. Everything else printed at the new price. If your backtest assumes you could buy size at stale prices during goals, the tape disagrees.

Liquidity saw it coming

The depth story is just as telling. Through the second half, resting size within 1¢ of the Spain-YES mid drained from ~$60k to under $10k — makers de-risking a binary that any goal would gap. At the print it touched $1.3k. Then, with the uncertainty resolved, liquidity came back bigger than before: ~$45k median in the minutes after, with prints of resting depth above $100k.

Area chart of resting depth within one cent of mid for Spain YES, collapsing into the goal and recovering larger afterwards
Fig 3 — resting depth within 1¢ of mid, Spain YES, 30s median. Thin into the goal, near-zero at the print, double afterwards. Classic event-risk liquidity: it's there except exactly when you need it.

If you trade — or backtest — these markets

  • Touch-price fills are fiction during events. The book was ≤0.3¢ wide for 100+ minutes and 31¢ wide for the seconds that decided the P&L.
  • Speed pays takers, not just makers. The first fill beat the visible repricing. But the pot for being fastest (~$13.5k at ≤60¢) is smaller than it looks.
  • Depth is regime-dependent. Sizing a strategy off average depth would overstate executable size ~25× at exactly the moments the strategy trades.
  • Whales position early. The day's largest fills were pre-match: $183k of Belgium YES at 17¢ (18:25) and $162k of Spain YES at 59¢ (18:45) — not in-play punts.

Methodology & data

Source: TickFoundry's recording of Polymarket's market websocket (the live CLOB feed), normalized to L1 top-of-book updates, full 25-level L2 snapshots per update, and per-fill trades, each with a nanosecond receive timestamp from our collector. Times here are our receive times, not exchange matching times. "Mid" is (best bid + best ask)/2; depth is resting size within 1¢ of mid, both sides, in USD; time-weighted spread weights each quote by its lifetime; volumes sum price×size per fill for the three match markets (one leg per fill). Event 676288, markets 2829164/66/67 — the same slice, as parquet, is what we sell.

Run this analysis yourself.

Every number above comes from three parquet files anyone can load in pandas. Grab a free sample bundle to see the exact schema, or pull any market-day from the catalog. The France–Spain semifinal is Tuesday — we'll be recording.

Free sample →Browse the catalog