Náš backtest započítal 91 vyplněných příkazů ze 100 odeslaných. Při paper tradingu dosáhla stejná strategie 63 vyplnění. Medián doby od signálu do potvrzení přijetí příkazu byl 84 milisekund a 12 nevyplněných paper příkazů byly limitní příkazy, u nichž backtest předpokládal vyplnění hned, jakmile se cena dotkla limitu.
Rozdíl 28 procentních bodů vypadal jako problém strategie, dokud jsme neoddělili rozhodnutí o příkazu od rozhodnutí o jeho vyplnění. Strategie v obou bězích zvolila téměř stejný směr, velikost i cenu. Lišila se cesta exekuce: některé příkazy dorazily pozdě, některé zůstaly otevřené a u dalších se trh mezitím posunul.
Co znamená shoda příkazů mezi backtestem a paper tradingem?
Shoda znamená, že backtest a paper systém na základě stejných dostupných informací přijímají srovnatelná rozhodnutí a rozdíly v jejich modelech exekuce výslovně zohledňují. Neznamená to, že každé simulované vyplnění musí odpovídat paper vyplnění. Historické svíčky nedokážou zpětně určit pozici ve frontě a paper venue může používat jiný model párování než živá burza.
Užitečnější otázka je konkrétnější: dokážete u každého příkazu, který strategie zamýšlela zadat, vysvětlit, co se stalo dál? Počet obchodů a konečný výnos toho příliš mnoho skryjí. Uchovávejte propojený záznam každého rozhodnutí a přenášejte stabilní ID rozhodnutí strategie přes události signálu, příkazu, potvrzení, zrušení i vyplnění.
| Srovnání | Co odhalí | Příklad |
|---|---|---|
| Čas rozhodnutí a směr | Odlišné vstupy nebo plánování | Paper signál se spustí o jednu svíčku později |
| Požadovaná velikost a cena | Zaokrouhlování, pravidla rizika nebo venue | Backtest zadá 0.013 BTC; paper zaokrouhlí na 0.01 |
| Změny stavu příkazu | Mezery při zadání, zamítnutí a zrušení | Backtest považuje žádost o zrušení za dokončené zrušení |
| Množství a cena vyplnění | Příliš optimistický model vyplnění nebo pohyb trhu | Limit, jehož ceny se trh dotkl, je v backtestu plně vyplněn, ale v paper tradingu nikoli |
Proč tolik nevyplněných příkazů tvořily limity, jejichž ceny se trh dotkl?
Náš backtest používal minutové svíčky. Pokud limitní cena spadala do rozpětí mezi maximem a minimem svíčky, označil příkaz za vyplněný. Toto pravidlo říká, zda se trh během dané minuty někdy obchodoval za tuto cenu. Neříká, zda byl náš příkaz v tu chvíli aktivní, zda byl ve frontě první ani zda se po jeho doručení zobchodovalo dostatečné množství.
Paper logy odhalily problém s načasováním. Strategie vypočítala signál v 12:03:00.000, ale událost tržních dat dorazila do procesu příkazů o 31 milisekund později. Kontrola rizika zabrala dalších 22 milisekund a simulátor venue potvrdil přijetí příkazu až po dalších 31 milisekundách. Při rychlém pohybu může historická svíčka naznačovat, že cena byla dosažitelná, i když limit dorazil až poté, co se trh posunul jinam.
Objevila se ještě jedna komplikace: ve chvíli, kdy backtest už pokračoval dál, zůstávalo 12 paper příkazů otevřených. Simulátor přijal žádost o zrušení, jako by příkaz okamžitě zmizel. V paper systému dorazilo potvrzení zrušení později; během této prodlevy se vyplnily 3 příkazy. Tím se změnila pozice, kterou viděl následující signál.
Jak změřím rozdíl, abych se neklamal?
Začněte jednoduchým přehledem rekonciliace seskupeným podle záměru příkazu. Uvádějte i jmenovatel. „Míra vyplnění“ může znamenat počet vyplněných příkazů na počet odeslaných příkazů, vyplněné množství dělené požadovaným množstvím nebo počet vyplněných příkazů dělený počtem příkazů, které dorazily na venue. Každá metrika odpovídá na jinou otázku.
- Propojujte události pomocí ID rozhodnutí nebo klientského ID příkazu, ne podle dodatečně odhadnutého času.
- Nejdřív porovnejte rozhodnutí: čas signálu, směr, požadované množství, typ příkazu a limitní cenu.
- U odpovídajících rozhodnutí porovnejte prodlevu do potvrzení, zamítnutí, dobu otevření, čas zrušení, vyplněné množství a objemově váženou cenu vyplnění.
- Uvádějte míry podle typu příkazu a podmínek na trhu. Celková míra vyplnění 63 % může skrývat 90 % u tržních příkazů a 35 % u pasivních limitních příkazů.
Jednotlivé kategorie jasně rozlišujte. Zamítnutý příkaz není nevyplněný příkaz; částečně vyplněný příkaz není plně vyplněný příkaz; a příkaz zrušený po částečném vyplnění už změnil pozici. Počítejte příkazy i požadované množství, aby výsledek nevypadal lépe jen díky skupině drobných příkazů.
Co by se mělo změnit v backtestu?
Použijte pravidlo vyplnění, které odpovídá rozlišení dat a zamýšlenému chování příkazu. U svíček je dotyk limitní ceny důkazem možného vyplnění, nikoli jeho potvrzením. Můžete konzervativně modelovat částečná vyplnění, vyžadovat průchod ceny skrz limit nebo vynechat pasivní příkazy, u nichž nelze odhadnout pozici ve frontě. Každá volba odpovídá na jinou otázku; zdokumentujte ji a porovnejte výsledek podle více než jednoho věrohodného pravidla.
Modelujte také stav příkazu. Příkaz zůstává aktivní, dokud systém neobdrží konečnou událost, a žádost o zrušení neodstraní tržní expozici. Pokud strategie může zadat druhý příkaz, zatímco první ještě čeká, její backtest musí tuto souběžnou situaci zachytit, nebo jí konstrukčně zabránit.
Model vyplnění je tvrzením o tom, jak by váš příkaz mohl být proveden. Stanovte pravidlo, které dokážete vysvětlit, a pak ho ověřte proti paper logům.
U našeho rozdílu 28 procentních bodů nebylo překvapivé, že backtest založený na minutových svíčkách nadhodnotil pasivní vyplnění. Překvapilo nás, že se pozice strategie rozcházela ještě před jejím dalším rozhodnutím, protože načasování zrušení nebylo zahrnuto. Když jsme opravili model stavů příkazů a přestali každé dotknutí limitní ceny považovat za vyplnění, srovnání s paper tradingem vyznělo méně lichotivě a přineslo více užitečných informací.
Praktická laťka pro shodu je tedy taková: každý významný rozdíl mezi simulovaným a paper chováním má zaznamenanou příčinu a backtest netvrdí, že ví jistě něco, co mu jeho data nemohou říct.
← Všechny články


