Built on open and permissioned data, with the gaps left showing
Data sources
| Source | Vintage | Type | Used for |
|---|---|---|---|
| NTDC GIS network KMZ (permissioned, via ISMO) | Sep 2024 | 220/500 kV grid stations + tower-level routes | Primary transmission geometry, the map layer |
| NTDC PSS/E case SP-2025-Normal (permissioned, via ISMO) | 2025 | Full electrical model: buses, ratings, transformers | Measured thermal ratings, station attributes, corridor cut-set capacities. Aggregates only, the raw case is not redistributed |
| NPCC hourly system demand (permissioned, via ISMO) | 2015–2025 | 87,672 hourly national load rows | Primary Pakistani demand signal: temperature response, the FY25 peak anchor, the forecaster target |
| LUMS REWDP weather (6 cities) | 2023–2024 | Hourly temperature and weather | Demand-weighted national temperature for the temperature-demand regression |
| NTDC DISCO MTLF 2026–35 (permissioned, via ISMO) | 2026 | DISCO-wise peak MW forecasts | DISCO peaks, per-station forecasts, the 11-year district demand series and the DISCO balance |
| OSM 2026 (Overpass) | Jun 2026 | Full network | Engine graph topology; legacy map layer since the NTDC GIS integration |
| OpenGridPK | May 2026 | OSM + cleanup | Substation centroids + plants |
| gridfinder (Arderne et al., Zenodo 3538890) | 2019 | Predicted MV lines | Visual density layer only, not in balance/scenarios |
| PTGM (Nisar et al.) | 2015 | 40-node model | Provincial demand-share weights (population proxy, estimated) |
| World Bank | 2017 | OSM extract | Evaluated · not used |
How we label every value
Something we can point to in a source dataset: where a plant sits, a line's voltage, a rating in the NTDC case, how the network connects.
Worked out from measured inputs, like line lengths, plant-to-node snapping, or which parts hang together as one backbone.
Built from a stated proxy where the real figure is missing, like the census-share split of K-Electric's load across Karachi districts.
A model's best guess at future demand, with the uncertainty that comes with it.
Network topology
We model the high-voltage system as a graph. The NTDC GIS layer, the primary transmission geometry, carries 99.5% of existing route-km in one connected backbone; the OSM-derived engine graph (500 m substation snap) reaches 78.7% and stays on as the legacy layer.
Network nodes
Transmission edges
km in one backbone (NTDC GIS)
Plants mapped
Demand model
Forecaster: gradient-boosted quantiles on Pakistani demand
The demand forecaster trains on the measured NPCC hourly series with weather and calendar features. On a held-out autumn 2024 test window it lands 2.85% MAPE overall and 1.31% on the 50 highest-demand hours. Its 80% uncertainty band is conformally calibrated and covers 85.2% of test hours, a check we run rather than assume.
| Metric | Value |
|---|---|
| Test MAPE (Sep–Nov 2024) | 2.85% |
| Top-50 demand hours | 1.31% |
| 80% band coverage | 85.2% |
A second, lag-free model drives the temperature slider and the peak-day simulator: it predicts from weather and calendar alone, anchored to the measured 29,201 MW FY25 evening peak. Past 33°C its response is a linear 377 MW/°C extrapolation with a widening band, and the interface says so wherever it applies. The demand series ends Jun-2025, so nothing on the site is a live feed. An earlier Bangladesh-proxy shape model has been retired.
The evening peak, and why nothing offsets it
Pakistan's demand now peaks at 23:00, when solar output is zero. That zero is measured: grid solar produced 0 MW in every one of FY25's ten highest-demand hours. The 1,673 MW evening gap the engine computes is therefore real and unoffset, because nothing on the grid stores daytime energy for the evening.
Batteries are booming, but behind the meter. Cumulative lithium-ion battery imports reached roughly 7.6 GWh by end-2025, 4.6 GWh of that in 2025 alone, driven by net billing. Those batteries sit in homes and businesses, serve their owners' own loads, and are invisible to the grid operator. Operational utility-scale grid storage is essentially zero; the largest battery in the country is a ~20.7 MW captive unit at Lucky Cement's solar plant, serving the factory rather than the grid.
Grid-scale storage exists so far only as plans. The government is planning large battery systems to stabilise the grid, including an ADB-backed ~1,000 MW / 2,000 MWh project in the IGCEP 2025-2035 pipeline. The tool reaches the same conclusion from the data: solar cannot move the 23:00 number, and storage or firm capacity can. The add-battery scenario in the console shows the effect.
The bill assistant
Bijli Baba
A separate engine from everything above, for a different question. It takes the units off a household bill and works out where they went, what the next unit costs, and whether rooftop solar pays under the 2026 net-billing rules. It shares no data and no model with the grid simulator.
- What it computes
- The energy charge and the fixed charge, from the notified 2026 schedule of tariff. Appliance shares come from typical power ratings and seasonal running hours, not from any measurement of your equipment.
- What it does not
- There is no tax layer. GST, electricity duty, surcharges, meter rent and the TV fee are not modelled, so its figure and the amount printed on a bill are different quantities. It never tells anyone a bill is wrong.
- Where the assistant's numbers come from
- Baba orchestrates; he does not calculate. Every figure in a reply must trace to a calculator result, to something you typed, or to a published tariff value. A reply containing a number that traces to none of those is discarded before you see it, and the engine's own wording is sent instead.
- Where it declines to answer
- How long protected status is lost for is genuinely unsettled in the notified documents, so the tool says so rather than picking a number. Time-of-use advice is withheld unless the household has a time-of-use meter, and a solar payback is always a range.
Limitations
Sub-national demand is split by population
The national demand total is measured, but its split across provinces and DISCOs rests on population-based weights (PTGM 2015) reconciled against DISCO planning peaks. Provincial, DISCO and district figures are therefore indicative rather than metered values.
Energy balance, not power flow
The engine is a zonal energy balance: it asks whether enough power exists and can reach each zone within measured corridor capacities. It does not solve AC power flow, so line-level loading, voltage and stability are outside what it can say.
A handful of remote hydro plants sit off the mapped network, and capacity figures are nameplate rather than what's actually running. The estimated distribution layer is there for visual density only and never feeds a balance or scenario number.