Over de voorspelling
Kort samengevat
De voorspelling begint bij wat de prijs de afgelopen vier weken op hetzelfde uur deed. Daarna kijkt het model naar het weer dat voor die dag verwacht wordt: hoeveel wind er staat boven de windparken in Nederland en Duitsland, hoeveel zon er valt, hoe koud het is, en wat gas kost. Uit ruim twee jaar data weet het model hoeveel elk van die dingen de prijs per uur verschuift. Hoe verder vooruit, hoe onzekerder het weer, en hoe kleiner die bijstelling. Een tweede rekenmodel kijkt naar dezelfde dingen in samenhang, en de voorspelling is het gemiddelde van de twee. Ook een goede voorspelling zit er geregeld een paar cent naast. Daarom tonen we altijd een onzekerheidsband.
Welke uren zijn een voorspelling?
Vandaag en morgen zijn officiële EPEX day-ahead-prijzen, gepubliceerd door ENTSO-E. Geen schatting — exacte cijfers.
Overmorgen tot zeven dagen vooruit zijn modelschattingen. Hoe verder vooruit, hoe onzekerder — het weer is op dag 7 veel lastiger te voorspellen dan op dag 2.
Per uur of per kwartier?
Voor vandaag en morgen kun je in de grafiek wisselen tussen per uur en per kwartier. De prognose voor de dagen daarna blijft altijd per uur.
Sinds 1 oktober 2025 stelt de Europese stroombeurs EPEX de day-ahead-prijzen niet meer per uur vast, maar per kwartier — vier prijzen per uur in plaats van één. Een uur dat gemiddeld op 5 ct uitkomt, kan binnen dat uur van 12 ct naar onder nul lopen. In het uurgemiddelde verdwijnt die dip; per kwartier zie je hem.
De voorspelling voor overmorgen tot zeven dagen vooruit houden we bewust op uurniveau. Kwartiernauwkeurigheid zo ver vooruit is schijnprecisie: de uitslagen bínnen een uur hangen af van factoren die op die termijn niet te voorspellen zijn.
Wat je leverancier afrekent, hangt af van je contract. De meeste Nederlandse leveranciers rekenen nog af op de uurindex — het gemiddelde van de vier kwartieren, precies wat EPEX daarnaast blijft publiceren. Een groeiend deel rekent per kwartier af. Voor die groep is de kwartierweergave hun feitelijke afrekenbasis; voor de rest is het een scherper beeld van wat er op de markt gebeurt.
Hoe werkt het model?
Stap 1 — Beginprijs uit de afgelopen vier weken
Voor elk toekomstig uur zoeken we de werkelijke prijzen op van hetzelfde uur op de afgelopen 28 dagen, gesplitst in werkdagen en weekenddagen. De mediaan daarvan wordt de basisprijs. Die absorbeert het dagelijkse patroon (nacht goedkoop, ochtend en avond duurder, middag vaak goedkoop door zon) zonder dat we parameters hoeven te kiezen.
Tot augustus 2026 keken we maar 7 dagen terug. Dat zijn ongeveer 5 prijzen per uur, en op vijf dagen vooruit vielen de meeste daarvan buiten wat we op dat moment al wisten. Een venster van 28 dagen geeft een rustiger startpunt: over de hele prijshistorie sinds 2021 scheelt het 8 tot 10% in gemiddelde afwijking, in de zomer van 2026 zelfs 15%.
Twee dingen houden het venster wendbaar. De prijzen van de afgelopen week tellen voor een kwart extra mee, zodat een verse verandering doorkomt. En loopt het gemiddelde van de laatste 7 dagen op of neer ten opzichte van de laatste 28, dan schuift de basisprijs gedempt mee. Een markt die in een week 20% duurder wordt, tilt de basisprijs zo ongeveer 5% op.
Sinds oktober 2026 haalt het model die vier weken uit ons prijsarchief. Daarvoor las het alleen het bestand met recente prijzen, en zag het in de praktijk maar 16 dagen.
Stap 2 — Dagen met hetzelfde weer
Het model zoekt in de laatste drie weken de vijf dagen op die qua zon en wind het meest lijken op de dag die je voorspelt. Was het vorige week dinsdag net zo winderig, dan zegt de prijs van die dinsdag meer dan het gemiddelde van vier weken. De beginprijs is half het vierwekengemiddelde en half het prijsverloop van die vijf dagen.
Stap 3 — Bijstellen op het verwachte weer
Daarna stelt het model elk uur bij. Het kijkt naar:
- Wind op 100 meter hoogte op negen plekken: drie windparkgebieden op de Noordzee voor Nederland, twee in Flevoland en Groningen, één op de Duitse Noordzee en drie in Noord- en Oost-Duitsland. De Duitse wind telt mee omdat Nederland veel stroom met Duitsland uitwisselt. Waait het daar hard, dan zakt de prijs hier ook.
- Zon op vijf plekken in Nederland en Duitsland, per uur.
- Temperatuur in De Bilt en midden-Duitsland. Kou betekent meer vraag naar stroom.
- Zaterdag, zondag of feestdag, als de vraag lager is.
- De gasprijs vergeleken met de laatste 30 dagen. Gascentrales bepalen vaak de prijs.
Steeds telt het verschil met de afgelopen vier weken. Meer wind dan normaal maakt de prijs lager, minder zon dan normaal maakt de middag duurder.
Hoeveel elk onderdeel de prijs verschuift, leert het model elke week opnieuw uit alle dagen sinds februari 2024. Het gebruikt daarbij de weersverwachting die er op dat moment was. Zo leert het ook dat een verwachting voor over vijf dagen er vaker naast zit dan die voor morgen.
voorspelling = beginprijs + bijstelling × weging
De weging is 100% voor de eerste twee dagen na de laatst bekende prijs en loopt daarna af naar 60% op dag zes en verder. Ver vooruit is de weersverwachting onzekerder, en dan blijft het model dichter bij de beginprijs.
Tot oktober 2026 (versie 4.0) stelden zeven factoren bij met punten. De wind kwam toen van één punt in De Bilt, op 10 meter hoogte. Op winderige dagen zat de voorspelling daardoor tot 4 cent per kWh te hoog, op windstille dagen anderhalve cent te laag. De aparte correcties voor winterse en zomerse schaarste zijn vervallen: kou, windstilte en weinig zon zitten nu rechtstreeks in de bijstelling.
Stap 4 — Een tweede rekenmodel kijkt mee
Stap 3 telt elk onderdeel los op. Zo werkt de markt niet altijd. Harde wind op een dag dat stroom duur is, drukt de prijs veel sterker dan dezelfde wind op een dag dat stroom al goedkoop is. Op 9 en 10 oktober 2026 waaide het hard, na vier weken waarin stroom gemiddeld 16 cent kostte. De prijs zakte naar 9 en 5 cent. Versie 5.0 kwam niet lager dan 15 en 12 cent.
Sinds versie 5.1 (14 oktober 2026) rekent daarom een tweede model mee. Het is een verzameling beslisbomen: duizenden ja/nee-vragen, zoals "waait het boven de 9 m/s én lag de prijs vorige week boven de 15 cent?". Het kijkt naar hetzelfde weer, maar ook naar de gasprijs zelf en naar de prijzen van de laatste dagen. Ook dit model leert elke week opnieuw van alle dagen sinds februari 2024.
voorspelling = ½ × uitkomst stap 3 + ½ × tweede model
Op 9 en 10 oktober had versie 5.1 13,5 en 10,5 cent gezegd. Beter, maar nog steeds te hoog: zulke dagen blijven lastig.
Klik op de homepage in de voorspelgrafiek op een uur. Onder de grafiek zie je dan per onderdeel hoeveel cent het bijdraagt. Het tweede model staat daar als patroonmodel: hoeveel het de uitkomst van stap 3 omhoog of omlaag haalt.
Kleuren in de grafiek
Elk voorspeld uur krijgt een label dat de kleur van de punten in de grafiek bepaalt:
- Normaal — de gebruikelijke dagelijkse prijsschommeling.
- Oversupply ☀️ — veel zon en/of wind, gecombineerd met lage vraag (weekend of feestdag). De prijs kan dan uur voor uur sterk dalen of negatief worden. De werkelijke daling kan dieper gaan dan het model schat.
- Schaarste ❄️ — koud weer met weinig zon en wind (Dunkelflaute). Prijzen liggen dan hoger, en scherpe winterpieken vallen vaak nog hoger uit dan voorspeld. Zie Wanneer klopt de voorspelling niet? hieronder.
- Zomerschaarste 🌡️ — hete, windstille zomeravonden (18–22 uur). De zon zakt weg, de vraag blijft hoog en er is geen wind om het gat te vullen.
Sinds versie 5.0 is het label alleen nog een kleur. Het model rekent niet meer apart per situatie: de bijstelling op wind, zon en temperatuur doet dat werk.
Onzekerheidsband
Bij elke voorspelling tonen we een schaduwzone: het gebied waarbinnen de prijs naar verwachting valt. De band is zo gekozen dat ongeveer 8 van de 10 uren er ook echt in vallen. Hij is 1,7 cent per kWh breed plus een kwart van de voorspelde prijs zelf, aan beide kanten. Voor de eerste dagen na de laatst bekende prijs is hij 10 tot 20% smaller, omdat de weersverwachting dan beter klopt. Bij een voorspelling van 20 cent voor overmorgen loopt de band grofweg van 15 tot 25 cent.
Tot augustus 2026 was die band veel smaller: hij dekte 4 tot 5 van de 10 uren, terwijl hij eruitziet alsof de prijs er wel in valt. De nieuwe band is breder en eerlijker. Bij een negatieve voorspelling klopte de oude berekening bovendien niet — de grenzen wisselden dan van plek. Dat is nu opgelost.
De kleur van de band geeft aan hoe goed het model weet wat het doet voor dat uur — zie de volgende sectie voor uitleg. Zwarte-zwaan-gebeurtenissen — plotselinge gascrises, grote centrale-uitval, extreme weerverschijnselen — vallen ver buiten de band. Die zijn met historische patronen simpelweg niet te voorspellen.
Hoe zeldzaam is dit uur?
Niet alle voorspellingen zijn even goed onderbouwd. Het model zoekt in de recente geschiedenis naar vergelijkbare uren: uren met vergelijkbare zonstraling, windsnelheid, temperatuur en dagtype. Hoe meer zulke uren gevonden worden, hoe betrouwbaarder de schatting. Het resultaat heet de plausibility score.
Er zijn vier niveaus:
- Normaal — genoeg vergelijkbare uren gevonden. De schaduwband is lichtblauw, zoals gewoonlijk.
- ⚠ Zelden gezien — weinig vergelijkbare uren in de log. De band kleurt oranje als waarschuwing. Het model rekent wel een prijs, maar de historische basis is dun.
- ⚠⚠ Historisch zeldzaam — nauwelijks vergelijkbare uren gevonden. Rode band. Denk aan een combinatie die het model nog zelden of nooit heeft meegemaakt: een extreme lentedag met piekzon, nauwelijks wind én een feestdag tegelijk. De onzekerheid is dan veel groter dan de band aangeeft.
In de tooltip (klik of hover op een voorspeld uur in de grafiek) staat hoeveel vergelijkbare uren er gevonden zijn. Bij een negatieve prijsverwachting voegt het model ook een historisch gecorrigeerde kans toe: hoe vaak leidde een vergelijkbare situatie in het verleden ook echt tot een negatieve prijs?
Let op: vlak na een update van het model zijn er nog weinig historische vergelijkingsuren opgeslagen. In die periode scoren veel uren automatisch laag — dat is verwacht en zegt niets over de kwaliteit van de voorspelling zelf.
Hoe goed presteert het model?
Elke modelversie testen we eerst op het verleden, met de weersverwachting zoals die toen was. Voor versie 5.1, januari 2025 tot en met 13 oktober 2026, op de kale beursprijs:
- Gemiddeld zat het model er 2,0 cent per kWh naast. Versie 5.0 kwam op dezelfde dagen op 2,1 cent. Een dag na de laatst bekende prijs is de fout 1,7 cent (was 1,85), zes dagen vooruit 2,2 cent (was 2,3). In de eerste twee weken van oktober 2026 zakte de fout van 3,2 naar 2,9 cent.
Voor versie 5.0, juli 2024 tot en met september 2026:
- Gemiddeld zat het model er 2,1 cent per kWh naast. De beginprijs van versie 4.0 kwam op dezelfde dagen op 2,5 cent. Een dag na de laatst bekende prijs is de fout 1,9 cent, zes dagen vooruit 2,3 cent.
- In de weken dat versie 4.0 live draaide (20 augustus tot 1 oktober 2026) zat versie 5.0 er gemiddeld 2,8 cent naast, versie 4.0 3,4 cent.
Wat het model nu live haalt, zie je op /over/performance. Daar meten we ook wat versie 4.0 voor dezelfde uren zei, zodat je ziet of de nieuwe versie het in de praktijk ook beter doet. Elke week schat het model zijn gewichten opnieuw, met de nieuwste dagen erbij.
Wanneer klopt de voorspelling niet?
- Extreme zonnige middagen: een heldere lentedag in het weekend kan de prijs naar −200 of zelfs −500 EUR/MWh drukken. Het model ziet de richting, niet de diepte.
- Winterse Dunkelflaute: koude, windstille dagen met weinig zon. Het model ziet minder wind, minder zon en meer kou aankomen en stelt flink bij. Bij de scherpste pieken valt de werkelijke prijs vaak nog hoger uit: zulke dagen komen in de leerdata maar een paar keer voor.
- Hete, windstille zomeravonden: in juni 2026 schoten avondprijzen naar 321 en zelfs 578 EUR/MWh. De bijstelling per uur ziet een windstille avond aankomen, maar de exacte hoogte van zo'n piek blijft lastig.
- Een weersverwachting die omslaat: verandert de verwachte wind van de ene op de andere dag, dan verschuift onze voorspelling mee. De komende twee, drie dagen zijn daarom betrouwbaarder dan dag zes en zeven.
- Plotselinge marktschokken: een aardgasleiding die uitvalt, geopolitieke spanning of een koudegolf door heel Europa schuiven het prijsniveau in dagen buiten de modelband.
- Centrale-uitval: als een grote centrale of kabelverbinding onverwacht wegvalt, schiet de prijs lokaal omhoog. Er is geen openbare realtime-data om dit op te vangen.
Neem nooit alleen op basis van deze voorspelling een grote financiële beslissing. Zie ook de disclaimer.
Reproduceerbaar
De voorspeldata is openbaar beschikbaar. Wie wil kan de cijfers natellen.
- Voorspellingsscript:
scripts/forecast.py - Live voorspeldata (open data):
/data/forecast.json
Bronnen: day-ahead prijzen via ENTSO-E Transparency Platform · weersverwachting via Open-Meteo (CC-BY 4.0) · gasprijs via Yahoo Finance (TTF=F).
Wie maakt dit?
Ik ben Emile Toes. Ik wil energie zo efficiënt mogelijk gebruiken en ik ben geïnteresseerd in AI. Die twee combineer ik in het onderhouden en uitbouwen van deze site.
Het model, de code en de artikelen bouw ik met hulp van Claude, de AI van Anthropic. Die schrijft mee en rekent mee. Ik bepaal wat erin gaat, controleer het en zet het live. Gaat er iets mis, dan is dat van mij.
Fout of feedback?
Stuur een mail naar contactstroomvoorspeller@gmail.com