UAE Index Dashboard
UAE Index Dashboard
Static-rendered dashboard for UAE-listed equities, served at https://naitongzhang.com/uae-index/.
What’s inside
| Module | File | Purpose |
|---|---|---|
| Layout | _layouts/uae-index.html |
Page layout (extends default, includes panels) |
| Panels | _includes/uae-index/*.html |
Market overview, indices chart, stocks table, custom index builder, about |
| Front-end JS | assets/js/uae-index/*.js |
Tabs, ECharts, sparklines, filters, custom index math |
| Stylesheet | assets/css/uae-index/style.scss |
Dashboard styles (loaded as style.css after Jekyll build) |
| Data | _data/uae/*.json |
Pre-rendered data files (regenerated daily) |
| Cron job | .github/workflows/uae-index-update.yml |
Daily data refresh |
| Python | scripts/uae-index/*.py |
Yahoo Finance + DFM API fetchers |
Data sources
- DFM equities (52/52 live): Yahoo Finance via
yfinance. Prices in AED. - DFMGI: DFM’s official
https://api2.dfm.ae/mw/v1/indices(~135 days). - UAE ETF (iShares MSCI UAE, USD): Yahoo Finance as a USD-denominated cross-check benchmark.
- ADX equities (52 tickers): metadata only. Yahoo Finance does not carry ADX local tickers.
How the daily refresh works
- Cron triggers
.github/workflows/uae-index-update.ymlat 12:30 UTC Mon-Fri (16:30 Dubai, after market close). - Python runs
scripts/uae-index/run_all.py, which callsfetch_indices.pythenfetch_stocks.py, then writesmeta.json. - If any data file changed, the workflow commits and pushes back to
main. - The existing Jekyll deploy workflow (
jekyll-gh-pages.yml) rebuilds the site.
Local development
# Install Python deps
pip install -r scripts/uae-index/requirements.txt
# Run the data pipeline locally
python scripts/uae-index/run_all.py
# (Optional) Run Jekyll locally
bundle install
bundle exec jekyll serve
Limitations
- ADX index (FTSE ADX General) is not on Yahoo Finance. UI shows N/A.
- Custom index builder only uses DFM stocks (ADX has no price feed here).
- Data is end-of-day. No intraday, no Level 2, no order book.
- No portfolio tracker. This dashboard is a market/index view; if you want portfolio
P&L, edit tickers in
_data/uae/tickers.jsonto add your holdings (planned future work).
Why ADX prices are N/A
Yahoo Finance exposes DFM equities under .AE (e.g. EMAAR.AE) but does not carry
ADX equities (IHC, FAB, TAQA, ALDAR, ADNOC, …) under any accessible ticker. Both DFM and
ADX require paid subscriptions (LSEG/Refinitiv/ICE) for full local data. For a free
build that runs on GitHub Actions without API keys, DFM-only is what we ship. ADX
metadata (sector, name, ISIN-style listing) is preserved so future builds with a paid
source can flip coverage on without restructuring the layout.