Een backtest kan je limietorder uitvoeren terwijl er geen uitvoerbare kans was. Als de laagste prijs van een candle onder je kooplimiet kwam, rekenen veel engines de order als uitgevoerd. Maar die laagste prijs vertelt alleen dat er minstens één transactie tegen die prijs of lager is gemeld. Je ziet er niet aan hoeveel er is verhandeld, hoeveel orders er vóór die van jou in de wachtrij stonden, of je order op tijd actief was.
Dat onderscheid is vooral van belang wanneer het voordeel van je strategie afhangt van veel passieve uitvoeringen. Een model dat elke aanraking van de prijs als een volledige uitvoering behandelt, kan van een geduldige instap een fictieve bron van alpha maken.
Betekent het dat mijn order is uitgevoerd als een candle mijn limietprijs raakt?
Nee. Het betekent dat de geregistreerde prijs binnen het bereik van de candle viel. Of je order uitgevoerd had kunnen worden, hangt af van het orderboek, de transactieflow, je positie in de wachtrij en het moment waarop de order binnenkwam.
Stel dat je een kooplimiet op $100.00 hebt. De candle opent op $100.20, bereikt een dieptepunt van $99.98 en sluit op $100.10. Er kan een transactie zijn geweest die twee cent onder je prijs werd uitgevoerd, maar als er op $100.00 een grote wachtrij vóór je stond en er maar weinig werd verhandeld, is je order misschien onaangeroerd gebleven. Met alleen OHLCV kun je die wachtrij niet zien.
Er is nog een complicatie: een candle bundelt gebeurtenissen over een periode. Als je signaal wordt berekend op basis van de slotkoers van die candle, kun je er niet van uitgaan dat je order al eerder in de candle klaarstond toen het dieptepunt werd bereikt. De candle verbergt de volgorde van gebeurtenissen die nodig is om die vraag te beantwoorden.
Wat kan OHLCV-data me eigenlijk vertellen over een limietorderuitvoering?
OHLCV kan sommige uitvoeringen uitsluiten en andere aannemelijk maken. Het kan geen voorrang in de wachtrij vaststellen en garandeert niet hoeveel volume voor je order beschikbaar was.
| Waarneming | Wat dit ondersteunt | Wat dit niet kan bewijzen |
|---|---|---|
| Laagste prijs van de candle bleef boven een kooplimiet | Geen gemelde transactie bereikte die prijs tijdens de candle | Dat de order uitgevoerd zou zijn |
| Laagste prijs van de candle raakte de kooplimiet | De limietprijs werd geregistreerd | Dat er volume werd verhandeld nadat je order was binnengekomen |
| Laagste prijs van de candle zakte onder de kooplimiet | Er vonden transacties plaats tegen de limietprijs of lager | Dat er genoeg volume jouw positie in de wachtrij bereikte |
| Totaal volume van de candle was groter dan je orderomvang | De markt verhandelde ergens in de candle minstens dat volume | Dat dit volume na aankomst van je order tegen jouw prijs werd verhandeld |
Een engine die met candles werkt, heeft dus een aanname over uitvoeringen nodig. Behandel die aanname als een model met een bekende blinde vlek, niet als een feit dat uit de candle zelf blijkt.
Hoe modelleer ik de uitvoering van limietorders in een backtest?
Begin met de timing van de order. Bepaal wanneer het signaal beschikbaar komt, wanneer de order de handelsplaats bereikt en welke latere marktgebeurtenissen ermee kunnen samenvallen. Bij een signaal dat bekend wordt bij het sluiten van een candle, is een conservatieve regel voor een candlemodel om de order pas vanaf de volgende candle in aanmerking te laten komen.
Maak vervolgens onderscheid tussen prijsvoorwaarden en uitvoeringsvolume. Dat een limietprijs in aanmerking komt voor uitvoering, betekent niet dat de hele order wordt gevuld. Als je transacties hebt maar geen historische orderboekgegevens, kun je eisen dat het verhandelde volume tegen de limietprijs of beter een veelvoud van je orderomvang overschrijdt. Dat veelvoud is een ruwe buffer voor de wachtrij, geen universele constante. Test verschillende waarden en rapporteer hoe het resultaat verandert.
Neem bijvoorbeeld een strategie die een kooplimiet van 2 BTC plaatst en waarbij er, nadat de order in aanmerking kwam, 3 BTC tegen de gekozen prijs wordt verhandeld. Een model dat 5 BTC aan kwalificerend volume vereist, laat de order onuitgevoerd; een model met een volumefactor van 1.0 voert hem uit. Geen van beide uitkomsten reconstrueert de wachtrij. De vergelijking laat zien hoe sterk de strategie afhankelijk is van een aanname die je niet kunt waarnemen.
Houd niet-uitgevoerde orders in de simulatie. Annuleer ze wanneer de strategie dat ook zou doen en laat gemiste transacties gemist blijven. Een strategie altijd een uitvoering geven zodra de limiet wordt geraakt, terwijl orders die ongebruikt verlopen buiten beschouwing blijven, vertekent zowel de uitvoering als het aantal kansen.
Wanneer heb ik orderboekgegevens nodig?
Gebruik updates van het orderboek en transacties wanneer je strategie sterk afhangt van je positie in de wachtrij of van gedeeltelijke uitvoeringen: bij marketmaking, kortstondige passieve quotes of instappen waarbij je vooraan op een druk prijsniveau moet staan. Zelfs dan laten historische openbare gegevens misschien niet zien wat je exacte positie in de wachtrij was. Je moet de aankomst van orders, annuleringen vóór jouw order, de matchingsregels en je eigen marktimpact modelleren.
Voor tragere strategieën kunnen gedetailleerde orderboeken de complexiteit verhogen zonder de belangrijkste onzekerheid weg te nemen. Een nuttige studie op basis van candles kan nog steeds een bovengrens met uitvoering bij elke prijsaanraking vergelijken met strengere scenario’s waarin volume een voorwaarde is. Als het schijnbare voordeel verdwijnt zodra je plausibele uitvoeringen eist, is dat waardevolle onderzoeksinformatie.
Hoe zie ik of mijn resultaat afhangt van optimistische uitvoeringen?
Voer dezelfde strategie uit met een kleine set expliciete uitvoeringsregels en vergelijk meer dan alleen het uiteindelijke rendement. Houd het aantal uitgevoerde orders, het percentage gedeeltelijke uitvoeringen, de tijd dat orders openstaan, de geannuleerde hoeveelheid, gemiste koersbewegingen na niet-uitgevoerde orders en de omzet bij. Een strategie kan het opvallende rendementscijfer behouden terwijl ze op veel minder, gunstiger transacties leunt.
Paper trading is de volgende nuttige controle: gebruik de werkelijke orderlogica en leg bevestigingen, uitvoeringen en annuleringen vast. Paper-uitvoeringen hangen nog steeds af van de regels van de handelsplaats of simulator, maar zo test je de timing en orderafhandeling die een candle niet kan laten zien.
Een aangeraakte limiet zegt iets over de prijs. Een uitvoering is een bewering over de uitvoering van een order. Je backtest moet het verschil tussen die beweringen zichtbaar maken.
← Alle artikelen


