31. října 2026 · mikrostruktura

Backtestovali jsme na Binance a na Bybit jsme obchodovali nanečisto. Tou výhodou bylo zpoždění.

Backtestovali jsme na Binance a na Bybit jsme obchodovali nanečisto. Tou výhodou bylo zpoždění.

Měli jsme minutovou BTC momentum strategii, která na Binance vypadala poctivě. Taker poplatky, funding, odmocninový impact term, který jsme už předtím nastavili trochu moc přísně. Walk-forward, za který jsme se nestyděli. Paper účet žil na Bybit, protože tam byly klíče. Říkal jsem si, že BTC je BTC. V pátek jsem měl strategii, která obchodovala lead-lag, na který jsme nedokázali dostat fill, a Sharpe, který patřil burze, na níž jsme neměli účet.

Pondělí: čistý backtest na Binance

Agent vyplivl něco skoro nudného: výnos za 15 barů proti pomalému průměru, long nebo short na openu následujícího baru, flatten na stopu nebo po dvanácti minutách. Natlačili jsme to na Binance USD-M BTCUSDT, od 2023 do začátku 2026, a odmítali jsme se dívat na cokoli bez započtení nákladů.

Po 4.0 bps taker, hodinovém fundingu a impactu seděl walk-forward Sharpe na 1.6. Průměrný čistý edge na fill byl 3.4 bps. Počet obchodů byl dost vysoký na to, abych přestal šťourat do bootstrapu. Latency pad, který si na vlastní stack už přidáváme (od signálu k orderu, 40 milisekund v dobrý den), s tím skoro nehnul. Pamatuju si, že mě mírně štvalo, že to není křehčí.

Úterý: paper účet začíná „slippovat“

Paper šel live v 09:12 UTC. Stejný kód, stejné parametry, stejné pravidlo „next open“, namířené na Bybit linear BTCUSDT. První odpoledne vypadalo jako šňůra smůly. Fillovali jsme o 2–8 bps hůř než Binance replay stejných minut, vždy ve směru obchodu. Blotter hlásil slippage. Věřil jsem blotteru, dokud se missy neshlukly na minutách, na kterých Binance už začala utíkat.

Přes noc se gap nevracel k průměru tak, jak se k průměru vrací zašuměný fill model. Seděl tam. Nákup na Bybit se vytiskl na ceně, kterou Binance ukázala o takt dřív, pak dorazila Bybit, pak jsme ji zaplatili. A minuty, které strategie chtěla, byly minuty, ve kterých se ty dvě pásky neshodovaly. V klidných minutách closes seděly jedna na druhé a strategii to bylo jedno. Selektovala divergenci a říkala tomu alpha.

3.4 bpsprůměrný čistý edge na Binance fill
4.1 bpsmedián close gapu v minutách, které jsme opravdu obchodovali
1.6 → 0.4walk-forward Sharpe po nativním přepočtu na Bybit

Středa: dvě pásky, jedny hodiny

Stáhli jsme oba last-trade feedy, zarovnali je podle timestampů burz a položili drzou otázku: když se BTC pohnulo aspoň o dva ticky, která venue vytiskla první? V klidných hodinách vedla Binance před Bybit zhruba ve dvou třetinách těch burstů, medián leadu kolem 40 milisekund, což se vejde do spousty debat „přidali jsme latenci“ a nevejde do 1minutového baru. Při úterním CPI printu se lead natáhl na stovky milisekund a na pár ošklivých sekund byly ty dvě last prices $80 od sebe. Seděl jsem s oběma žebříčky otevřenými a koukal, jak Bybit honí film, který Binance už stačila promítnout.

Tohle byla chuť toho týdne, a v Sharpu to není. Čistě intelektuálně víte, že krypto last prices jsou lokální pro venue. Něco jiného je vidět tutéž minci ve dvou oknech a uvědomit si, že jedna z nich žije v minulosti.

Pak jsme udělali test, který jsem měl vyžadovat už v pondělí. Ponechat Binance signál. Fillovat na příštím openu Bybit. To je skutečný informační set paper účtu, když nakukujete na likvidní pásku a obchodujete jinde, a je to taky forma lookaheadu, kterou v size nikdy nedostanete: používáte cenu, kterou execution venue ještě nevytiskla. Edge klesl na 0.6 bps. Otočte to (Bybit signál, Binance fill) a razíte si fantazii. Same-venue Binance zůstala na 3.4. Ta „strategie“ spočívala hlavně v tom být na rychlejší knize.

Pokud vaše signální venue vede execution venue, každý next-bar fill na research pásce je cena, která účtu ještě nebyla nabídnuta. Míchat ty hodiny není parametr slippage. Je to vymyšlený fill.

1minutový close gap v minutách, které jsme obchodovali, měl medián 4.1 bps. Nepodmíněně, přes všechny minuty, byl kolem 1.5. Jasně. Signál se spouští, když už se někdo začal hýbat. Měřili jsme edge na vybraném vzorku, a přesně tam žije neshoda mezi venues.

Kdysi jsem si myslel, že nejhorší venue bug je mapování symbolů, BTCUSDT versus BTC-PERP, join, který potichu zduplikuje pozici. To je účetnictví. Tohle bylo dívat se během CPI na dvě knihy a všimnout si, že jsem zkoumal trh, který neobchoduju.

Čtvrtek: funding, marky a poplatky taky nebyly stejný trh

Jakmile připustíte, že last prices jsou jiné, musíte připustit, že zbytek kontraktu tržních dat je taky. Zkopírovali jsme fee schedule z Binance do Bybit paper účtu a pak jsme se divili, proč cost line ujíždí.

VstupBinance backtestBybit paper, ten týden
Poslední cenaBinance USD-MBybit linear
Taker poplatek4.0 bps5.5 bps
Interval fundingukaždou hodinu00 / 08 / 16 UTC
Mark / indexBinance košBybit koš
Min. množství / tick0.001 / 0.100.001 / 0.10
Likvidační matematikanikdy nespustila, BTCjiný mark, pořád nespustila

Tick a lot se na BTC náhodou shodovaly. Já bych to nezobecňoval. Na SOL knize, na kterou jsme se ve čtvrtek večer podívali, se lišily tick size i min notional a close gap v obchodovaných minutách byl 11 bps. Funding byl pomalejší únik. Binance platila každou hodinu. Bybit byla na tom linearu pořád na osmhodinovém cyklu. Pozice držená přes 01:00 UTC dostala v research ledgeru Binance stržení a v paperu ticho, pak kus v 08:00, který backtest už předtím nakapal. Carry se přes týden shodoval a přes odpoledne neshodoval, což je přesně horizont, na kterém tahle strategie žila.

Poplatky byly skoro nudné, a stejně sežraly 1.5 bps z příběhu o 3.4 bps. Lidi berou 4.0 versus 5.5 jako poznámku pod čarou, protože vedle 2% denního pohybu to vypadá malé. Vedle edge 3.4 bps to malé není. To jsme už věděli. Jen jsme tu znalost aplikovali na sazebník špatné venue.

Pátek: nativní přepočet na Bybit

Přestavěli jsme to celé na Bybit OHLCV, Bybit funding stampy, Bybit 5.5 bps. Stejná cesta kódu, stejné walk-forward řezy, stejná impact funkce. Sharpe 0.4. Průměrný čistý edge 0.9 bps, což je uvnitř šumu minutové taker strategie, jakmile jí přestanete darovat první pohled Binance.

Byl to jiný trh, ne zarušenější. Paper neodmítl backtest proto, že je paper abstraktně „realističtější“. Paper exekuoval v knize, kterou research nikdy neviděl. To 1.6 bylo vnitřně konzistentní. Bylo konzistentní ohledně špatné burzy.

Binance verzi jsme nechali v archivu s poznámkou na reportu: tenhle účet nespouštějte nanečisto proti téhle pásce. Běžet dál smí Bybit verze, na čísle, o kterém by si nikdo nenapsal thread. To je správný výsledek. To 1.6 mi pořád trochu chybí, a právě podle toho poznáte, že odvádělo práci, kterou si nezasloužilo.

Co bychom příště přeskočili

Ta zkratka byla sociologická. Binance je páska, kterou vám chce podat každý vendor, každý research notebook, každý default agenta. Účet je tam, kde jste ho fakt dokázali otevřít. Ty dva fakty působí jako provozní detail. Jsou tím backtestem.

  1. Nejdřív vyberte execution venue. Research pásku postavte z last prices, funding stampů, marků, ticků a fee tieru té venue. Jestli je vendorův default Binance, to není default. Je to jiná strategie.
  2. Pokud nedostanete historii pro venue, na které budete pouštět paper, nenahrazujte ji vedoucí páskou a neříkejte tomu gapu slippage. Buď počkejte, nebo cizí pásku berte jako zpožděný signál a lagujte ji, dokud by ji bylo možné vidět v execution knize.
  3. Když porovnáváte paper s backtestem, rozdělte drift: last-price gap v obchodovaných minutách, fee line, funding timestampy, mark použitý na stopy. Úterní blotter smíchal všechny čtyři a nalepil na ně slippage.
  4. Zkřížený test pusťte schválně. Signál na A, fill na B. Pokud tam žije celý edge, nemáte strategii. Máte lead-lag, na který v size fill nedostanete.

Nakukoval bych pořád na Binance, když obchoduju Bybit? Pro diskreční sanity check ano. Pro fill ne. Paper účet už nám řekl, co ten pohled stojí. Stojí to 4.1 bps, které druhá místnost vytiskla první, a ty my nedostaneme.

krypto futuresbacktestingpaper tradingtržní mikrostrukturalead-lag
← Všechny články