13. september 2026 · izvajanje

Kolikšno zakasnitev naj dodate testu za nazaj? Izmerili smo vsako svojo milisekundo

Kolikšno zakasnitev naj dodate testu za nazaj? Izmerili smo vsako svojo milisekundo

Štiri številke, vse izmerjene v našem sistemu za simulirano trgovanje, ena strategija, signali za 1-minutne trajne pogodbe BTCUSDT, 31 dni in 1,418 naročil. Mediana časa od zaključka sveče do potrditve naročila na borzi: 195 ms. 99. percentil: 2,970 ms. Mediana v 1 % minut z najvišjo realizirano volatilnostjo: 840 ms. In konstanta zakasnitve, ki je bila večino preteklega leta v konfiguraciji testa za nazaj: 0.

195 msmediana od zaključka sveče do potrditve naročila
2,970 msp99, ista pot
840 msmediana v minutah z volatilnostjo v zgornjem 1 %

Tri od teh številk so dolgočasne. Vsi vedo, da je ničla napačna, in jo prej ali slej zamenjajo z nečim; to je skoraj vedno konstanta, ki jo je nekdo izbral po občutku. 100 ms, 250 ms, »bodimo previdni, 500«. Številka, ki je res pomembna, je 840, ker pove, da je vaša zakasnitev odvisna od stanja trga, in ravno v stanjih trga, v katerih se močno poveča, vaš signal misli, da je našel priložnost.

Kam gre 195 milisekund

Tukaj je celoten proračun, izmerjen po posameznih fazah z monotoničnimi časovnimi žigi, zabeleženimi na vsakem koraku. Strežnik je instanca AWS v ap-northeast-1, v isti regiji kot končne točke borze, kar je za maloprodajno postavitev brez kolokacije skoraj najboljše, kar lahko dosežete.

Faza p50 p95 p99
Zaključek sveče → prejem dogodka WS kline-closed 128 ms 402 ms 1,940 ms
Razčlenitev + posodobitev stanja značilk 3 ms 9 ms 28 ms
Odločitev: vrednotenje modela + preverjanja tveganja 11 ms 22 ms 60 ms
Oddaja naročila → potrditev borze 47 ms 180 ms 1,100 ms
Od začetka do konca (izmerjeno, ne sešteto) 195 ms 690 ms 2,970 ms

Pred zanimivim delom velja omeniti dve stvari. Prvič, mediane se ne seštevajo: 128 + 3 + 11 + 47 = 189, izmerjena mediana od začetka do konca pa je 195. Percentili niso seštevalni; če oceno zakasnitve sestavite s seštevanjem p99 posameznih faz, dobite 3,128 ms, čeprav je dejanski p99 2,970. Tukaj je razlika majhna, v primeru nasprotno koreliranih faz pa je lahko ocena povsem napačna. Izmerite celotno pot.

Drugič, poglejte prvo vrstico. Dve tretjini mediane proračuna porabimo za čakanje, da nam borza sporoči, da se je sveča zaključila. Ne gre za omrežje, vašo kodo ali usmerjanje naročil. Borza združi posle v kline, določi, da je minute konec, in pošlje sporočilo. Pred tem sporočilom je čakalna vrsta, ki si jo delite z vsemi drugimi naročniki tega toka.

Teh 840

Če vseh teh 1,418 naročil razvrstite glede na realizirano volatilnost minute, v kateri je nastal signal, se porazdelitev povsem spremeni.

Razred volatilnosti sveče signala Naročila p50 od začetka do konca p99 od začetka do konca
Spodnji kvartil 201 141 ms 488 ms
Srednja kvartila 796 183 ms 1,210 ms
Zgornji kvartil 407 312 ms 2,880 ms
Zgornji 1 % vseh minut 14 840 ms 4,100 ms

Vse faze se poslabšajo hkrati, zato se učinki seštevajo. Čakalno vrsto za združevanje in oddajanje podatkov na borzi obremenjuje promet trgovalnega sistema, zato se minuta z 11,000 posli objavi pozneje kot minuta s 600 posli. Tudi vaš proces v istem časovnem oknu obdeluje več posodobitev globine trga in več izpisov poslov, zato posodobitev značilk, ki običajno traja 3 ms, traja 28. Pot REST za naročila tekmuje s paničnimi naročili vseh drugih, zato občasno naletite na napako 503 in ponovni poskus, kar vam vzame celo sekundo. Korelacijski koeficient med številom poslov v sveči signala in zakasnitvijo od začetka do konca je v našem vzorcu znašal 0.41. Ni zelo visok, a dovolj, da konstanta odpove.

Strategije, ki prestanejo začetni izbor, so skoraj vedno tiste, ki trgujejo s preboji, obrati, odkloni in likvidacijskimi kaskadami. Sprožijo se prav v razredu, kjer je zakasnitev najdaljša. Momentum signal, ki se sproži samo, ko se je minuta premaknila za 40 bps, je po zasnovi signal, ki ga bo vedno obdelala najpočasnejša različica vašega sistema.

Nekoč smo cel dan iskali vzrok za izstopajočo zakasnitev 3.6 sekunde, ki se je pojavljala približno vsak večer ob isti uri. Kriv je bil logrotate: 2 GB veliko datoteko je kopiral in praznil na istem nosilcu EBS, na katerega je proces zapisoval, zato se je zanka dogodkov ustavila. Trg ni bil kriv. Najprej merite, potem krivite mikrostrukturo.

Kako to vpliva na izvršitev naročila

Med čakanjem cena odstopa. V naključno izbrani minuti je bil povprečni neugodni premik v času naše mediane 195 ms približno 1.1 bps v nasprotni smeri od signala. V minutah zgornjega kvartila pri 312 ms je znašal 5.8 bps. V minutah zgornjega 1 % pri 840 ms pa približno 14 bps neugodnega premika, še preden naročilo sploh doseže knjigo naročil.

Pri trajnih pogodbah BTC razmik pri tem skoraj ne igra vloge: en korak cene pri kotaciji 84,000 znaša 0.012 bps, zato škodo povzroči neugoden premik, ne strošek prečkanja razmika. Če isto strategijo prenesete na trajno pogodbo srednje velike kriptovalute, postane pomemben še drugi dejavnik — razmik med najboljšima ponudbo in povpraševanjem je v našem vzorcu narasel z 1.4 bps v mirnih minutah na 6.2 bps v zgornjem kvartilu, globina pri najboljši ceni pa se je zmanjšala za več kot polovico. Plačate neugoden premik, širši razmik in manjšo globino hkrati, ker imajo vsi isti vzrok.

Ko smo istih 31 dni ponovno predvajali s pogojno zakasnitvijo za vsako svečo namesto s pavšalnimi 200 ms, se je povprečna vstopna cena v testu za nazaj poslabšala za 3.1 bps, skoraj v celoti zaradi 9 % poslov. Razlika med vstopnimi cenami v testu za nazaj in simuliranem trgovanju se je zmanjšala s 4.2 bps na 0.9 bps. Sharpe v vzorcu te strategije je padel z 1.7 na 1.1, kar je poštena številka in je to vedno bila.

Kaj torej dejansko vpišete v konfiguracijo

Ne skalarja. Zdaj uporabljamo naslednje:

  1. Vzorčite, ne določajte fiksne vrednosti. Zakasnitev za vsako simulirano naročilo vzorčite iz empirične porazdelitve, pogojene z aktivnostjo pripadajoče sveče — število poslov in absolutni donos zadostujeta, oba podatka pa sta že v standardni kline. Porazdelitev prilagodite enkrat za vsako borzo in vrsto naročila, nato pa jo vsak mesec znova ocenite.
  2. Ohranite rep porazdelitve. Ne prilagodite lognormalne porazdelitve in s tem končajte; v p99 so izbruhi ponovnih poskusov in premori GC, ki jih nobena gladka porazdelitev ne zajame. Uporabljamo empirične kvantile, nad p95 pa ponovno vzorčimo rep.
  3. Zakasnitev velja tudi za preklice. Zamenjava stop naročila ali preklic varovalnega naročila sta podvržena isti zakasnitvi, na hitrih trgih pa vaš preklic tekmuje z izvršitvijo. Če simulator preklic izvede takoj, je vaš model tveganja izmišljen.
  4. Dodajte varovalo za zastarelost in ga simulirajte. Mi zavržemo vsak signal, katerega sveča je ob prejemu starejša od 1.5 sekunde. To je resnično vedenje z resničnimi stroški — tiho odstrani posle, zato mora v testu za nazaj odstraniti iste posle.
  5. Znova umerjajte glede na simulirano trgovanje. Simulirano trgovanje vam da dejanske referenčne podatke. Za vsako naročilo zabeležite časovne žige vseh štirih korakov in vsak teden primerjajte porazdelitve s predpostavkami simulatorja.

Enaka težava v drugih razredih sredstev. Ameriške delnice: konsolidirani trak kotacij doda lastno zakasnitev združevanja poleg zakasnitve vašega posrednika, ta pa se ob obremenitvi s sporočili poveča iz istega strukturnega razloga. Napovedni trgi: večina borz omogoča oddajo naročil samo prek REST, izmerili pa smo mediane pod 100 ms, ki ob dogodku razrešitve zrastejo na več sekund, ko se vsi udeleženci pojavijo hkrati. Kripto opcije: kotacija, na podlagi katere določate ceno, je lahko v minuti, ko se je osnovno sredstvo premaknilo, stara že dve sekundi.

Splošna oblika napake je obravnavanje parametra izvršitve kot neodvisne konstante, čeprav je odvisen od iste spremenljivke stanja, ki poganja vaš signal. Provizije se vedejo predvidljivo; financiranje se vede predvidljivo; zakasnitev pa ne. Če si boste od vsega tega zapomnili eno številko, naj bo to razmerje: naš p99 je petnajstkrat večji od mediane, naš signal pa se nesorazmerno pogosto pojavi blizu p99.

Instrumentirajte vse štiri korake. To je popoldne dela, ki vam bo o strategiji povedalo več kot še en teden iskanja parametrov.

zakasnitevtestiranje za nazajsimulirano trgovanjeizvajanjekripto terminske pogodbe
← Vse objave