Baseline wordt geladen…

Baselines · Vergelijk vijf referenties voor H28W

Vandaag = Morgen (persistent): Random walk: voorspelling = laatste bekende prijs.

Dezelfde validatieplots als op /validatie, maar gevoed door de gekozen baseline. Dit loopt week voor week vooruit zonder toekomstkennis.

Validatie · Werkelijke prijs vs geprojecteerde H28W vooruit

Werkelijke prijs vs voorspelde prijs (28 weken vooruit): hoe dicht zitten 28w-vooruit voorspellingen op de echte prijs? 40w holdback verbergt blokken zodat dit echt out-of-sample is. Klik om volledige uitleg te lezen…

Werkelijke prijs vs voorspelde prijs (28 weken vooruit)

Deze grafiek beantwoordt één simpele vraag:

“Als we dit model in het verleden hadden gebruikt, hoe dicht zaten onze 28-weken-vooruit voorspellingen bij de echte prijs?”

Wat betekent een horizon van 28 weken?

Een 28-weken horizon betekent dat het model ruim een half jaar vooruitkijkt.

Voor elke week vragen we:

“Hoe denk je dat de prijs er over 28 weken uitziet?”

Elke groene punt die je ziet, is dus maanden eerder voorspeld, niet achteraf berekend.

Wat is een holdback van 40 weken?

Een 40-week holdback betekent:

  1. We kiezen ergens in het verleden een blok van 40 weken.
  2. Dat hele blok verbergen we voor het model tijdens het trainen.
    Het model weet dus niets van die weken.
  3. We trainen op alle weken vóór én dat blok (maar niet op dat blok zelf).
  4. Vanuit dat verborgen blok vragen we 28-weken-vooruit voorspellingen.

We schuiven dat blok door de tijd.
Zo ontstaat een reeks echte out-of-sample voorspellingen: echte voorspellingen op data die het model nooit eerder gezien heeft (hij is getraind op alle andere weken).

Elke voorspelling is dus gedaan door een model dat die doelweek nog nooit gezien heeft.

Hoe lees je de grafiek?

  • Rode lijn = de echte marktprijs.
  • Groene lijn = de voorspelling die 20–28 weken eerder is gedaan.
  • Groene stippen = momenten waarop het model de beweging op tijd oppikte.
  • Rode kruizen = momenten waarop een grote sprong te laat werd gezien of gemist.

Waarom timing belangrijker is dan kleine hoogtefouten

Er zijn grofweg twee soorten fouten:

  • Hoogtefouten – de voorspelling is iets te hoog of te laag.
  • Timingsfouten – de grote beweging komt te vroeg of te laat.

Kleine hoogtefouten zijn niet zo erg. Stevige timingsfouten zijn wel erg. Als het model dingen precies 28 weken te laat voorspelt heeft het niks geleerd en is het de huidige prijs aan het herhalen.

Deze grafiek laat je beide soorten fouten zien:
hoe dicht de lijnen liggen én of we op tijd reageren op echte bewegingen.

Fout per doelweek (actueel - voorspelling)

Fout per doelweek:zelfde 40w-holdback, 28w vooruit; toont alleen de afwijking (actueel − voorspeld). Positief = model te laag, negatief = te hoog. Klik om volledige uitleg te lezen…

De vorige grafiek liet zien hoe de voorspelde prijs tegenover de echte prijs stond.
Deze grafiek zoomt in op één ding:

“Hoeveel zaten we er die week naast?”

Wat staat hier precies?

Voor elke doelweek berekenen we:

Fout = Werkelijke prijs − Voorspelde prijs

En dat zetten we als tijdreeks uit.

  • Positieve fout → het model zat te laag
  • Negatieve fout → het model zat te hoog

Het is dezelfde 40-week holdback en dezelfde 28-weken-vooruit manier van testen.
We kijken hier alleen naar de afwijking, niet naar de prijs zelf.

Wat vertelt dit?

  • Je ziet periodes waarin we steeds wat te hoog of te laag zaten.
  • Je ziet spikes waar het model er flink naast zat.
  • Je ziet of fouten gemiddeld rond nul zitten (geen structurele bias).

Het is een eenvoudige, eerlijke foutgrafiek: week-voor-week, puur op niet-getrainde voorspellingen.

DILATE per venster (timing-gevoelig)

DILATE: meet vorm + timing tegelijk. Groen/blauw tonen totale en vormfout; paars vertaalt timing naar weken te vroeg/te laat. Klik om volledige uitleg te lezen…

Niet elke fout is hetzelfde.
Het maakt niet alleen uit hoe hoog of hoe laag we zitten,
maar ook wanneer we de beweging voorspellen.

Daarom gebruiken we DILATE: een manier om de fout te meten die zowel vorm als timing meeneemt.

Wat is een foutcijfer?

Een foutcijfer zet alle verschillen tussen voorspelling en werkelijkheid om in één getal:

  • Lager getal → betere voorspelling
  • Hoger getal → slechtere voorspelling

Voorbeelden:

  • MAE – gemiddelde fout in prijs-eenheden
  • MAPE / SMAPE – gemiddelde fout in procent

Deze klassieke cijfers kijken vooral naar hoeveel je ernaast zit,
niet naar wanneer een piek of dal plaatsvindt.

Wat doet DILATE anders?

DILATE doet twee dingen tegelijk:

  1. Het kijkt naar de vorm:
    lijkt de vorm van de voorspelde curve op de echte curve
    (up, down, vlak, spikes, ramps…)?
  2. Het kijkt naar de timing:
    vallen stijgingen en dalingen op het juiste moment,
    of voorspellen we ze weken te vroeg of te laat?

De grafiek laat zien (op rolling 40-weekblokken, lager is beter):

  • Groen – totale DILATE (hoe goed het geheel is)
  • Blauw – de vormcomponent (klopt de vorm van de curve?)
  • Paars – de timingfout omgerekend naar weken te vroeg of te laat

Hoe interpreteer je de timingwaarden?

Bij een horizon van ongeveer 20–28 weken geldt grofweg:

  • Timingwaarde ~0.04 → ongeveer ±4 weken te vroeg of te laat
  • Timingwaarde ~0.25 → ongeveer ±10 weken mis
  • Timingwaarde ~0.40 → ongeveer ±12–13 weken mis

De paarse lijn vertaalt de timingsfout naar aantal weken te vroeg of te laat. Te vroeg is uiteraard veel minder erg dan te laat voorspellen:

  • Paars onder nul → het model reageert gemiddeld te vroeg
  • Paars boven nul → het model reageert gemiddeld te laat

DILATE laat dus in één oogopslag zien:

  • Hoeveel klopt de vorm van de beweging? (blauw)
  • Hoeveel totale fout maken we? (groen)
  • En hoeveel weken zitten we er qua timing naast? (paars)

Dat maakt het veel informatiever dan een simpel foutcijfer zoals MAE.

DILATE-grafiek niet beschikbaar (geen data of DILATE-libs ontbreken).

Kwartaal-heatmap · MAPE per trend

Heatmap voorspelbaarheid: trend (Up/Stable/Down) per kwartaal; cel toont SMAPE van 20w-vooruit voorspellingen. Groen <10%, beige 10–30%, rood >30%. Klik om volledige uitleg te lezen…

Deze heatmap geeft antwoord op:

“In welke situaties voorspellen we goed, en in welke situaties wordt het lastig?”

Wat is een heatmapcel?

Een heatmap is een soort tabel in kleur.
Elke cel staat voor een groep situaties, hier:

  • Een kwartaal (Q1, Q2, Q3, Q4)
  • Een trend in dat kwartaal:
    • Up – prijs eindigt hoger
    • Stable – prijs blijft ongeveer gelijk
    • Down – prijs eindigt lager

Voor elke cel nemen we alle kwartalen uit de historie die in die categorie vallen,
en berekenen we de gemiddelde fout (SMAPE) van de 20-weken-vooruit voorspellingen (out-of-fold).

Kleuren

  • Groen – fout < 10% (heel goed)
  • Beige – fout tussen 10–30% (redelijk tot matig)
  • Rood – fout > 30% (moeilijk); hoe verder boven de 30%, hoe roder

Wat zien we?

  • Bij stijgende en stabiele kwartalen blijven de fouten relatief laag
    (vaak rond de 10–14%).
  • Bij dalende kwartalen – vooral Down in Q4 – lopen de fouten op
    (richting ~25% en hoger).

Deze heatmap vat in één oogopslag samen:

Hoe goed raken de 20-weken-vooruit voorspellingen verschillende marktfases, per seizoen en per trend?

Regime-holdout · fouten per regime

Regime-holdout: strengste test. Eén regime wordt uit training gelaten; we voorspellen er 28w vooruit. Groen = lijkt op rest; beige ~30%; rood = out-of-distribution (scenario’s/detectie nodig). Een regime is een ‘wereld’ met eigen spelregels (oorlog, overschot, futures dicht, Covid). Regimes verschuiven in de tijd, dus de toekomst is alleen goed voorspelbaar als ze lijkt op werelden die we al hebben gezien. Hier laten we steeds één regime volledig uit de training en voorspellen daarna alléén binnen dat weggelaten stuk (H28W). Groen betekent: dit regime lijkt genoeg op de rest om het te kunnen raden. Beige rond 30% is middenterrein. Rood betekent: out-of-distribution — een echte nieuwe wereld waar je scenario’s of regime-detectie voor nodig hebt. Klik om volledige uitleg te lezen…

Dit is de strengste test die we het model geven.
We vragen:

“Kan het model de prijs nog goed voorspellen als het mechanisme waardoor de prijs ontstaat fundamenteel verandert? (bijvoorbeeld oorlog terwijl in trainingsdata nooit oorlog heeft plaatsgevonden).”

Wat is een regime?

Een regime is een periode waarin de markt volgens een bepaald wereldbeeld werkt:

  • Overschotten of tekorten
  • Droogte, ziekte of misoogsten
  • Futurismarkt actief of bijna stilgevallen
  • Covid-achtige vraaguitval
  • Oorlog en kostenexplosie
  • Een jaar met extreme oversupply zoals 2025
  • Enzovoort

In 2004 werkt de aardappelwereld dus echt anders dan tijdens Covid of de Oekraïne-schok.

Hoe testen we dat?

Voor elk regime Rk doen we hetzelfde experiment:

  1. We halen het volledige regime uit de trainingsdata.
    We doen alsof dat wereldbeeld nog nooit heeft bestaan.
  2. We trainen het model op alle overige weken.
  3. We voorspellen alleen binnen dat weggelaten regime (H28W).
    Dus: 28-weken-vooruit voorspellingen op weken die het model nog nooit gezien heeft.
  4. We meten de fout (MAE / MAPE / SMAPE) alleen in dat regime.

Elke rij in de tabel beantwoordt dus:

“Hoe goed doet het model het in dit regime, als deze wereld voor het model compleet nieuw is?”

Kleuren

  • Groen – lage fouten → dit regime lijkt genoeg op eerdere patronen;
    het model kan het afleiden zonder het ooit gezien te hebben.
  • Beige – matige fouten (rond 10–30%) → gedeeltelijk herkenbaar, maar lastiger.
  • Rood – hoge fouten (> ~30%) → out-of-distribution;
    deze wereld is zó anders dat geen statistisch model dit netjes kan afleiden uit de rest.

Dingen rond de 30% vallen in het beige;
boven de 30% vervagen we geleidelijk richting rood.
En we verwachten dat misschien ~10% van de regimes echt donkergroen zijn (zeer goed generaliseerbaar).

Wat betekent dit praktisch?

  • Groene regimes
    → baseline-forecast is bruikbaar;
    → het model kan zo’n omgeving nog redelijk voorspellen, zelfs als die periode niet in de training zat.
  • Rode regimes
    → hier is de markt fundamenteel anders (bijv. Covid, futures-stilval, extreme oversupply).
    → dan heb je scenario’s, regime-detectie en expert-overrides nodig.

Voorbeeld (eerste twee rijen)

  • R1 – Pre-supercycle & pre-futures (2000–2006)
    – SMAPE ≈ 35.0%
    – Vroege groei van de EU-diepvriessector; meer contractteelt maar nog een brede vrije markt;
    geen moderne EEX-aardappelfuture; GLB-hervormingen en EU-uitbreiding op de achtergrond.
  • R2 – Global food & financial crisis (2007–2009)
    – SMAPE ≈ 36.3%
    – Wereldwijde voedselprijspiek 2007–08 en financiële crisis 2008–09;
    hoge macro-onzekerheid en volatiele inputkosten.

De latere regimes (oversupply-slumps, droogtejaar, Covid, Oekraïne-kostenschok, futures in coma, Potato Flood 2025, …) werken op precies dezelfde manier.

Samen laat deze tabel zien:

Waar het model op eigen kracht kan generaliseren
en waar de wereld zó verandert dat je moet overschakelen van ‘forecasting’ naar ‘scenario-denken’.

Deze tabel gebruikt dezelfde voorspellingen maar bekijkt ze per regime. Zo zie je direct in welke werelden de gekozen baseline goed of slecht presteert.

RegimePeriodeMAESMAPE%HorizonverloopNotities
R1
Pre-supercycle & pre-futures
2000-01-01 → 2006-12-315.3960.4%
Geleidelijke groei van de EU-diepvriessector; meer contractteelt maar nog steeds een brede vrije markt; Nog geen moderne EEX-aardappelfuture; GLB-hervormingen en EU-uitbreiding op de achtergrond; Gebruikt als 'normaal' ijkpunt zonder grote structurele schokken
R2
Global food & financial crisis
2007-01-01 → 2009-12-316.0339.1%
Wereldwijde voedselprijspiek 2007–08 en financiële crisis 2008–09; Hoge macro-onzekerheid; volatiele inputkosten; Stressregime zonder één dominante aardappelaanvoercrisis
R3
Pre-EEX transitional
2010-01-01 → 2011-06-305.3835.3%
Diepvriessector blijft groeien; contracten worden belangrijker; Nog pre-EEX (European Processing Potato Index) fase voor hedging
R4
Futures introduction & early use
2011-07-01 → 2013-12-3110.1073.1%
Eurex/EEX introduceert de European Processing Potato future (FAPP); Verwerkingscapaciteit groeit, geen extreme NEPG-oogstanomalieën; Geschikt regime om te testen met een actieve futures-laag
R5
First big oversupply slump
2014-01-01 → 2015-06-307.6882.2%
NEPG-productie 2014 >28 Mt uit recordareaal ~547k ha; Overaanbod/laaggeregime; trage afzet, zwakke vrije markt
R6
Tightening & price recovery
2015-07-01 → 2016-12-315.8954.0%
Areaalreducties na lage prijzen; krapper voorraad en sterke vraag; Eindeseizoensprijzen op één na hoogste ooit (na 2012); Hoogprijzenscenario zonder droogte
R7
Second large harvest / oversupply
2017-01-01 → 2017-12-317.8953.0%
Productie ~13–17% hoger dan vorig jaar, ~15% boven 5-jaarsgemiddelde; Zwakke vrije prijzen; opnieuw overaanbodregime
R8
2018 drought & heatwave
2018-01-01 → 2018-12-3114.53101.6%
Oogst ≥20% lager dan 2017 door droogte; lagere opbrengsten ook met irrigatie; Sterke prijsstijging; klassiek klein-oogst/hoog-prijs regime
R9
Post-drought recovery / normal plus
2019-01-01 → 2019-12-319.9845.8%
NEPG ~26,9 Mt, ~10% boven 2018 en iets boven 5-jaarsgemiddelde; Bescheiden productie, gebalanceerde markt; normalisatie na schok
R10
Covid shock & processing collapse
2020-03-01 → 2021-06-307.2294.4%
Horeca/vriesvraag klapt in; grote onverkochte verwerkingsvoorraden; Vrijemarktnoteringen opgeschort; vraagcrash
R11
Post-Covid bounce / pre-Ukraine
2021-07-01 → 2021-12-317.1768.0%
Export en diepvriesproductie herstellen richting pre-Covid-niveaus; Geen extreme oogstpiek; herstel-/stabilisatieregime
R12
Ukraine war + cost-explosion + climate stress
2022-01-01 → 2022-12-314.5024.4%
Kunstmest-/energiekosten schieten omhoog na invasie; +15–20% of meer; Klimaatgerelateerde opbrengstdalingen en opslagproblemen; Prijzen ~€25/100 kg maar marges onder druk
R13
2023: disruptions & still high costs
2023-01-01 → 2023-06-3014.2145.6%
Lagere NEPG-productie; redelijk goede vrije prijzen; Aanhoudende verstoringen/hoog risico; hedging-infrastructuur onder druk
R14
Post-Saxo “futures in coma”
2023-07-01 → 2023-12-3120.5867.3%
Saxo Bank stopt EEX; kleine telers afgesloten (ADM-route ≥€100k); Futuresmarkt bijna dood voor gewone telers; contractdekking dominant
R15
2024 high-cost, disease & transition
2024-01-01 → 2024-12-3124.8575.8%
Nog steeds hoge inputkosten; weer-/ziektedruk; Kloof vrij versus contract zeer groot (vrij ~€400/t gemeld); Toegang tot futures nog beperkt; volatiliteit opgevangen via contracten
R16
Potato Flood 2025 oversupply crisis
2025-01-01 → 2025-12-3114.7978.6%
NEPG-areaal ~7% hoger (EU-4 ~608k ha); verwachte recordoogst ~27,3 Mt; Vrije verwerkingsprijzen storten in (≈€300→€75/t feb–jun); geringe spotliquiditeit; Extreem overaanbod/vrijemarktingstorting met zware contractdekking