Cutting solar forecast error from 15% to 6% in five months
Renewcast sells solar production forecasts to European energy companies. I rebuilt its forecasting stack so a physical model of each plant does most of the work and machine learning only fixes what physics gets wrong. Portfolio error fell every month for five months.
- Role
- Owned the solar forecasting stack
- Stack
- Python, pvlib, LightGBM, MLflow, Databricks
15.3% → 6.2%
Portfolio forecast error, May to October 2025

How it works
- 1
Weather and plant data
- 2
Plant physics
- 3
Learned correction
- 4
Production forecast
Results
Solar forecast error after the rebuild
Monthly average error as a share of plant capacity.
Renewcast solar portfolio, May to October 2025.
Show dataHide data
| Portfolio nMAE | |
|---|---|
| May 2025 | 15.3% |
| Jun 2025 | 11.1% |
| Jul 2025 | 10.1% |
| Aug 2025 | 9.4% |
| Sep 2025 | 7.4% |
| Oct 2025 | 6.2% |
Portfolio error fell from 15.3% to 6.2% between May and October 2025, lower every month.
Under the new release rule, six of twelve hand-picked models failed to beat what was already in production.
Key decisions
- 01
Learn only the error physics leaves
Each plant gets a calibrated physical model. LightGBM trains on the gap between that model and what the plant actually produced, measured as a share of capacity, so one model works for plants of any size.
- 02
Stop trusting the configured capacity
The capacity in the config was often wrong. I detect real capacity changes from the data and filter out outages and curtailment, so a temporary cap never becomes something the model learns.
- 03
Release a model only when it beats production
A new model replaces the current one only if it beats the forecasts customers actually received by more than two standard errors, over at least four weeks. The winning run writes the serving config itself, so nobody edits it by hand.
- 04
Keep forecasts going when parts fail
If data is missing or the learned model breaks, serving drops to a lighter model and then to physics alone. Accuracy can dip. Customers still get a forecast.