2026. november 15. · kutatás

Hogyan backteszteljük a kriptóvolument, ha a wash trade-ek felfújják a szalagot?

Hogyan backteszteljük a kriptóvolument, ha a wash trade-ek felfújják a szalagot?

Hétfőn megtettük a felelős dolgot. Az agent egy momentumstratégiát futtatott egy mid-cap USDT-M perpetualon, tradenként 25,000 USDT-t klippelve, és az első, volumenfilter nélküli backtest minden szignált úgy teljesített, mintha a könyv BTC lett volna. Ezért beépítettük a tankönyvi kaput: húsz egyperces bár dollárvolumenének meg kellett haladnia a klip hússzorosát, mielőtt kimehetett egy order. Húsz perc, félmillió dollárnyi szalag. Az érme forgalmas napon nagyjából $40 million-t nyomtatott. A filter a szignálok java részét megtartotta. Az equitygörbe kevésbé lett recés. Paperre küldtük.

Tizenegy órával később egy 25,000 USDT-s buy megette a bid 8,400-át, és megállt. Az adott perc húszbár-volumene $1.14 million volt. A filter igent mondott.

34%a jelentett szalagból soha nem mozdított könyvszintet
11 órapaper az első beragadt klipig
20×klip-volumen szabály, ami így is igent mondott

Hétfő: a filter, amitől becsületesnek éreztük magunkat

Az agent megjegyzése a pull requesten ez volt: „kapacitásellenőrzés hozzáadva, 20× notional.” Jóváhagytam. Ezt a mondatot már jóváhagytam korábban. Az a fajta szabály, amit akkor írsz, miután valaki megmutat egy backtestet, ami egy $4,000-OI érmét $50,000-es klipekben tradelt, a szobában mindenki fintorog, és ráraksz egy volumenszorzót, hogy ez ne történhessen meg újra.

Hétfőn a szabály azt csinálta, amit backtestben mindig. Kidobta a holt órákat. Megtartotta azokat az órákat, ahol a tőzsde saját volumenszáma hangosnak tűnt. A turnover nagyjából egyharmadával esett. Az átlagos trade méret 25,000 maradt, mert a fill modell gyáva: az egész klipet last-plus-a-few-bps-en viszi, ha a kapu nyitva van. Senki nem kérdezte meg a könyvet, hogy a 25,000 tényleg ott ült-e.

Még mindig összerezzentek, ha egy érme 24h volumene kerek szám a vékony open interest mellett. Ez 2021-ből maradt, amikor a Discord „market making” botjai két subaccounttal kereskedtek egymással, és a volumen screenshotját beillesztették a #brag-be. A szalag úgy néz ki, mint egy buli. A könyv karton. Azt mondtam magamnak, hogy a 20×-os filter az egyperces bárokon az, ahogy ebből kinövünk. Nem az. Az, ahogy a kartont simább számba átlagolod.

Kedd: paper, aztán egy maradék

A paper szelíden indult. Az első öt klip 2–4 ugrással töltődött le az askon. Csúnya, de megvolt. Aztán 14:07 UTC, egy long szignál, 25,000 USDT, a könyv teteje 1,100, a következő szint 2,400, aztán levegő. 8,400-at kaptunk takerként, 16,600 restelt. Negyven másodperccel később a maradék a saját time-in-force-unkon cancelelődött. A stratégia azt hitte, egy teljes klipet longol. A számla egyharmad klipet longolt.

De a filter igent mondott. Kihúztam a bárt. A dollárvolumen a 14:07-ig tartó húsz percben $1.14 million volt, kényelmesen $500k felett. Ennek a $1.14 million-nak durván $380k-ja printpárok volt: azonos ár, azonos méret, ellentétes aggressor flagek, 2–8 milliszekundumra egymástól, és az adott áron a bid/ask size meg sem rezdült. Ezek a tradek egymásnak fizették a díjat. Nem kínáltak nekünk 25,000 USDT-s lyukat.

Szerda: a szalag illesztése a könyvhöz

A szerda volt a lassú nap, amire legközelebb kétszer annyi időt szánnék. Öt hétköznap tradejeit és L2 snapshotjait vettük ugyanazon a perpen, 100ms-os könyvfotók, és minden printet besoroltunk a könyvhöz képest egy snapshottal előtte és egy snapshottal utána.

  1. Ha a trade árán a size nagyjából a trade méretével csökkent, hozzáért a könyvhöz. Számoljuk.
  2. Ha egy azonos méretű buy és sell ugyanazon az áron printelődött könyvváltozás nélkül, nevezzük washnek, és dobjuk ki minden kapacitásszámból.
  3. Ha egy trade több szinten átment, és azok a szintek eltűntek, az egy valódi taker. Számoljuk, és ne tegyük, mintha mi is elvehetnénk azt a likviditást; valaki már elvitte.
  4. Ha a trade liquidationként van címkézve, az valódi size, és ez az utolsó size, amit bizonyítéknak akarsz használni arra, hogy te tudsz 25,000-et klippelni. A kényszerített order veled versenyez.

A snapshotok egy kicsit hazudnak. Ami 100ms-on belül teljesül és újratöltődik, szellemnek látszik, és néhány valódi market-maker ennyire gyorsan cancel-replace-el. Később mintavételeztünk pár perc 10ms-os könyvet, és a wash arány pár pontot mozdult, nem a kétszeresére. Pár pontot elviselek. Azt nem, hogy a tőzsde volumen-tickerét likviditási népszámlálásként kezeljem.

Az AggTrades már összevonja, ha egy taker több makert üt ugyanazon az áron. Két wash-elő subaccountot nem vonnak össze. Ha a „tiszta” feeded aggregált trade, ez a probléma akkor is megvan. Csak kevesebb sorral.

És a ticker API 24h volumene ugyanaz a koszos összeg, késleltetve, ezért szeretik a research agentek. Egy mező. Mindig ott van. Úgy néz ki, mint egy feature. Ez egy marketingstatisztika, ami véletlenül bent van a market-data protobufban.

Ha egy volumenszámot nem lehet a könyv változásához egyeztetni, nincs helye kapacitásellenőrzésben, impaktmodellben vagy univerzumfilterben. A 24h ticker ennek a számnak a legrosszabb másolata, mert már össze van adva, kerekítve, és meg van fosztva az időtől.

Csütörtök: a hét egy táblázatban

Öt session, ugyanaz a klip, ugyanaz a 20× szabály, ugyanaz a fill modell a backtestben. A paper fill arány a kitöltött notional osztva a szándékolt notionallal azokra az orderekre, amelyeket abban a sessionben ténylegesen elküldtünk. A hétfői paper üres, mert még a backtestben voltunk.

SessionTőzsdei szalagKönyvet mozdítóWash-szerűLiq. printekA filter engedtePaper fill
Hét$38.4m$22.6m$13.5m$2.3m41 / 48 szignáln/a
Ked$41.1m$24.2m$15.2m$1.7m36 / 400.61
Sze$29.6m$20.1m$8.1m$1.4m22 / 310.77
Csü$44.8m$25.6m$17.4m$1.8m39 / 440.54
Pén$33.2m$22.3m$9.4m$1.5m28 / 350.71

A wash-szerű printek a heti szalag 34%-át adták. Nem egyenletesen oszlottak el. Csütörtök, a session, amelyet az eredeti filter a legjobban kedvelt, volt a legkoszosabb. Ez az a hibamód, ami érdekel. A kapu nem csak átlagban túlozza el a likviditást. Szélesebbre nyílik azokon a napokon, amikor a wash botok dolgoznak, mert azokon a napokon néz ki a nyers szám a legegészségesebbnek.

Újrafuttattuk a backtestet csak a könyvet mozdító volumennel, ugyanazzal a 20× szorzóval. A szignálok a héten 198-ról 121-re estek. A kidobottak java azokban a csütörtök-szerű órákban ült, ahol a szalag hangos volt, a könyv teteje pedig 1,100 USDT. Az eredeti Sharpe 198 teljes fillt használt. Az újat nem fogom úgy idézni, mintha a stratégiáról szóló eredmény lenne. A fill modellről szóló eredmény: ha abbahagyod, hogy 25,000 USDT-t adj egy áron, ami a könyvben nem volt, az „edge” egy része csak olyan teljesült orderek, amelyek maradékok lettek volna.

Péntek: amit ténylegesen kiadunk, és amit kihagynék

A kapu, amit megtartottunk, unalmas. A görgetett, könyvet mozdító notionalnak, csak azokból a printekből számolva, amelyek size-t vettek le egy szintről, el kell érnie a klip 20×-át, és a döntési bár előtti bárokon mérjük, hogy az aktuális perc washe ne szavazhasson. A liquidation printek külön sapkát kapnak: ha a közelmúltbeli könyvet mozdító volumennek több mint a negyede liquidation, a stratégia leáll. A kényszerített flow valódi size, ami veled versenyez.

Az impakt ugyanazt a diétát kapta. A régi modell Kyle-lambdát következtetett ki a tőzsdei volumemből és a klipünkből. Ha washt etetsz vele, a lambda csökken, mert a piac mélynek tűnik. Ha könyvet mozdító volument etetsz, ugyanez a klip sokkal nagyobb hányada annak, ami ténylegesen megváltoztatta a könyvet. A paper slippage a következő néhány sessionön közelebb ült ehhez a csúnyább számhoz. Közelebb, nem azonos. Továbbra sem látjuk a queue-t, és egy 100ms-os fotó még mindig elszalaszt némi valódi size-t.

Amit legközelebb kihagynék, az az egész első hétfő. Ne a tickerrel kezdj, ne a 24h volumennel kezdj, ne hagyd, hogy az agent a nyers dollárvolument belerakja a feature store-ba és a kapuba, mintha ezek két ötlet volnának. Egy koszos sorozat, kétszer használva. Először építsd meg a könyvvel konzisztens szalagot, még akkor is, ha ez azt jelenti, hogy két napig kutatod az egyetlen mid-capet, mielőtt univerzumod lenne. Egy washre szűrt univerzum azoknak az érméknek a listája, amelyek jók abban, hogy nyüzsgőnek tűnjenek.

A másik kihagyás: bármely fill modell, amelyik egy átment volumenellenőrzést fillnek tekint. A keddi maradék volt a stratégia. A filter csak arra tud válaszolni, hogy „kereskedett-e valaki.” Arra nem, hogy „a 25,000-ed restel vagy eltűnik.” A második kérdéshez kell a könyv, egy maradék és egy time-in-force, ami egy másik napló, és amit ennek előtte kellett volna megírnunk.

wash tradingvolumenkriptóbacktestingpiaci mikrostruktúra
← Összes bejegyzés