Overfitting in Trading: Waarom je backtest resultaten te mooi zijn

Portret van Alex de Vries, Quantitatief Analist & Algo-Trading Expert
Alex de Vries
Quantitatief Analist & Algo-Trading Expert
Backtesting & Validatie Strategieën · 2026-02-15 · 5 min leestijd

Je kent dat gevoel wel: je hebt een prachtige backtest draaien in Python, met een bot die 80% winstgevende trades laat zien en een drawdown van maar 2%. Je wilt bijna je spaargeld erin pompen. Maar stop even.

Als het te mooi lijkt om waar te zijn, is het dat meestal ook.

Dit is het klassieke valkuil van overfitting, en het vernietigt meer trading accounts dan welke marktcrash dan ook.

Wat is overfitting eigenlijk?

Stel je voor dat je een bot bouwt die perfect werkt op de data van vorig jaar. Je past de parameters zo strak af dat elke piek en dal precies gevolgd wordt.

Je zegt tegen je bot: onthoud deze specifieke patronen. Maar de markt van morgen is nooit exact hetzelfde als gisteren.

Overfitting is simpelweg een model dat teveel specifieke ruis uit het verleden heeft geleerd, in plaats van de echte onderliggende signalen. Het is alsof je een formule maakt die alleen werkt als de temperatuur in Amsterdam precies 18,3 graden is en de wind uit het noorden waait. Prachtig voor één dag, waardeloos voor de rest van het jaar.

Waarom is dit zo gevaarlijk? Omdat je broker je geen seconde waarschuwt. Je backtest in Python met pandas en numpy ziet er perfect uit, maar zodra je de bot live zet via een API van Interactive Brokers of Binance, stort het in. De bot is te specifiek, te strak getuned op historische data. Het gevolg? Je verliest kapitaal terwijl je dacht een goudmijn te hebben gevonden.

Hoe herken je overfitting in je backtest?

De eerste rode vlag is een te hoge winstpercentage. Als je Python backtest een winstpercentage van 90% laat zien op EUR/USD met een simpele RSI-strategie, wees alert.

Realistische systemen zitten vaak tussen de 40% en 60% winstgevende trades. Alles daarboven vraagt om een kritische blik.

Een andere duidelijke indicator is een te lage drawdown. Stel je voor dat je een bot test over 5 jaar data en de maximale drawdown is maar 1,5%. In de echte wereld, zeker bij daytrading of swingtrading, is een drawdown van 5% tot 10% normaal.

Als je bot geen enkele serieuze correctie heeft meegemaakt in de backtest, heb je waarschijnlijk parameters gebruikt die te strak staan voor die specifieke periode. Kijk ook naar de pieken in de equity curve.

Als de lijst bijna recht omhoog gaat zonder noemenswaardige dip, is het waarschijnlijk geen robuust systeem. Echte trading bots, zelfs de beste, hebben hobbels. Als je equity curve eruitziet als een Netflix-aandeel in 2020, zonder de correcties van 2022, is het tijd om je parameters losser te zetten.

De technische kant: parameters en ruis

Laten we even concreet worden met Python. Stel je gebruikt een simple moving average crossover strategie.

Je hebt een snelle SMA van 50 en een langzame van 200. In je backtest draai je 50 verschillende combinaties om de beste te vinden.

Dit heet parameter optimization. Het gevaar ontstaat als je te veel parameters optimaliseert. Neem een strategie met 5 parameters: SMA lengte, RSI periode, stop-loss niveau, take-profit niveau en een volume filter. Als je voor elke parameter 10 opties test, heb je 100.000 mogelijke combinaties.

Er zal er altijd wel één toevallig goed presteren door ruis, niet door een echt edge.

Een veelvoorkomende fout is het testen op te weinig data. Als je een bot bouwt die alleen getraind is op de bullmarkt van 2020-2021, mis je de crash van 2022. Je bot leert alleen maar "omhoog kopen" en faalt zodra de trend draait.

Gebruik altijd meerdere marktperiodes: bullish, bearish en zijwaarts. Gebruik in je Python code libraries zoals Backtrader of Zipline om je strategie te testen.

Maar voeg altijd een out-of-sample test toe. Splits je data: gebruik de eerste 70% voor training en de laatste 30% voor validatie.

Als je bot presteert op de training data maar faalt op de validatie, is het overfit.

Praktische tips om overfitting te voorkomen

Begin met het beperken van je parameters. Kies voor brede, robuuste instellingen in plaats van exacte getallen.

Test bijvoorbeeld een stop-loss tussen de 1% en 3%, niet precies 1,72%. Hoe meer variabelen je vastzet, hoe kwetsbaarder je systeem. Voer ook een grondige drawdown analyse uit en gebruik walk-forward analyse.

Dit is een techniek waarbij je je model steeds opnieuw traint op recente data en test op de volgende periode. In Python kun je dit bouwen met loops die je data window verschuiven.

Het is meer werk, maar het geeft een realistischer beeld van hoe je bot presteert onder veranderende marktcondities.

Voeg ruis toe aan je training data. Dit klinkt contra-intuïtief, maar het helpt. Door kleine willekeurige variaties toe te voegen aan je historische data, forceer je je model om robuuste patronen te leren in plaats van specifieke pieken. Dit heet data augmentation en wordt veel gebruikt in machine learning.

Test op meerdere instrumenten en tijdsframes. Als je bot alleen werkt op EUR/USD in een 1-uur timeframe, is het waarschijnlijk te specifiek.

Test hem op GBP/USD, USD/JPY en misschien zelfs op crypto zoals BTC/USD. Als de prestaties consistent zijn, is je edge waarschijnlijk echt. Zorg er bij het bepalen van je sample size voor dat je voldoende trades hebt voor een statistisch significante backtest.

Te veel trades in een backtest kunnen leiden tot curve-fitting, waarbij je model teveel ruis oppikt.

Focus op kwaliteit boven kwantiteit. Gebruik risicomanagement om de pijn te beperken. Zelfs als je bot overfit is, kun je nog steeds beschermen door position sizing.

Riskeer nooit meer dan 1% van je kapitaal per trade. Met een drawdown van 10% ben je nog steeds in het spel, maar met 50% ben je failliet.

Als je een bot live zet, begin dan klein. Gebruik een demo account of een broker zoals Interactive Brokers met lage commissies (rond de €2-€5 per 100.000 eenheden). Laat de bot een maand draaien zonder parameters aan te passen.

Vergelijk de live resultaten met je backtest. Als je slippage correct simuleert, zijn de resultaten vaak consistent en zit je goed.

Zo niet, pas dan voorzichtig aan. Onthoud dat geen enkele bot perfect is.

De beste algoritmische traders ter wereld hebben systemen met een winstpercentage van 50-60%. Ze winnen door consistente uitvoering en strak risicomanagement, niet door magische parameters. Jouw doel is niet een perfecte backtest, maar een bot die overleeft in de echte markt.

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 Backtesting & Validatie Strategieën
Ga naar overzicht →