Skip to content
Methodology

Built on open and permissioned data, with the gaps left showing

Wattlas doesn't invent grid topology, capacities or demand figures. Every value carries a label so you know whether you are looking at something measured or something estimated.

Data sources

SourceVintageTypeUsed for
NTDC GIS network KMZ (permissioned, via ISMO)Sep 2024220/500 kV grid stations + tower-level routesPrimary transmission geometry, the map layer
NTDC PSS/E case SP-2025-Normal (permissioned, via ISMO)2025Full electrical model: buses, ratings, transformersMeasured thermal ratings, station attributes, corridor cut-set capacities. Aggregates only, the raw case is not redistributed
NPCC hourly system demand (permissioned, via ISMO)2015–202587,672 hourly national load rowsPrimary Pakistani demand signal: temperature response, the FY25 peak anchor, the forecaster target
LUMS REWDP weather (6 cities)2023–2024Hourly temperature and weatherDemand-weighted national temperature for the temperature-demand regression
NTDC DISCO MTLF 2026–35 (permissioned, via ISMO)2026DISCO-wise peak MW forecastsDISCO peaks, per-station forecasts, the 11-year district demand series and the DISCO balance
OSM 2026 (Overpass)Jun 2026Full networkEngine graph topology; legacy map layer since the NTDC GIS integration
OpenGridPKMay 2026OSM + cleanupSubstation centroids + plants
gridfinder (Arderne et al., Zenodo 3538890)2019Predicted MV linesVisual density layer only, not in balance/scenarios
PTGM (Nisar et al.)201540-node modelProvincial demand-share weights (population proxy, estimated)
World Bank2017OSM extractEvaluated · not used

How we label every value

Measured

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.

Derived

Worked out from measured inputs, like line lengths, plant-to-node snapping, or which parts hang together as one backbone.

Synthetic

Built from a stated proxy where the real figure is missing, like the census-share split of K-Electric's load across Karachi districts.

Forecast

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.

3,887

Network nodes

3,924

Transmission edges

99.5%

km in one backbone (NTDC GIS)

231

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.

MetricValue
Test MAPE (Sep–Nov 2024)2.85%
Top-50 demand hours1.31%
80% band coverage85.2%
Scope caveat

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.