Resources/Polymarket·Data quality

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.

·6 min read

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 archivePer-minute sampleEvent-driven (DepthFeed)
5-minute market coverage0–1 frames~5 framesEvery change
Captures spread wideningNoRarelyYes
Slippage measurableNoApproximateYes
Aligns to spot movesNoCoarselyTick for tick
Live deliveryn/an/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

Questions, answered.

Polymarket's CLOB websocket streams live book updates, but Polymarket does not serve a historical archive of those order-book snapshots. To replay the book as it was, you need a provider that captured the websocket continuously and stores it — which is what DepthFeed does.