The Crypto Times South Africa Bitcoin Premium Index · daily fix 11:30–12:30 SAST · CTPI-BTC-SPOT-ZAR

Does the classic South African premium persist — and at what level today? Bitcoin has traded above the world price in rand for as long as there have been rand order books, a gap documented in the academic literature and attributed to the exchange-control architecture that constrains arbitrage. This index continues that measurement every trading day from live order books, pairing every rand quote with the dollar price of Bitcoin at that moment, with an open methodology and a daily fix that can be cited and reproduced. Its sister South Africa USDT index measures the same gap on the dollar stablecoin. Also: India Bitcoin, Korea Bitcoin.

—
South Africa Bitcoin Premium · daily fix
vs the global BTC/USD price at the ECB-derived USD/ZAR
—
Bitcoin in South Africa (R per BTC, fix)
—
World price (R per BTC)
DAILY FIX
Right now: — INDICATIVE
loading…
Daily fix series · methodology v0.1.0 · rolling 30-day range statistics appear once the series is 30 days old
Today’s range: —
—
—
loading…

Premium history

━ South Africa Bitcoin Premium (daily fix)   ━ weekend indicative · weekends are measured against the last business day’s USD/ZAR.

Where Bitcoin trades in South Africa right now

loading…
ExchangeMid (R)Best bid / best ask (R)Spreadvs index fix
loading…
Per-exchange rates are the latest sampled order-book quotes (best bid and ask as captured) and may lag the live market. Deviation is shown for comparison only, not as a trading recommendation.

What the premium means for a purchase

If I spend rand on Bitcoin in South Africa:

Methodology, changelog and data

How this is calculated — constituents & exclusions

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.

What is measured

The Crypto Times South Africa Bitcoin Premium Index (CTPI-BTC-SPOT-ZAR) measures how much more (or less) Bitcoin costs in South African rand on South African exchange order books than the global dollar price converted at the reference exchange rate, every trading day. The published number is one percentage premium: positive means Bitcoin is dearer in South Africa than the world price converted at the reference exchange rate; negative means cheaper. Its sister index measures the same gap on the dollar stablecoin USDT.

Continuity with the documented South African premium. The persistent premium on South African Bitcoin venues is one of the best-documented in the academic literature on cross-country crypto pricing, attributed to the exchange-control architecture (SARB approval regimes and annual allowances on outbound capital) that constrains arbitrage. This index continues that measurement with an open, daily methodology. Levels will not be identical to earlier studies, which typically compared a single venue’s price with a global reference at one moment: this index aggregates several venues by resting depth, pairs every sample with its own dollar reference, and prices against the ECB cross. The direction and persistence of the gap are comparable; the exact level is a stricter, reproducible measurement of the same phenomenon.

The daily fix

Fix window 11:30–12:30 SAST (12:00 ± 30 minutes), published at 12:31 SAST (10:31 UTC) 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.

Official fixes are computed every Monday to Friday (SAST). Local public holidays do not pause the index: crypto trades every day, so a South African public holiday is an ordinary fix day, priced against the ECB reference rate by the usual rule below. Weekend runs store an indicative point at the same fix time, measured against the last business day’s USD/ZAR and marked distinctly on the chart.

Inputs

  • Venue quotes: the BTC/ZAR order book of each constituent exchange, sampled every 60 seconds during South African market hours (08:00–23:59 SAST) and every 300 seconds overnight. Each sample’s raw payload is stored verbatim and never modified.
  • BTC/USD reference: Kraken spot XBT/USD best-bid/best-ask mid, sampled on every collector pass, seconds before the venue books.
  • USD/ZAR reference: the ECB euro foreign exchange reference rate cross (EUR/ZAR ÷ EUR/USD), published by the ECB around 16:00 CET on TARGET business days under a permissive licence — 16:00–17:00 SAST, hours after the window closes, so the prior ECB business day’s rate applies deterministically. Its date is cited with every fix. The rate may be carried across weekends and holidays for at most 5 calendar days; beyond that an official fix refuses.

Why every sample is paired with its own BTC/USD reference

Bitcoin can move 1% inside the one-hour window. Dividing an hour of rand quotes by a single dollar price would put Bitcoin’s own move into the “premium”. Instead, each venue sample is paired with the BTC/USD reference captured nearest to it in time (within 120 seconds; unpaired samples are counted and dropped, never estimated), and the premium is aggregated from those pairs.

Computation

  1. For each paired sample: r = venue_mid_zar ÷ btcusd_ref — the USD/ZAR rate implied by that venue’s Bitcoin quote.
  2. Per venue: the median of r across its paired samples is the venue observation; the median two-sided rand depth resting within ±TO BE SET bps of mid (stored bands: 50, 100) is the venue weight.
  3. Eligibility: a venue is excluded if it is shadow-listed, has fewer than 2 paired samples in the window, has zero in-band depth, or its depth is below the floor of RTO BE SET two-sided. Exclusions are recorded in the fix’s provenance with the venue’s would-be value.
  4. Aggregate: the depth-weighted median of the venue observations, R. A venue must supply real resting depth, not just a printed price, to move the fix.
  5. Premium: premium_pct = (R ÷ USDZAR − 1) × 100.
  6. Published price level: value = R × btcusd_ref (rand per BTC), where btcusd_ref is the median of the references actually paired, so that value ÷ (btcusd_ref × USDZAR) − 1 reproduces the premium exactly from the figures on the page. The depth-weighted median of observed rand mids is recorded in provenance as a descriptive alternate.

Publication gates

An official fix requires at least TO BE SET eligible venues, a publishable USD/ZAR reference within the carry ceiling, at least one paired BTC/USD 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.

Quality flags (published with the fix, never hidden)

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.

Constituents and venue disclosure

Candidate venues at launch: VALR and Luno. Binance’s BTC/ZAR book was empty when checked on 23 September 2026 and is not collected (its USDT/ZAR book is live and feeds the USDT index); AltcoinTrader’s order book requires an account key and Ovex’s documented address returned no book, so neither is collected unless a public book appears. With two venues the index sits at the family’s two-venue minimum: a day on which either is unavailable at the fix produces no official fix, never a single-venue number. South Africa’s FSCA licenses crypto-asset service providers; a venue’s regulatory status is disclosed beside the fix, never assumed. 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. Changes appear in the changelog.

Live indicative readings

Between fixes the page shows a 5-minute indicative reading computed with the same pairing and aggregation, against the USD/ZAR 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.

The family’s synchronized reading

Besides the daily fix, the engine records one reading a day at 12:00 UTC — the same moment for every index in the family (14:00 SAST here) — computed exactly as above over 11:55–12:05 UTC (13:55–14:05 SAST), against the latest ECB reference captured before the window closes, which is always the prior business day’s rate. It exists so that a future multi-country composite can combine markets observed at the same instant rather than hours apart. 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.

Versioning

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.

Changelog

2026-09-24 · engine v1.12.3 · methodology v0.1.0 (draft)

Methodology text: Local public holidays do not pause the index: a holiday is an ordinary fix day, priced against the ECB reference rate by the usual rule; weekends stay indicative. No change to how the fix is computed. Official fixes remain switched off.

2026-09-24 · engine v1.12.1 · methodology v0.1.0 (draft)

Venue discovery (run 23 September 2026): VALR, Luno and the Kraken and ECB references answered as documented. Binance’s BTC/ZAR book was empty, so Binance is disabled for this index (its USDT/ZAR book is live and stays in the USDT index); AltcoinTrader requires an account key and Ovex returned no book, so both stay disabled. The index runs on two venues, the family minimum. Official fixes remain switched off.

2026-09-23 · engine v1.6.0 · methodology v0.1.0 (draft)

Index created on the CTPI family engine for South Africa — the same gap in its Bitcoin-led form, continuing the academically documented South African premium: venues VALR, Luno and Binance enabled, AltcoinTrader and Ovex shipped as configuration-only candidates pending endpoint confirmation; Kraken reference paired per sample; ECB USD/ZAR denominator; noon-SAST fix published 12:31 SAST. 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.

Corrections

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.

DateTypeFix dateDetail
none recorded
Download data
The daily fix series to date. Full series JSON with a stable schema: /v1/fixes.json.

Frequently asked questions

How does this relate to the historically documented South African premium?
The persistent premium on South African Bitcoin venues is one of the best-documented cases in the academic literature on cross-country crypto pricing, generally attributed to the exchange-control architecture (SARB approval regimes and annual allowances on outbound capital) that stops arbitrage from closing the gap instantly. This index continues that measurement with an open, daily methodology. Levels will not match earlier studies exactly: they typically compared one venue’s price with a global reference at one moment, while this index aggregates several venues by resting depth, pairs every sample with its own dollar reference and prices against the ECB cross. The direction and persistence of the gap are comparable; the level here is a stricter, reproducible measurement of the same phenomenon.
Isn’t Bitcoin just moving? How do you separate the premium from the price?
Every rand quote is paired with the global dollar price of Bitcoin captured within two minutes of it, and the premium is computed per pair before aggregation. A move in Bitcoin itself shifts both sides of each pair and cancels; only the South Africa-versus-world gap remains. See the methodology.
Which exchanges are included?
Candidate constituents are VALR and Luno. Binance lists a Bitcoin/rand market, but its order book was empty when checked on 23 September 2026, so it is not measured; AltcoinTrader’s order book requires an account key and Ovex publishes none at its documented address, so neither can be measured from public data. With two venues the index sits at the family’s two-venue minimum: a day on which either is unavailable at the fix produces no official fix, never a single-venue number. South Africa’s FSCA licenses crypto-asset service providers. Constituent status is set from measured order-book depth during calibration and reviewed against the published venue policy; the venue-status line and the per-exchange table state, every day, which venues the number includes and why any is excluded.
Is this an arbitrage signal?
No. It is a measurement of one gap, once a day, from public order books. Closing it requires moving capital across an exchange-control boundary, which is exactly why it persists; nothing on this page is a recommendation to try.
Is this the black-market or parallel dollar rate?
No. These are public, on-exchange order-book prices on licensed South African venues open to verified users. The premium is a market phenomenon, not an unofficial exchange rate.
What happens on weekends and holidays?
Crypto trades every day. Official fixes run Monday to Friday, and local public holidays do not pause the index: a holiday is an ordinary fix day, priced against the ECB reference rate by the usual rule. The ECB reference does not update at weekends, so weekend readings are published as indicative, measured against the last business day’s USD/ZAR, and marked distinctly on the chart.
Can I actually trade at these prices?
The per-exchange table shows sampled order-book best bid and ask — tradeable quotes at sample time, subject to depth and fees. The index value itself is a computed benchmark, not a quote.
Is the index live?
The citable number is the once-daily fix. A live indicative reading updates continuously above it and is never part of the daily fix series.
Source: The Crypto Times South Africa Bitcoin Premium Index (CTPI-BTC-SPOT-ZAR). https://www.cryptotimes.io/data/south-africa-bitcoin-premium-index/
loading…