MUTXRI TERMINAL - DOCUMENTATION

1 · Overview

MUTXRI TERMINAL is a financial terminal for African equity markets - a Bloomberg/Godel-style shell covering four exchanges:

ExchangeCountryCurrencySecurities
JSESouth AfricaZAR (ZAc)431
EGXEgyptEGP374
NGXNigeriaNGN156
NSEKenyaKES69

1,030 securities, 0 duplicate tickers. Every security is classified into a real industry sector (0 "Other" cells).

2 · Usage

Exchange tabs

Click JSE / EGX / NGX / NSE to switch markets. The tape, watchlist and heatmap update instantly.

Watchlist

Scrollable list of all securities with price, change % and volume. Click any row to open the stock panel on the right.

Stock panel (right)

Center tabs

TabWhat it shows
HEATMAPSector treemap of the active exchange - every stock as a sized cell
SCREENERFilter stocks by exchange, sector, price range
FINANCIALSIncome statement / balance sheet / cash flow + verified filing PDF links
REG · GLCO · BND · FX · TAS · RATINGSRegulatory, commodities, bonds, FX, and ratings panels

3 · Data sources

SourceUsed forHonesty label
Yahoo FinanceJSE/EGX live quotes & historyLIVE (delayed)
kwayisi (afx.kwayisi.org)NGX/NSE EOD board + period returnsEOD
African FinancialsNGX/NSE statements, descriptionsFILED
Company IR sitesVerified annual-report PDF linksFILED
Official exchange listingsSecurity universe (verified)VERIFIED

No number is fabricated. Missing data renders as "-" or an honest "no market data" message - never a guessed figure.

4 · Accounts & API endpoints

Email accounts

Sign up with your email (password min 6 chars). Passwords are pbkdf2-hashed - never stored in plaintext. Sessions last 30 days. Users persist in MongoDB.

EndpointAction
/api/auth/signupCreate account (email + password + optional name)
/api/auth/loginLog in, returns session token
/api/auth/meValidate session, returns user
/api/auth/logoutEnd session

Market data

EndpointDescription
/api/listing?exchange=XFull security list for an exchange
/api/heatmap?exchange=XHeatmap cells (price, sector, volume)
/api/chart?symbol=X&range=R&interval=IOHLCV bars
/api/quotes?symbols=A,BLive quotes
/api/metrics?symbol=X&exchange=EFull 70-field metrics suite
/api/financials?ticker=X&statement=income|balance|cashflowFinancial statements
/api/indicesMarket indices tape (EGX 30, JSE Top 40, + baskets)
/api/fx · /api/news · /api/ratesFX rates, news, interest rates
/api/healthServer health check

5 · Known limits (honest)

JSE/EGX financial statements

No free structured source exists for South African or Egyptian financial statements. African Financials covers 0 SA/Egypt companies. Company IR PDFs are mostly image scans. Paths forward: OCR, or a licensed feed (Twelve Data ~$8/mo).

NGX/NSE intraday history

Yahoo dropped Kenyan/Nigerian tickers. The terminal shows honest EOD period-return history (1W/1M/3M/6M/1Y) - real published returns, never fabricated candles.

Delisted / suspended stocks

22 securities (Uchumi, Mumias, DUNLOP, UBN, KPLC prefs...) have no quotes on any free feed - the market itself produces no data. Shown honestly with status.

14/190 NGX/NSE statements

Their PDFs use unusual formats (quarterly management reports, encoded text layers). Filing PDF links are shown instead.

6 · Deployment

Local (live)

cd /d/mutxri-terminal
python afri_server.py     # -> http://127.0.0.1:8081/

GitHub Pages (this site - static snapshot)

This site serves a data snapshot (EOD listings, heatmaps, indices). Live quotes/charts are available on the local server. The badge in the footer tells you the mode: ● LIVE or ● SNAPSHOT.

Going fully live

Host afri_server.py on Render/Fly (PORT env supported, CORS enabled), set API_BASE in index.html, redeploy. See the repo README for the full guide.

7 · Command bar

The command line is the input at the bottom right of the status bar. Click it, type, press Enter. Input is upper-cased before it is matched. There is no global keyboard shortcut to focus it: the ` glyph in the status bar is a label, not a binding.

Full user-facing reference, with the tour video: guide.html.

Grammar

InputResolves viaAction
HELPliteralLists every panel label in the info rail
SOLresolveSec()Ticker, bare ticker (ABG for ABG.JO) or exact name → quote sheet
HEATMAPpanelFor()Panel label or lower-case id → opens in the stage
ABG FINANCIALSbothLast token is a panel, the rest is the security → panel scoped to it

Aliases (PANEL_ALIAS)

CodeTargetStatus
DES, SPLCinfo (quote sheet)works
FA, FIN, RVfinancialsworks
EQSscreenerworks
CNnewsworks
GP, HPchartdead: no panel has id chart, so panelFor() returns null and the input falls through to "unknown"

Removed from this table: CF, DIV and WEI were documented here but were never implemented in either PANELS or PANEL_ALIAS.