Skip to content

Learn

Methodology

What the numbers on this site are, where they come from, and where they should not be trusted.

Coverage

7 exchanges and 747 equity listings in the current snapshot. Africa has more than twenty stock exchanges; the ones here are those with reliable, regularly published public price data. Notable gaps include Morocco (CSE Casablanca), Tunisia (BVMT), Tanzania (DSE), Rwanda (RSE) and Mauritius (SEM). Adding a market means writing one adapter, so the list is expected to grow.

Which data source supplies each exchange, and how many listings it provides.
ExchangeSourceListings
NigeriaNGXNigerian Exchange, direct147
South AfricaJSEYahoo Finance (partial)439
EgyptEGXYahoo Finance (partial)43
UEMOA (8 countries)BRVMBRVM, direct48
BotswanaBSEBotswana Stock Exchange, direct29
UgandaUSEUganda Securities Exchange, direct24
MalawiMSEMalawi Stock Exchange, direct17

Where a market is served by Yahoo, its constituent list is a curated set of tickers validated against the API rather than a complete exchange listing, so coverage is partial by construction. Market caps and valuation ratios are unavailable from that source.

Prices

Prices are end-of-day or delayed, never real time. Each exchange page shows when its data was last refreshed. Treat every quote as indicative: for anything you intend to trade on, use your broker's book.

Daily percentage change is computed from the price and the absolute change reported by the source, not from an independently sourced previous close. BRVM is the exception: it publishes a percentage and no amount, so we show its percentage, and the amount only where a close we recorded ourselves reproduces that percentage. If our closes disagree with most of the board, the day's BRVM changes are withheld.

Price history and computed returns

A listing's stored price history is wholly one of two series, never a splice of them:

  • An adjusted vendor series for Johannesburg and Cairo, corrected for splits and dividends. The trailing returns for those two markets come from the same vendor.
  • For the four markets whose exchanges publish a price but no past — Lagos, Abidjan, Gaborone and Kampala — the closing prices this site records itself. The record began in August 2026 and gains a close for each session it captures (in Abidjan and Kampala only when the price moves, since an unchanged price is not filed again). These closes are raw, not adjusted for splits or dividends, so a split shows as a fall in the chart rather than being smoothed away. Trailing returns for these markets are computed by us from this record, and any period it does not yet cover is left blank rather than estimated.

One exception, until the record reaches a year end: a Lagos share's year-to-date return is measured from its 2025 close as published by the Nigerian Exchange in its own list of equities for 31 December 2025. It is left blank for any share whose number of shares has changed since then, or that has announced a bonus, rights issue, split or reconstruction this year, because an unadjusted price across one of those is not a return.

Each chart names which of the two is on screen and the dates it runs between, and the stock page states the date each set of returns runs to. Tables elsewhere rely on one rule instead: returns that end more than three trading sessions before the price shown beside them are withheld, with the reason.

Currency conversion

Each currency's rate to the dollar and its move this year come from the same source, so the two cannot contradict each other: Yahoo Finance's latest quote and daily series where it has one, and the ExchangeRate-API open endpoint only where it does not, in which case no move is shown. The two CFA francs are converted through their fixed euro peg. ExchangeRate-API is also kept as a check, and a currency whose two sources differ by more than 2% is flagged on the run that finds it. Because these are reference rates rather than tradeable rates, dollar figures are approximations — and in markets with parallel or restricted FX they can differ materially from what you would actually receive.

Currency-adjusted index returns use the change in the USD/local rate since the last close of the previous calendar year, from Yahoo Finance:

dollar return = (1 + local return) / (1 + USD/local move) - 1

Where no FX history is available for a currency, the dollar return is left blank rather than estimated. That currently affects the Zimbabwe dollar (ZiG), which has no continuous public series.

Charts

Price charts come from two places. Where TradingView carries the symbol — South Africa, Nigeria and Egypt — the chart is their embed. TradingView carries none of BRVM, Botswana, Uganda or Malawi, and its embed also renders empty for African tickers it lists but holds no data for, so every chart panel can fall back to our own price series and says which of the two you are looking at.

Symbols are resolved through TradingView's own symbol search and only an exact ticker match on the expected exchange is accepted. Nothing is constructed by pattern — a guessed symbol would show a different company's chart, which is worse than showing none.

What your browser contacts

Reading Djeli should not tell anyone else what you are reading. Every page, and the things it needs — fonts, styles, company logos, the search index — is served from this site. The one outside script is Cloudflare Web Analytics, which counts page views and, by Cloudflare's own account, uses no cookies. There is no tag manager, no advertising pixel and no session recorder, and no cookie is set unless you sign in with a wallet. The privacy policy lists everything.

Company logos used to be loaded directly from TradingView, which meant your browser announced to them which company you were looking at — the address of each logo contains the company's name. They are now copied to this site once, when the data is built, and served from here. Looking up a share tells nobody but this site, and what the site counts is page views, not who viewed them.

Two exceptions, and both need your click. The TradingView chart: where you choose that source instead of ours, their code and their frame load from their servers and they see the request, as any embedded chart would. Our own chart is what loads by default and it reaches nobody. And on the account page, if you choose Coinbase Wallet to sign in, its software connects through Coinbase's servers.

Index returns are price returns

Year-to-date index figures exclude dividends. Several of these markets carry high dividend yields, so total return is often better than shown — in local currency terms.

The corporate calendar

The calendar lists two kinds of date, and marks each one. Announced dates were read out of a company's own document — a JSE SENS release, an NGX notice (scanned ones are read by OCR, and a date is kept only when two readings agree), or a Kenyan issuer's published calendar — and each carries the sentence it came from and a link to the original. Projected dates are derived from a company's past payment pattern; nobody has announced them, and they are kept in a separate calendar file. There is no free machine-readable feed for African corporate actions, which is why the site reads the documents themselves.

No entry should be marked confirmed without a source URL. That rule is enforced in the data schema rather than by convention.

Known limitations

  • Fundamentals (market cap, P/E, dividend yield) are sparse — the upstream source leaves many fields empty, particularly on the smaller exchanges.
  • Market caps are as reported and are not adjusted for free float, so they overstate investable size where a state or parent holds most of the shares.
  • Cross-listed companies appear separately on each exchange and are not deduplicated.
  • Price history depth varies sharply by market. Johannesburg's and Cairo's vendor series hold about a year of weekly closes, while the four markets whose closes we record ourselves have only as much history as that record — each chart states the dates it covers. See the price history section above for what those series are and are not.
  • Five of the seven markets are read from their own exchange's publication through a dedicated adapter. Johannesburg and Cairo still come through Yahoo Finance with a public aggregator as fallback — neither is a primary exchange feed, and moving those two onto exchange data is the remaining robustness task.
  • The two sources do not always agree. The JSE All Share year-to-date figure, for instance, differs by roughly two percentage points between them, most likely a difference in index variant or baseline date. Where they disagree we show the source listed above and do not silently blend them.

Snapshot

Generated Mon, 12 Oct 2026 23:55:22 GMT
FX reference rates as of 2026-10-12T08:44:29.000Z
Fundamentals included: yes