6. října 2026 · výzkum

Dlaczego můj backtest obchodoval za cenu, kterou trh nikdy nenabídl?

Dlaczego můj backtest obchodoval za cenu, kterou trh nikdy nenabídl?

Backtest může vykázat plnění za cenu, kterou trh nikdy nezobrazil. Simulátor obvykle odvodil zdánlivě věrohodnou exekuci z neúplných dat: maxima a minima svíčky, středové ceny nebo limitní ceny, které se dotkl jediný obchod. Protokol obchodů pak může působit přesně, ale zakrývá, co trh skutečně nabízel.

Začněte otázkou, s jakou cenou mohl váš pokyn přijít do styku. Svíčka posledních obchodů ukazuje, za jaké ceny se během intervalu obchodovalo. Neříká ale, jaký byl bid a ask při příchodu vašeho pokynu, jaký objem byl k dispozici ani zda se váš pokyn mohl dostat na začátek fronty.

Proč backtest ukazuje plnění mimo tržní cenu?

Nejdřív si přesně ujasněme, co znamená „mimo“. Nákupní plnění pod minimem svíčky nebo prodejní plnění nad jejím maximem je zjevná chyba v účtování nebo časování. I plnění uvnitř rozpětí maxima a minima může být smyšlené: k obchodu za danou cenu mohlo dojít ještě před zadáním pokynu, na opačné straně spreadu nebo v příliš malém objemu, než aby pokryl váš pokyn.

Uvažujme jednominutovou svíčku s otevřením 100.00, minimem 99.80 a zavřením 100.10. Vaše strategie uvidí dokončenou svíčku, zadá nákup a simulátor pokyn vyplní za 99.80. K tomuto minimu mohlo dojít na začátku minuty, padesát sekund před signálem. Svíčka nedokládá, že cena 99.80 byla po rozhodnutí stále k dispozici.

Dostupná dataCo dokládajíCo doložit nemohou
OHLCV svíčkaRozpětí zaznamenaných cen obchodů a objem během intervaluPořadí cen, bid a ask ani dostupnost při příchodu pokynu
Záznamy obchodůNahlášené exekuce s časovými razítky a cenamiPasivní likviditu ani vaše místo ve frontě
Nejlepší kotace knihy objednávekNejlepší zobrazený bid a ask ve vzorkovaných časechHloubku nad nejlepší úrovní ani to, zda kotace mezi vzorky přetrvala
Události v knize objednávekZměny zobrazené hloubky a události ve frontě v rozsahu pokrytí datového prouduSkrytou likviditu, přístup na obchodní místo ani zaručenou prioritu

Další častou příčinou je záměna středové a realizovatelné ceny. Pokud je kotace 99.99 bid a 100.01 ask, nákup za středovou cenu 100.00 vypadá v reportu úhledně. Nákup realizovaný okamžitě se obvykle provede za ask, ke kterému se přičte dopad velikosti pokynu. Když označíte středovou cenu za plnění, potichu tím odstraníte polovinu spreadu.

Může se limitní pokyn vyplnit jen proto, že se trh dotkl jeho ceny?

Dotyk ceny dokládá, že byl za limitní cenu zaznamenán obchod. Nedokazuje, že by se provedl váš pasivní pokyn. Pokud byly ve frontě před vámi jiné pokyny, objem obchodů za danou cenu nemusel stačit k tomu, aby se dostal až na vaši pozici. Záznam obchodu také mohl pocházet z jiného obchodního místa, zatímco váš pokyn čekal jinde.

Představte si, že váš nákupní limit činí 50.00 a po jeho zadání se za tuto cenu zobchoduje 200 akcií. Simulátor založený na dotyku ceny vyplní všech 500 akcií. Opatrnější model zjišťuje, kolik se po příchodu pokynu zobchodovalo za 50.00 nebo výše, a pak zohlední odhadovaný objem pokynů před vámi ve frontě. Bez dat o jednotlivých pokynech v knize objednávek je tato fronta jen předpoklad. Ve výsledcích by měl být viditelný, ne skrytě vydávaný za jistotu.

U menšího výzkumného systému bych tento předpoklad raději uvedl výslovně a otestoval rozpětí možností, než předstíral, že svíčková data odhalují prioritu ve frontě. Vhodné rozpětí závisí na obchodním místě, velikosti pokynu a četnosti obchodování strategie. Klidná akcie při otevření trhu a málo likvidní kryptoměnový kontrakt ve 03:00 UTC představují odlišné exekuční problémy.

Jak mám zvolit model plnění pro svíčková data?

Model přizpůsobte datům i tomu, co strategie tvrdí. Backtest založený na svíčkách může být užitečný i pro pomalé strategie, ale jeho plnění musí odpovídat tomu, co svíčky skutečně ukazují.

  1. Stanovte čas rozhodnutí a příchodu pokynu. Pokud signál využívá zavírací cenu svíčky, odešlete pokyn až po jejím zavření. Exekuci modelujte od následujícího dostupného intervalu nebo kotace, nikoli od dřívějšího minima již dokončené svíčky.
  2. Použijte správnou stranu spreadu. U okamžitě realizovatelných nákupů začněte na ask; u prodejů na bid. Pokud máte jen svíčky obchodů, odhadněte spread z jiného zdroje nebo uveďte, že ho model nezohledňuje.
  3. Omezte plnění realistickou likviditou. Stanovte limit účasti na zaznamenaném objemu a započítejte poplatky i dopad na trh. Celkový objem svíčky neznamená, že byl celý dostupný za cenu, kterou jste zvolili.
  4. Prověřte předpoklady zátěžovými scénáři. Porovnejte plnění za cenu při otevření následující svíčky s konzervativním skluzem a ověřte, zda výsledek obstojí i při horší exekuci. Neladěte model plnění tak, aby strategie vyhrávala.

Jde o volby při modelování, nikoli o recept, jak z neúplných dat zpětně zjistit jedinou skutečnou cenu plnění. Pokud strategie závisí na získání několika bazických bodů, svíčková data nemusí být pro takové tvrzení dostatečným důkazem.

Jak zjistím, kde se nemožné plnění dostalo do backtestu?

Sledujte jeden podezřelý obchod od signálu až po účetní knihu. Časové razítko rozhodnutí, čas odeslání pokynu, simulovaný čas příchodu, vybrané tržní pozorování, cenu a objem plnění i poplatek evidujte jako samostatná pole. Pak postupně ověřte:

Pokud na tyto otázky nedokážete odpovědět záznamem obchodu, backtestu chybějí podklady o exekuci. Doplňte potřebná pole, ručně přehrajte několik obchodů proti surovým datům a ověřte, že vykázané plnění mohlo nastat podle zamýšleného modelu. Hladká křivka kapitálu neodhalí cenu, která existovala jen uvnitř simulátoru.

backtestingtržní dataexekucedatové inženýrství
← Všechny články