Hoe werkt het voorspelmodel?
Datastromen
Het model combineert meerdere onafhankelijke databronnen, in de tijd uitgelijnd op uurniveau (Europe/Amsterdam, met DST-bewaking):
- EPEX-prijzen — tien jaar historische day-ahead spotprijzen voor Nederland, aangevuld met de meest recent gepubliceerde day-ahead prijzen via ENTSO-E.
- ENTSO-E forecasts (NL + DE) — verwachte stroomvraag (load), windproductie en zonneproductie voor de komende dagen. Voor Duitsland nemen we dezelfde signalen mee omdat Nederlandse prijzen sterk meebewegen met het buurland via de interconnectoren.
- Weervariabelen — temperatuur, windsnelheid en zoninstraling uit Open-Meteo, met afgeleide ramps (1h en 24h delta's) zodat het model versnellingen oppikt.
- Feestdagen NL en buurlanden — vlaggen voor Nederlandse feestdagen (Koningsdag, Hemelvaartsdag, Tweede Paasdag, etc.) plus aparte vlaggen voor feestdagen in Duitsland, België en Frankrijk. Dat laatste is bijzonder belangrijk op dagen als 1 mei, wanneer NL gewoon werkt maar de buurlanden vrij zijn: de export valt weg en de prijs kan diep negatief worden.
- Kalenderfeatures — uur, dag-van-de-week, maand en sin/cos-transformaties voor cyclisch dag- en jaarritme.
Per uur worden lags toegevoegd (1h, 24h, 168h vooruit kijkend), plus rolling statistieken (24h gemiddelde, 24h standaardafwijking, 168h gemiddelde) zodat het model context heeft over wat zojuist gebeurde en wat een week geleden gebruikelijk was.
Modelpad
Bij elke training vergelijken we twee kandidaat-modellen op exact dezelfde feature-set en holdout:
- HistGradientBoosting — een gradient-boosting tree-ensemble dat goed omgaat met heterogene features en niet-lineaire interacties.
- RandomForest — robuuste tree-ensemble met verschillende bias-variance afweging, dient als kruisvergelijking.
Het model met de laagste MAE op de holdout-set (chronologisch de laatste 20% van de data) wordt geselecteerd voor productie. In de praktijk wint HistGradientBoosting bijna altijd net iets nipt. Het systeem houdt daarnaast een fallback-variant aan zonder ENTSO-E features, zodat de pipeline blijft draaien wanneer een externe API uitvalt.
Sinds juli 2026 traint er een derde variant mee: een fundamentals-weermodel zonder enige prijs-feature. Dat model voorspelt elk uur direct uit het weer, de zonnestand (hoogte en richting van de zon, minuten tot zonsopkomst en -ondergang), de kalender en de gasprijs, getraind op een rollend venster van 120 dagen. Het dient niet als hoofdmodel, maar bepaalt het prijsniveau van de verre horizon; zie hieronder.
Een strikte time-based split voorkomt dat toekomstinformatie in het model lekt: tijdens training zien we nooit een prijs voordat het model erom moet "raden". Dat houdt de geclaimde accuratesse eerlijk.
Zelflerende bias-correctie
Na de voorspelling voegen we een tweede laag toe: een dagelijks bijgewerkte bias-correctie die structurele patronen tackelt die het hoofdmodel mist. De correctie is fijnmazig:
- per uur van de dag (24 stappen)
- per categorie: werkdag óf weekend & feestdag
- gebaseerd op de gemeten afwijking tussen forecast en werkelijkheid van de afgelopen 7 dagen
Sinds kort behandelen we Nederlandse feestdagen die op een werkdag vallen (Koningsdag, Hemelvaartsdag, Pinksteren, etc.) automatisch als weekend voor de bias-correctie. De consumptiepatronen op die dagen lijken in de praktijk meer op een zondag dan op een gewone werkdag, dus de werkdag-correctie zou anders een onterechte ophoging geven.
Ver vooruit: dagvorm en weerniveau (dag 3-7)
Hoe verder vooruit, hoe minder houvast het hoofdmodel heeft: de ENTSO-E prognoses reiken maar zo'n drie dagen en de prijs-lags gaan dan op eerdere voorspellingen leunen. Daarom bouwen we de dagen 3 tot 7 op uit twee delen. De vorm van de dagcurve (waar het middagdal en de avondpiek liggen) komt uit het recente uurprofiel van de afgelopen drie weken; die vorm plaatst het goedkoopste laadvenster het meest betrouwbaar. Het niveau van elke dag (hoe hoog die hele curve ligt) komt uit het fundamentals-weermodel, zodat een zonnige of juist windstille dag verderop in de week een eigen, weer-bewust prijsniveau krijgt in plaats van een kopie van de vorige dag.
Daarbovenop zit een vangnet: na een extreme prijsdag heeft het hoofdmodel de neiging het hoge niveau dagenlang vast te houden. De dagelijkse evaluatie meet dat en stuurt bij: bij een piekdag in de afgelopen 48 uur, of wanneer recente voorspellingen structureel te hoog bleken, leunt de voorspelling automatisch zwaarder op het recente profiel tot het model zich herstelt.
Logboek: wat we recent verbeterden
Het model is geen statisch ding: elke dag meten we de voorspelling tegen de echte prijzen, en elke wijziging moet zich eerst bewijzen in een backtest voordat hij live gaat. De belangrijkste aanpassingen van de afgelopen periode, met wat ze aantoonbaar opleverden:
- Juni 2026: recency-weging en een backtest-harnas. Trainingen wegen recente data zwaarder (de stroommarkt van 2016 zegt weinig over die van nu) en elke modelwijziging wordt sindsdien eerst nagespeeld over historische weken via het exacte productiepad. Resultaat: gemiddelde fout van 2,6 naar 2,2 cent en de laadvenster-treffer van 48 naar 54 procent exact. Minstens zo waardevol: meerdere ideeën die intuïtief goed klonken (meer weerfeatures, andere weging) bleken in de backtest niets op te leveren en zijn nooit live gegaan.
- 2 juli 2026: vangnetten na de recordweek. De recordprijzen van eind juni legden een zwakte bloot: na een extreme prijsdag hield het model het hoge niveau dagenlang vast. Sindsdien blokkeert een sanity-check ontspoorde voorspellingen vóór publicatie, evalueren we dagelijks de volledige 7-daagse horizon, en stuurt een automatische guard bij zodra recente voorspellingen structureel te hoog blijken. In een replay van de recordweek halveerde de fout op dag 2 (van 14 naar 7 cent).
- 2 juli 2026: een weermodel voor de verre dagen. Dag 4 tot 7 leken voorheen te veel op elkaar, omdat de externe prognoses maar drie dagen vooruit reiken. Nu bepaalt een apart weermodel (weer, zonnestand, kalender, gasprijs) het prijsniveau van elke verre dag, zodat een zonnige of windstille dag verderop in de week een eigen niveau krijgt. Backtest: fout op dag 3-7 van 2,60 naar 2,31 cent bij gelijke venster-treffer. Eerste productieweek (6 tot 8 juli): fout 2,9 cent, de structurele overschatting daalde van +4,0 naar +0,7 cent, en alle negen gemeten laadvensters zaten binnen een uur juist.
- 6 juli 2026: kapotte databron opgeruimd. De ENTSO-E prognosefeed (verwacht verbruik en opwek) brak door de Europese overstap op kwartierdata en bleek in een backtest geen meetbare winst meer te leveren voor wat bezoekers zien: dag 1 toont toch al de echte marktprijzen, en verder vooruit was de variant zónder deze feed zelfs iets beter. Verwijderd dus; de pipeline is er sneller en robuuster van geworden.
Wat de site nog meer toont
Bovenop de raw voorspelling levert de homepage een paar gebruikersvriendelijke extra's:
- Goedkoopste laadvenster, kiesbaar tussen 1, 2, 3, 5, 10 en 24 uur — afhankelijk van wat je wil doen (snel laden, hele dag verwarmen, batterij voltappen).
- Automatische toelichting — een Nederlandstalige zin die uitlegt waarom dat venster goedkoop is (feestdag, zon, wind, weekend) met een passend icoon.
- Versheids-badge — hoe lang geleden de voorspelling is bijgewerkt, met een waarschuwing als hij ouder dan 26 uur is.
Inherent onvoorspelbare gebeurtenissen
Hoewel het model veel factoren meeneemt, blijven sommige prijsschommelingen inherent onvoorspelbaar. Voorbeelden:
- plotselinge storingen of uitval van centrales
- extreme afwijkingen in wind- of zonneproductie binnen één dag
- onverwachte pieken in vraag of industriële afschakelingen
- acute netcongestie of noodmaatregelen van TenneT
- grote bewegingen in gas- of CO₂-prijzen op zeer korte termijn
- intraday-onbalans of niet-geplande redispatch
Dit zijn gebeurtenissen die zelfs professionele marktmodellen niet volledig kunnen voorspellen. Daarom blijft elke prijsverwachting een inschatting: een best mogelijke projectie op basis van beschikbare informatie, maar nooit een garantie. Onder "Hoe trefzeker is WattWanneer?" hieronder zie je hoe dicht we er in de praktijk bij zitten.
Hoe trefzeker is WattWanneer?
De meest gecontroleerde stroomprijsvoorspelling van Nederland: dagelijks publiek gemeten tegen de werkelijke EPEX-prijzen, tot en met een API-endpoint (/v1/history) waarmee je onze cijfers zelf kunt narekenen.
Hoe lezen we deze cijfers?
We meten elke dag de afgelopen 168 uur (één volle week) van voorspellingen tegen de prijzen die EPEX uiteindelijk publiceert. Alleen voorspellingen die zijn gepubliceerd vóór het werkelijke uur worden meegerekend; we kijken dus niet achteraf met een gunstig licht.
Binnen 5 cent
Het percentage uren waarin het verschil tussen onze voorspelling en de uiteindelijke prijs kleiner was dan 5 cent per kWh. Bij dynamische contracten zit je dan al ruim binnen de marge waarin slim laden zinvol blijft.
Richting correct
Voor elk uur kijken we of we de juiste beweging voorspelden: gaat de prijs omhoog of omlaag ten opzichte van het vorige uur? Dit is dé maat voor of het model de marktdynamiek goed volgt, en is precies wat je wilt weten als je je verbruik plant.
Bullseye op het 3-uurs laadvenster
Het percentage dagen waarop ons voorspelde goedkoopste 3-uurs venster precies samenviel met het écht goedkoopste 3-uurs venster van die dag. Een strenge maat: we tellen alleen perfecte treffers. Op de dagen dat het niet exact lukt zien we hieronder hoever we naast zaten.
Dichtbij het optimale laadmoment
De gemiddelde afwijking in starttijd (in uren) tussen ons voorspelde optimale venster en het werkelijke optimum van die dag. Hoe lager dit getal, hoe scherper we het beste laadmoment treffen.
Wat is niet te voorspellen?
Geen enkel model voorspelt alles, en wij doen niet alsof. Dit zijn de situaties waarin onze voorspelling het het lastigst heeft:
- Extreme uitschieters. De richting zien we meestal goed aankomen, de exacte diepte of hoogte niet altijd. De recordavond van 24 juni 2026 voorspelden we als duur, maar niet de volle 80 cent; hetzelfde geldt voor de precieze bodem van extreem negatieve middaguren bij veel zon, veel wind en een feestdag bij de buren.
- De dagen na een prijsexplosie. Na een extreme dag denkt het model even dat duur het nieuwe normaal is. Sinds juli 2026 stuurt een automatische guard dat bij (zie het logboek hierboven), maar de eerste dag erna blijft wat ruwer.
- Plotselinge verstoringen. Een centrale die uitvalt, een storm die eerder gaat liggen dan verwacht, acute netcongestie: de markt reageert binnen minuten, onze eerstvolgende update komt rond 13:25.
Daarom meten we elke dag publiek hoe goed de voorspelling was (hierboven bij het track record) en kun je het via de API tot op het uur narekenen. Een voorspelling blijft een inschatting, geen garantie. Het verschil zit erin dat je bij ons precies kunt zien hoe goed die inschatting de afgelopen week was.
Gemaakt met passie door...
Herco Zandwijk, 39, uit Soest. Vriendin, drie kinderen, achttien zonnepanelen en een Tesla Model Y die gelukkig niet elke dag aan de laadpaal hoeft.
Precies daar begon het. Met een dynamisch contract wil je laden wanneer stroom goedkoop is, maar elke app die ik vond keek maar één dag vooruit. Terwijl mijn auto prima drie dagen kan wachten op dat ene zonnige, winderige dal. Dan zoek ik het zelf wel uit, dacht ik. Wat begon als een avondje rekenen aan prijsdata liep, zoals dat gaat met hobby's, volledig uit de hand. Het resultaat staat op deze pagina: een voorspelmodel dat zichzelf elke dag opnieuw traint en publiek laat controleren.
Overdag run ik Negoci, mijn bedrijf waarin ik apps en websites bouw die de wereld een klein stukje beter moeten maken. WattWanneer is daarvan mijn favoriete project, omdat er alles in samenkomt waar ik blij van word: data, techniek en een energiemarkt die elke dag verandert. Dat het resultaat ook nog eens nuttig is, maakt het af. Wie stroom gebruikt op het juiste moment bespaart geld, en elke kilowattuur die van de dure avondpiek naar een zonnige middag verschuift, ontlast het stroomnet en scheelt een gascentrale die harder moet draaien. Kleine moeite per huishouden, grote optelsom als we het met veel mensen doen. Aan die optelsom werk ik hier elke dag.
Verder hou ik van films, muziek (gitaar, drums en DJ'en), voetbal, squash, padel, mountainbiken en astronomie. Dat laatste bleek achteraf gewoon marktonderzoek: de zonnestand zit letterlijk in het model.
Vragen, feedback of sparren over de energietransitie? Mail naar wattwanneer@negoci.nl of vind me op LinkedIn.