Africa, Measured. This page is the rulebook for the FX tracker on /money/ — what each number is, how the premium is calculated, which source wrote it, and when a row goes dim. For the full data catalog (CSV, country pages, non-FX series), see the hub.
Full hub methodology → · Downloads →
Official vs market
Official is the central bank’s published rate for the currency against the US dollar — or a bank reference rate when that is what the bank posts. It is the number on the bank’s site (or the regional bank for the CFA zones). We do not invent an official series.
Market is what people actually pay. We prefer a parallel print from a peer-to-peer venue when the book is usable. If there is no usable parallel book, we fall back to a retail remittance quote. Parallel and retail are never blended into one number.
A Reference badge on the official column means the bank publishes a reference or indicative rate rather than a hard official fix. We still use it as the official leg for the premium.
How the premium is computed
The premium is how much more expensive the market dollar is than the official one, as a percent. Positive means the market is weaker — you need more local currency per $1 on the market than at the official print.
premium = (market − official) / official × 100
We compute it only when both legs exist for that currency. If either side is missing, the premium cell is blank. We do not interpolate, carry yesterday forward, or plug in a zero.
Example. Official = 1,000; market = 1,150 → premium = (1,150 − 1,000) / 1,000 × 100 = +15.00%.
The 7-day arrow on the table compares today’s premium to the premium roughly seven days earlier (same formula on both days). It is a change in the gap, not a forecast.
Named sources
- Official / reference — the country’s central bank (or regional bank). Nigeria’s official leg is the CBN print. Algeria and peers may show a bank reference when that is the published series. Source names appear on each row (and on each currency hub page).
- Parallel — P2P market quotes, primarily Bybit P2P (median of a small sample of ads; sample size and best quote are retained for audit). Liquidity tier comes from the book: thin books are flagged.
- Retail — remittance / retail FX quotes when parallel is paused or absent (Wise and peers, corridor-dependent).
Every figure carries an as-of time. The Money table shows those times on the row — not only on hover.
Status badges
- LIVE
- Both legs present and the market leg is from a liquid parallel book (or official-only where that is the honest state of coverage).
- THIN
- Parallel book is sparse (thin liquidity tier), or we only have a reference official with no observable market. Treat the print as directional, not a deep market.
- RETAIL ONLY
- No usable parallel book; the market column is a remittance/retail quote. Useful, but not a street parallel.
- PEGGED
- Hard peg / fixed parity (for example CMA currencies that mirror the rand). We do not invent a separate parallel for the peg.
- NONE
- No public source we trust yet. The row stays visible so the gap is honest — original collection planned, not a silent omission.
Update cadence
- Public snapshot (
rates.json) — rebuilt about every 15 minutes from the hub database. - Parallel (P2P) — refreshed on the same markets cadence when the collector runs; timestamps are per-leg
fetched_at. - Official / reference — updates when the bank publishes (often daily). The as-of is the bank’s
valid_atcalendar date, not our scrape clock. - Retail — updates when the remittance collector runs for that corridor; slower than P2P is normal.
If a row is THIN, or a leg is older than twice its expected cadence, the row timestamp is muted and shows relative age so staleness is obvious at a glance.
Limitations
- Thin markets — a handful of P2P ads can move the median. We flag THIN; we do not smooth the book into false confidence.
- Single-source risk — one venue or one bank page can be wrong, delayed, or reshaped. We name the source so you can check it.
- Timestamp discipline — official
valid_atis the bank’s as-of; marketfetched_atis when we collected the quote. They are different clocks on purpose. Premiums require both legs; missing days stay blank. - No interpolation — gaps stay gaps. Rankings and history omit missing days rather than inventing them.
Go deeper
Country pages, CSV downloads, inflation, policy rates, and the rest of the knowledge graph live on the data hub:
- data.africanexponent.com/methodology/ — full hub rulebook
- data.africanexponent.com/downloads/ — machine-readable catalog
- /money/ — live FX tracker