V ponedeljek smo naredili odgovorno stvar. Agent je imel momentum strategijo na mid-cap USDT-M perpetualu, clip po 25,000 USDT na posel, in prvi backtest brez filtra obsega je vsak signal zapolnil, kot da bi bila knjiga BTC. Zato smo dodali učbeniško zapornico: dvajset 1-minutnih barov dolarskega obsega je moralo preseči dvajsetkratnik clipa, preden je naročilo smelo ven. Dvajset minut, pol milijona dolarjev traku. Kovanec je na živahnem dnevu natisnil približno $40 million. Filter je obdržal večino signalov. Krivulja kapitala je postala manj nazobčana. Poslali smo jo na paper.
Enajst ur pozneje je nakup 25,000 USDT pojedel 8,400 bida in se ustavil. Obseg dvajsetih barov v tisti minuti je bil $1.14 million. Filter je rekel ja.
Ponedeljek: filter, ki nam je dal občutek poštenosti
Opomba agenta na pull requestu je bila "dodan preizkus kapacitete, 20× notional." Odobril sem jo. Ta stavek sem že odobril. To je tista vrsta pravila, ki ga napišeš, potem ko ti nekdo pokaže backtest, ki je trgoval kovanec z $4,000-OI v clipih po $50,000, in vsi v sobi naredijo grimaso, in dodaš množitelj obsega, da se to ne more ponoviti.
V ponedeljek je pravilo naredilo, kar v backtestu vedno naredi. Zavrgalo je mrtve ure. Obdržalo je ure, kjer je borzina lastna številka obsega zgledala glasna. Promet je padel približno za tretjino. Povprečna velikost posla je ostala 25,000, ker je fill model strahopetec: vzame celoten clip po last-plus-a-few-bps, kadarkoli je zapornica odprta. Nihče ni vprašal knjige, ali 25,000 tam sploh sedi.
Še vedno se zdrznem, ko je 24h obseg kovanca okrogla številka ob tankem open interestu. To je ostanek iz 2021, ko so Discord boti za "market making" bili dva podračuna, ki sta trgovala med seboj in v #brag lepljala posnetek obsega. Trak zgleda kot zabava. Knjiga je karton. Rekel sem si, da je 20× filter na 1-minutnih barih način, kako to prerasteš. Ni. To je način, kako karton povprečiš v bolj gladko številko.
Torek: paper, potem ostanek
Paper se je začel prijazno. Prvih pet clipov se je zapolnilo v 2–4 skokih navzdol po asku. Grdo, ampak opravljeno. Potem 14:07 UTC, long signal, 25,000 USDT, vrh knjige 1,100, naslednja raven 2,400, potem zrak. Dobili smo 8,400 zapolnjenih kot taker in 16,600 resting. Štirideset sekund pozneje se je ostanek preklical na našem lastnem time-in-force. Strategija je mislila, da je long za cel clip. Račun je bil long za tretjino enega.
Ampak filter je rekel ja. Potegnil sem bar. Dolarski obseg v dvajsetih minutah do 14:07 je bil $1.14 million, udobno nad $500k. Približno $380k od tistih $1.14 million je bilo parov printov: ista cena, ista velikost, nasprotne aggressor zastavice, 2–8 milisekund narazen, in bid/ask velikost na tisti ceni se ni premaknila. Tisti posli so plačevali provizije drug drugemu. Niso nam ponudili luknje za 25,000 USDT.
Sreda: usklajevanje traku s knjigo
Sreda je bila počasni dan, tisti, za katerega bi naslednjič rezerviral dvakrat toliko časa. Vzeli smo pet delovnikov poslov in L2 posnetkov na istem perpu, 100ms fotografije knjige, in vsak print klasificirali glede na knjigo posnetek prej in posnetek potem.
- Če je velikost na ceni posla padla približno za velikost posla, se je dotaknil knjige. Prištej ga.
- Če sta nakup in prodaja enake velikosti izpisana na eni ceni brez spremembe knjige, imenuj to wash in to izloči iz vsake številke kapacitete.
- Če je posel prehodil več ravni in so te ravni izginile, je to pravi taker. Prištej ga in se ne pretvarjaj, da lahko tudi ti vzameš to likvidnost; nekdo jo je že vzel.
- Če je posel označen kot likvidacija, je to prava velikost, in je zadnja velikost, ki jo želiš uporabiti kot dokaz, da lahko ti clipaš 25,000. Prisilno naročilo te prehiteva.
Posnetki malo lažejo. Vse, kar se zapolni in obnovi znotraj 100ms, zgleda kot duh, in nekateri pravi market-makerji cancel-replace tako hitro. Pozneje smo vzorčili nekaj minut 10ms knjig in delež washa se je premaknil za par točk, ne za faktor dva. S par točkami lahko živim. Ne morem živeti s tem, da borzni ticker obsega obravnavam kot popis likvidnosti.
AggTrades že strnejo enega takerja, ki zadene več makerjev na eni ceni. Ne strnejo dveh podračunov, ki delata wash. Če je tvoj "čisti" feed agregirani posli, imaš še vedno to težavo. Imaš jo samo z manj vrsticami.
In 24h obseg na ticker API je ista umazana vsota, zakasnjena, zato ga raziskovalni agenti obožujejo. Eno polje. Vedno prisotno. Zgleda kot feature. Je marketinška statistika, ki je pač v market-data protobufu.
Četrtek: teden v eni tabeli
Pet sej, isti clip, isto 20× pravilo, isti fill model v backtestu. Paper fill razmerje je zapolnjeni notional, deljen z namenjenim notionalom, za naročila, ki smo jih tisto sejo res poslali. Ponedeljakov paper je prazen, ker smo bili še v backtestu.
| Seja | Borzni trak | Premik knjige | Wash-podobno | Liq. printi | Filter rekel pojdi | Paper fill |
|---|---|---|---|---|---|---|
| Pon | $38.4m | $22.6m | $13.5m | $2.3m | 41 / 48 signalov | n/a |
| Tor | $41.1m | $24.2m | $15.2m | $1.7m | 36 / 40 | 0.61 |
| Sre | $29.6m | $20.1m | $8.1m | $1.4m | 22 / 31 | 0.77 |
| Čet | $44.8m | $25.6m | $17.4m | $1.8m | 39 / 44 | 0.54 |
| Pet | $33.2m | $22.3m | $9.4m | $1.5m | 28 / 35 | 0.71 |
Wash-podobni printi so bili 34% tedenskega traku. Niso bili enakomerno razporejeni. Četrtek, seja, ki jo je izvirni filter imel najraje, je bila najumazanejša. To je failure mode, ki me zanima. Zapornica ne precenjuje likvidnosti samo v povprečju. Odpre se širše na dneve, ko wash boti delajo, ker so to dnevi, ko surova številka zgleda najbolj zdrava.
Backtest smo ponovno pognali samo z obsegom, ki premika knjigo, isti 20× množitelj. Signali so padli s 198 v tednu na 121. Veliko zavrženih je sedelo v tistih četrtkovskih urah, kjer je bil trak glasen in je bil vrh knjige 1,100 USDT. Izvirni Sharpe je uporabil 198 polnih zapolnitev. Novega ne bom navajal, kot da bi bil ugotovitev o strategiji. Je ugotovitev o fill modelu: ko nehaš podeljevati 25,000 USDT po ceni, ki je knjiga ni imela, je kos "edge" samo dokončana naročila, ki bi bila ostanki.
Petek: kar zares spustimo v produkcijo, in kar bi preskočil
Zapornica, ki smo jo obdržali, je dolgočasna. Drseči notional, ki premika knjigo, štet samo iz printov, ki so vzeli velikost z ravni, mora preseči 20× clipa, in merimo ga na barih pred odločitvenim barom, da wash trenutne minute ne more glasovati. Likvidacijski printi dobijo ločeno zgornjo mejo: če je več kot četrtina nedavnega obsega, ki premika knjigo, likvidacij, se strategija umakne. Prisilni tok je prava velikost, ki te prehiteva.
Impact je dobil isto dieto. Stari model je iz borznega obsega in našega clipa sklepal Kyle lambda. Nahrani ga z washom in lambda pade, ker trg zgleda globok. Nahrani ga z obsegom, ki premika knjigo, in isti clip je precej večji delež tistega, kar je knjigo res spremenilo. Paper slippage na naslednjih nekaj sejah je sedel bližje tisti grši številki. Bližje, ne enako. Še vedno ne vidimo vrste in 100ms fotografija še vedno zgreši nekaj prave velikosti.
Kar bi naslednjič preskočil, je celoten prvi ponedeljek. Ne začenjaj s tickerjem, ne začenjaj z 24h obsegom, ne pusti agentu, da surovi dolarski obseg da v feature store in v zapornico, kot da bi bili to dve ideji. Sta ena umazana serija, uporabljena dvakrat. Najprej zgradi trak, skladen s knjigo, tudi če to pomeni, da dva dni raziskuješ en sam mid-cap, preden imaš univerzum. Univerzum, filtriran po washu, je seznam kovancev, ki so dobri v tem, da zgledajo zaposleni.
Drugi preskok: vsak fill model, ki prestani preizkus obsega obravnava kot zapolnitev. Torkov ostanek je bila strategija. Filter lahko odgovori samo "ali je kdo sploh trgoval." Ne more odgovoriti "ali bo tvojih 25,000 počivalo ali izginilo." Tisto drugo vprašanje potrebuje knjigo, ostanek in time-in-force, kar je drug dnevnik, in tisti, ki bi ga morali napisati pred tem.
← Vse objave


