Een trader vertrouwde ons zijn methode toe zodat wij ze aan een programma konden overdragen. Het resultaat is openbaar: een casestudy beschrijft de gekozen regels, de cijfers van twintig jaar simulatie en het bericht dat elke avond na de sluiting van New York vertrekt. Dit artikel vertelt de andere helft van het werk, de helft die niet wordt getoond. Tussen het eerste resultaat, dat er in een paar dagen was, en het resultaat dat we hebben willen publiceren, hebben we bijna niets toegevoegd: we hebben vooral weggehaald.
Wat hapert, is niet de methode maar de toepassing ervan
De klant is ervan overtuigd dat zijn methode werkt wanneer hij ze consequent volgt. Ons werk bestond er niet in die overtuiging voor waar aan te nemen, maar ze om te zetten in regels en die regels op de proef te stellen. Het probleem waarmee hij bij ons kwam, ligt elders. Op een avond waarop de koersen dalen, na een slechte week, past niemand een regel toe zoals op een rustige avond. Men wacht een dag langer, men stapt wat te vroeg uit, men slaat een handelsdag over omdat men op verplaatsing is. Daar gaat het rendement verloren.
Een programma kent geen vermoeidheid en geen herinnering aan slechte transacties. Bij dezelfde koersen plaatst het dezelfde order, of de week nu goed of slecht was. Voor dit project was dat het voordeel dat het zwaarst woog.
Wel moet het te horen krijgen wat het moet doen in de situaties die de trader op zijn gevoel afhandelt, zonder ze zelfs op te merken: twee voorwaarden die elkaar op dezelfde avond tegenspreken, een aandeel dat hij al bezit en dat uit de selectie valt, een openingskoers die ver af ligt van de slotkoers waarop de beslissing is genomen. Het gaat er niet om de methode aan te vullen, maar om op te schrijven wat de bedenker ervan al doet.
Illustratief scenario. Dinsdag, 22 uur. De Amerikaanse markt is net lager gesloten. De regel zegt verkopen. De trader bekijkt de grafiek, herinnert zich dat dezelfde configuratie afgelopen voorjaar in drie handelsdagen keerde, en besluit tot donderdag te wachten. Misschien heeft hij die avond gelijk. Of hij heeft ongelijk.
De afbakening bestond er dus in de methode op te schrijven zoals ze wordt toegepast, en ze daarna regel voor regel te laten valideren door wie ze heeft bedacht. Dat is meer optimalisatiewerk dan ontwikkelingswerk, en het lijkt sterk op wat we doen wanneer we een proces meten voordat we het becijferen in een praktijk of een kmo.
Survivorship bias: het eerste cijfer is altijd te mooi
Toen de regels eenmaal op papier stonden, hebben we ze toegepast op de laatste twintig jaar koersen, van december 2005 tot november 2025, met 100.000 dollar bij de start. Die oefening heeft een naam, de backtest: een simulatie van de methode op de koersen van het verleden, alsof ze destijds al had gedraaid.
Het eerste resultaat was uitstekend. Het was ook fout, om een reden die niets op het scherm aangeeft.
De methode kiest haar aandelen uit de honderd waarden van de Nasdaq-100-index en die van de energiesector van de S&P 500, samen ongeveer 120 kandidaten. Die lijst wordt echter voortdurend herzien, en onze eerste versie nam die van 2026 voor alle datums. Ze moet integendeel voor elke gesimuleerde periode worden bijgewerkt, met de samenstelling die de index op dat moment werkelijk had. Zonder dat kiest het programma zijn aandelen alleen uit de bedrijven die lang genoeg succesvol zijn geweest om vandaag nog in de index te staan, wat men de survivorship bias noemt.
We hebben dus de exacte samenstelling van de index op elke datum gereconstrueerd, door de 211 sinds februari 2007 gepubliceerde wijzigingen in omgekeerde volgorde terug te draaien, en daarna de hele simulatie met die lijsten opnieuw uitgevoerd. Figuur 1 toont wat die ene correctie van het resultaat afhaalt.
Het eindkapitaal wordt aan beide kanten bijna gehalveerd. Het jaarlijkse groeitempo verliest drieënhalf punt, zowel voor de methode als voor de eenvoudigst denkbare vergelijking: dezelfde aandelen, gekocht wanneer de methode ze selecteert en daarna aangehouden, zonder enige uitstapregel.
Die correctie blijft onvolledig, en dat zeggen we tegen de klant op het moment dat we hem de curve laten zien. De koersenleverancier verspreidt de historiek van geschrapte bedrijven niet meer, zodat 57 van de 123 aandelen uit het universum van november 2005 onvindbaar blijven. De gedateerde lijsten kloppen dus voor de bedrijven die laat zijn ingestapt, en missen altijd de bedrijven die eruit zijn gegaan. Daaronder zitten faillissementen en overnames met premie, waarvan het netto-effect onbekend blijft. Dat is een beperking van de simulatie, en ze blijft aanwezig in de cijfers die hier zijn gepubliceerd.
De lijst van de energiesector is daarentegen helemaal niet gereconstrueerd: de simulatie gebruikt haar samenstelling van 2022 voor de hele periode. Dat is een tweede, kleinere bron van dezelfde bias, en ook zij blijft aanwezig in de cijfers die hier zijn gepubliceerd.
Look-ahead bias: hoe voorkomen dat een simulatie de toekomst leest
Er bestaat een nog onopvallender manier om zichzelf te vleien: een berekening ongewild een gegeven laten raadplegen dat op de dag van de beslissing nog niet bestond. Dat sluipt er makkelijk in en is met het blote oog bijna niet te zien, omdat de grafiek geloofwaardig blijft en de curve gewoon iets beter stijgt.
We beschermen ons daartegen met een geautomatiseerde test die bij elke wijziging van de code opnieuw draait en die in twee stappen werkt. Eerst nemen we een koershistoriek en knippen we die in tweeën op een datum in het midden. Vervolgens maken we daarvan een tweede versie, tot die datum volstrekt identiek en erna bewust vervalst: alle latere koersen worden vermenigvuldigd, met tien, met vijfentwintig, met vijftig. Dan laten we het programma zijn indicatoren en zijn beslissingen op beide versies berekenen, en vergelijken we alleen het deel vóór de knip, het deel dat we niet hebben aangeraakt.
Een berekening die alleen het verleden raadpleegt, moet in beide gevallen exact dezelfde waarden opleveren, want het verleden is in beide hetzelfde. Het kleinste verschil betekent dus, zonder andere mogelijke verklaring, dat ze een koers van ná de beslissingsdatum heeft gelezen. De vervalste koersen worden met zulke grote factoren vermenigvuldigd opdat dat verschil, als het bestaat, meteen zichtbaar is in plaats van in de afrondingen te verdwijnen. De test faalt dan, en de wijziging gaat niet in productie. Het project telt 174 tests, die voor elke publicatie van een resultaat opnieuw worden uitgevoerd.
Daar komen twee uitvoeringsregels bij, die de casestudy uitwerkt en die we hier alleen in herinnering brengen: de beslissing wordt op de slotkoers afgelezen maar de order vertrekt bij de opening van de volgende dag, en elke uitvoering betaalt een tiende procent kosten, half commissie, half slippage. Zo houdt de simulatie rekening met de transactiekosten en geeft ze de werkelijke kosten weer.
Een hypothese wordt pas na een simulatie aangehouden
Toen de backtest eenmaal betrouwbaar werd bevonden, hebben we geprobeerd wat vanzelfsprekend leek. De selectie om de drie maanden vernieuwen in plaats van om de zes, om dichter bij de markt te blijven. Twee slotkoersen eisen in plaats van één voordat een positie wordt aangehouden, om valse starts te vermijden. De vijver uitbreiden naar de zorgsector, om niet van technologie alleen af te hangen. Elk aandeel beoordelen ten opzichte van zijn eigen sector, of juist ten opzichte van de hele markt.
Geen van die hypothesen is absurd. Ze kosten allemaal geld, en figuur 2 zegt hoeveel.
De uitbreiding naar de zorgsector verdient een woord, want ze illustreert de verrassing goed. Spreiden geldt als een voorzorgsmaatregel; hier haalt het 17,9 % van het eindkapitaal af. En hetzelfde experiment, overgedaan op de variant die een hefboomproduct gebruikt, haalt er 66,4 % af en diept de zwaarste terugval uit tot −89 %.
De twee zwaarste verschillen, −34,1 % en −36,4 %, komen van de twee varianten die een filter toevoegen aan de selectie van de aandelen. Het is dus de selectieregel, meer dan de rotatiekalender of de voorwaarden om een positie aan te houden, die het resultaat over deze twintig jaar bepaalt.
Wat er overblijft als alles is weggehaald
Na die opruiming eindigt de gekozen regel de twintig jaar op 1.312.607 dollar, oftewel een tempo van +13,7 % per jaar. Dat cijfer is niet dat van figuur 1: de correctie van de survivorship bias is gemeten op de versie van de simulatie die toen in gebruik was, die de mand één keer per jaar vernieuwde en elk jaar opnieuw vanuit cash begon. De gekozen versie, die waarmee de varianten van figuur 2 worden vergeleken, vernieuwt de mand om de zes maanden en houdt de posities aan waarvan de trend nog standhoudt, en het is dat aanhouden dat het eindkapitaal optilt. Diezelfde aandelen aanhouden zonder enige uitstapregel zou +12,4 % per jaar hebben opgeleverd over dezelfde periode en met dezelfde kosten. Het verschil bedraagt dus ongeveer een kwart kapitaal na twintig jaar. Dat is weinig, en het volstaat niet om het schrijven van een programma te rechtvaardigen. De portefeuille bevat maar vijf aandelen tegelijk: één ander aandeel in één enkele mand kan het eindkapitaal in dezelfde orde van grootte verschuiven. Dat verschil kan dus even goed van de methode als van het toeval komen, en dat zeggen we tegen de klant.
De echte winst van de methode ligt elders: ze vermindert het risico. Door posities te verlaten wanneer de markt keert, bespaart ze de portefeuille de hevigste dalingen. De zwaarste terugval tussen een top en het dal dat erop volgt — vakmensen spreken van drawdown — gaat van −72 % voor diezelfde aandelen zonder uitstapregel naar −40 % voor de gekozen regel. Het kapitaal legt dus een merkelijk vlakker parcours af, bij een bijna identiek rendement. Dat is wat de sharperatio samenvat, die het rendement afzet tegen de schokken die nodig waren om het te behalen: hij stijgt van 0,55 naar 0,67.
Die afvlakking heeft een rechtstreeks gevolg voor de hefboom. Hefboomproducten, zoals turbo’s en certificaten, verliezen hun volledige waarde zodra de koers een bij de uitgifte vastgelegde drempel raakt. Hoe groter de schommelingen van de portefeuille, hoe meer kans dat die drempel wordt bereikt, en hoe sneller. Een strategie die de dalingen beperkt, maakt het dus mogelijk om deze producten te overwegen zonder dat ze bij de eerste schok worden uitgeschakeld.
We hebben die variant gemeten. Ze zet de volledige portefeuille op een certificaat met hefboom drie, uitgegeven door een bank, dat zowel de stijging als de daling met drie vermenigvuldigt. Ze eindigt op 5,7 miljoen dollar, oftewel +22,4 % per jaar, vier keer beter dan de regel zonder hefboom. Maar haar zwaarste terugval bereikt −79 % en haar sharperatio zakt terug naar 0,64: de hefboom versterkt de gevolgen van de signalen, hij verbetert de kwaliteit ervan niet. Een curve die hoger eindigt nadat ze door −79 % is gegaan, houdt geen stand, omdat niemand ze tot het einde volgt.
Wat de klant uiteindelijk krijgt
De ingebruikname is het eenvoudigste deel, zodra de rest achter de rug is. Een server voert elke avond een geplande taak uit die de koersen na de sluiting van New York downloadt, alle berekeningen vanaf de eerste dag opnieuw uitvoert, een reeks controles doorloopt en een bericht verstuurt met een verdict: kopen, verkopen of niets doen. De klant programmeert zijn orders de volgende ochtend, voor de opening.
Daarbij krijgt hij de code, de resultaatbestanden en wat nodig is om elke berekening op zijn eigen machine over te doen, zonder ons, en dat deel telt evenveel als de rest. De exacte waarden die zijn strategie instellen, zijn van hem, en ze worden nergens gepubliceerd: de gepubliceerde casestudy beschrijft de aanpak en geeft de rendementscijfers.
Het doorgeven van de orders is in zijn handen gebleven omdat hij daaraan hecht. Ook dat kan worden geautomatiseerd en rechtstreeks naar de makelaar vertrekken, zodra die een interface aanbiedt om ze te ontvangen.
Dezelfde aanpak buiten de beurs
Niets van wat voorafgaat, is eigen aan de beurs. Drie fases keren terug zodra een beslissing regelmatig terugkomt en steunt op regels die iemand kent zonder ze altijd toe te passen: de regel volledig uitschrijven, eerlijk meten wat ze oplevert, en de uitvoering ervan daarna aan een programma toevertrouwen. De beslissing blijft die van de klant: het is zijn regel, hij wijzigt ze wanneer hij wil, en hij ziet elke dag wat het programma heeft gedaan. Wat de automatisering toevoegt, is een betrouwbare toepassing, een permanente opvolging en, op de beurs, minder onvoorspelbaarheid. Wij volgen precies dat verloop om een bedrijfsproces te automatiseren, en dat is ook wat onze methodepagina beschrijft.
Het eerste cijfer van een project is bijna altijd vleiend, omdat het is behaald in de gunstigste omstandigheden, die waarin men het antwoord al kent. Het werk begint wanneer men het probeert onderuit te halen.
Als u een methode met de hand toepast en ze aan een programma zou willen toevertrouwen, op de beurs of elders, volstaat een gesprek van 30 minuten meestal om te weten of ze codeerbaar is en wat er gemeten zou moeten worden voordat u zich engageert. Schrijf ons onderaan deze pagina of boek meteen een moment in onze agenda.
Alle cijfers in dit artikel komen uit simulaties op koersen uit het verleden en niet uit een historiek van werkelijk uitgevoerde orders. Wij sturen geen enkele order door naar een makelaar, en niets van wat voorafgaat, vormt beleggingsadvies.