7. listopadu 2026 · mikrostruktura

Backtest načetl správnou cenu ze špatného trhu

Backtest načetl správnou cenu ze špatného trhu

V 10:14 UTC jednoduchá průrazová strategie nakoupila kryptoměnový perpetual poté, co cena překonala maximum za posledních 20 minut. Backtest ukázal plnění za $64,210. Toto číslo se v datech skutečně vyskytovalo, signál měl správné časové razítko a simulovaný pokyn dorazil na další svíčce. Málem jsme výsledek označili za bezchybný.

Pak jsme porovnali ID instrumentů. Signál vycházel z perpetual kontraktu BTCUSDT. Plnění pocházelo z inverzního kontraktu BTCUSD. Oba se obchodovaly poblíž $64,210 a oba měly likvidní trh. Přesto šlo o různé knihy objednávek s odlišnými cenami, krokem kotace, hloubkou i sazebníkem poplatků. Backtest poskládal dohromady trh, na kterém nemohl obchodovat žádný trader.

Samotná strategie nebyla nijak výjimečná: vstup při zavření nad průběžným maximem, výstup při zavření pod průběžným minimem a velikost každé pozice podle pevně stanoveného dolarového rizika. Problém se ukázal, až když jsme položili přesnější otázku než „kolik stál BTC?“. Zeptali jsme se: „Kolik by tento pokyn v danou chvíli nakoupil v tomto konkrétním kontraktu?“

Graf byl složený z více trhů ještě před spuštěním strategie

Náš výzkumný datový feed usnadňoval porovnávání obchodních platforem. Sjednocoval symboly a zobrazoval souhrnnou cenovou řadu. To se hodilo při sledování trhu, ale jako reference pro exekuci to bylo nevhodné. Souhrnná řada může ukazovat nejlepší cenu napříč burzami, přestože strategie může poslat pokyn pouze na jednu z nich.

V okamžiku průrazu bylo maximum souhrnné svíčky $64,205. Poslední obchod ve vybraném kontraktu už mezitím dosáhl $64,218. Uložená kotace inverzního kontraktu stále ukazovala ask $64,210. Simulátor použil průraz z jedné řady a výhodný ask z jiné. Každá hodnota byla skutečná. Jejich kombinace byla smyšlená.

VstupCo použil backtestCo potřeboval pokyn
Maximum pro průrazSouhrnná cena BTCHistorie cen vybraného kontraktu
Referenční cena vstupuUložený ask inverzního kontraktuAktuální ask obchodovaného instrumentu
Množství pro plněníPožadovaná velikost poziceMnožství dostupné na každé cenové úrovni

Řádek v tabulce tržních dat může vypadat úplně, i když jeho pole popisují různé trhy. Shodný alias symbolu nedokazuje, že dva instrumenty sdílejí jednu knihu objednávek. ID kontraktu, burza, měna kotace a časové razítko musí zůstat propojené při generování signálu i exekuci.

Přehráli jsme pokyn proti knize objednávek

Vstup jsme znovu simulovali s vlastním nejlepším askem vybraného perpetual kontraktu a s aktualizacemi knihy objednávek dostupnými v okamžiku rozhodnutí. Kotace byla aktuální, ale na nejlepší cenové úrovni leželo pouze 0.18 BTC. Náš simulovaný pokyn měl objem 0.50 BTC. Zbývajících 0.32 BTC by se spárovalo s vyššími asky.

$64,218nejlepší ask při doručení pokynu
0.18 BTCdostupné za tento ask
$64,231cena z váženého přehrání

Upravený vstup byl o $21 za BTC horší než zaznamenané plnění, a to ještě před započtením poplatků. U jediného obchodu je to malý rozdíl. V celém testu však strategie dosahovala většiny hrubého zisku díky několika rychlým průrazům. Přehrání těchto vstupů proti správným knihám snížilo hrubý výsledek o 31 %; poplatky takera a cenový dopad ho snížily ještě víc.

Našli jsme také dva případy, kdy kotace z nejlepší úrovně knihy dorazila až po okamžiku rozhodnutí signálu. Backtest, který páruje data podle nejbližšího časového razítka, může nenápadně vybrat budoucí aktualizaci. Teď párujeme zpětně: kotace musela být k dispozici nejpozději v okamžiku odeslání pokynu a zaznamenáváme její stáří. Pokud je poslední použitelná kotace příliš stará, simulátor označí pokyn za neproveditelný nebo použije výslovně stanovené pravidlo pro zastaralá data.

Co je potřeba, aby byla cena obchodovatelná

Zavírací cena svíčky se hodí pro výpočet signálu. Sama o sobě ale nedokazuje, že by se za ni mohl vyplnit konkrétní pokyn. Cena musí patřit přesně danému instrumentu a burze, být dostupná v okamžiku doručení pokynu a mít dostatečné protilehlé množství pro požadovaný objem. Pokud data na tyto otázky neodpovídají, poctivým výstupem je cenové rozpětí nebo chybějící plnění, ne vymyšlená přesná cena.

Souhrnnou řadu jsme si ponechali pro kontext trhu, ale vyřadili jsme ji z exekučního procesu. Signály teď vycházejí z vlastní historie vybraného kontraktu; pokyny se přehrávají proti knize objednávek tohoto kontraktu a poplatky i objem se zohlední po výpočtu plnění. Trochu víc propojení a podstatně méně lichotivá kapitálová křivka.

K průrazu skutečně došlo. Backtest mu jen přiřadil lepší trh, než jaký si strategie vybrala.

kryptoměnové futuresknihy objednávektržní databacktestováníexekuce
← Všechny články