Nejnebezpečnější chyba v časování backtestu může přežít i dokonale provedenou kontrolu časových razítek. U dvou událostí může být uvedeno 10:00:00.000, a přesto mohly nastat v pořadí, které váš simulátor pouze odhadl.
Záleží na tom vždy, když strategie reaguje na něco víc než na uzavřené svíčky: aktualizaci kotace, obchod, oznámení o funding rate, změnu stavu burzy nebo potvrzení vlastního příkazu. Časové razítko říká, kdy je událost označena. Nemusí ale říkat, kdy na ni vaše strategie mohla zareagovat.
Co mění pořadí událostí?
Představte si strategii, která nakupuje, když nejlepší ask klesne pod $100.00. Ve stejné milisekundě zaznamená datový feed aktualizaci asku na $99.99 a obchod za $99.99. Pokud váš backtest zpracuje nejdřív obchod a potom kotaci, strategie uvidí nový ask a odešle příkaz. Zpracovat nejdřív kotaci může být také v pořádku, pokud tato událost už byla skutečně dostupná. Pokud ale obchod spotřeboval zobrazenou likviditu dřív, než příkaz dorazil, plnění za $99.99 je fikce.
Když řádky seřadíte jen podle časového razítka, simulátor si musí pořadí událostí se stejným časem nějak zvolit. Pořadí v souboru, pořadí symbolů nebo plán databázového dotazu se tak může stát nechtěným pravidlem exekuce. Křivka kapitálu se může změnit, i když se podkladová data nezměnila.
Snadno si ověříte, jak libovolné to může být: události se stejným časem seřaďte podle názvu symbolu místo pořadí příchodu. Strategie pro více aktiv se pak může chovat jinak jen proto, že se jeden ticker řadí před druhým.
Jaké časové údaje má backtest uchovávat?
Tržní data a zpracování příkazů často zahrnují několik různých časů. Zachovejte pole, která poskytuje váš zdroj, a přesně pojmenujte, co znamenají. U mnoha feedů jsou užitečná časová razítka burzovních událostí i lokálního přijetí zprávy; ani jedno však univerzálně neříká, co viděli všichni účastníci.
| Časový údaj | Co zaznamenává | Co sám o sobě nemůže prokázat |
|---|---|---|
| Čas události na burze | Kdy podle burzy událost nastala | V jakém pořadí ji zaznamenal jiný feed nebo váš proces |
| Čas přijetí | Kdy váš sběrný proces přijal zprávu | Kdy ji vaše strategie zpracovala |
| Čas rozhodnutí | Kdy váš kód vyhodnotil signál | Že uvedená cena zůstala dostupná |
| Čas doručení příkazu | Kdy mohla burza s příkazem naložit | Plnění, pokud ho nepodporují pravidla párování a likvidita |
U historických dat bez časů přijetí uveďte, co předpokládáte. Backtest může zpracovávat burzovní události v pořadí a uplatnit pevné zpoždění 5 ms mezi rozhodnutím a doručením příkazu na burzu. Jde o model, ne o rekonstruovanou historii. Pokud nemáte pořadová čísla pro burzovní časová razítka se shodným časem, i pravidlo pro určení pořadí je předpoklad.
Jak mám modelovat události se shodným časem?
Nejprve zachovejte zdrojová pořadová čísla, pokud jsou k dispozici. Pořadové číslo určuje pořadí v rámci feedu přesněji než časové razítko, i když jednotlivé kanály nebo produkty mohou mít oddělené číselné řady.
Pak výslovně stanovte pravidlo zpracování v simulátoru. U každé události rozhodněte, zda může aktualizovat informace dostupné strategii, změnit dostupnou likviditu, spustit příkaz nebo potvrdit jeho přijetí. Jde o různé kroky; sloučit je do „zpracování řádku“ je způsob, jakým do simulace proklouznou nemožná plnění.
- Zohledněte pouze tržní informace, které dorazily do času rozhodnutí strategie.
- Vytvořte příkaz a pak posuňte simulaci k modelovanému času jeho doručení na burzu.
- Povolte exekuci pouze proti způsobilé likviditě po doručení příkazu, podle předpokladů plnění pro daný typ příkazu.
- U každého simulovaného plnění zaznamenejte vstupy, pořadí událostí a použité zpoždění.
U strategie založené na svíčkách to může být víc, než daná otázka vyžaduje. Pokud signál využívá uzavřené 1minutové svíčky a příkazy se plní při otevření další svíčky za použití konzervativního modelu nákladů, pořadí událostí v řádu milisekund pravděpodobně závěr výzkumu nezmění. Podrobnost časování má odpovídat tvrzení, které backtest činí.
Mohu backtestu věřit, když nemám údaje o čase doručení?
Použít ho můžete, ale mějte na paměti jeho omezení. Pokud strategie obchoduje pomalu a má široké limity rizika, pár milisekund může být zanedbatelných. Pokud reaguje na prchavé kotace, soupeří o pořadí ve frontě nebo závisí na signálu předstihu a zpoždění mezi burzami, chybějící údaje o časech doručení mohou být pro výsledek zásadní.
Kritici mají pravdu, že přesné časování událostí může vytvářet falešný dojem přesnosti. Historické feedy jsou neúplné, hodiny se rozcházejí a časová razítka burzy neodhalí každý krok přenosu v síti. I simulátor s nanosekundovými údaji může stále používat hrubý předpoklad o plnění.
Proto místo tvrzení, že máte jistotu, testujte citlivost: spusťte opakované přehrání s věrohodnými pravidly pro určení pořadí současných událostí a zpoždění příkazů a pak porovnejte počet obchodů, cenu plnění a to, které signály obstojí. Pokud výsledek závisí na pořadí, které nelze z dat určit, patří tato závislost do výzkumné zprávy. Backtest může být užitečný i s nepřesnými hodinami. Jen musí přiznat, jaký čas skutečně zná.
← Všechny články


