Five exchanges, 21 coins, every minute: how far each perpetual sits from spot, and how often the gap crosses zero — our own capture sitting on top of each venue's own premium archive, back to 2019. Positive means the perpetual is dearer than the coin. Binance, Bybit and Bitget: mark minus index; OKX and Hyperliquid: the venue's own funding premium, which sits at exactly zero inside its dead band — compare the five lines with that in mind.
−4.7 bp BTC · basis by exchange · Binance on Oct-22 2026, the last day in this build, measured and published by askthetape.com.
A perpetual is supposed to track the real price, but it never sits exactly on it: when people are eager to be long it trades above, when they are eager to be short it trades below. We measure that gap every minute on five exchanges at once — mark minus index on Binance, Bybit and Bitget, the venue's own funding premium on OKX and Hyperliquid (exactly zero inside its dead band, most minutes on several smaller coins) — so you can see not just how stretched the market is but which venue is stretched. We also count how many times a day the gap crosses zero. We count the crossings we saw, and compare days only when we were checking equally often. Historical archive fetched 2026-10-06 from the venue's public endpoint / the public CFTC endpoint; source units and gaps preserved; browser-only.
| leg | `basis_1m` — own minute capture; the stored premium is a fraction and is shown here × 10 000 as basis points · before our first day, each venue's own premium archive: Bitget 2019-07-10 → (under 21 of its 21 lines) · Binance 2019-12-25 → (under 9 of its 21 lines) · OKX 2020-01-03 → (under 5 of its 21 lines) · Bybit 2020-10-10 → (under 5 of its 21 lines) · Hyperliquid 2023-05-12 → (under 21 of its 21 lines) |
|---|---|
| cadence | minute capture, daily mean · archive = the venue's own HOURLY premium, averaged over the same UTC day |
| since | 2019-07-10 (the whole page) · our own minute capture 2026-04-11 (BTC, ETH, MON, SOL) and 2026-06-07 (the other 17) |
| 🩸 the archive is measured against our own capture, never trusted | 83,483 days of venue history were spliced in under the tape, pulled 2026-09-15 (Bitget `v2/mix/market/history-mark-candles ÷ history-index-candles (granularity=1H)` · Binance `fapi/v1/premiumIndexKlines (interval=1h)` · OKX `market/history-mark-price-candles ÷ history-index-candles (bar=1H)` · Bybit `v5/market/premium-index-price-kline (interval=60)` · Hyperliquid `info fundingHistory → premium (hourly)`). Two things were checked before a single point went on the chart, on the days where the archive and our own capture overlap. THE LABEL: every hourly bar was tried on three alignments — the bar's own UTC day, the day before, the day after — and the bar's own day won on every venue: Bitget r 0.97 on the bar's own UTC day against 0.65 and 0.67 for the two shifts; Binance r 0.86 on the bar's own UTC day against 0.61 and 0.65 for the two shifts; OKX r 0.88 on the bar's own UTC day against 0.55 and 0.62 for the two shifts; Bybit r 0.79 on the bar's own UTC day against 0.45 and 0.41 for the two shifts; Hyperliquid r 1.00 on the bar's own UTC day against 0.76 and 0.73 for the two shifts. THE SIZE, recomputed on every build and read as a SLOPE through zero rather than a ratio of one coin (the premium changes sign, so ratios explode near zero and would print a pretty number out of nothing): Bitget back to 2019-07-10 on 21 coins (98 overlapping days per coin): on bitcoin, ether and solana the slope of our minute mean on their hourly mean is 1.00, median gap 0.38 bp, r 0.97 — coin to coin across the whole list it runs 0.98-1.00, furthest apart APT 0.96, OP 0.97, ARB 0.97; Binance back to 2019-12-25 on 9 coins (98 overlapping days per coin): on bitcoin, ether and solana the slope of our minute mean on their hourly mean is 0.94, median gap 1.72 bp, r 0.86 — coin to coin across the whole list it runs 1.18-1.48, furthest apart MORPHO 3.65, MON 2.49, TIA 2.31; OKX back to 2020-01-03 on 5 coins (98 overlapping days per coin): on bitcoin, ether and solana the slope of our minute mean on their hourly mean is 0.98, median gap 4.35 bp, r 0.88 — coin to coin across the whole list it runs 0.37-0.63, furthest apart PENDLE 0.16, TIA 0.30, MON 0.31; Bybit back to 2020-10-10 on 5 coins (98 overlapping days per coin): on bitcoin, ether and solana the slope of our minute mean on their hourly mean is 0.98, median gap 2.48 bp, r 0.79 — coin to coin across the whole list it runs 1.41-1.87, furthest apart TIA 2.50, ATOM 2.13, OP 2.05; Hyperliquid back to 2023-05-12 on 21 coins (98 overlapping days per coin): on bitcoin, ether and solana the slope of our minute mean on their hourly mean is 1.00, median gap 0.07 bp, r 1.00 — coin to coin across the whole list it runs 1.00-1.00, furthest apart SOL 0.99, UNI 0.99, TAO 1.01. The gap that remains is not noise and has a name: their number is the venue's own INDEX (a basket of spot venues, and for the two mark-price feeds a mark that is smoothed on purpose), ours is that venue's OWN spot book minute by minute — so on a venue whose index leans on other exchanges the two differ by a fraction of a basis point all day. The archive is placed strictly BEFORE our own capture, so the two are never mixed on one day — on every overlapping day this page shows OUR number. 🩸 Those slopes are measured over the WHOLE coin list, the legs we did not splice included: they are the diagnosis, and they are what decides. A venue's archive is only laid under a leg whose width matches ours to within 0.35 of slope — the next row names the legs that failed and what they show instead. So on every archive line this page draws, the years before our tape are directly comparable to the minutes after it. |
| 🩸 which lines carry an archive, and which are our own capture only | A venue's history is laid under our tape ONLY on the legs where the two measure the same width on the days they overlap: on that leg the slope of our minute mean on the venue's hourly mean has to sit within 0.35 of 1, and the two have to move together (r at least 0.80). It is judged LEG BY LEG — every venue against every coin, recomputed on every build — because on bitcoin all five archives already agree with us, so a check on bitcoin alone would pass by construction and tell you nothing about the rest of the list. 61 of the 105 lines pass and carry their venue's history; 44 stay OUR OWN CAPTURE ONLY, begin on our own first day and say so in the legend of the chart — held back: Bybit 16 of 21 · OKX 16 of 21 · Binance 12 of 21; every leg of Bitget and Hyperliquid passes. The reason is the instrument, not the market: Binance and Bybit publish a premium INDEX built on a clamped, smoothed impact price, and on a thin coin that is a narrower number than the plain mid-to-mid difference we measure, so our line swings wider than theirs; OKX publishes a MARK against its own index, and on a thin coin that mark is held far closer to the index than the two prices really stand. Every held-back leg with its slope and its r on the overlap: Binance ARB 1.18/0.77 · Binance ATOM 1.58/0.43 · Binance DOT 1.38/0.83 · Binance ETC 1.48/0.82 · Binance MON 2.49/0.82 · Binance MORPHO 3.65/0.73 · Binance ONDO 1.46/0.86 · Binance OP 1.47/0.82 · Binance PENDLE 1.55/0.82 · Binance SEI 1.40/0.88 · Binance TIA 2.31/0.84 · Binance UNI 1.40/0.94 · Bybit AAVE 1.66/0.79 · Bybit APT 1.49/0.66 · Bybit ARB 1.55/0.33 · Bybit ATOM 2.13/0.55 · Bybit AVAX 1.41/0.83 · Bybit DOT 1.66/0.67 · Bybit ETC 1.57/0.38 · Bybit MON 1.43/0.54 · Bybit MORPHO 1.83/0.87 · Bybit ONDO 1.57/0.89 · Bybit OP 2.05/0.44 · Bybit PENDLE 1.89/0.79 · Bybit SEI 1.87/0.76 · Bybit TAO 1.67/0.94 · Bybit TIA 2.50/0.50 · Bybit UNI 1.94/0.80 · OKX AAVE 0.63/0.95 · OKX APT 0.48/0.72 · OKX ARB 0.48/0.73 · OKX ATOM 0.32/0.78 · OKX AVAX 0.62/0.95 · OKX DOT 0.52/0.68 · OKX ETC 0.52/0.55 · OKX MON 0.31/0.88 · OKX MORPHO 0.38/0.89 · OKX ONDO 0.48/0.90 · OKX OP 0.43/0.53 · OKX PENDLE 0.16/0.79 · OKX SEI 0.33/0.64 · OKX TAO 0.37/0.90 · OKX TIA 0.30/0.68 · OKX UNI 0.48/0.88. |
| 🩸 that decision is dated, frozen, and does not travel back in time | It is not remade every time this page is rebuilt. It was judged once, on 2026-09-15, over the days where the archive and our own capture overlap (2026-04-12 → 2026-09-13, 98 days on a typical line), and it is stored next to the data as a list: 61 lines spliced, 44 our own capture only. Every rebuild re-measures the same two numbers and compares them against that list — a build that disagreed would say so and this page's own test would fail, because a line quietly gaining or losing six years of history between two rebuilds is worse than a line that is wrong in a way you can read. Two legs stand closest to the line and would be the first to move: Bybit LINK (slope 1.33, 0.02 from the limit) and Bybit UNI (r 0.80, 0.00 from the limit). 🩸 And the check only reaches as far as our own tape does — one regime, 98 days. In the archive years there is nothing of ours to check against, so the certificate is carried back, not earned again there. What that is worth, measured without our tape at all: take two archives that BOTH passed on the same coin and compare them with each other — inside the judging window they differ by 1.39 bp against a typical premium of 4.88 bp (0.28 of the level), while in 2024 the same comparison gives 4.18 against 4.35 (0.96), 3.4 times worse. The years before the seam are the part of this page to read most carefully. |
| 🩸 how close two honest measurements can get | There is a floor under every number above, and it is not an opinion. Each hourly bar of an archive closes with the premium at that hour's last second — 24 snapshots of a day — while our capture averages 1,440 minutes of the same day. Read ONE AND THE SAME venue's series both ways (20 coin-days, 4 coins, checked 2026-09-15: binance fapi/v1/premiumIndexKlines, one series read at 1m and at 1h) and the two daily means differ by a median of 0.36 bp, with no direction to it — 10 of the days the coarse reading is higher, 10 lower. That is the sampling noise of the coarser instrument, and nothing can be measured through it. It is a median across coins and the floor is not the same on every one of them: SOL is the quietest at 0.10 bp, BTC the noisiest at 0.50 — a factor of 5.2, so read the number as a scale, not as a constant. It is about the whole of Bitget's median gap to us (0.38 bp) and roughly 5 times Hyperliquid's (0.072 bp) — and two INDEPENDENT measurements cannot agree closer than their own noise. So Hyperliquid reproducing our number almost exactly is not an independent verification of it: their hourly archive and our minute leg are reading the same oracle. Bitget agreeing to 0.38 bp is as close as two genuinely separate instruments get. |
| 🩸 the crossings and the tick count are NOT back-filled | crossings are a count of OUR minute capture — no archive can produce it. The zero-crossing count and the tick density ride on how often WE looked: an exchange's hourly premium archive has 24 chances a day to change sign, our capture has 1,440, and neither number is the other one scaled. So those two series still begin on our own first day (2026-04-11), while the premium lines behind them run back to 2019-07-10. A count is a property of the instrument; a price is a property of the market — only the second one can be borrowed from the venue's own history. |
| 🩸 the day the archive hands over | the dashed vertical on the chart is the first day of OUR capture for this coin (2026-04-11 for the four we started with, 2026-06-07 for the rest): everything left of it is the venue's own archive, everything right of it is our minute tape. The first and the last day of every archived leg are dropped, because a listing day and the day we pulled carry part of a day and their average is not a daily premium — the same guard our own leg has always had on its first and its running day. |
| 🩸 the break in our own tape | Our own minute capture is not continuous: 2026-05-01 to 2026-05-07 (7 days). On the 20 lines whose capture was already running by then there is no point at all on those days, and the archive is NOT used to fill them — we do hold the venues' hourly bars for exactly that stretch, they came down with the rest of the pull. The other 44 lines DO have those days (308 daily points, every one of the seven on each of them): for those coins our capture had not started yet, so that week is still their archive epoch, left of the seam, and nothing about it is a patch. Everywhere on this page a venue's archive is placed strictly BEFORE our own first day; a patch dropped inside our own window would put a different instrument's number in the middle of our tape, and on this page the two instruments are only known to agree on the lines that passed the width check above. A hole you can see is worth more than a seam you cannot. |
| 🩸 the archive's own resolution is not constant | Hyperliquid's archive carries only 3 readings a day until 2023-06-07 — 209 coin-days, 0.9 % of its history — so the daily mean there is an average of 3 readings instead of 24, and the line is noisier in those months for a reason that is the instrument, not the market. Everywhere else the archive carries 24 readings a day, and that is what each daily mean is built from. The first and the last day of every leg are dropped against the LOCAL number of readings (the mode of the neighbouring 30 days), not against a blanket 24, so a venue's early epoch is not mistaken for a half-day — and ANY day left with less than half its neighbours' readings is dropped too, wherever it sits in the line: an average of three hours is not a daily premium. 🩸 And 1,484 hours were thrown away before any of this (Bitget 1,002 · OKX 482), by a guard rather than by hand. On the two venues whose premium we build as mark ÷ index (OKX and Bitget) either price can STICK: it repeats the same number hour after hour while the other one moves. Those hours are not a premium, they are a stale quote — around the March-2020 crash Bitget's mark stood still for most of a day and printed a daily premium of −327 and +574 basis points, which would have been the record of this page; on 26 Feb 2021 it was the INDEX that stood still instead. The guard drops an hour when one side has not changed for three hours or more while the other side moved by more than 0.1 % in that same hour. It is deliberately narrow: real dislocations survive it, and the three that this page shows on bitcoin and solana — 13 Mar 2020 and 9 Nov 2022 — are printed by two and three venues independently. |
| 🩸 what the chart draws before our first day | the full daily archive is what this page computes on — every record, every average, every rank. What travels to your browser for the years BEFORE our capture is thinned to keep the page light (the step is in the data as `bucket`), and each bucket keeps its highest and lowest day, so the envelope of the line is real even where the dots are further apart. In the three-year window every day of our own capture is its own point. In ALL, where 6.8 years have to fit on one line, our own months are not thinned away with the archive either: every day of our capture is still its own point there, and it stays that way until the capture outgrows 200 days — it stands at 189 today, and after that ALL will start grouping it too and this line will say so. A line that carries no archive is never thinned: it is our own capture and it is short enough to draw whole. |
| policy | 🩸 the zero-crossing count is OUR OWN count, not the exchanges': we compare the sign of the premium minute to minute in our own capture and add the changes across the five venues. No exchange publishes this number — it exists because we keep the minutes. It is a count of crossings, not a rate, and a venue we did not capture that minute simply cannot contribute one. Each coin's line starts on that coin's true first day; nothing is stretched sideways to the page's start — where a premium line runs deeper than our capture it is THAT venue's own archive for THAT coin, never another coin's history and never another venue's. · export: from 2026-04-11 (rows before that day are the exchange's own archive and stay here) |
| 🩸 the capture changed frequency | the crossing count is a count, so it rides on HOW OFTEN we look. The capture is not a constant: on 2026-09-11 the median number of ticks we took per venue-coin-day stepped 2,061 → 8,673 (×4.21), and BTC crossings stepped 11 → 230 the same day — the sign changes we could see multiplied faster than the looking did, so this is the instrument, not the market. Compare crossings only inside one capture epoch; the digest refuses to publish a crossing fact on a day whose capture density stepped ×2 or more — this happens on about 15 % of this leg's days (27 of 184 days with a base, since 2026-04-11), so the silence is a regular event, not a one-off. |
| gaps | measured on this leg, not assumed: the line has no point on 2020-03-24 … 2020-03-31 (8 days) on Bitget; 2026-05-01 … 2026-05-07 (7 days) — it BREAKS there and nothing is drawn across it · the same week is missing from every exchange-tape leg we keep (order books, funding ticks, basis, liquidations), so it is one collector outage, not a property of this market |
| hourly window | prod basis_1m, our own minute capture bucketed to the hour · since 2026-04-11 17:00Z by data, 4,497 hours with data inside a 4,685-hour span → 2026-10-23 21:00Z (the Tape and Desk windows draw up to 400 days of that, never more than we hold) · captured 2026-10-23T21:21:56Z |
| archival source | Historical archive fetched 2026-10-06 from the venue's public endpoint / the public CFTC endpoint; source units and gaps preserved; browser-only. |
| historical views | Browser-only historical views retain the source dates and units. |
| this build | data to Oct-22 2026 |
| policy | no backfill · read it here · export: from 2026-04-11 (rows before that day are the exchange's own archive and stay here) |
The chart itself is drawn in the browser: turn JavaScript on to hover a day, pick a window and draw your line. The numbers above come from the last build, Oct-23 2026 21:24Z.
What the tape says today · what's new · all 111 metrics