Data accuracy: our prices vs live order books
As of 2026-10-25 03:46 UTC, we ran 418 checks in the last 24 hours, comparing the best bid and ask the site shows with each exchange's live order book. The typical gap was 0 bp, and 28 of 32 exchanges stayed under 5 bp at the median.
Coverage: over 24 hours there were 652 check windows (one per exchange and market every two minutes), and a check was made in 418 (64%). No check: no order book of the exchange in the cache (156); the book's pair is not in the snapshot (38); snapshot and book diverged in time by more than 3 seconds (30); book older than 10 seconds (8); an empty or crossed quote (2). The median and 95th percentile describe only the windows with a check: while a feed is stalled or a book cannot be matched to the snapshot there is no check, and that shows here instead of being hidden. 17 exchanges could not be checked even once in the period.
By exchange, last 24 hours
| Exchange | Market | Checks | Median, bp | 95th percentile, bp | Quote age, median | Coverage | Last check |
|---|---|---|---|---|---|---|---|
| Aster | Spot | 0 | — | — | — | 0% (0 of 7) | — |
| Aster | Futures | 10 | 1.2 | 38 | 3 s | 100% (10 of 10) | |
| Backpack | Spot | 0 | — | — | — | 0% (0 of 7) | — |
| Backpack | Futures | 0 | — | — | — | 0% (0 of 7) | — |
| BigONE | Spot | 9 | 0 | 0 | 1 s | 100% (9 of 9) | |
| BigONE | Futures | 5 | 0 | 0 | 2 s | 63% (5 of 8) | |
| Binance | Spot | 10 | 0 | 24 | 1 s | 100% (10 of 10) | |
| Binance | Futures | 11 | 0.9 | 7.2 | 1 s | 100% (11 of 11) | |
| Binance.US | Spot | 0 | — | — | — | 0% (0 of 7) | — |
| BingX | Spot | 10 | 0 | 1.2 | 2 s | 100% (10 of 10) | |
| BingX | Futures | 9 | 4.4 | 17 | 1 s | 100% (9 of 9) | |
| Bitfinex | Spot | 0 | — | — | — | 0% (0 of 7) | — |
| Bitfinex | Futures | 0 | — | — | — | 0% (0 of 7) | — |
| Bitget | Spot | 11 | 0 | 3.1 | 1 s | 100% (11 of 11) | |
| Bitget | Futures | 8 | 0 | 5.5 | 1 s | 100% (8 of 8) | |
| Bitrue | Spot | 7 | 0 | 1.4 | 0 s | 100% (7 of 7) | |
| Bitstamp | Spot | 0 | — | — | — | 0% (0 of 7) | — |
| Bitvavo | Spot | 0 | — | — | — | 0% (0 of 7) | — |
| BloFin | Futures | 10 | 2.1 | 11 | 1 s | 100% (10 of 10) | |
| BtcTurk | Spot | 6 | 0 | 9.6 | 1 s | 75% (6 of 8) | |
| BTSE | Spot | 7 | 0 | 1.5 | 2 s | 78% (7 of 9) | |
| BTSE | Futures | 1 | 4.2 | 4.2 | 2 s | 14% (1 of 7) | |
| Bybit | Spot | 8 | 0 | 5.9 | 1 s | 89% (8 of 9) | |
| Bybit | Futures | 11 | 0.3 | 5.2 | 1 s | 100% (11 of 11) | |
| CEX.IO | Spot | 0 | — | — | — | 0% (0 of 6) | — |
| Coinbase | Spot | 6 | 0 | 2.1 | 0 s | 75% (6 of 8) | |
| Coinbase Exchange | Spot | 8 | 5.1 | 25 | 1 s | 89% (8 of 9) | |
| Coins.ph | Spot | 0 | — | — | — | 0% (0 of 7) | — |
| Crypto.com | Spot | 7 | 4.5 | 14 | 1 s | 88% (7 of 8) | |
| Crypto.com | Futures | 0 | — | — | — | 0% (0 of 7) | — |
| Deepcoin | Spot | 9 | 0 | 0 | 0 s | 100% (9 of 9) | |
| Deepcoin | Futures | 9 | 3.3 | 18 | 3 s | 100% (9 of 9) | |
| DigiFinex | Spot | 9 | 0 | 22 | 2 s | 100% (9 of 9) | |
| DigiFinex | Futures | 0 | — | — | — | 0% (0 of 7) | — |
| Extended | Futures | 0 | — | — | — | 0% (0 of 7) | — |
| Gate | Spot | 10 | 13 | 177 | 2 s | 100% (10 of 10) | |
| Gate | Futures | 9 | 5.1 | 41 | 3 s | 100% (9 of 9) | |
| Gemini | Spot | 4 | 0 | 27 | 2 s | 57% (4 of 7) | |
| Gemini | Futures | 0 | — | — | — | 0% (0 of 7) | — |
| HitBTC | Spot | 0 | — | — | — | 0% (0 of 7) | — |
| HitBTC | Futures | 0 | — | — | — | 0% (0 of 7) | — |
| HTX | Spot | 9 | 0 | 9 | 3 s | 100% (9 of 9) | |
| HTX | Futures | 9 | 0 | 0 | 1 s | 90% (9 of 10) | |
| Hyperliquid | Spot | 7 | 0 | 6.7 | 2 s | 78% (7 of 9) | |
| Hyperliquid | Futures | 0 | — | — | — | 0% (0 of 7) | — |
| Indodax | Spot | 0 | — | — | — | 0% (0 of 7) | — |
| Kraken | Spot | 10 | 8.7 | 25 | 4 s | 100% (10 of 10) | |
| Kraken | Futures | 0 | — | — | — | 0% (0 of 7) | — |
| KuCoin | Spot | 10 | 0 | 1.2 | 2 s | 100% (10 of 10) | |
| KuCoin | Futures | 11 | 0 | 3.1 | 1 s | 100% (11 of 11) | |
| LBank | Spot | 10 | 0 | 4.7 | 5 s | 100% (10 of 10) | |
| LBank | Futures | 0 | — | — | — | 0% (0 of 7) | — |
| Lighter | Futures | 0 | — | — | — | 0% (0 of 7) | — |
| Luno | Spot | 0 | — | — | — | 0% (0 of 7) | — |
| MEXC | Spot | 11 | 0 | 3.9 | 2 s | 100% (11 of 11) | |
| MEXC | Futures | 10 | 0 | 6.2 | 1 s | 100% (10 of 10) | |
| Mode Trade | Futures | 0 | — | — | — | 0% (0 of 7) | — |
| OKX | Spot | 10 | 0 | 3.6 | 1 s | 100% (10 of 10) | |
| OKX | Futures | 10 | 0.6 | 9.5 | 1 s | 100% (10 of 10) | |
| P2B | Spot | 10 | 1.1 | 22 | 1 s | 100% (10 of 10) | |
| Pacifica | Futures | 0 | — | — | — | 0% (0 of 7) | — |
| Phemex | Spot | 8 | 0 | 3.5 | 2 s | 80% (8 of 10) | |
| Phemex | Futures | 4 | 3.2 | 11 | 3 s | 57% (4 of 7) | |
| Poloniex | Spot | 6 | 0 | 0.5 | 3 s | 100% (6 of 6) | |
| Poloniex | Futures | 0 | — | — | — | 0% (0 of 7) | — |
| Tokocrypto | Spot | 7 | 0 | 1.6 | 1 s | 78% (7 of 9) | |
| Toobit | Spot | 7 | 6 | 21 | 3 s | 88% (7 of 8) | |
| Toobit | Futures | 10 | 8.3 | 22 | 3 s | 100% (10 of 10) | |
| Upbit | Spot | 0 | — | — | — | 0% (0 of 7) | — |
| WEEX | Spot | 11 | 0 | 0 | 2 s | 100% (11 of 11) | |
| WEEX | Futures | 10 | 0 | 15 | 1 s | 100% (10 of 10) | |
| WhiteBIT | Spot | 5 | 0 | 0 | 2 s | 100% (5 of 5) | |
| WhiteBIT | Futures | 11 | 0 | 44 | 2 s | 100% (11 of 11) | |
| WOO X | Spot | 0 | — | — | — | 0% (0 of 7) | — |
| WOO X | Futures | 0 | — | — | — | 0% (0 of 7) | — |
| WOOFi Pro | Futures | 0 | — | — | — | 0% (0 of 7) | — |
| XT | Spot | 8 | 0 | 1.4 | 2 s | 100% (8 of 8) | |
| XT | Futures | 10 | 2.3 | 28 | 1 s | 100% (10 of 10) |
How the check works
- The price the site shows is the best bid and ask of the exchange's latest market snapshot, the one routes are computed from.
- The reference is an order book of the same pair that we requested from the exchange separately. We read those books anyway (to size routes on real depth), so the check asks the exchanges for nothing extra.
- We compare only when the snapshot and the book were taken within 3 seconds of each other and the book is no more than 10 seconds old. Otherwise we would be measuring the time between two reads, not accuracy.
- The gap is the larger of two: how far the snapshot's bid and its ask are from the book's, in basis points (1 bp = 0.01%).
- Checks are sampled: about once every two minutes per exchange and market a random pair whose book is fresh is tried. If no pair meets the conditions above, the window is skipped. Skips are counted: the share of windows with a check and the reasons for the rest are shown above the table and in the Coverage column. An exchange that could never be checked stays in the table with zero coverage.
- Quote age is how many seconds old our snapshot was at the check. It is the age of our data, not the exchange's own delay.
- Checks older than 8 days are deleted. Results are not selected: every comparison that meets the conditions above goes into the median, and whatever did not is counted as a skip with its reason. These figures do not describe accuracy at the moments when there is no check (for example while a feed is stalled and books arrive separately).