Data quality
Data quality report
Every published day is checked automatically before you download it. These are the actual results, including the imperfections. If a number here is not 100%, the reason is explained below.
What we check, per coin per day
- Coverage: all 288 windows present, with order book updates on both Up and Down from the first second to the last.
- Results: every window has Polymarket's official result, opening price and closing price.
- Chain: each window's opening price (
open_twap60) equals the previous window's closing price (close_twap60), as Polymarket's rules require. - Consistency: the result matches the prices (Up exactly when close ≥ open), and the favourite in our order book one second before the close agrees with the official result.
- Continuity: the longest silence in the order book feed for any window.
- Latency: median time between Polymarket's exchange timestamp and our receipt.
| Day (UTC) | Market | Windows | Missing | With result | Chain breaks | Result vs price mismatches | Book favourite at 4:59 = result | Longest feed gap | Median latency |
|---|---|---|---|---|---|---|---|---|---|
| 2026-10-16 | Bitcoin | 288/288 | none | 288 | 0 | 0 | 100.0% | 7.5s | 11 ms |
| 2026-10-16 | Ethereum | 288/288 | none | 288 | 0 | 0 | 99.65% | 2.5s | 11 ms |
| 2026-10-16 | Solana | 287/288 | 00:30 | 287 | 1 | 0 | 99.65% | 2.5s | 11 ms |
| 2026-10-16 | XRP | 288/288 | none | 288 | 0 | 0 | 100.0% | 3.5s | 11 ms |
| 2026-10-16 | Dogecoin | 288/288 | none | 288 | 0 | 0 | 100.0% | 2.6s | 11 ms |
| 2026-10-16 | BNB | 288/288 | none | 288 | 0 | 0 | 100.0% | 2.6s | 11 ms |
| 2026-10-16 | Hyperliquid | 288/288 | none | 288 | 0 | 0 | 99.65% | 2.6s | 10 ms |
| 2026-10-17 | Bitcoin | 288/288 | none | 288 | 0 | 0 | 100.0% | 3.6s | 9 ms |
| 2026-10-17 | Ethereum | 288/288 | none | 288 | 0 | 0 | 99.65% | 2.4s | 9 ms |
| 2026-10-17 | Solana | 288/288 | none | 288 | 0 | 0 | 100.0% | 2.5s | 9 ms |
| 2026-10-17 | XRP | 288/288 | none | 288 | 0 | 0 | 99.65% | 2.2s | 9 ms |
| 2026-10-17 | Dogecoin | 288/288 | none | 288 | 0 | 0 | 100.0% | 2.5s | 9 ms |
| 2026-10-17 | BNB | 288/288 | none | 288 | 0 | 0 | 99.65% | 2.6s | 8 ms |
| 2026-10-17 | Hyperliquid | 288/288 | none | 288 | 0 | 0 | 100.0% | 2.8s | 8 ms |
| 2026-10-18 | Bitcoin | 288/288 | none | 288 | 0 | 0 | 100.0% | 2.5s | 9 ms |
| 2026-10-18 | Ethereum | 288/288 | none | 288 | 0 | 0 | 100.0% | 3.6s | 10 ms |
| 2026-10-18 | Solana | 288/288 | none | 288 | 0 | 0 | 100.0% | 2.5s | 10 ms |
| 2026-10-18 | XRP | 288/288 | none | 288 | 0 | 0 | 99.65% | 2.8s | 9 ms |
| 2026-10-18 | Dogecoin | 288/288 | none | 288 | 0 | 0 | 100.0% | 2.4s | 9 ms |
| 2026-10-18 | BNB | 288/288 | none | 288 | 0 | 0 | 100.0% | 2.4s | 9 ms |
| 2026-10-18 | Hyperliquid | 288/288 | none | 288 | 0 | 0 | 100.0% | 2.7s | 8 ms |
| 2026-10-19 | Bitcoin | 288/288 | none | 288 | 0 | 0 | 100.0% | 3.3s | 9 ms |
| 2026-10-19 | Ethereum | 288/288 | none | 288 | 0 | 0 | 100.0% | 2.4s | 9 ms |
| 2026-10-19 | Solana | 288/288 | none | 288 | 0 | 0 | 100.0% | 2.3s | 9 ms |
| 2026-10-19 | XRP | 288/288 | none | 288 | 0 | 0 | 100.0% | 2.4s | 9 ms |
| 2026-10-19 | Dogecoin | 288/288 | none | 288 | 0 | 0 | 100.0% | 3.3s | 9 ms |
| 2026-10-19 | BNB | 288/288 | none | 288 | 0 | 0 | 100.0% | 2.3s | 9 ms |
| 2026-10-19 | Hyperliquid | 288/288 | none | 288 | 0 | 0 | 100.0% | 2.3s | 9 ms |
A favourite at 4:59 that lost is a genuine photo finish: the last second of the closing average can still swing it. A chain break appears only next to a missing window.
Independent check against Polymarket's REST order book
While recording, our system asks Polymarket's REST /book endpoint for the best bid and ask of one live market every 12 seconds and compares it with the book built from the websocket feed at that moment. “Agree” counts an identical price, or both showing no order on that side (common late in a window, when the losing side has no buyers).
| Day (UTC) | Checks | Best ask agrees | Best bid agrees | Both agree |
|---|---|---|---|---|
| 2026-10-16 | 7,197 | 97.74% | 97.79% | 96.33% |
| 2026-10-17 | 7,196 | 98.57% | 98.75% | 97.61% |
| 2026-10-18 | 7,199 | 98.36% | 98.35% | 97.1% |
| 2026-10-19 | 7,199 | 98.67% | 98.42% | 97.5% |
The REST call returns about 30–40 ms after the comparison point, and busy books change many times a second. When we examined every disagreement on 17 October 2026, 98% of the REST prices appeared in our recorded feed within one second: the two reads simply landed either side of a change. Two checks in the day were unexplained.
Known limitations
- History starts 16 October 2026. Earlier recordings used a recorder that only captured part of each window, and 14–15 October were not recorded, so we do not sell them.
- Missing windows are listed in the table above. We never fill gaps with estimates; a missing window has no rows.
- Book depth is the top two price levels per side, not the full book.
- One row per exchange millisecond: when several book messages share a millisecond we keep the final state.
- Crossed or locked books: Polymarket's feed occasionally shows a best bid at or above the best ask that lasts across several messages, typically under a second (longest seen: 1.9 s), and in a handful of windows per day. We keep these rows exactly as recorded rather than editing them. If your backtest should skip them, filter out rows where
bid1_px >= ask1_px. - Identical trades: a few trades per day share the same millisecond, price, size and side. They are kept, because separate fills can be identical.
- Prices:
open_twap60andclose_twap60are Polymarket's own published settlement prices (the 60-second Chainlink TWAP); we do not recompute them.
Questions about a specific window: [email protected].