How much more does Bitcoin cost in the USA than offshore — and how much of the famous gap is real US demand? The gap widely quoted as the Coinbase premium compares Bitcoin’s dollar price on US exchanges with its USDT price on Binance, and part of it is simply USDT trading away from $1. This index publishes that gap once a day at noon New York time and splits it exactly into the USA Bitcoin Premium — the part that is real US demand — and the USDT effect. It is not a trading signal and is not affiliated with or endorsed by any exchange named. Sister indices: India Bitcoin, Korea Bitcoin, South Africa Bitcoin, USDT Peg.
| Exchange | Mid ($) | Best bid / best ask ($) | Spread | vs index fix |
|---|---|---|---|---|
| loading… | ||||
Methodology v0.1.0 · DRAFT pending calibration and Owner sign-off. Values marked TO BE SET are filled from calibrate.py after roughly 44 hours of live capture; the version number does not change when they are filled, because filling them does not change how a fix is computed.
The Crypto Times USA Bitcoin Premium Index (CTPI-BTC-SPOT-USD) measures how much more (or less) Bitcoin costs in US dollars on US exchanges than on the offshore USDT market, and splits that gap into its two parts. Three numbers are published every day: the USA Bitcoin Premium, the headline (the US dollar price against Binance’s BTC/USDT price converted into dollars at the market USDT/USD rate — the part of the gap that is real US demand); the classic gap, often called the Coinbase premium (the same comparison before any correction, here across several US exchanges); and the USDT effect (the rest of the classic gap, due to USDT’s own price). The USA Bitcoin Premium plus the USDT effect equals the classic gap, exactly. Data fields keep their names: premium_pct and usa_demand_pct carry the USA Bitcoin Premium, raw_premium_pct and classic_gap_pct the classic gap, usdt_part_pct the USDT effect.
What it is not. Not a trading signal, not a claim about who is buying, and not affiliated with or endorsed by any exchange named or any publisher of a similar metric. It corrects a well-known number; it does not attack it.
Fix window 11:30–12:30 ET (noon New York time, when US-dollar books are deepest), published at 12:31 ET (16:31 UTC in summer, 17:31 UTC in winter) by a systemd timer with Persistent=true; if the host is off through the window, the timer runs on boot, finds no samples and refuses to publish. No estimate is ever published in place of a missed fix; a missed or late fix is recorded in the corrections log as a publication-timing entry. There is no central-bank or ECB input.
Official fixes are computed every Monday to Friday (ET). Public holidays do not pause the index: crypto trades every day, so a US public holiday is an ordinary fix day. Weekend runs store an indicative point.
r = venue_mid_usd ÷ binance_btcusdt — the dollars-per-USDT rate the two Bitcoin prices imply.r across its paired samples is the venue observation; the median two-sided dollar depth resting within ±TO BE SET bps of mid (stored bands: 50, 100) is the venue weight.TO BE SET two-sided. Exclusions are recorded in the fix’s provenance with the venue’s would-be value.R.raw_premium_pct = (R − 1) × 100.premium_pct = (R ÷ USDTUSD − 1) × 100, where USDTUSD is the latest USDT/USD rate captured before the window closes.classic − premium = R × (1 − 1 ÷ USDTUSD) × 100 — exact by construction, and recomputable from the published R and USDTUSD.value = R × binance_ref (dollars per BTC), where binance_ref is the median of the references actually paired, so that value ÷ (binance_ref × USDTUSD) − 1 reproduces the headline exactly from the figures on the page.An official fix requires at least TO BE SET eligible venues, a USDT/USD rate captured within the carry ceiling, at least one paired Binance reference, and no existing official fix for that time. Officials are immutable once written; restatements go only through governance tooling and appear in the corrections log.
two_venue_aggregate; high_venue_dispersion when venue observations differ by more than TO BE SET bps; unpaired_samples(n); insufficient_venues on indicative fixes only.
Candidate venues at launch: Coinbase, Kraken, Gemini and Bitstamp — the dollar books of major US exchanges, so that no single venue moves the number. Each public book is read at a fixed depth: Coinbase and Kraken to 100 price levels per side, Gemini at its default public depth, Bitstamp in full; depth for the depth-weighted median is measured on the levels each book returns. A venue whose public book is returned in full may be sampled every 5 minutes outside the fix and sync windows (every minute inside them) to bound storage; the constituents list states each venue’s interval. Coinbase’s public book does not report auction mode (a special session, for example after a trading halt, in which quotes are indicative, not tradeable); for Bitcoin this is rare, and a Coinbase book far from the other US books raises the family’s dispersion flag. Constituent status is set from measured order-book depth during calibration and reviewed against the family venue policy; the venue-status line and the per-exchange table state, every day, which venues the number includes and why any is excluded. The data terms of every source, Binance’s included, are part of the family’s data-terms review.
Between fixes the page shows a 5-minute indicative reading computed with the same pairing and aggregation, against the USDT/USD rate in force at the sample. Past 15 minutes without a usable sample the live block shows STALE rather than a stale number. Indicative readings are never part of the daily fix series.
Besides the daily fix, the engine records one reading a day at 12:00 UTC — the same moment for every index in the family (08:00 ET in summer, 07:00 ET in winter) — computed exactly as above over 11:55–12:05 UTC. It exists so that a future composite can combine markets observed at the same instant. It is not this index’s official value and is never part of its fix series; a day on which it cannot be computed is recorded as INVALID with its reason. Around that window the collector samples every 60 seconds whatever the local hour. The series is published at /v1/sync on the engine host.
The methodology version changes only when the way a fix is computed changes — never for display, documentation or the filling of calibration values above. Package versions are separate.
Names of the three published numbers: the headline is now the USA Bitcoin Premium (previously “USA demand part”), the classic gap is labelled as often called the Coinbase premium, and the remainder is the USDT effect (previously “USDT part”); data field names are unchanged. Public holidays do not pause the index. No change to how the fix is computed. Official fixes remain switched off.
Methodology text: states that a venue returned in full may be sampled every 5 minutes outside the fix and sync windows to bound storage, and that Coinbase’s public book does not report auction mode. No change to how the fix is computed. Official fixes remain switched off.
Venue discovery (run 23 September 2026): Coinbase’s book is now read from its public Advanced Trade order book at 100 price levels per side — the same Coinbase order book at a bounded depth. The Exchange API’s level-2 book is the full book (about 1 MB per request), which stored every minute would have filled the server’s disk. Kraken, Gemini, Binance and the Kraken USDT/USD leg answered as documented; Bitstamp refused the test from India, where it is blocked, and is re-checked (with its reply size) from the index’s own server before install. Official fixes remain switched off.
Index created on the CTPI family engine: the US dollar price of Bitcoin on Coinbase, Kraken, Gemini and Bitstamp against Binance’s BTC/USDT price, paired per sample, with the market USDT/USD rate (Kraken) as the exchange-rate leg; three numbers published — the classic gap, the USA demand part (headline) and the USDT part, which add up exactly; noon-ET fix published 12:31 ET; the family’s synchronized reading recorded daily at 12:00 UTC. Official fixes remain switched off ([fix].official_enabled = false) until calibration values are set from live data and the methodology is signed; the daily timer stores indicative (shadow) fixes meanwhile.
No corrections, restatements or publication-timing entries yet. Entries are added here, inside this document, never on a separate page: a missed or late fix is recorded as a publication-timing entry; a change to a published value is a restatement, with the old value, the new value, the reason and the date.
| Date | Type | Fix date | Detail |
|---|---|---|---|
| none recorded | |||