Hoe werkt het voorspel model?
Datastromen
Het model consumeert meerdere lagen input die in de tijd worden gesynchroniseerd: historische EPEX-prijzen, ENTSO-E feeds (load, wind, solar en generation-mix), weervariabelen (temperatuur, wind, zoninstraling), en day-ahead prijzen zodra deze gepubliceerd zijn. Alle reeksen worden genormaliseerd naar uurlijkse granulariteit, met tijdzonebewaking (Europe/Amsterdam) en een consistent venster voor geldigheid (“validfrom”).
Daarnaast maakt het systeem gebruik van de ENTSO-E load-forecast voor de komende week, zodat verwachte vraagfactoren direct worden meegenomen in de voorspelling.
Feature-engineering voegt lags toe (1h, 24h, 168h), kalenderfeatures (hour, day-of-week, month, sin/cos-transformaties) en relatieve ratio’s (zoals renewables-share en load versus productie). Zo ontstaat een hoog-dimensionale featurematrix die de RandomForest voedt.
Modelpad
De huidige stack gebruikt een RandomForest-regressor als baseline, getraind op het volledige samengevoegde dataset_full (prijshistorie + weersinformatie + ENTSO-E/NED-signalen). De hyperparameters zijn afgestemd op robuuste generalisatie (o.a. n_estimators en min_samples_leaf) en een strict time-based split voorkomt dat toekomstinformatie onbedoeld in het model lekt.
Naast de hoofdvoorspelling voert het systeem elke dag een evaluatiestap uit: het vergelijkt de voorspelling van de afgelopen week met de gerealiseerde prijzen. Daaruit wordt een bias-profiel berekend.
Dit bias-profiel bestaat uit een fijnmazige correctielaag:
- per uur van de dag
- gescheiden voor werkdagen en weekend
- gebaseerd op de gemeten afwijking tussen forecast en werkelijkheid
Bij de eerstvolgende forecast-run wordt deze bias automatisch toegepast. Daardoor wordt het model direct bijgestuurd wanneer bepaalde uren structureel te laag of te hoog worden ingeschat. Dit mechanisme corrigeert vooral patronen die niet volledig door weersdata of load-verwachtingen worden verklaard, zoals hardnekkige ochtend- en avondpieken of seizoensgebonden verschuivingen in vraag.
Het resultaat is een hybride aanpak: een ML-model dat het gros van de variatie voorspelt, met daar bovenop een lichte, zelflerende correctielaag die alle voorspelbare fouten reduceert.
Wat het model niet kan voorspellen
Hoewel het model veel factoren meeneemt (weersinvloeden, ENTSO-E-data, load-verwachting, historische patronen en day-ahead prijzen), blijven sommige prijsschommelingen inherent onvoorspelbaar. Voorbeelden:
- plotselinge storingen of uitval van centrales
- extreme afwijkingen in wind- of zonneproductie
- onverwachte pieken in vraag of industriële afschakelingen
- internationale handelsstromen of import/export-schommelingen
- acute netcongestie of noodmaatregelen van TenneT
- grote bewegingen in gas- of CO₂-prijzen
- intraday-onbalans of niet-geplande redispatch
Dit zijn gebeurtenissen die zelfs officiële marktmodellen meestal niet volledig kunnen voorspellen. Daarom blijft elke prijsverwachting een inschatting — een best mogelijke projectie op basis van beschikbare informatie, maar nooit een garantie.
Hoe we de nauwkeurigheid meten
De nauwkeurigheid van onze 168-uurs stroomprijsvoorspelling wordt beoordeeld op basis van historische en toekomstige data die wij ophalen van verschillende bronnen. Voor de laatste evaluatie hebben we 95.258 rijen aan data gekoppeld aan uurprijzen gebruikt om te testen hoe goed het model toekomstige waarden kan inschatten.
We beoordelen de prestaties met twee statistieken:
- Mean Absolute Error (MAE): 0.01014 €/kWh — het model wijkt gemiddeld maar ongeveer 1 cent per kWh af van de echte marktprijs. Voor een volatiel en weersafhankelijk systeem als de Europese elektriciteitsmarkt is dat een nette foutmarge.
- R²-score: 0.886 — het model verklaart hiermee bijna 89% van alle prijsschommelingen. In de energiemarkt, waar prijzen door tientallen factoren tegelijk bewegen, wordt alles boven ~0.80 als sterk en betrouwbaar gezien.
Deze evaluatie wordt regelmatig opnieuw uitgevoerd wanneer nieuwe data binnenkomt, zodat de nauwkeurigheid actueel blijft en het model steeds beter leert hoe de markt beweegt.