How many kW at what hour tomorrow — and how right we were, every day
We forecast each plant’s next 24 hours in one-hour slots. It is a weather forecast, so we don’t promise «x % accuracy». Instead it is scored automatically every day, and we don’t hide the result.
The algorithm — five steps
From the sun’s position, «kW with no clouds» every 5 minutes, averaged per hour
Estimates module temperature from the forecast air temperature and derates for heat
«Even on clear days this plant reaches only x % of theory» — learned from actuals
«On days forecast as mostly cloudy, how many % in reality» — learned from actuals
Never above the inverter limit · never below zero
Inputs — KMA short-range forecasts (issued 8 times a day) + the plant’s last 90 days of actuals · a new edition is made at every release and kept, never overwritten
What sets it apart — safeguards for honest scoring
Learning from observed weather removes «how wrong the forecast was» and flatters the model. We store each forecast as received, from day one.
A same-morning edition is naturally accurate. We score the editions actually used for bids and submissions (day-before 09:30, 10:00, 17:00).
|forecast − actual| ÷ available capacity, excluding hours under 10 % utilisation — the same as the power exchange rules.
Faulty inverters are removed from the denominator, and learning uses «as if all were healthy».
«What did we submit back then?» can always be pulled up and matched against the bid.
With few samples it leans to defaults, and the range is clipped so one odd day can’t ruin the forecast.
Now — statistical correction (v1)
Five numbers per plant (ceiling + four sky factors) learned from actuals, relearned with every edition (8 a day).
Next — machine learning (v2)
Once about three months of records build up, an ML model runs alongside v1 and replaces it only if its error is lower over the same period.