Logo Lanfrica

sawawallet/african-market-data

Domaine:

socioeconomicdigital infrastructure

Type de record:

software
Créateur:
saw
Hôte:
Open market data infrastructure for African stock exchanges. One normalised API across NGX, JSE, GSE, NSE Kenya, EGX, BRVM and 11 more venues — fixed-point prices, provenance on every quote, and a path from free sources to direct exchange feeds. # African Market Data **Open market data infrastructure for African stock exchanges.** One normalised schema across NGX, JSE, GSE, NSE Kenya, EGX, BRVM and twelve more venues — with fixed-point prices, honest provenance on every quote, and a path from free public sources to direct exchange feeds. --- ## Why this exists If you have tried to build anything on African market data, you already know the problem: every venue publishes differently, half of them publish nothing a machine can read, symbols do not reconcile across sources, and the vendors that do aggregate charge for a 30-minute refresh and call it live. This project is the layer underneath that. It normalises what is available, tells you honestly how stale it is, and is architected so that swapping a free polled source for a licensed direct exchange feed is a configuration change rather than a rewrite. ## What makes it different **Prices are fixed-point integers, never floats.** MITCH — the protocol JSE, NSX and NSE Kenya speak — publishes prices as signed `i64` with eight implied decimal places. That shape is preserved end to end, through the bus, into ClickHouse, and out of the API. A float creeps in once and reconciliation breaks silently months later. ``` GHS 7.03 → { minor: 703000000, scale: 8, currency: "GHS" } ``` **Every quote carries its provenance.** Source, exchange timestamp, receive time, delay class, and whether the timestamp was imputed because the source publishes none. ```jsonc { "instrument": "GSE:MTNGH", "last": { "minor": 703000000, "scale": 8, "currency": "GHS" }, "provenance": { "source": "kwayisi", "as_of": "2026-08-18T02:20:08Z", "delay": "unknown", "as_of_imputed": true // this source publishes no timestamp — we say so }, "staleness_seconds": 0, "stale": false } ``` This matters more here than on liquid markets. NGX clears roughly 42,000 deals across a seven-hour session spread over ~150 tickers, so the long tail prints a handful of times a day. **A stale price and …