Alles over backtesten en forward testen. Hoe weet ik of mijn trading strategie winstgevend is?

Misschien heb je weleens van backtesten of forward testen gehoord. Het is dé manier om er achter te komen of jouw trading strategie winstgevend is. Ik krijg hier ook regelmatig vragen over, zoals vandaag op Twitter:

Hoog tijd dus voor een blogpost over backtesten en wat je nodig hebt om je strategie te valideren.

Om erachter te komen of jouw strategie een edge heeft en dus winstgevend is op de lange termijn, moet je eigenlijk deze vraag stellen:

Hoeveel trades moet ik doen (sample size) om de prestaties van mijn strategie te kunnen beoordelen?

Traden gaat over waarschijnlijkheden, dus het enige wiskundig correcte antwoord is dat geen enkele sample size groot genoeg is!

Waarom?

Omdat waarschijnlijkheden steeds dichter en dichter bij de “werkelijke” uitkomst komen, naarmate er meer trades worden uitgespeeld. Echter zullen ze nooit die werkelijke waarde bereiken.

In principe is testen dus een gebed zonder einde.

Aannames doen op basis van kansen

Maar wiskundig correct betekent niet altijd praktisch. Je moet aannames doen op basis van kansen. Niet alleen wanneer als je gaat traden, maar ook wanneer je de prestaties van een strategie wil beoordelen.

Niemand heeft tijd om een ​​strategie te testen en 1000 trades te doen om er vervolgens achter te komen dat het niet winstgevend is toch?

En dat geldt niet alleen voor een compleet nieuwe strategie. Stel dat je elke keer wanneer je iets aanpast in een bestaande strategie eerst 1000 trades moet doen om te testen of het werkt…

Dat kan natuurlijk niet.

Zelfs 100 trades achter elkaar is al teveel voor een trader die niet heel actief is en bijvoorbeeld alleen op de hogere time frames handelt.

Daarnaast moet je rekening houden met je win rate. Hoe hoger je win rate, hoe lager je standaardafwijking zal zijn (variance/standard deviation). Dus hoe hoger je win rate, hoe lager je sample size in theorie zou mogen zijn. Maar hoe kun je weten wat je echte win rate is zonder eerst heel veel trades te doen?

Dilemma! 🙂

Er bestaat geen perfectie in traden of beleggen

We zoeken dus een minimale (maar betrouwbare) sample size die maximale data geeft, waarop we conclusies kunnen trekken. We hebben bruikbare resultaten nodig, geen absolute resultaten, want er bestaat nu eenmaal geen perfectie in traden en beleggen.

Backtesten betekent snellere resultaten

Je kunt natuurlijk je strategie backtesten en sneller data verzamelen. Alhoewel je daar wel voorzichtig mee moet zijn, omdat backtesten nooit hetzelfde is als forward testen, vanwege psychologische en andere factoren zoals fundamentele bias.

Mocht je een trading strategie willen backtesten, dan kan dat heel makkelijk met de replay functie van TradingView.

Klik hier om jouw TradingView account aan te maken…

Daarnaast kun je een strategie ook programmeren met alle parameters die jij gebruikt voor en entry, stop loss en take profit. Deze kun je vervolgens binnen een paar minuten backtesten op jaren aan gegevens.

Dit is fucking moeilijk, want ten eerste moet je een goede programmeur zijn en ten tweede mag je strategie niet discretionair zijn. Dat betekent dat er geen “menselijke” mitsen en maren aan mogen zitten die niet te programmeren zijn.

Dit is hoe ik een nieuwe trading strategie test

Allereerst kijk ik naar trades in batches van 50. Stel dat ik een nieuwe strategie wil testen, dan schrijf ik uiteraard eerst de harde regels op (criteria voor entry, stop, target, etc.). Hier wijk ik de eerste 50 trades niet vanaf.

Eerst doe ik 200 backtest trades met de replay functie. Als je hier een beetje handig in bent kost het je 2 minuten per trade, inclusief het loggen van je trades en notities maken. Ga dus uit van een dagje werk.

Vervolgens begin ik met traden (forward testen) en log ik al mijn trades in mijn trading journal. In de video cursus vind je hiervoor een template en de software die ik gebruik.

Na 50 forward trades ga ik evalueren, pak ik mijn journal erbij en filter ik alle trades eruit waarbij ik me niet 100% aan de regels heb gehouden. Zo krijg ik een realistisch en objectief beeld van de prestaties van deze strategie.

Waarom?

Omdat je altijd 2 dingen wil weten als je de prestaties van een trading strategie gaat beoordelen:

  1. Hoe goed heeft mijn strategie het gedaan in de marktcondities van verschillende time frames
  2. Hoe goed HEB IK mijn strategie toegepast binnen die marktcondities op die verschillende time frames

Pas dan kun je objectieve conclusies trekken. Als dat gedaan is heb je tussen de 40 à 45 trades, waarbij je 100% de regels van je strategie hebt gevolgd en waarvan je weet of de marktcondities in het voordeel of nadeel waren van jouw strategie.

Vergelijk de forward test tegen je backtest resultaten

Laten we zeggen dat de eerste batch van 50 winstgevend was. Nu kun je de KPI’s zoals gemiddelde risk to reward, win rate en gemiddelde winst per trade vergelijken met je backtest data.

Zijn er grote verschillen en zo ja waar zit ‘m dat in? Als er geen grote verschillen zijn is dat top en kun je verder. Als die er wel zijn, probeer dan uit te sluiten dat het niet komt door dingen als spreads, fees, trading tijden etc. Bij backtesten kunnen veel dingen misgaan en zelfs de kleinste dingen kunnen grote impact hebben.

Als je weet wat er aan de hand is en eventuele aanpassingen hebt gedaan, kun je een nieuwe batch van 50 trades maken, met dezelfde regels. Deze vergelijk je vervolgens met de vorige 50 en de backtest data om te zien of je aanpassingen hebben gewerkt.

Out samples

Je hebt nu 300 trades. 200 backtest en 100 forward test trades. Iedere keer dat je 50 trades doet vergelijk je die met de vorige 50 en alle trades daarvoor als geheel. Dit heet een out sample.

Op die manier krijg je grip op hoe je strategie presteert ten opzichte van recente trades en de complete historie. Dit is belangrijk omdat de marktcondities continue veranderen, maar ook jouw eigen prestaties. We zijn nu eenmaal geen robotjes.

We willen weten of onze meest recente trades exceptioneel zijn (buiten de boot vallen) of juist niet en of de veranderingen die we maken impact hebben.

Als een batch van 50 trades niet winstgevend is, kun je uitrekenen of deze out sample wiskundig gezien nog steeds binnen de realistische standaardafwijking van de gehele performance valt.

Standaardafwijking (standard deviation)

Ik wil het niet te ingewikkeld maken, dus hier nog even een korte samenvatting van wat we tot nu toe besproken hebben.

Voor we een nieuwe strategie gaan traden doen we eerst 200 backtest trades. Je kunt dit het beste doen op de meest recente data. Daarna doen we 50 forward test trades. We checken of we onze regels hebben toegepast en of er grote afwijkingen zijn in verhouding tot de backtest data.

Zijn er grote verschillen dan moet je uitzoeken hoe dat komt. Zo niet, dan traden we door. Daarbij vergelijk je steeds de laatste 50 trades met de 50 trades daarvoor en alle trades daarvoor. Dus twee vergelijkingen.

Vervolgens reken je de standaardafwijking (standard deviation) uit voor de gehele dataset en vergelijk je die met de out sample (de laatste 50 trades).

Je kunt bijvoorbeeld de standaardafwijking berekenen voor je risk to reward ratio of het winstpercentage per trade. Hiermee krijg je een bandbreedte waar je resultaten binnen zouden moeten vallen.

In dit artikel wordt duidelijk uitgelegd hoe je de standaardafwijking uitrekent.

Tijdelijk stoppen of afscheid nemen van een strategie

De kans bestaat dat een strategie gewoon niet winstgevend te krijgen is. Hiervoor heb ik twee regels.

  1. Als ik 10% van mijn (demo) account verlies, stop ik met het traden van de strategie. Ongeacht waar ik ben in de meeste recente batch van trades en probeer ik uit te zoeken wat er mis gaat
  2. Als bij de analyse van een batch blijkt dat de afwijking meer dan 1 standaarddeviatie is (positief of negatief) stop ik met het traden van de strategie tot ik weet hoe dat komt

Conclusie

Ik hoop dat je wat aan deze uitleg hebt. Als traders hebben we elke dag en elke trade met onzekerheid te maken. Dus dit soort bevestiging van wiskundige en statistische feiten en het bijhouden van een trading journal zijn een mooi handvat.

Uiteraard zijn er variabelen die misschien niet op jou van toepassing zijn. Als je intraday trades maakt of een scalper bent, zit je natuurlijk veel sneller op 50 trades, dan iemand die alleen positional trades neemt op de long term.

Maar het is vooral om aan te geven dat je sample size echt niet gigantisch hoeft te zijn. Het doel is dat je bruikbare data en resultaten krijgt. Voor mijn zijn batches van 50 trades een mooi aantal, maar ik ken ook traders die werken met batches van 20 of 30.

Wat belangrijk is, is dat je altijd je recente batch gebruikt als out sample en deze dus niet extra meeneemt in alle data als je gaat vergelijken. En hoe groter je dataset, hoe betrouwbaarder je resultaten.

Stel hieronder gerust je vragen over backtesten, forward testen en het valideren van je trading strategie.