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.
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.
Open data has gaps, and we'd rather show them than paper over them. About a fifth of the transmission km doesn't join up in OSM; that engine graph stays 21.3% fragmented, though the permissioned NTDC GIS layer has since closed the gap for the map itself (99.5% of existing route-km in one backbone at 220/500 kV). 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 (gridfinder, ~75% global accuracy and weak for Pakistan) is there for visual density only and never feeds a balance or scenario number.