Models: how they were tested and which one won

The ladder. Start with naive baselines, climb to ridge regression, then LightGBM. A more complex model is used only if its winter error is more than 5% lower and a Diebold–Mariano test says the gain is not luck (p < 0.10). After that, the simplest model within 5% of the winner is taken.

The test. A rolling origin: for every day from May 2024, each model is trained only on data before that day and forecasts 1, 7, 14 and 30 days ahead. Future weather comes from the long-term average for that day of the year (what you'd really know), not the actual weather.

Winter error by horizon

Each chart has its own units, and lower is better. For demand and peak, ridge is lowest at every horizon. LightGBM overfits: about 600 days is too little for trees.

Which model ships

How much would better weather knowledge help?

Knowing the river flow (a perfect river forecast) helps generation only a little. Knowing all the weather helps generation more, but nobody has that 30 days ahead. For demand, actual weather doesn't help at all.

Backtest: forecasts vs what happened

Monthly winter outlook: two hold-out winters

No single model won both winters, so the outlook uses combo, the average of the three. Combinations are the most reliable choice on short series.