31 października 2026 · mikrostruktura

Backtestowaliśmy na Binance i prowadziliśmy paper trading na Bybit. Przewagą był lag.

Backtestowaliśmy na Binance i prowadziliśmy paper trading na Bybit. Przewagą był lag.

Mieliśmy jednominutową strategię momentum na BTC, która na Binance wyglądała uczciwie. Prowizje taker, funding, człon impactu z pierwiastkiem kwadratowym, który i tak zrobiliśmy odrobinę zbyt surowym. Walk-forward, który nas nie zawstydzał. Konto papierowe żyło na Bybit, bo tam były klucze. Powtarzałem sobie, że BTC to BTC. W piątek zostałem ze strategią, która handlowała lead-lagiem, którego nie mogliśmy zrealizować, i Sharpe'a, który należał do giełdy, na której nie mieliśmy konta.

Poniedziałek: czysty backtest na Binance

Agent wypluł coś niemal nudnego: zwrot z 15 barów wobec wolnej średniej, long albo short na otwarciu następnego bara, spłaszczenie na stopie albo po dwunastu minutach. Wepchnęliśmy to na Binance USD-M BTCUSDT, od 2023 do początku 2026, i odmawialiśmy patrzenia na cokolwiek brutto, przed kosztami.

Po 4.0 bps taker, godzinnym fundingu i impakcie walk-forward Sharpe usiadł na 1.6. Średnia przewaga netto na fill wynosiła 3.4 bps. Liczba transakcji była na tyle duża, że przestałem grzebać w bootstrapie. Bufor latencji, który i tak dokładamy na własny stack (sygnał do zlecenia, 40 milisekund w dobry dzień), prawie go nie ruszył. Pamiętam, że byłem lekko zirytowany, że nie jest kruchsze.

Wtorek: konto papierowe zaczyna „ślizgać się”

Paper wystartował o 09:12 UTC. Ten sam kod, te same parametry, ta sama reguła „next open”, skierowana na linear BTCUSDT Bybit. Pierwsze popołudnie wyglądało jak seria pecha. Dostawaliśmy fill o 2–8 bps gorszy niż replay Binance z tych samych minut, zawsze w kierunku transakcji. Blotter mówił: slippage. Uwierzyłem blotterowi, dopóki chybienia nie skupiły się na minutach, w których Binance już zaczął biec.

Przez noc luka nie mean-revertowała tak, jak mean-revertuje zaszumiony model filli. Siedziała. Buy na Bybit drukował się po cenie, którą Binance pokazał o takt wcześniej, potem Bybit doganiał, potem my za to płaciliśmy. A minuty, których chciała strategia, to były minuty, w których dwie taśmy się nie zgadzały. W spokojnych minutach close'e leżały jeden na drugim i strategii było wszystko jedno. Selekcjonowała dywergencję i nazywała to alfą.

3.4 bpsśrednia przewaga netto na fill na Binance
4.1 bpsmediana luki close w minutach, które faktycznie handlowaliśmy
1.6 → 0.4walk-forward Sharpe po przeliczeniu native na Bybit

Środa: dwie taśmy, jeden zegar

Ściągnęliśmy oba feedy last-trade, wyrównaliśmy je po timestampach giełd i zadaliśmy niegrzeczne pytanie: kiedy BTC ruszył o co najmniej dwa ticki, która giełda wydrukowała pierwsza? W spokojnych godzinach Binance wyprzedzał Bybit w około dwóch trzecich tych impulsów, mediana leadu około 40 milisekund, co mieści się w wielu rozmowach o „dokładamy latencję”, a nie mieści się w barze 1-minutowym. Podczas wtorkowej publikacji CPI lead rozciągnął się do setek milisekund, a przez kilka paskudnych sekund dwa last price'e dzieliło $80. Siedziałem z oboma ladderami na ekranie i patrzyłem, jak Bybit goni film, który Binance już wyświetlił.

Taki był klimat tygodnia i tego nie ma w Sharpe'u. Można wiedzieć, intelektualnie, że last price'e w krypto są lokalne dla giełdy. Co innego zobaczyć tę samą monetę w dwóch oknach i zrozumieć, że jedno z nich żyje w przeszłości.

Potem zrobiliśmy test, którego powinienem był zażądać w poniedziałek. Zostawiamy sygnał z Binance. Fill na następnym open Bybit. To rzeczywisty zbiór informacji konta papierowego, jeśli podglądasz płynną taśmę i handlujesz gdzie indziej, i to też forma lookaheadu, której nigdy nie dostaniesz w size: używasz ceny, której giełda egzekucji jeszcze nie wydrukowała. Przewaga spadła do 0.6 bps. Odwróć to (sygnał Bybit, fill Binance) i drukujesz fantazję. Binance na tej samej giełdzie został przy 3.4. „Strategia” polegała głównie na byciu na szybszym booku.

Jeśli giełda sygnału wyprzedza giełdę egzekucji, każdy fill na następnym barze na taśmie badawczej to cena, której kontu jeszcze nie zaoferowano. Mieszanie tych zegarów to nie parametr slippage. To zmyślony fill.

Luka close na 1-minutowym interwale w minutach, które handlowaliśmy, miała medianę 4.1 bps. Bezwarunkowo, po wszystkich minutach, wynosiła około 1.5. Oczywiście. Sygnał odpala, gdy ktoś już zaczął się ruszać. Mierzyliśmy przewagę na wyselekcjonowanej próbie, czyli dokładnie tam, gdzie mieszka rozjazd między giełdami.

Kiedyś myślałem, że najgorszy bug giełdowy to mapowanie symboli, BTCUSDT versus BTC-PERP, join, który po cichu duplikuje pozycję. To księgowość. Tu chodziło o patrzenie na dwa booki podczas CPI i zauważenie, że zbadałem rynek, na którym nie handluję.

Czwartek: funding, marki i prowizje też nie były tym samym rynkiem

Jak już przyznasz, że last price'e są różne, musisz przyznać, że reszta kontraktu na dane rynkowe też. Skopiowaliśmy cennik prowizji Binance na konto papierowe Bybit i potem dziwiliśmy się, czemu linia kosztów dryfuje.

WejścieBacktest BinancePaper Bybit, tamten tydzień
Last priceBinance USD-MBybit linear
Prowizja taker4.0 bps5.5 bps
Interwał fundingugodzinowy00 / 08 / 16 UTC
Mark / indeksKoszyk BinanceKoszyk Bybit
Min. qty / tick0.001 / 0.100.001 / 0.10
Matematyka likwidacjinigdy nie trafiona, BTCinny mark, nadal nigdy nie trafiona

Tick i lot akurat zgrały się na BTC. Nie generalizowałbym tego. Na booku SOL, w który zerknęliśmy w czwartek wieczorem, i tick size, i min notional się różniły, a luka close w minutach transakcji wynosiła 11 bps. Funding był wolniejszym przeciekiem. Binance płacił godzinowo. Bybit na tamtym linearze nadal siedział na ośmiogodzinnym zegarze. Pozycja trzymana przez 01:00 UTC dostawała obciążenie Binance w księdze badawczej i ciszę w paperze, a potem zrzut o 08:00, który backtest już wcześniej wykapował. Carry zgadzał się w skali tygodnia i rozjeżdżał się w skali popołudnia, a to dokładnie horyzont, na którym żyła ta strategia.

Prowizje były niemal nudne i mimo to zjadły 1.5 bps z historii o 3.4 bps. Ludzie traktują 4.0 kontra 5.5 jako przypis, bo obok dziennego ruchu 2% wygląda to na drobiazg. To nie jest drobiazg obok przewagi 3.4 bps. To już wiedzieliśmy. Po prostu zastosowaliśmy tę wiedzę do cennika złej giełdy.

Piątek: przeliczenie native na Bybit

Przebudowujemy całość na OHLCV Bybit, stampach fundingu Bybit, 5.5 bps Bybit. Ta sama ścieżka kodu, te same cięcia walk-forward, ta sama funkcja impactu. Sharpe 0.4. Średnia przewaga netto 0.9 bps, co mieści się w szumie jednominutowej strategii taker, kiedy przestajesz darować jej pierwsze spojrzenie Binance.

To był inny rynek, nie bardziej zaszumiony. Paper nie odrzucił backtestu dlatego, że paper jest w abstrakcji „bardziej realistyczny”. Paper egzekwował w booku, którego research nigdy nie widział. 1.6 było wewnętrznie spójne. Było spójne co do złej giełdy.

Zostawiliśmy wersję Binance w archiwum z notatką na raporcie: nie prowadź paper tradingu tego konta na tej taśmie. Wersja Bybit to ta, która może dalej działać, przy liczbie, o której nikt nie napisałby wątku. To prawidłowy wynik. Trochę tęsknię za 1.6, a to znak, że odwalała robotę, której nie zarobiła.

Co następnym razem byśmy pominęli

Skrót był socjologiczny. Binance to taśma, którą każdy vendor, każdy notes badawczy, każdy default agenta chce ci wcisnąć. Konto jest tam, gdzie udało się je faktycznie otworzyć. Te dwa fakty wyglądają jak szczegół operacyjny. One są backtestem.

  1. Najpierw wybierz giełdę egzekucji. Zbuduj taśmę badawczą z last price'ów tej giełdy, stampów fundingu, marków, ticków i progu prowizji. Jeśli default vendora to Binance, to nie jest default. To jest inna strategia.
  2. Jeśli nie możesz dostać historii giełdy, na której będziesz prowadzić paper, nie podstawiaj wiodącej taśmy i nie nazywaj luki slippage'em. Albo poczekaj, albo traktuj obcą taśmę jako opóźniony sygnał i opóźnij ją, aż mogłaby być widoczna w booku egzekucji.
  3. Gdy porównujesz paper z backtestem, rozbij dryf: lukę last price w minutach transakcji, linię prowizji, timestampy fundingu, mark używany do stopów. Wtorkowy blotter zmieszał wszystkie cztery i nazwał je slippage'em.
  4. Celowo odpal test skrzyżowany. Sygnał na A, fill na B. Jeśli tam mieszka cała przewaga, nie masz strategii. Masz lead-lag, na którym nie dostaniesz filla w size.

Czy nadal zerkałbym na Binance, handlując na Bybit? Dla dyskrecjonalnego sanity checku — jasne. Dla filla — nie. Konto papierowe już nam powiedziało, ile ten rzut oka jest wart. Jest wart 4.1 bps, które drugi pokój wydrukował pierwsze, a my ich nie dostajemy.

krypto futuresbacktestingpaper tradingmikrostruktura rynkulead-lag
← Wszystkie wpisy