Volt egy egyperces BTC-momentumstratégiánk, amely tisztességesnek tűnt a Binance-en. Taker díjak, funding, egy négyzetgyökös impact-tag, amit már eleve kicsit túl szigorúra vettünk. Walk-forward, ami nem hozott szégyenbe. A paperszámla a Bybiten élt, mert ott voltak a kulcsok. Azt mondtam magamnak, hogy a BTC az BTC. Péntekre volt egy stratégiám, amely egy lead-laget kereskedett, amin nem tudtunk fillt kapni, és egy Sharpe, amely egy olyan tőzsdéhez tartozott, ahol nem volt számlánk.
Hétfő: egy tiszta Binance-backteszt
Az agent valami majdnem unalmasat köpött ki: 15-bar hozam egy lassú átlaghoz képest, long vagy short a következő bar nyitásán, flatten stopon vagy tizenkét perc után. Rákényszerítettük a Binance USD-M BTCUSDT-re, 2023-tól 2026 elejéig, és nem voltunk hajlandók semmit sem költségek előtt nézni.
4.0 bps taker, óránkénti funding és impact után a walk-forward Sharpe 1.6-on ült. Az átlagos nettó él fillenként 3.4 bps volt. A trade-szám elég magas volt ahhoz, hogy abbahagyjam a bootstrap piszkálását. A latency-pad, amit a saját stackünkhöz már eleve hozzáadunk (szignáltól megbízásig, 40 milliszekundum egy jó napon), alig mozdította. Emlékszem, halványan idegesített, hogy nem volt törékenyebb.
Kedd: a paperszámla elkezd „csúszni”
A paper 09:12 UTC-kor ment élőbe. Ugyanaz a kód, ugyanazok a paraméterek, ugyanaz a „következő nyitás” szabály, a Bybit linear BTCUSDT-jére irányítva. Az első délután balszerencse-sorozatnak tűnt. 2–8 bps-szel rosszabbul filltünk, mint a Binance ugyanazon percek replaye, mindig a trade irányában. A blotter slippage-et mondott. Elhittem a blottert, amíg a mellékötések azokra a percekre csoportosultak, amikor a Binance már elkezdett futni.
Éjszaka a gap nem mean-revertált úgy, ahogy egy zajos fill-modell mean-revertál. Ott ült. Egy Bybit-buy olyan áron printelt, amit a Binance egy ütemmel korábban mutatott, aztán a Bybit megérkezett, aztán mi kifizettük. És azok a percek, amelyeket a stratégia akart, azok a percek voltak, amikor a két szalag nem értett egyet. Csendes percekben a close-ok egymáson ültek, és a stratégiát nem érdekelte. Divergenciára szelektált, és azt alphának nevezte.
Szerda: két szalag, egy óra
Lekértük mindkét last-trade feedet, tőzsdei timestampokra igazítottuk, és feltettünk egy durva kérdést: amikor a BTC legalább két ticket mozdult, melyik tőzsde printelt először? Nyugodt órákban a Binance a burstök kb. kétharmadában vezette a Bybitet, a medián lead kb. 40 milliszekundum volt, ami sok „hozzáadtunk latency-t” beszélgetésen belül van, és egy 1-perces baron kívül. A keddi CPI-print alatt a lead több száz milliszekundumra nyúlt, és néhány csúnya másodpercig a két last price $80-ra volt egymástól. Ott ültem mindkét ladderrel fenn, és néztem, ahogy a Bybit egy filmet kerget, amit a Binance már levetített.
Ez volt a hét íze, és ez nincs a Sharpe-ban. Intellektuálisan tudhatod, hogy a kripto last price-ok tőzsde-lokálisak. Más dolog ugyanazt a coint két ablakban látni, és rájönni, hogy az egyik a múltban él.
Aztán elvégeztük a tesztet, amit hétfőn kellett volna követelnem. Marad a Binance-szignál. Fill a Bybit következő nyitásán. Ez a paperszámla tényleges információhalmaza, ha beleselsz a likvid szalagba, és máshol kereskedsz, és ez egyben olyan lookahead is, amit méretben soha nem kapsz meg: egy olyan árat használsz, amit az execution tőzsde még nem printelt. Az él 0.6 bps-re ment. Fordítsd meg (Bybit-szignál, Binance-fill), és fantáziát veretsz. Az azonos tőzsdei Binance 3.4-en maradt. A „stratégia” nagyrészt az volt, hogy a gyorsabb bookon vagy.
Az 1-perces close-gap mediánja azokon a perceken, amelyeket kereskedtünk, 4.1 bps volt. Feltétel nélkül, az összes percen, kb. 1.5 volt. Persze. A szignál akkor lő, amikor valaki már elkezdett mozogni. Az élt a szelektált mintán mértük, ami pontosan az, ahol a tőzsdék egyet nem értése él.
Régebben azt hittem, a legrosszabb tőzsdei bug a szimbólumleképezés, BTCUSDT versus BTC-PERP, egy join, amely csendben megdupláz egy pozíciót. Az könyvelés. Ez az volt, hogy CPI alatt néztem két bookot, és észrevettem, hogy egy olyan piacot kutattam, amelyen nem kereskedem.
Csütörtök: a funding, a markok és a díjak sem ugyanaz a piac voltak
Ha egyszer belátod, hogy a last price-ok különböznek, bel kell látnod, hogy a piaci adatkontraktus többi része is. Átmásoltuk a Binance díjszabását egy Bybit paperszámlába, aztán csodálkoztunk, miért csúszik el a költségvonal.
| Bemenet | Binance-backteszt | Bybit paper, azon a héten |
|---|---|---|
| Utolsó ár | Binance USD-M | Bybit linear |
| Taker díj | 4.0 bps | 5.5 bps |
| Funding-intervallum | óránkénti | 00 / 08 / 16 UTC |
| Mark / index | Binance-kosár | Bybit-kosár |
| Min. mennyiség / tick | 0.001 / 0.10 | 0.001 / 0.10 |
| Likvidációs matek | soha nem ütött be, BTC | más mark, még mindig soha nem ütött be |
A tick és a lot BTC-n véletlenül egyezett. Ezt nem általánosítanám. A SOL bookon, amibe csütörtök este belenéztünk, a tick size és a min notional is különbözött, és a close-gap a trade-perceken 11 bps volt. A funding volt a lassabb szivárgás. A Binance óránként fizetett. A Bybit még mindig a nyolcórás órán volt azon a linearon. Egy 01:00 UTC-n áthúzott pozíció Binance-terhelést kapott a kutatási ledgerben és csendet a paperben, aztán egy csomót 08:00-kor, amit a backteszt már csepegtetve kiosztott. A carry egy héten egyezett, és egy délutánon nem értett egyet, ami pontosan az a horizont, amelyen ez a stratégia élt.
A díjak majdnem unalmasak voltak, és mégis megettek 1.5 bps-t egy 3.4 bps-es történetből. Az emberek lábjegyzetnek kezelik a 4.0 versus 5.5-öt, mert kicsinek tűnik egy 2%-os napi mozgás mellett. Nem kicsi egy 3.4 bps-es él mellett. Ezt már tudtuk. Csak a rossz tőzsde díjszabására alkalmaztuk a tudást.
Péntek: egy Bybit-natív újrafuttatás
Építsük újra az egészet Bybit OHLCV-n, Bybit funding-bélyegeken, Bybit 5.5 bps-en. Ugyanaz a kódút, ugyanazok a walk-forward vágások, ugyanaz az impact-függvény. Sharpe 0.4. Átlagos nettó él 0.9 bps, ami egy egyperces taker stratégia zaján belül van, ha abbahagyod, hogy odaajándékozd neki a Binance első ránézését.
Más piac volt, nem zajosabb. A paper nem azért utasította el a backtesztet, mert a paper elvontan „realisztikusabb”. A paper egy olyan bookban hajtott végre, amelyet a kutatás soha nem látott. Az 1.6 belsőleg konzisztens volt. A rossz tőzsdéről volt konzisztens.
A Binance-verziót az archívumban hagytuk egy megjegyzéssel a riporton: ne futtasd papíron ezt a számlát ezen a szalagon. A Bybit-verzió az, amelyik tovább futhat, egy olyan számon, amiről senki nem írna threadet. Ez a helyes kimenetel. Még mindig kicsit hiányzik az 1.6, és épp ebből tudod, hogy olyan munkát végzett, amit nem érdemelt meg.
Amit legközelebb kihagynánk
A rövid út szociológiai volt. A Binance az a szalag, amit minden vendor, minden kutatási notebook, minden agent default a kezedbe akar adni. A számla ott van, ahol ténylegesen meg tudtad nyitni. Ez a két tény üzemeltetési részletnek tűnik. Ők a backteszt.
- Először az execution tőzsdét válaszd ki. A kutatási szalagot annak a tőzsdének a last price-aiból, funding-bélyegeiből, markjaiból, tickjeiből és díjszintjéből építsd. Ha a vendor defaultja a Binance, az nem default. Az egy másik stratégia.
- Ha nem kapsz historikus adatot ahhoz a tőzsdéhez, amelyen papíron fogsz kereskedni, ne helyettesíts be egy vezető szalagot, és ne nevezd a gapet slippage-nek. Vagy várj, vagy kezeld az idegen szalagot késleltetett szignálként, és laggeld addig, amíg az execution bookban látható lehetett volna.
- Amikor a papert a backteszthez hasonlítod, bontsd szét a driftet: last-price gap a trade-perceken, díjsor, funding-timestampok, a stopokhoz használt mark. A keddi blotter mind a négyet keverte, és slippage-nek címkézte.
- Futtasd szándékosan a keresztezett tesztet. Szignál A-n, fill B-n. Ha ott van a teljes él, nincs stratégiád. Van egy lead-laged, amin méretben nem kapsz fillt.
Belenéznék még a Binance-be, amikor Bybiten kereskedem? Diszkrecionális sanity checknek, persze. Fillnek, nem. A paperszámla már megmondta, mennyit ér az a belesés. Annyit ér, mint az a 4.1 bps, amit a másik szoba printelt először, és azt mi nem kapjuk meg.
← Összes bejegyzés


