From forecast to decision
When forecasts at a large generation facility were already good, where was the value? We designed a system that explains deviations, makes uncertainty visible and supports the bidding decision.
Problem
The facility used several forecast sources and its accuracy was already good. Yet deviations were not systematically explained, sources were not combined in a single layer, reports were compiled by hand and day-ahead bids relied on a single point forecast. The real question was not “how do we fix the forecast?” but “how do we make better decisions with a good one?”
Approach
- 01
Honest measurement first. We recomputed the existing accuracy metric from raw data and verified how it was defined.
- 02
We built a data foundation that stores every forecast revision separately, so the forecasting process itself became measurable.
- 03
On top of a physics-based model, we added machine learning that learns only the systematic error, together with uncertainty bands.
- 04
We developed an optimisation layer that treats the bid as a decision under uncertainty and asymmetric cost.
- 05
We added a language-model layer that explains deviation causes and automates reporting.
Critical decisions
No promise of miracle accuracy
The existing forecast was already good. Claiming a large improvement would have been unrealistic and risky, so we looked for value in root-cause analysis, uncertainty and decision support.
Data foundation first
Every improvement depended on tracking when each forecast was issued and for which target hour. That is why the data structure was built first.
Keep the physics, let ML correct the error
The model learns from the physical baseline's error, not from raw data. Explainability is preserved and the learned part stays bounded.
Work with the uncertainty we can control
We modelled the facility's own generation uncertainty. We did not aim to forecast market direction we cannot control, and set success criteria accordingly.
Roll out in shadow mode
Recommendations were first recorded alongside real decisions without being applied. Rollout was designed to progress gradually as evidence built up.
Language models for analysis, not the core
Statistical models produce the numbers. The language model turns them into explanatory narratives, reports and answers to operators' questions.
Details
Why this example?
It makes our approach concrete: define the problem correctly, acknowledge what the current system already does well, and look for value where it is genuinely open.
Phases
| Phase | Focus |
|---|---|
| Data foundation | Forecast revisions, measurement, data validation |
| Measurement and root cause | Automated accuracy reporting, deviation causes |
| Forecast and uncertainty | Physics + machine learning, uncertainty bands |
| Decision optimisation | Bidding decision, shadow mode |
| Operator assistant | Natural-language queries, automated reporting |
Each phase began once the previous one's outputs had been measured. Organisation and facility details are withheld for client confidentiality.