The method is part of the product.
Every value is stored with its source and the time it was collected. This page states the rules every figure on this site follows, and changes only by a dated entry in the list at the end.
- 01What is collected, and by which call
- 02Instruments and how they are grouped
- 03Venue time, received time, age
- 04Freshness thresholds
- 05Gaps and periods not collected yet
- 06Derived values, with their formulas
- 07When a comparison is valid
- 08How numbers are displayed
- 09What the platform cannot know
- 10Venue-reported and derived
01What is collected, and by which call #
Ticker snapshots — bid, ask, bid and ask size, last price, mark, index, funding rate and open interest — are collected per venue instrument by the snapshot call.
Order-book depth within 10, 25 and 50 basis points of a reference price has its own collector and its own rate, and is returned by the same call when depth is requested.
Trade, mark and index candles are collected where the venue publishes them; Coverage lists which, per venue. Where a venue publishes no bars of a kind, that metric is unsupported there rather than empty.
Raw history of tickers, funding, open interest and depth is served in windows of at most 48 hours per request.
Every stored row carries its segment code, the venue's own symbol, and the time it was received.
02Instruments and how they are grouped #
Instruments are grouped by base asset and contract kind — BTC perpetual — because no cross-venue canonical identifier is published. There is no single call that returns one instrument across venues; the comparison is assembled venue by venue.
Venue symbols are printed exactly as the venue spells them, and are never normalised.
Contract multiplier, price step and funding interval come from the instruments call, per venue.
Open interest is shown as the venue reports it: in base units where the contract multiplier is 1, otherwise in contracts. The multiplier is printed beside it.
The instrument list offered in Arena is computed when the page loads: the base assets with a fresh snapshot on at least half the perpetual venues. It is never written into the page.
03Venue time, received time, age #
Two timestamps exist: venue time, only where the venue sends one, and received time, which is always stored.
Age is now minus received time.
Ticker, open interest and depth are separate calls with separate received times, so one row carries three ages. Each group keeps its own age, and every age is printed.
There is no stored "written" or "available" time, so none is shown.
04Freshness thresholds #
The service returns ages, not verdicts. LIVE, DELAYED and STALE are computed per call group against the thresholds below. These thresholds are provisional and are owned by the backend; this page changes when they are published.
| Call group | LIVE up to | DELAYED up to | Beyond |
|---|---|---|---|
| Ticker | 15 s | 60 s | STALE |
| Open interest | 2 min | 10 min | STALE |
| Depth | 5 min | 15 min | STALE |
MISSING means the response carried no value for the field. UNSUPPORTED means the venue publishes no such field. STALE means the value is present but older than its threshold. NOT COLLECTED means this service does not collect that field on that venue — Coverage lists what is collected where. The four are different states and are shown differently; UNSUPPORTED and NOT COLLECTED describe what exists, not how fresh it is, so neither sets a row's status.
Status is never conveyed by colour alone; every chip carries its word.
05Gaps and periods not collected yet #
A gap is an hour inside collection with no observation. A period not collected yet is any time before collection on that venue began. They are drawn differently and named differently.
Where the collector recorded an interruption, its cause is shown on the coverage strip and listed under it. A hole with no recorded interruption has a cause this platform does not know.
Coverage is measured for ticker snapshots.
On a chart, a line never bridges a gap: the line breaks and the empty region stays empty.
06Derived values, with their formulas #
A derived figure states what it was computed from. Its provenance lists the inputs and the formula below.
spread_bps = (ask − bid) / mid × 10 000 · mid = (bid + ask) / 2
depth_band = quote notional resting within 10 / 25 / 50 bps of the reference price · bid side and ask side separately
Open-interest notional is the value the service publishes, in the quote currency, printed with the contract multiplier beside it. This page does not compute it.
Funding is shown as the venue publishes it, per the venue's own interval (% / n h).
The comparison table shows the depth band at ±25 basis points; the 10 and 50 basis-point bands are collected and available through the API.
The reference price used for a depth band is printed, because venues do not all measure depth against the same price.
07When a comparison is valid #
BEST and WORST are computed for four columns only: bid, where a higher value is better; ask, where a lower value is better; spread, where a narrower value is better, compared as computed rather than as printed; and depth, taken as the bid side plus the ask side, where more is better.
Mark, index, funding and open interest are never ranked. Intervals, contract multipliers and index compositions differ by venue, so the figures are not like for like.
A row enters a ranking only if two things hold: the venue runs an order book and is not an oracle-vault market; and the value is LIVE. A delayed quote is left out: it sits away from the market and would win BEST because it is old. In the comparison table venues are ranked inside their quote-currency group, so each group carries its own BEST and WORST. The short previews on the homepage rank the rows they show, with USD, USDT, USDC and USDT0 treated as one currency and any other quote left out.
If fewer than two values pass those tests, or if every value that passes them is equal, no BEST or WORST is shown. A figure left out of a ranking says why in its provenance.
When two or more eligible venues share the best value, every one of them carries BEST ×n, where n is how many share it, and the mark's tooltip names the others. The same rule applies to WORST.
The rank slot is always reserved, so a mark appearing or disappearing moves no column.
08How numbers are displayed #
Prices are shown at the venue's own price step. No decimal is invented.
Digits in a column share a right edge, units sit in fixed-width slots, and a short fraction is padded with figure spaces rather than zeros — a zero would claim a precision the venue did not publish.
An absent value is an em dash with the reason in its provenance. Never a zero, never "n/a", never an empty cell.
Ages always carry a unit. Absolute times are UTC and say so.
09What the platform cannot know #
- Anything a venue does not publish
- Anything between two observations
- Anything before collection on that venue began
- Whether a venue's own timestamp is accurate — it is printed as received
- The cause of a hole the collector did not record
10Venue-reported and derived #
| Venue-reported | Derived by this platform |
|---|---|
| Bid, ask, bid and ask size, last price | Spread in basis points |
| Mark price, index price | Open-interest notional, as the service publishes it |
| Funding rate, predicted funding, next funding time | Depth bands against the stated reference price |
| Open interest | Age of every observation |
| 24-hour volume and turnover | LIVE, DELAYED and STALE |
| Venue timestamp, where the venue sends one | BEST and WORST, and the observation line |
—Methodology updates #
- 2026-09-16First publication of this page.
- 2026-09-16NOT COLLECTED added: depth on a venue whose book this service does not collect is no longer shown as MISSING, and no longer sets the row status.
- 2026-09-17The Arena chart is drawn with TradingView Lightweight Charts: a crosshair reads the value per venue at any time, trade price can be shown as candles for one venue, and zoom and pan are off — the range control sets the window. Gaps still break the lines. Each table row carries a trace of its trade price over the same range.
- 2026-09-17BEST and WORST are ranked inside each quote-currency group, still LIVE values only; bid and ask marks name their side (BEST BID, WORST ASK). Before, one pair per column covered every group and moved between venues whenever a ticker crossed the LIVE threshold.
- 2026-09-17Rank and state marks no longer use green, amber and red: fill, border and a line through the word carry them. Tied values are all marked, as BEST ×n or WORST ×n. On Arena the comparison table comes before the chart, its columns can be hidden by group, and six columns sort inside each quote group; all of it is kept in the page address.
- 2026-09-17Spread is ranked on its computed value, no longer rounded to 0.01 bps first — rounding had given BEST to every venue one tick wide. The comparison table is grouped by quote currency.
Each later change to a rule is added here with its date, so a figure can be read against the rules in force when it was shown.
See the record these rules describe.
Venues, datasets, and the hours in which nothing was observed.
See the rules applied to live figures.
One instrument across the perpetual venues that quote it.