24. září 2026 · výzkum

Po restartu jsme znovu přehráli paper strategii. Její příkazy se změnily.

Po restartu jsme znovu přehráli paper strategii. Její příkazy se změnily.

Uprostřed obchodu jsme restartovali paper strategii a dostali jinou posloupnost příkazů, než jakou vytvořila před restartem. Stejná tržní data, stejná verze strategie, stejný zůstatek účtu. Výpočet signálu souhlasil. Nesouhlasila ale paměť strategie o její pozici a čekajících příkazech.

Nesrovnalost jsme sledovali během celodenního přehrávání. Ponaučení bylo prosté: restart je pro váš software událost na trhu. Pokud netestujete, jak strategie znovu sestaví svůj stav, čistý backtest může zakrýt paper systém, který zapomíná, co drží.

09:10 — Vybrali jsme nezajímavou pozici

Testovací strategie obchodovala likvidní perpetual: vstoupila do long pozice, když krátký klouzavý průměr překřížil delší směrem nahoru, a vystoupila při opačném překřížení. Přehrávání jsme zahájili s už otevřenou malou pozicí a čekajícím reduce-only limitním příkazem, který ji měl zmenšit. Obnova tak musela zrekonstruovat dvě skutečnosti: co držíme a co už jsme po burze chtěli.

V kontrolním bodě účet držel 0.04 kontraktu. Příkaz na 0.01 byl otevřený. Proces strategie měl obě hodnoty uložené v paměti, ale při spuštění načítal pouze pozici. S uloženým příkazem zacházel, jako by už neexistoval.

09:25 — Objevil se první duplicitní příkaz

Po restartu strategie zjistila, že má otevřený long, spustila signální logiku a odeslala další příkaz na zmenšení pozice o 0.01. Paper burza teď měla dva aktivní příkazy. Každý z nich byl sám o sobě v pořádku. Kdyby se ale provedly oba, mohly prodat dvojnásobek zamýšleného množství.

Nejprve jsme vinili smyčku vyhodnocující signál. Tou to nebylo; problémem byl neúplný stavový snímek. Strategie se ptala: „Jakou mám pozici?“, ale nikdy se nezeptala: „Které příkazy jsou stále aktivní?“

Stav po restartuČemu proces věřilCo držel účet
PoziceLong 0.04Long 0.04
Otevřené příkazy ke zmenšení poziceŽádnéDva, každý na 0.01
Zamýšlená expozice po provedení jednoho příkazuLong 0.03Mohla klesnout až na long 0.02

10:00 — Opravili jsme obnovu a pak našli problém s načasováním

Při spuštění jsme upravili obnovu tak, aby před povolením nových rozhodnutí znovu sestavila stav z pozic na účtu a otevřených příkazů. Tím jsme duplicitu odstranili. Pak jsme simulovali méně hladké odpojení: jeden příkaz se provedl, zatímco strategie byla offline, a oznámení o provedení dorazilo až po opětovném připojení.

Snímek účtu už provedený příkaz zohledňoval. Zpožděné oznámení pak lokální pozici zmenšilo podruhé. Několik sekund se strategie domnívala, že drží 0.02 kontraktu, zatímco účet držel 0.03. Její další vyvážení vycházelo z neexistujícího nedostatku.

Doplnili jsme pravidla pro sladění stavu: jako výchozí bod brát snímek účtu, pomocí identifikátorů událostí ignorovat provedení, která už jsou v něm zohledněna, a neodesílat příkazy, dokud se nedokončí úvodní synchronizace. Oznámení může dorazit pozdě nebo dvakrát. Obnova musí zvládnout obojí.

13:40 — Přehrávání odhalilo nenápadnou nesrovnalost

Stejný cenový průběh jsme přehráli při původním běhu i po restartu. Porovnání konečného P&L by problém neodhalilo: obě verze skončily po obratu trhu se stejnou pozicí. Odhalilo ho až porovnání událostí příkazů.

Každé rozhodnutí jsme zaznamenali spolu se stavem, ze kterého vycházelo: pozicí, otevřenými příkazy, posledním zpracovaným identifikátorem provedení, hodnotou signálu a verzí strategie. První rozdílná událost pak měla jasné vysvětlení. Jeden běh viděl aktivní příkaz, druhý prázdný seznam. Později jeden z nich zpracoval provedení dvakrát.

Stejný konečný zůstatek nedokazuje, že se strategie chovala stejně. Porovnávejte posloupnost rozhodnutí a příkazů, zejména při obnově stavu.

16:20 — Co bychom příště udělali jinak

Než jsme zkontrolovali změny stavu účtu, strávili jsme příliš mnoho času přehráváním cenových dat. Příště bychom nejdřív nasimulovali chybové situace a cenový průběh nechali téměř rovný. Chybu v softwaru tak snadno uvidíme, aniž by diagnostiku komplikoval prudký pohyb trhu.

Naučili jsme se také ukládat snímek pro obnovu společně s verzí strategie a záznamem událostí. Díky tomu jsme chybu dokázali zopakovat během několika minut, místo abychom spoléhali na něčí vzpomínku na přesný průběh opětovného připojení.

Paper strategie, která se chová správně jen po dobu, kdy její proces běží, neprošla úplnou zkouškou. Restartujte ji uprostřed pozice, nechte oznámení o provedení dorazit se zpožděním a zkontrolujte každý následující příkaz. Cílem není dokázat, že nikdy neselže. Jde o to, aby její obnova byla vidět dřív, než vás účet v paper tradingu stejnému ponaučení naučí nečekaně.

paper tradingstav strategiebacktestingspráva příkazůreprodukovatelnost
← Všechny články