Hoe herken je een 'Curve-Fitted' strategie binnen 5 minuten?
Je kijkt naar je backtestresultaat en ziet een mooie, stijgende equity curve. De winst is hoog, de drawdown laag.
Je voelt die kriebel: dit is hem, de heilige graal. Maar wacht even. Is dit echt zo goed, of heb je per ongeluk je strategie gefit op oude data? Deze vijfminuten-check helpt je om een curve-fitted strategie razendsnel te ontmaskeren.
Wat je nodig hebt voor deze check
Om dit snel te doen, heb je niet veel nodig, maar wel de juiste dingen.
Zorg dat je Python omgeving klaar staat, bijvoorbeeld met Jupyter Notebook of VS Code. Je hebt toegang nodig tot je backtesting data, bijvoorbeeld via de API van je broker zoals Interactive Brokers of LYNX, of een dataset van een dienst als Alpaca of Polygon. Gebruik een backtesting library zoals Backtrader, VectorBT of een simpel Pandas-script. Zorg dat je je strategiecode bij de hand hebt.
Stap 1: De visuele inspectie van de equity curve (1 minuut)
Een calculator of Excel is handig voor snelle berekeningen. Reken op maximaal 5 minuten voor de hele check.
Pak een koffie en ga er even voor zitten. De eerste check is puur visueel.
Als je equity curve eruitziet als een tekenfilm van een raket die de ruimte in schiet, zonder enige turbulentie, ben je waarschijnlijk je eigen illusie aan het backtesten.
Open je equity curve plot. Kijk niet naar de cijfers, maar naar de vorm. Is de lijn te mooi om waar te zijn?
Stap 2: De walk-forward analyse (2 minuten)
Een perfect stijgende lijn zonder noemenswaardige correcties is een grote rode vlag. Echte markten zijn ruw.
Je equity curve hoort wat hobbels en dalen te hebben. Als je lijn eruitziet als een gladde, exponentiële groeicurve, is de kans groot dat je strategie te veel is afgestemd op specifieke patronen in de testdata. Let ook op pieken die precies op de top van een historische beweging vallen.
Veelgemaakte fout: De focus leggen op het totale rendement en de drawdown negeren.
Een hoge winst met een lage drawdown is vaak te mooi om waar te zijn. Dit is de krachtigste check.
Deel je data op in een trainingsperiode en een testperiode. Bijvoorbeeld: gebruik 2020-2022 voor het optimaliseren van je parameters (training) en test de strategie op de ongeziene data van 2023 (test).
Doe dit handmatig in Python. Schrijf een simpel script: optimaliseer je strategie op de trainingsperiode. Vind de beste parameters voor die periode. Pas diezelfde, onveranderde parameters toe op de testperiode.
Stap 3: Parametergevoeligheid check (1 minuut)
Als de prestaties in de testperiode dramatisch afwijken (bijvoorbeeld een winst van 30% in training naar een verlies van 10% in test), is je strategie curve-fitted. Een gezonde strategie presteert redelijk consistent, ook op onbekende data.
Een curve-fitted strategie zie je direct terug in een grillige equity curve die instort zodra de marktomstandigheden veranderen.
Reken uit hoeveel de prestatie daalt. Een daling van meer dan 50% is een waarschuwing. Veelgemaakte fout: De trainings- en testperiodes niet strikt scheiden.
Gebruik geen data uit de testperiode om je parameters te fine-tunen. Vermijd de gevaren van data snooping bias en voorkom dat je test waardeloos wordt.
Curve-fitting ontstaat vaak door te veel parameters te optimaliseren. Kijk naar je strategie. Hoeveel parameters stel je in?
Denk aan periodes voor moving averages, stop-loss niveaus, RSI-waardes. Elk extra parameter geeft je model meer vrijheid om toevallige patronen te kopiëren.
Test hoe gevoelig je resultaat is voor kleine veranderingen. Verander een parameter met 5% (bijvoorbeeld een 20-perioden moving average naar 21).
Als je totale winst hierdoor met 30% verandert, is je strategie extreem gevoelig en dus curve-fitted.
Stap 4: Out-of-sample test (1 minuut)
Een robuuste strategie is stabiel voor kleine tweaks. Gebruik een simpel Python-scriptje om een parameter te varieren en de impact op het rendement te plotten. Je ziet dan direct of je een piek in de optimalisatie hebt of een stabiel gebied. Zoek naar stabiele zones, niet naar de allerhoogste piek.
Veelgemaakte fout: De beste parameter uit de optimalisatie kiezen zonder naar de omgeving te kijken. Kies altijd voor de meest robuuste waarde, niet de allerhoogste.
Dit is een variant op Stap 2, maar dan sneller. Neem een klein stukje data dat je strategie nog nooit heeft gezien.
Bijvoorbeeld de laatste 3 maanden van je dataset, terwijl je de rest hebt gebruikt voor ontwikkeling. Pas je strategie hierop toe, zonder enige aanpassing. Als je strategie hier consistent geld verliest of extreem weinig rendement maakt vergeleken met de backtest, is het een curve-fit.
Een goede strategie zou ook op deze onbekende data een positief of in ieder geval consistent patroon moeten laten zien. Let op: een enkele maand met verlies is normaal, maar een complete afwezigheid van het verwachte patroon is zorgelijk.
Je broker API, zoals die van DEGIRO of Saxo Bank, kan je helpen met live data voor deze test. Haal de recentste data op en draai je script. Dit duurt maar een paar minuten en geeft je direct inzicht.
Veelgemaakte fout: Trap niet in de valkuil van te korte backtest periodes. Een te kleine steekproef geeft geen betrouwbaar beeld.
Zorg voor minimaal 20-30 trades in de testperiode.
Verificatie-checklist
- Visuele check: Is de equity curve te glad en zonder serieuze correcties?
- Walk-forward: Is de performance op ongeziene data minder dan 50% van de trainingsperformance?
- Parametergevoeligheid: Verandert je resultaat drastisch bij een kleine parameterwijziging?
- Out-of-sample: Laat je strategie een consistent patroon zien op onbekende data?
- Aantal parameters: Heb je meer dan 5-7 kernparameters geoptimaliseerd?
Als je meer dan twee van deze vragen met 'ja' beantwoordt, is de kans groot dat je strategie curve-fitted is. Gooi hem niet direct weg, maar pas de bovenstaande stappen toe om hem robuuster te maken. Verlaag het aantal parameters, verbeter de risicomanagement regels en test op meer onafhankelijke datasets.
Onthoud: trading is geen zoektocht naar de perfecte fit op het verleden, maar een kansspel op de toekomst.
Deze vijfminuten-check bespaart je hopelijk veel frustratie en kapitaal.
