GB electricity demand — forecast, mapped, and proven
A real machine-learning forecast of Great Britain’s electricity demand, trained on 4,891 days of National Energy System Operator data and population-weighted weather. The honest live number: 4.14% MAPE on a real 1–7-day forecast, scored on the temperature that was genuinely forecast at the time — beating both the neural net and the seasonal benchmark. The 4.05% 14-day figure elsewhere on this page is the known-weather upper bound (it assumes a perfect temperature forecast), shown separately. Every figure is an out-of-sample measurement, not a claim.
real data NESO demand 2013–now · 4,891 dayslive skill 4.14% MAPE on a real 1–7-day forecast (genuinely-forecast weather) — beats the neural net (4.90%) and the 6.24% seasonal baselineupper bound 14-day, known-weather 4.05% MAPE — assumes a perfect temperature forecastregional population & weather-scaled estimate
4.14% MAPE
Live forecast error — real 1–7-day forecast on genuinely-forecast weather (the honest number)
2.10pts
Below the 6.24% seasonal baseline — and below the neural net at every lead
4.05% MAPE
14-day, known-weather upper bound — assumes a perfect temperature forecast (not a live number)
8,597
Individual out-of-sample forecasts in the backtest
Honest by design. The national forecast is the rigorous, backtested core. The regional map is an estimate — national demand split by real DNO-area population and adjusted by each area’s real temperature — because no public multi-year half-hourly regional demand history exists to backtest against. National is measured; regional is clearly-labelled modelled. Built only on free public data (NESO + Open-Meteo); no proprietary systems.
NESO demandHistoric Demand Data, half-hourly → daily, 4,891 days from 2013.
Out-of-sample onlyExpanding walk-forward, monthly origins — every figure tested on data never trained on.
Free & publicNo proprietary feeds — the whole pipeline runs on openly-licensed public data, cached locally.
Where demand is now — GB by distribution region (estimate, coloured by modelled demand)
Tap or hover a region
19,304 MW national
14 GB DNO licence areas · 2026-05-23 · coloured by modelled demand. Select any region for its share, population and local temperature.
Ranked by modelled demand
South East England2,315 MW
London2,251 MW
North West England2,024 MW
Southern England1,963 MW
East England1,618 MW
West Midlands1,564 MW
Yorkshire1,474 MW
East Midlands1,308 MW
South West England1,175 MW
South and Central Scotland1,085 MW
North Wales, Merseyside and Cheshire820 MW
North East England737 MW
South Wales582 MW
North Scotland385 MW
lowerhigher demand
Method — regional is an estimate: ESTIMATE: national demand split by real DNO-area population (ONS) and adjusted by each area's real temperature. No public multi-year half-hourly regional demand history exists to backtest against — national is the rigorous, backtested part. The 14 regions are the real GB DNO Licence Areas (boundaries from NESO’s published GeoJSON, drawn here on the British National Grid). Hover or tap a region for its modelled figure.
The forecast — choose a horizon (recent actuals + the road ahead, with widening uncertainty)
recent real demand (NESO outturn) Gridcast forecast P10–P90 band
4.05% MAPE
Backtested error, 14 days ahead — out-of-sample
+35%
Better than the seasonal-naive baseline (6.24% MAPE)
23.0GW
Peak forecast demand by 14 days (2026-05-26)
±7.3%
Honest uncertainty band (P10–P90 of realised error)
The real forecast. Leads 1–14 are backtested with the actual temperature that occurred — this is the model’s skill given a good weather forecast (an upper bound; a live 14-day run also inherits the weather forecast’s own decay). This is the sharpest, most trustworthy horizon.
5.00% MAPE
Backtested error, 30 days ahead — out-of-sample
+19%
Better than the seasonal-naive baseline (6.20% MAPE)
23.7GW
Peak forecast demand by 30 days (2026-06-18)
±8.5%
Honest uncertainty band (P10–P90 of realised error)
Beyond ~2 weeks weather is not predictable, so the 30-day view uses climatological normal temperature for each day. The error rises a little versus 14-day — that rise is exactly the value of having a real weather forecast.
5.18% MAPE
Backtested error, 90 days ahead — out-of-sample
+16%
Better than the seasonal-naive baseline (6.14% MAPE)
24.0GW
Peak forecast demand by 90 days (2026-07-22)
±9.3%
Honest uncertainty band (P10–P90 of realised error)
A seasonal/calendar forecast on normal weather. Useful for planning the shape of the season, not a day-precise number — the uncertainty band is wider and shown honestly.
5.32% MAPE
Backtested error, 365 days ahead — out-of-sample
+16%
Better than the seasonal-naive baseline (6.30% MAPE)
35.2GW
Peak forecast demand by 365 days (2027-01-12)
±9.3%
Honest uncertainty band (P10–P90 of realised error)
A full-year calendar+trend outlook on normal weather. This is a structural forecast (annual cycle, weekday pattern, demand trend), explicitly NOT a weather-driven one. Treat the band, not the line, as the answer.
The dark line is the latest published real demand; the teal line is the model’s forward forecast for the selected horizon. The next 15 days use a live Open-Meteo weather forecast (the genuine weather-driven regime); beyond the weather forecast’s reach the line falls back to climatological normal temperature. The shaded band is the measured P10–P90 error spread from the backtest, not a hand-drawn guess — tightest on days with a live weather forecast, wider on the climatology-driven tail.
Does the model actually work? (the honest backtest)
We hold out 2024–2025, train only on earlier data, and forecast forward — rolling the cutoff monthly so every horizon is tested on data the model never saw (8,597 forecasts in all). The bar to beat is a proper seasonal-naive baseline (last year’s like-for-like day), the standard honest benchmark. MAPE = mean absolute percentage error.
4.05%14-day MAPE — the headline, measured on 410 out-of-sample forecasts
16–38 GWrange of real demand the model was tested against
1,029 MWtypical absolute miss per day at 1–14 days
Predicted vs actual — every OOS forecast
one forecast perfect (predicted = actual)
A typical forecast in full — origin 2025-09-22
forecast (MAPE 4.2%) what actually happened band
Left: every one of the 410 out-of-sample 14-day forecasts plotted against the demand that actually occurred — a tight cloud hugging the dashed identity line is the model’s skill, made visible. Recompute the average error off this cloud and you get the 4.05% headline exactly, because it is that set. Right: one typical origin (the run whose 4.2% error is closest to the 4.05% average — deliberately not a flattering pick) showing the forecast, its band, and the real outturn day by day.
Gridcast is sharpest in the first two weeks where it uses the actual weather (shaded), then settles to a steady ~5% as it falls back to climatology for the long horizons — still comfortably below the baseline at every lead. The honest reading: trust the day-level number out to ~2 weeks; beyond that, read the seasonal shape and the band. The chart above is the known-weather upper bound — for the genuine live-forecast number, see the next section.
Proven live skill — real forecasts vs what actually happened (the genuine out-of-sample record)
This is the honest live number. Unlike the backtest above — which feeds the model the temperature that actually occurred (an upper bound on demand-model skill, assuming a perfect weather forecast) — here we feed it the temperature that was genuinely forecast 1–7 days ahead at the time (Open-Meteo’s archived “forecast as issued”), then score it against the demand that really happened. Fully out-of-sample, monthly walk-forward over 2024-07-01 to 2026-05-23, 4,844 individual day-forecasts. This is what we predicted versus what occurred — no hindsight.
~4.1% average error on a real 1–7 day forecast, and it barely grows with how far ahead we look (it stays within a 0.35-point band across leads 1–7) — because at a week out the weather forecast is good enough that our model, not the weather, is the limit.
4.14%average GBM error across leads 1–7, on genuinely-forecast weather
3.98–4.33%full range 1d to 7d — the line barely rises with lead time
+34%better than the 6.24% seasonal-naive baseline (both beat the seasonal-naive baseline at every lead)
4,844real day-forecasts scored against actual NESO demand
Live error by lead time — GBM vs neural net vs baseline
Forecast-input MAPE, leads 1–7 — the temperature was really only known as a forecast, not after the fact.
What we forecast vs what happened — 3-day lead, full window
actual demand (NESO outturn) Gridcast forecast (issued 3d ahead)
Every day of the 2024-07-01 to 2026-05-23 out-of-sample window — the literal track record, forecast against realised demand.
Model choice is evidenced. The production gradient-boosting model (HistGradientBoosting (production)) beats the neural-net benchmark (MLPRegressor (64,32), standardised inputs) at every lead, 1–7 days — 3.98–4.33% vs 4.71–5.12% MAPE.
Honest about reach. This live skill is proven to 7 days — that is the cap of the public “forecast as issued” weather archive, not a model limit. The 14-day figure shown earlier on this page is the known-weather upper bound (it assumes a perfect temperature forecast), not yet a proven live number. We show both, clearly separated, rather than blur the two.
Why this matters for energy trading (the localised-demand angle)
Demand is the slow, knowable side of the power market.
Wholesale electricity prices are set where supply meets demand. Supply (wind, solar, interconnectors) is volatile and hard to call; demand, by contrast, is dominated by weather and the calendar — exactly what a model like this captures, and exactly why a backtested 4.0% national error is tradeable signal rather than noise. Concretely:
A sharper demand call sizes the residual. Net demand (demand minus embedded renewables) is what the wholesale and balancing markets actually price. Being 35% closer than the standard benchmark on the demand leg tightens the whole net-load estimate.
Localised swings are where the dislocations live. A cold snap that hits Scotland harder than the South West shifts demand between regions, not just in total — the regional view (estimate today, a real series once half-hourly DNO data is licensed) is built to surface exactly that spatial spread.
The honesty is the edge. A forecast you can audit — measured nationally, labelled where it is estimated — is one you can actually size a position against. Overclaimed accuracy is worse than none.
Illustrative of the use-case, not a trading recommendation. Gridcast forecasts demand only; it does not forecast price.
The demand trend is real — and the model accounts for it (annual mean ND)
GB National Demand (ND) has fallen materially since 2013 — partly genuine efficiency, partly the rise of embedded (rooftop/distribution) solar and wind that ND does not “see”. A naive model trained on old years would over-predict today; Gridcast carries an explicit demand-trend feature so recent forecasts stay calibrated. This is why the backtest trains only on data before each forecast. An honest caveat: the 2024–25 backtest window sat in a flat-demand era (annual mean barely moved), so the long-horizon error understates what trend-extrapolation would cost in a year of strong drift — the 365-day figure is honest for a steady period, not a worst case.
How it’s built
Data (real, public, free). Demand: NESO Historic Demand Data, half-hourly National Demand aggregated to daily, 2013-01-01 to 2026-05-23. Weather: Open-Meteo ERA5 reanalysis, a population-weighted basket of 14 GB cities. All cached locally.
Model. Gradient-boosted regression trees (scikit-learn HistGradientBoosting) on calendar features (day-of-week, annual cycle, bank holidays, demand trend) and weather (temperature, heating/cooling degree-days).
Backtest. Expanding-window walk-forward, monthly origins, full 365-day forecast blocks, strict train/test time separation. No random splits (which would leak the future into the past).
Honesty about weather. 14-day uses actual weather (a real forecast regime); 30/90/365-day use climatological normals because weather is not predictable that far out — so the long horizons are calendar/trend forecasts with wide, measured bands, never dressed up as weather-accurate.
Honesty about region. National is backtested; regional is a population- and weather-scaled estimate, because clean regional demand history is not public. Labelled as such throughout.
GCGridcastGB electricity demand intelligence · a Savernake research prototype
Out-of-sample verifiedNESOOpen-MeteoFree public data