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.
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.
- 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.
- 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.
- 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.
- 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.
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.
| Session | Tőzsdei szalag | Könyvet mozdító | Wash-szerű | Liq. printek | A filter engedte | Paper fill |
|---|---|---|---|---|---|---|
| Hét | $38.4m | $22.6m | $13.5m | $2.3m | 41 / 48 szignál | n/a |
| Ked | $41.1m | $24.2m | $15.2m | $1.7m | 36 / 40 | 0.61 |
| Sze | $29.6m | $20.1m | $8.1m | $1.4m | 22 / 31 | 0.77 |
| Csü | $44.8m | $25.6m | $17.4m | $1.8m | 39 / 44 | 0.54 |
| Pén | $33.2m | $22.3m | $9.4m | $1.5m | 28 / 35 | 0.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.
← Összes bejegyzés


