31. oktober 2026 · mikrostruktur

Vi backtestede på Binance og paper-handlede på Bybit. Edge'en var lagget.

Vi backtestede på Binance og paper-handlede på Bybit. Edge'en var lagget.

Vi havde en 1-minuts BTC-momentumstrategi, der så ærlig ud på Binance. Taker-gebyrer, funding, et kvadratrods-impactled, vi allerede havde gjort en anelse for strengt. Walk-forward, der ikke gjorde os flove. Paper-kontoen levede på Bybit, fordi det var der, nøglerne var. Jeg sagde til mig selv, at BTC er BTC. Om fredagen havde jeg en strategi, der havde handlet et lead-lag, vi ikke kunne blive fyldt på, og en Sharpe, der tilhørte en børs, vi ikke havde konto på.

Mandag: en ren Binance-backtest

Agenten havde spyttet noget næsten kedeligt ud: 15-bars-afkast mod et langsomt gennemsnit, long eller short på næste bars open, flatten på et stop eller efter 12 minutter. Vi tvang den ind på Binance USD-M BTCUSDT, 2023 til tidligt 2026, og nægtede at kigge på noget som helst før omkostninger.

Efter 4.0 bps taker, timevis funding og impact lå walk-forward-Sharpe på 1.6. Gennemsnitlig netto-edge pr. fill var 3.4 bps. Antallet af handler var højt nok til, at jeg stoppede med at pille ved bootstrap. Den latency-pad, vi allerede lægger ind for vores egen stack (signal til ordre, 40 millisekunder på en god dag), flyttede den næsten ikke. Jeg husker, at jeg var svagt irriteret over, at den ikke var mere skrøbelig.

Tirsdag: paper-kontoen begynder at "slippe"

Paper gik live kl. 09:12 UTC. Samme kode, samme parametre, samme "next open"-regel, rettet mod Bybits linear BTCUSDT. Første eftermiddag lignede en uheldsstribe. Vi blev fyldt 2–8 bps dårligere end Binance-replayet af de samme minutter, altid i handlens retning. Blotteret sagde slippage. Jeg troede på blotteret, indtil missene klumpede sig på de minutter, hvor Binance allerede var begyndt at løbe.

I løbet af natten mean-revertede gappet ikke på den måde, en støjende fill-model mean-reverterer. Det sad der. En buy på Bybit printede til en pris, Binance havde vist et beat tidligere, så kom Bybit, så betalte vi den. Og de minutter, strategien ville have, var de minutter, de 2 tapes var uenige. Stille minutter sad closene oven på hinanden, og strategien var ligeglad. Den selekterede for divergens og kaldte det alpha.

3.4 bpsgennemsnitlig netto-edge pr. Binance-fill
4.1 bpsmedian close-gap på minutter, vi faktisk handlede
1.6 → 0.4walk-forward-Sharpe efter et Bybit-nativt rerun

Onsdag: 2 tapes, 1 ur

Vi trak begge last-trade-feeds, synkroniserede på børs-timestamps og stillede et uforskammet spørgsmål: når BTC rørte sig mindst 2 ticks, hvilken venue printede først? I rolige timer ledte Binance Bybit på omkring 2 tredjedele af de bursts, median lead omkring 40 millisekunder, hvilket ligger inden for en masse "vi lagde latency på"-samtaler og uden for en 1-minuts bar. Under tirsdagens CPI-print strakte leadet sig ind i hundredvis af millisekunder, og i et par grimme sekunder lå de 2 last prices $80 fra hinanden. Jeg sad der med begge stiger oppe og så Bybit jage en film, Binance allerede havde vist.

Det var ugens smag, og den sidder ikke i Sharpe. Man kan intellektuelt vide, at krypto-last prices er venue-lokale. Det er noget andet at se den samme mønt i 2 vinduer og indse, at den ene lever i fortiden.

Så lavede vi den test, jeg burde have krævet om mandagen. Behold Binance-signalet. Fill på Bybits næste open. Det er paper-kontoens faktiske informationssæt, hvis du kigger på det likvide tape og handler et andet sted, og det er også en form for lookahead, du aldrig får i size: du bruger en pris, execution-venue'et ikke har printet. Edge gik til 0.6 bps. Vend den (Bybit-signal, Binance-fill), og du mønter en fantasi. Same-venue Binance blev på 3.4. "Strategien" var mest at være på den hurtigere bog.

Hvis dit signal-venue leder dit execution-venue, er hvert next-bar-fill i research-tape'et en pris, kontoen endnu ikke er blevet budt. At blande de ure er ikke en slippage-parameter. Det er et opdigtet fill.

1-minuts close-gappet på de minutter, vi handlede, havde en median på 4.1 bps. Ubetinget, på tværs af alle minutter, var det omkring 1.5. Selvfølgelig. Signalet fyrer, når nogen allerede er begyndt at røre sig. Vi havde målt edge på det selekterede sample, som er præcis der, hvor venue-uenighed bor.

Jeg plejede at tro, at den værste venue-bug var symbol-mapping, BTCUSDT versus BTC-PERP, et join, der i stilhed duplikerer en position. Det er bogholderi. Dette var at sidde med 2 bøger under CPI og opdage, at jeg havde researched et marked, jeg ikke handler.

Torsdag: funding, marks og gebyrer var heller ikke det samme marked

Når først du indrømmer, at last prices er forskellige, må du også indrømme, at resten af market data-kontrakten er det. Vi havde kopieret Binances gebyrskema ind i en Bybit-paper-konto og undrede os så over, hvorfor omkostningslinjen drev.

InputBinance-backtestBybit-paper, den uge
Seneste prisBinance USD-MBybit linear
Taker-gebyr4.0 bps5.5 bps
Funding-intervaltimevis00 / 08 / 16 UTC
Mark / indeksBinance-kurvBybit-kurv
Min qty / tick0.001 / 0.100.001 / 0.10
Likvidationsmatematikramte aldrig, BTCanden mark, ramte stadig aldrig

Tick og lot ramte tilfældigvis ens på BTC. Det ville jeg ikke generalisere. På SOL-bogen, vi kiggede på torsdag aften, adskilte både tick size og min notional sig, og close-gappet på handelsminutter var 11 bps. Funding var det langsommere læk. Binance betalte timevis. Bybit kørte stadig på 8-timers-uret for den linear. En position holdt gennem 01:00 UTC fik en Binance-udgift i research-ledgeret og stilhed i paper, derefter en klump kl. 08:00, som backtesten allerede havde dryppet ud. Carry'en stemte over en uge og var uenig over en eftermiddag, hvilket præcis er den horisont, denne strategi levede på.

Gebyrer var næsten kedelige, og de spiste alligevel 1.5 bps af en 3.4 bps-historie. Folk behandler 4.0 versus 5.5 som en fodnote, fordi det ser småt ud ved siden af et dagligt 2%-træk. Det er ikke småt ved siden af en 3.4 bps edge. Det vidste vi allerede. Vi havde bare anvendt viden på det forkerte venues skema.

Fredag: et Bybit-nativt rerun

Byg det hele om på Bybit-OHLCV, Bybit-funding-stamps, Bybit 5.5 bps. Samme code path, samme walk-forward-snit, samme impact-funktion. Sharpe 0.4. Gennemsnitlig netto-edge 0.9 bps, hvilket ligger inden for støjen i en 1-minuts taker-strategi, når du holder op med at forære den Binances første kig.

Det var et andet marked, ikke et mere støjende. Paper havde ikke afvist backtesten, fordi paper er "mere realistisk" i abstrakt forstand. Paper havde eksekveret i en bog, researchen aldrig så. 1.6 var internt konsistent. Den var konsistent om den forkerte børs.

Vi lod Binance-versionen ligge i arkivet med en note på rapporten: paper ikke denne konto mod dette tape. Bybit-versionen er den, der får lov at køre videre, på et tal, ingen ville skrive en thread om. Det er det korrekte udfald. Jeg savner stadig 1.6 en smule, og det er sådan, man ved, at den lavede arbejde, den ikke havde fortjent.

Hvad vi ville springe over næste gang

Genvejen var sociologisk. Binance er det tape, hver leverandør, hver research-notebook, hver agent-default vil række dig. Kontoen er der, hvor du faktisk kunne åbne den. De 2 kendsgerninger føles som en driftsdetalje. De er backtesten.

  1. Vælg execution-venue først. Byg research-tape'et fra det venues last prices, funding-stamps, marks, ticks og gebyrtrin. Hvis leverandørens default er Binance, er det ikke en default. Det er en anden strategi.
  2. Hvis du ikke kan få historik for det venue, du skal køre paper på, så erstat ikke med et ledende tape og kald gappet slippage. Enten vent, eller behandl det fremmede tape som et forsinket signal og lag det, indtil det kunne være set i execution-bogen.
  3. Når du sammenligner paper med backtest, så split driften: last-price-gap på handelsminutter, gebyrlinje, funding-timestamps, mark brugt til stops. Tirsdagens blotter blandede alle 4 og mærkede dem slippage.
  4. Kør den krydsede test med vilje. Signal på A, fill på B. Hvis det er der, hele edge'en bor, har du ikke en strategi. Du har et lead-lag, du ikke bliver fyldt på i size.

Ville jeg stadig kigge på Binance, når jeg handler Bybit? Til et diskretionært sanity check, ja. Til et fill, nej. Paper-kontoen har allerede fortalt os, hvad det kig er værd. Det er værd de 4.1 bps, det andet rum printede først, og dem får vi ikke.

krypto-futuresbacktestingpaper tradingmarkedsmikrostrukturlead-lag
← Alle indlæg