31 oktober 2026 · microstructuur

We backtesten op Binance en paper-traden op Bybit. De edge was de lag.

We backtesten op Binance en paper-traden op Bybit. De edge was de lag.

We hadden een BTC-momentumstrategie van 1 minuut die er op Binance eerlijk uitzag. Taker fees, funding, een vierkantswortel-impactterm die we al iets te gemeen hadden gemaakt. Walk-forward waar we ons niet voor hoefden te schamen. Het paperaccount leefde op Bybit, omdat daar de keys lagen. Ik zei tegen mezelf: BTC is BTC. Op vrijdag had ik een strategie die een lead-lag had zitten traden die we niet konden vullen, en een Sharpe die hoorde bij een exchange waar we geen account op hadden.

Maandag: een schone Binance-backtest

De agent had iets bijna saais uitgespuugd: 15-bar-rendement versus een traag gemiddelde, long of short op de open van de volgende bar, flatten op een stop of na twaalf minuten. We dwongen het op Binance USD-M BTCUSDT, 2023 tot begin 2026, en weigerden naar iets te kijken dat gross of costs was.

Na 4.0 bps taker, uurlijkse funding en impact zat de walk-forward Sharpe op 1.6. De gemiddelde netto-edge per fill was 3.4 bps. Het aantal trades was hoog genoeg dat ik ophield in de bootstrap te prikken. De latency-pad die we al voor onze eigen stack toevoegen (signaal tot order, 40 milliseconden op een goede dag) bewoog het nauwelijks. Ik herinner me dat ik vaag geïrriteerd was dat het niet fragieler was.

Dinsdag: het paperaccount begint te "slippen"

Paper ging live om 09:12 UTC. Dezelfde code, dezelfde parameters, dezelfde "next open"-regel, gericht op de linear BTCUSDT van Bybit. De eerste middag oogde als een pechreeks. We vulden 2–8 bps slechter dan de Binance-replay van dezelfde minuten, altijd in de richting van de trade. De blotter zei slippage. Ik geloofde de blotter tot de misses clusterden op de minuten waarop Binance al was gaan lopen.

Die nacht mean-revertte de gap niet zoals een noisy fill-model mean-revert. Hij bleef zitten. Een buy op Bybit printte op een prijs die Binance een beat eerder had laten zien, toen kwam Bybit, toen betaalden wij hem. En de minuten die de strategie wilde, waren de minuten waarop de twee tapes het oneens waren. Op stille minuten lagen de closes pal op elkaar en de strategie gaf er niets om. Hij selecteerde op divergentie en noemde dat alpha.

3.4 bpsgemiddelde netto-edge per Binance-fill
4.1 bpsmediane close-gap op minuten die we daadwerkelijk traden
1.6 → 0.4walk-forward Sharpe na een Bybit-native rerun

Woensdag: twee tapes, één klok

We haalden beide last-trade-feeds binnen, alignerden ze op exchange-timestamps en stelden een brutale vraag: wanneer BTC minstens twee ticks bewoog, welke venue printte eerst? In kalme uren leidde Binance Bybit op ongeveer twee derde van die bursts, mediane lead rond de 40 milliseconden, wat binnen veel "we hebben latency toegevoegd"-gesprekken valt en buiten een 1-minuutbar. Tijdens de CPI-print van dinsdag rekte de lead uit tot honderden milliseconden, en een paar lelijke seconden lagen de twee last prices $80 uit elkaar. Ik zat daar met beide ladders open, en keek hoe Bybit een film najagde die Binance al had vertoond.

Dat was de sfeer van de week, en die staat niet in de Sharpe. Je kunt, intellectueel, weten dat crypto-last-prices venue-lokaal zijn. Het is iets anders om dezelfde coin in twee vensters te zien en te beseffen dat een van de twee in het verleden leeft.

Toen deden we de test die ik maandag al had moeten eisen. Houd het Binance-signaal. Fill op de next open van Bybit. Dat is de werkelijke informatieset van het paperaccount als je naar de liquide tape gluurt en elders traded, en het is ook een vorm van lookahead die je nooit op size krijgt: je gebruikt een prijs die de execution venue nog niet heeft geprint. De edge ging naar 0.6 bps. Draai het om (Bybit-signaal, Binance-fill) en je mint een fantasie. Same-venue Binance bleef op 3.4. De "strategie" was vooral op het snellere book zitten.

Als je signaalvenue je execution venue voorloopt, is elke next-bar-fill in de research-tape een prijs die het account nog niet is aangeboden. Die klokken mengen is geen slippage-parameter. Het is een verzonnen fill.

De 1-minuut-close-gap op de minuten die we traden had een mediaan van 4.1 bps. Onvoorwaardelijk, over alle minuten, was het ongeveer 1.5. Natuurlijk. Het signaal vuurt wanneer iemand al in beweging is. We hadden edge gemeten op de geselecteerde steekproef, precies waar venue-onenigheid leeft.

Ik dacht vroeger dat de ergste venue-bug symbol mapping was, BTCUSDT versus BTC-PERP, een join die stilletjes een positie dupliceert. Dat is boekhouding. Dit was naar twee books kijken tijdens CPI en merken dat ik research had gedaan op een markt die ik niet trade.

Donderdag: funding, marks en fees waren ook niet dezelfde markt

Zodra je toegeeft dat de last prices anders zijn, moet je toegeven dat de rest van het market-data-contract dat ook is. We hadden het feeschema van Binance in een Bybit-paperaccount gekopieerd en ons daarna afgevraagd waarom de kostenregel dreef.

InvoerBinance-backtestBybit-paper, die week
Last priceBinance USD-MBybit linear
Taker-fee4.0 bps5.5 bps
Funding-intervaluurlijks00 / 08 / 16 UTC
Mark / indexBinance-basketBybit-basket
Min qty / tick0.001 / 0.100.001 / 0.10
Liquidatie-mathnooit geraakt, BTCandere mark, nog steeds nooit geraakt

Tick en lot kwamen op BTC toevallig overeen. Ik zou dat niet generaliseren. Op het SOL-book waar we donderdagavond naar gluurden, verschilden tick size en min notional allebei, en de close-gap op trademinuten was 11 bps. Funding was het tragere lek. Binance betaalde uurlijks. Bybit zat voor die linear nog op de achtuursklok. Een positie die door 01:00 UTC werd aangehouden kreeg een Binance-charge in het researchgrootboek en stilte in paper, daarna een klap om 08:00 die de backtest al had uitgedruppeld. De carry klopte over een week en week af over een middag, precies de horizon waarop deze strategie leefde.

Fees waren bijna saai, en ze aten toch 1.5 bps van een 3.4 bps-verhaal. Mensen behandelen 4.0 versus 5.5 als een voetnoot omdat het klein oogt naast een dagelijkse move van 2%. Het is niet klein naast een edge van 3.4 bps. Dat wisten we al. We hadden die kennis alleen op het schema van de verkeerde venue toegepast.

Vrijdag: een Bybit-native rerun

Bouw het hele ding opnieuw op Bybit-OHLCV, Bybit-fundingstamps, Bybit 5.5 bps. Dezelfde code path, dezelfde walk-forward-cuts, dezelfde impactfunctie. Sharpe 0.4. Gemiddelde netto-edge 0.9 bps, wat binnen de ruis van een 1-minuut-takerstrategie valt zodra je stopt het de first look van Binance cadeau te doen.

Het was een andere markt, geen markt met meer ruis. Paper had de backtest niet afgewezen omdat paper in het abstract "realistischer" is. Paper had zitten executeren in een book dat de research nooit had gezien. De 1.6 was intern consistent. Hij was consistent over de verkeerde exchange.

We lieten de Binance-versie in het archief achter met een noot op het rapport: paper dit account niet tegen deze tape. De Bybit-versie mag blijven lopen, op een getal waar niemand een thread over zou schrijven. Dat is de juiste uitkomst. Ik mis de 1.6 nog een beetje, en zo weet je dat hij werk deed dat hij niet had verdiend.

Wat we de volgende keer zouden overslaan

De shortcut was sociologisch. Binance is de tape die elke vendor, elk research-notebook, elke agent-default je in handen wil drukken. Het account staat waar je het daadwerkelijk kon openen. Die twee feiten voelen als een operations-detail. Ze zijn de backtest.

  1. Kies eerst de execution venue. Bouw de research-tape uit de last prices, fundingstamps, marks, ticks en fee-tier van die venue. Als de default van de vendor Binance is, is dat geen default. Het is een andere strategie.
  2. Als je geen historie kunt krijgen voor de venue waarop je gaat paperen, vervang die dan niet door een leidende tape en noem de gap slippage. Wacht, of behandel de vreemde tape als een vertraagd signaal en lag hem tot hij in het execution-book zichtbaar had kunnen zijn.
  3. Als je paper met de backtest vergelijkt, splits de drift: last-price-gap op trademinuten, fee-regel, funding-timestamps, mark gebruikt voor stops. De blotter van dinsdag mengde alle vier en labelde ze als slippage.
  4. Draai de gekruiste test expres. Signaal op A, fill op B. Als daar de hele edge leeft, heb je geen strategie. Je hebt een lead-lag waarop je in size niet gevuld zult worden.

Zou ik nog steeds naar Binance gluren als ik Bybit trade? Voor een discretionaire sanity check, tuurlijk. Voor een fill, nee. Het paperaccount heeft ons al verteld wat dat gluren waard is. Het is de 4.1 bps waard die de andere kamer eerst printte, en die krijgen wij niet.

crypto-futuresbacktestenpaper tradingmarktmicrostructuurlead-lag
← Alle artikelen