Het belang van 'Out-of-Sample' testen na elke optimalisatie ronde

Portret van Alex de Vries, Quantitatief Analist & Algo-Trading Expert
Alex de Vries
Quantitatief Analist & Algo-Trading Expert
Strategie Optimalisatie & Tuning · 2026-02-15 · 6 min leestijd

Stel je dit even voor: je hebt een prachtige trading strategie gebouwd in Python.

Met behulp van de API van je broker, zoals Interactive Brokers of Coinbase, draai je urenlang te tunen. Je backtests in platformen als Backtrader of Lean knallen uit de bus met een winstpercentage van 85% en een enorme Sharpe ratio. Je bent er bijna.

Je ziet het geld al binnenstromen. Maar dan slaat de realiteit toe.

Zodra je de live markt raakt, stort je strategie in elkaar. Waarom?

Omdat je getraind bent op de examenstof en nu de toets moet maken. Dit is precies het drama dat 'Out-of-Sample' (OOS) testen voorkomt. Het is het verschil tussen een gokje wagen en serieus traden.

Wat is Out-of-Sample testen eigenlijk?

Laten we even simpel beginnen. Stel, je hebt een berg historische data van de AEX of de S&P 500.

  • De Training Set: Dit is je keuken. Hier leer je koken. Je test allerlei ideeën, past parameters aan en ontdekt patronen.
  • De Validation Set: Dit is de proef-smaak. Klopt het recept?
  • De Out-of-Sample Set: Dit is het onbekende restaurant. Je neemt je recept mee en serveert het aan klanten die je nog nooit hebt gezien.

Laten we zeggen van de afgelopen 5 jaar. In de wereld van algoritmische trading snijd je deze data meestal in drie stukken.

Out-of-Sample testen doe je dus nadat je klaar bent met je optimalisatie ronde. Je neemt de parameters die in je training set perfect werkten en past ze toe op data die de computer nog nooit heeft gezien. Als je strategie hier ook werkt, is er een goede kans dat je echt iets goeds hebt gebouwd. Werkt het niet? Dan heb je te maken met 'overfitting' (teveel gefit op ruis).

Waarom dit het belangrijkste filter is voor je bot

Veel traders denken dat backtesten gaat over een hoge winst halen. Dat is een valkuil.

Backtesten gaat erover dat je bewijst dat je logica klopt. Zonder OOS testen ben je eigenlijk gewoon aan het 'curve-fitten'.

Dat betekent dat je een lijn door bestaande punten trekt, zonder te begrijpen waarom de lijn zo loopt. De markt bestaat uit ruis en echte bewegingen. Tijdens het optimaliseren (in-sample) loop je het risico dat je bot de ruis van het verleden leert herkennen als een 'superstrategie'.

Hij past zich te veel aan op specifieke gebeurtenissen. Een OOS test is de ultieme reality check. Het is alsof je een Formule 1-coureur bent die een circuit uit zijn hoofd kent, en hem dan plotseling op een nieuw, onbekend circuit zet. Kan hij nog steeds rijden?

Als je strategie na een optimalisatie ronde direct in de OOS fase inzakt, weet je genoeg.

Je parameters zijn te strak gespannen. Je bot is te complex geworden. Dit bespaart je duizenden euro's aan verlies op de live markt.

Hoe je een OOS test opzet in je workflow

Oké, hoe doen we dit dan in de praktijk? Je gebruikt hiervoor je Python libraries.

  1. Verzamel data: Minimaal 5 tot 10 jaar data (bijvoorbeeld 1-minuut candles voor crypto of dagelijkse voor aandelen).
  2. Split de data: Deel het op in een trainingsperiode (bijv. 2018-2021) en een OOS-periode (2022-2024).
  3. Optimaliseer (In-Sample): Laat je loopje draaien op 2018-2021. Vind de beste combinatie van parameters (bijv. RSI periode 14, Moving Average 50).
  4. Vries de parameters in: Schrijf de waardes op. Pas ze NIET meer aan.
  5. Test (Out-of-Sample): Draai je script op de data van 2022-2024. Geen aanpassingen, alleen kijken.

Stel je gebruikt Pandas voor data en Backtrader voor de engine. Je data moet er zo uitzien:

Als je met een broker API werkt zoals die van Degiro of Binance, is het slim om dit te automatiseren. Gebruik een library als Optuna voor hyperparameter optimalisatie. Optuna kan automatisch de 'walk-forward' analyse uitvoeren. Dit houdt in dat het steeds een klein stukje data verschuift, optimaliseert, en test op de volgende dag.

Zo boots je de realiteit na. Een handige tool hierbij is QuantConnect (Lean).

Hiermee kun je complexe OOS tests draaien zonder dat je eigen server overuren maakt. De kosten voor zo'n platform vallen mee, vaak rond de €20-€50 per maand voor toegang tot fatsoenlijke data en rekenkracht.

Walk-Forward vs. Klassieke OOS: Wat is het verschil?

Er zijn een paar manieren om dit aan te pakken. De klassieke 'Hold-Out' methode is wat we hierboven deden: 50% trainen, 50% testen. Vergeet niet om je experimenten systematisch te tracken om het overzicht te bewaren.

Dit is simpel en snel. Het nadeel? De markt verandert. Een strategie die in 2020 werkte, faalt misschien in 2021 omdat de volatiliteit anders is. Voorkom dat je in de valkuil van over-optimization trapt. Een betere, maar intensievere methode is de Walk-Forward Optimization.

"Je optimaliseert op data van januari tot maart, en test op april. Dan schuif je een maand door: optimaliseer op feb-apr, test op mei. Enzovoort."

Dit is de gouden standaard voor serieuze algoritmische traders. Je draait hierbij niet één optimalisatie, maar een reeks.

Dit kost veel tijd en rekenkracht, maar het geeft je een veel realistischer beeld. Als je strategie in deze 'schuivende' testen consistent positief blijft, mag je er best vertrouwen in hebben. Een handige tool voor deze berekeningen is 'Optuna'. Het is open-source en helpt je bij het vinden van de beste parameters zonder dat je dagenlang hoeft te wachten. De kosten voor rekenkracht (AWS of Google Cloud) liggen hierbij vaak tussen de €50 en €200 per maand, afhankelijk van hoe intensief je test.

Praktische tips om direct toe te passen

Voorkom spijt. Zorg dat je OOS testen integreert in je standaard routine.

Hier zijn een paar concrete tips om morgen al beter te worden:

  • De 30% Regel: Reserveer altijd minimaal 30% van je data voor de OOS test. Liever 50%. Liever te veel data testen dan te weinig.
  • Check de Drawdown: Een strategie kan winstgevend zijn in de OOS test, maar een gigantische drawdown (waarde-daling) hebben. Kijk niet alleen naar de totale winst, maar naar de maximale verliesperiode. Als die te groot is, verlaag je de positiegrootte of stop je ermee.
  • Gebruik een 'Sanity Check': Draai een OOS test op een random dataset (noise). Als je strategie daar winst maakt, is je code waarschijnlijk kapot of zit er een bug in je data-voorbereiding.
  • Leer van de afwijkingen: Als je OOS resultaten afwijken van je in-sample resultaten, ga dan niet rommelen met parameters om het alsnog goed te maken. Analyseer waarom het misgaat. Misschien is je spread of commissie te hoog voor de broker API die je gebruikt?
  • Vergeet de transactiekosten niet: In je Python script moet je realistische kosten meenemen. Bijvoorbeeld €1 per transactie of 0.1% commissie. Een strategie die in OOS net break-even draait na kosten, is in de praktijk een verliesspel.

Uiteindelijk is OOS testen je schild. Het beschermt je tegen je eigen optimisme. Trading is een spel van waarschijnlijkheden, en door grondige robustness testing toe te passen, verhoog je die waarschijnlijkheid enorm.

Dus, voordat je je bot live zet: test hem op data die hij niet kent. Je portemonnee zal je dankbaar zijn.

Portret van Alex de Vries, Quantitatief Analist & Algo-Trading Expert
Over Alex de Vries

Alex is een ervaren quantitatief analist en Python-ontwikkelaar die complexe trading concepten vertaalt naar begrijpelijke, praktische handleidingen voor zowel beginners als gevorderden.

Volgende stap
Bekijk alle artikelen over Strategie Optimalisatie & Tuning
Ga naar overzicht →