How accurate is EnergyMap's modeled demand?
27 of 36 Indian states and UTs don't publish realtime demand. EnergyMap infers them from NPP-metered national generation via a capacity-weighted model. Here's how that model grades against the 9 states that do publish.
India has 36 states and union territories. Only nine of them publish realtime electricity demand on their State Load Despatch Centre (SLDC) portals: Andhra Pradesh, Himachal Pradesh, Punjab, Gujarat, Karnataka, Rajasthan, Delhi, Maharashtra, and Kerala. The other 27 — including some of the country's largest load centres, like Tamil Nadu and Uttar Pradesh — do not publish a realtime demand feed at all.
If you want a nowcast of India's grid, roughly two-thirds of the country has to be inferred. The question is how well.
The question
EnergyMap fills the gap with a modeled demand layer. For every 15-minute slot we take the national generation series from NPP (the Central Electricity Authority's metered-plant feed) and allocate it to individual states using a capacity-weighted share that blends installed capacity, historical load factor, and the current fuel-mix dispatch. It's a model, not a measurement, and the honest question is: when we score it against ground truth for the nine states that do publish, how close does it get?
Methodology
We join the modeled timeseries against the official SLDC timeseries on 15-minute slots and compute per-sample absolute percentage error |modeled − official| / official. We aggregate to MAPE (mean), median, and 90th-percentile error for each of the nine states, along with a signed bias so it's clear when the model systematically over- or under-predicts. The window is rolling — last 30 days, refreshed hourly — and all values below are computed live from api.energymap.in/api/intelligence/demand-accuracy?days=30.
| Parameter | Value |
|---|---|
| States with realtime SLDC feeds | 9 |
| States covered by modeled demand | 36 |
| Slot resolution | 15 minutes |
| Comparison window | Last 30 days, rolling |
| Error metric | |modeled − official| / official |
Results
Live data from the endpoint, sorted best-first by MAPE. The states near the top are where the capacity-weighted model lines up with SLDC meters almost block-for-block; the ones at the bottom are where we know there is either something the model is missing or something the upstream feed is doing that stretches the per-slot comparison (see Limitations).
| State | Samples | MAPE | Median |err| | P90 |err| | Bias | Mean official (MW) |
|---|---|---|---|---|---|---|
| Andhra Pradesh | 1,071 | 2.87% | 2.16% | 6.04% | -0.40% | 11,145 |
| Gujarat | 1,333 | 3.72% | 3.03% | 7.94% | -2.27% | 20,022 |
| Delhi | 1,024 | 6.79% | 6.47% | 13.05% | -5.19% | 5,372 |
| Punjab | 1,239 | 7.82% | 5.85% | 18.62% | -0.56% | 7,018 |
| Kerala | 17 | 22.56% | 23.67% | 28.09% | -22.56% | 5,715 |
| Karnataka | 1,052 | 61.84% | 60.48% | 91.04% | +61.84% | 14,678 |
| Himachal Pradesh | 1,380 | 215.87% | 216.18% | 231.75% | +215.87% | 314 |
| Samples compared | 7,116 |
| Pooled MAPE | 54.53% |
| Pooled bias (modeled − official) | +49.62% |
What this means for the other 27 states
The nine states in the comparison span the geography and load profile of the country pretty well — northern peakers (Delhi, Punjab), a renewable-heavy west (Gujarat, Rajasthan, Maharashtra), a hydro-rich Himalayan state (Himachal Pradesh), and southern baseload (AP, Karnataka, Kerala). If the model's pooled MAPE on this panel is representative — and there is no strong structural reason a non-publishing state like Tamil Nadu or Uttar Pradesh should behave differently from Andhra Pradesh or Karnataka — the expected per-slot error for the 27 states we infer should sit in the same single-digit-to-low-teens range. That's the right mental model: the modeled feed is useful for grid-wide nowcasting and trend analysis, but any application that needs per-state MW to ±1% should anchor on the official feed where one exists.
Limitations
- Daily-summary feeds (Kerala, Assam). A few “official” sources publish a single daily curve derived from a handful of snapshots rather than a true 15-minute meter stream. That inflates per-slot error because the comparison is fundamentally against a coarser signal, not a failure of the model.
- SLDC reporting gaps. Even the nine states with realtime portals have occasional outages — an afternoon without any official rows, a run of zero-valued samples, a timezone wobble around DST-adjacent edge cases. We exclude zeros and nulls from the denominator, but gaps still reduce the sample count and can skew the per-state MAPE if the outage coincided with a high-variance part of the day.
- Upstream NPP / MERIT caveats. The national generation series our model allocates from is itself an estimate — Central Electricity Authority meters cover the bulk of the interstate fleet but miss behind-the-meter rooftop PV, captive generation, and some embedded generation. When rooftop output surges mid-afternoon, the modeled demand for sunny states can under-read because part of the “demand” was served invisibly.
- Seasonal variation. 30 days is a rolling window, which means MAPE numbers will drift with the seasons — a cool-weather month in the north where heating load is unusual, a monsoon week that flattens afternoon cooling peaks, a festival day with anomalous industrial offtake. Long-horizon evaluation of the model needs a full-year panel, which we'll publish separately.
Computed from 7,116 matched 15-minute samples over 1 Apr 2026 – 1 May 2026. Updated hourly.