Polymarket CLOB WebSocket vs Hourly Archives: Why Resolution Decides Your Backtest
The difference between a Polymarket backtest you can trade on and one that lies is usually not how much data you have — it's how it was sampled.
Event-driven capture records the Polymarket order book on every change, straight from the CLOB websocket; a fixed-interval archive samples it on a clock (say once an hour) and discards everything between samples. For short-dated crypto markets that settle in minutes, interval sampling captures only a frame or two of a market's entire life — which is why resolution, not file size, decides whether a backtest is trustworthy.
What 'resolution' actually means
Resolution is how often the state of the book is recorded. There are two fundamentally different approaches. Fixed-interval sampling takes a snapshot on a clock — every hour, every minute, every few hundred milliseconds — regardless of what the market did. Event-driven capture records a snapshot whenever the book actually changes: a new order, a cancel, a trade.
The two can produce files of similar size and yet carry completely different information. An interval sample of a quiet market wastes rows on an unchanging book; an interval sample of a fast market misses the moves that matter.
The short-dated market problem
Polymarket's up/down crypto markets settle in 5 to 60 minutes. Consider a 5-minute BTC market. An hourly archive might capture it zero or one times — you may not even have a single book from the market's entire life. A per-minute archive gives you about five frames, none of them aligned to the moments your strategy would actually have acted.
Event-driven capture, by contrast, records every re-quote and trade as it happens, so the full arc of the market — the open, the moves as spot ticks, the widening spread into settlement — is all there to replay.
Side by side
| Hourly archive | Per-minute sample | Event-driven (DepthFeed) | |
|---|---|---|---|
| 5-minute market coverage | 0–1 frames | ~5 frames | Every change |
| Captures spread widening | No | Rarely | Yes |
| Slippage measurable | No | Approximate | Yes |
| Aligns to spot moves | No | Coarsely | Tick for tick |
| Live delivery | n/a | n/a | ~10 ms median (measured) |
Why almost nobody keeps event-driven depth
Recording every book change in real time is expensive: it means holding a live websocket connection per market, persisting every frame, and never being able to backfill what you didn't capture — order-book history cannot be reconstructed after the fact. That is why exchanges don't serve their own book history and most archives stop at a sampled last price. DepthFeed exists specifically to record and serve that event-driven depth.
Key takeaways
- 01Resolution is about sampling method, not file size.
- 02Fixed-interval archives miss the life of 5–60 minute markets.
- 03Event-driven capture records every book change, so the full market arc is replayable.
- 04Order-book history can't be backfilled — it's only available if someone captured it live.
DepthFeed serves the full Polymarket & Kalshi order book over a REST API and live WebSocket. Free Explorer tier, no card.
Start free