Een dagelijkse strategie die haar signaal berekent op basis van de slotkoers van maandag, kan geen order plaatsen tegen de slotkoers van maandag. De strategie kan de order indienen zodra die prijs bekend is en daarna handelen tegen een latere uitvoerbare prijs. Die kleine timingkeuze kan het resultaat sterker beïnvloeden dan een slimme indicator.
Noteer voor een dagelijkse backtest eerst de volgorde van gebeurtenissen, vóór je het signaal schrijft: wanneer de bar compleet is, wanneer de strategie de berekening uitvoert, wanneer de order de markt bereikt en tegen welke prijs die aannemelijk kan worden uitgevoerd. Als al die gebeurtenissen op hetzelfde moment plaatsvinden, slaat de backtest het moeilijke deel over.
Kan ik de slotkoers van vandaag gebruiken om vandaag tegen de slotkoers te handelen?
Meestal niet. Een signaal dat afhangt van de definitieve slotkoers is pas beschikbaar nadat de slotveiling of laatste transactie heeft plaatsgevonden. Een uitvoering tegen diezelfde prijs veronderstelt dat de strategie de uitkomst vroeg genoeg kende om mee te doen tegen een prijs die mede de uitkomst bepaalde.
Neem een eenvoudige regel: koop wanneer de slotkoers boven het 20-daags voortschrijdend gemiddelde ligt. Bij de slotkoers van maandag wordt de regel waar. Een backtest die tegen de slotkoers van maandag koopt, gebruikt de voltooide prijs van maandag zowel om te beslissen als om de order uit te voeren. Voor een eenvoudig model op basis van dagbars is de eerlijke benadering om de order te genereren nadat de bar van maandag compleet is en de uitvoering op zijn vroegst bij de opening van dinsdag te laten plaatsvinden, met passende kosten.
Er zijn strategieën die orders indienen voor een slotveiling op basis van informatie die vóór de deadline van de veiling beschikbaar is. Die kun je backtesten, maar het signaal mag alleen informatie van vóór die deadline gebruiken en de uitvoering moet de veilinguitvoering weerspiegelen. Alleen de term ‘dagsignaal’ voldoet niet aan een van beide voorwaarden.
Wat is de juiste uitvoeringsprijs voor een dagelijkse backtest?
Er is niet één prijs die altijd juist is. De volgende opening is een duidelijk uitgangspunt wanneer het signaal is gevormd op basis van een voltooide dagbar en de order daarna wordt verzonden. Dat is geen garantie: een overnight gap kan de markt verplaatsen, en voor een market order betaal je spread, kosten en mogelijk marktimpact.
Neem voor het signaal van maandag aan dat de slotkoers op maandag $100 is en de markt dinsdag opent op $103. Een close-to-close-backtest kan een kleine winst laten zien als die doet alsof de aankoop plaatsvond op $100. Bij een instap bij de volgende opening begin je op $103. Het verschil van $3 is geen ‘slippage’ die je moet wegoptimaliseren; het is het prijsgevolg van het feit dat je het signaal pas na de slotkoers van maandag kent.
| Signaal wordt beschikbaar | Mogelijke uitvoering | Aannames van het model |
|---|---|---|
| Na de dagelijkse slotkoers | Opening van de volgende sessie | De order kan vóór of bij de opening de markt bereiken |
| Vóór de deadline van de slotveiling | Slotveiling | Signaal gebruikt alleen informatie van vóór de deadline; de uitvoering op de veiling wordt gemodelleerd |
| Na de dagelijkse slotkoers | Latere intradayprijs | Strategie wacht; voor uitvoering zijn intradaydata en een vastgelegde planning nodig |
Op cryptomarkten is ‘dagelijkse slotkoers’ een afspraak, omdat de handel doorgaat over de tijdsgrens heen. Een strategie kan nog steeds een voltooide dagelijkse UTC-candle gebruiken, maar moet wachten tot de candle compleet is en de data is binnengekomen. Als je datapijplijn een bar pas enkele seconden later definitief maakt, is een order tegen de grensprijs extra moeilijk te verdedigen.
Hoe moet ik orders modelleren als ik alleen dagbars heb?
Wees duidelijk over wat de bar je wel en niet kan vertellen. Dagelijkse OHLCV-data kan een benadering met uitvoering bij de volgende opening ondersteunen, maar laat niet zien wat de spread was op het moment dat je order aankwam, welk koersverloop er die dag was of of een limietorder vóór een koersbeweging in de wachtrij stond.
Begin voor een dagelijkse market order met de volgende opening en breng de strategie vervolgens de kosten in rekening waarmee die in de praktijk te maken krijgt: handelsplatformkosten, een spreadinschatting en een inschatting van de marktimpact die past bij de ordergrootte. Test ook hogere kosten. Als het resultaat afhangt van de aanname dat de spread nul is of de marktimpact verwaarloosbaar, geven de dagbars geen reden voor dat vertrouwen.
Bij een limietorder bewijst het niet dat je order is uitgevoerd als het dieptepunt van de dag je limietprijs raakt. De markt kan daar al hebben gehandeld voordat je order aankwam, of er kan meer volume vóór je in de wachtrij hebben gestaan dan er is verhandeld. Dagbars zijn vaak te grof voor een geloofwaardig wachtrijmodel. Gebruik fijnmaziger data als je claim afhangt van intradayuitvoering, of kies bewust een conservatieve aanname voor de uitvoering en vermeld die.
Welke timingcontroles brengen lookahead in dagbars aan het licht?
Ik gebruik graag een paar eenvoudige controles, omdat ze aannames snel zichtbaar maken:
- Schuif elke order op basis van een signaal 1 sessie op. Als de prestaties kelderen, controleer dan of de oorspronkelijke backtest de slotkoers van de signaalbar als uitvoeringsprijs gebruikte.
- Leg het signaaltijdstip, het moment waarop de order wordt ingediend en het uitvoeringstijdstip afzonderlijk vast. Uit de tijdstempels moet zonder verdere uitleg een aannemelijk verloop blijken.
- Vergelijk uitvoeringen bij de volgende opening met een latere, conservatieve uitvoeringsprijs. Een strategie die alleen werkt op het gunstigste moment van de bar heeft een uitvoeringsprobleem.
- Controleer hoe feestdagen, ontbrekende bars en markt sluitingen ‘volgende sessie’ beïnvloeden. De volgende kalenderdag hoeft geen handelssessie te zijn.
Een verschuiving van 1 sessie is een diagnostische controle, geen universeel uitvoeringsmodel. Een trage portefeuilleverlegging, een slotveilingstrategie en een cryptosysteem dat continu handelt, hebben verschillende klokken nodig. Het gaat erom die klok zichtbaar te maken.
Maakt dagelijkse data een backtest minder nuttig?
Nee. Dagelijkse data kan heel geschikt zijn voor een strategie waarvan de beslissingen en aanhoudperioden in dagen of weken worden gemeten. Je kunt ermee nagaan of een brede regel verder onderzoek verdient. Het wordt misleidend wanneer de backtest nauwkeurigheid claimt over uitvoeringen die de bars niet kunnen laten zien.
Ik heb meer dan eens gezien dat een strategie sterk verbeterde doordat iemand ‘signaal bij slotkoers, uitvoering bij slotkoers’ veranderde in ‘signaal bij slotkoers, uitvoering bij volgende opening’. Dat resultaat kan tegenvallen, maar is waardevol: het laat zien of het idee standhoudt zodra het verhandelbaar wordt. Bewaar de timingafspraken bij de strategiecode. Anders zet de volgende optimalisatieronde ongemerkt de onmogelijke uitvoering terug.
← Alle artikelen


