2026 m. rugsėjo 13 d. · vykdymas

Kiek delsos reikėtų pridėti prie atgalinio testavimo? Išmatavome kiekvieną savo milisekundę

Kiek delsos reikėtų pridėti prie atgalinio testavimo? Išmatavome kiekvieną savo milisekundę

Keturi skaičiai, visi išmatuoti mūsų pačių prekybos imitavimo sistemoje, pagal vieną strategiją, 1-minute BTCUSDT perpetual signalus, per 31 dieną ir 1,418 pavedimų. Mediana nuo žvakės uždarymo iki pavedimo patvirtinimo biržoje: 195 ms. 99-asis procentilis: 2,970 ms. Mediana 1% minučių, kai realizuotas kintamumas buvo didžiausias: 840 ms. O delsos reikšmė, kuri didžiąją praėjusių metų dalį buvo nurodyta atgalinio testavimo konfigūracijoje: 0.

195 msmediana nuo žvakės uždarymo iki pavedimo patvirtinimo
2,970 msp99, tas pats kelias
840 msmediana 1% didžiausio kintamumo minučių

Trys iš šių skaičių nuobodūs. Visi žino, kad nulis neteisingas, visi anksčiau ar vėliau jį pakeičia, o naują reikšmę beveik visada kas nors parenka iš nuojautos. 100 ms, 250 ms, „būkime atsargūs, 500“. Iš tiesų svarbus skaičius yra 840, nes jis rodo, kad delsa priklauso nuo rinkos būsenos, o rinkos būsenos, kai ji smarkiai išauga, sutampa su tomis, kai signalas mano aptikęs galimybę.

Kur pradingsta 195 milisekundės

Štai visas biudžetas, išmatuotas kiekviename etape naudojant monotoniško laikrodžio laiko žymas, užrašytas kiekviename žingsnyje. Serveris yra AWS egzempliorius ap-northeast-1 regione, tame pačiame regione kaip ir biržos galiniai taškai. Tai beveik geriausia, ką galima pasiekti be tiesioginio prisijungimo prie biržos infrastruktūros, mažmeninio tipo sąrankoje.

Etapas p50 p95 p99
Žvakės uždarymas → gautas WS kline-closed įvykis 128 ms 402 ms 1,940 ms
Išskaitymas + požymių būsenos atnaujinimas 3 ms 9 ms 28 ms
Sprendimas: modelio vertinimas + rizikos patikros 11 ms 22 ms 60 ms
Pavedimo pateikimas → biržos patvirtinimas 47 ms 180 ms 1,100 ms
Nuo pradžios iki galo (išmatuota, nesumuota) 195 ms 690 ms 2,970 ms

Prieš pereinant prie įdomiosios dalies, verta atkreipti dėmesį į du dalykus. Pirma, medianos nesumuojamos: 128 + 3 + 11 + 47 = 189, o išmatuota bendra mediana yra 195. Procentiliai nėra sudedami, o jei delsą skaičiuosite sudėję kiekvieno etapo p99, gausite 3,128 ms, nors tikrasis p99 yra 2,970. Šiuo atveju skirtumas nedidelis, bet kai etapai koreliuoja priešinga kryptimi, rezultatas gali būti visiškai klaidingas. Matuokite visą kelią.

Antra, pažvelkite į pirmą eilutę. Du trečdaliai medianinio biudžeto praleidžiami laukiant, kol birža praneš apie žvakės uždarymą. Tai ne tinklas, ne jūsų kodas ir ne pavedimų nukreipimas. Birža sujungia sandorius į kline, nusprendžia, kad minutė baigėsi, ir išsiunčia pranešimą. Prieš išsiunčiant susidaro eilė, kuria dalijasi visi kiti to srauto prenumeratoriai.

Tie 840

Suskirsčius visus 1,418 pavedimų pagal signalo žvakės realizuotą kintamumą, pasiskirstymas išsiskiria.

Signalo žvakės kintamumo grupė Pavedimai Bendra p50 delsa Bendra p99 delsa
Apatinis kvartilis 201 141 ms 488 ms
Viduriniai du kvartiliai 796 183 ms 1,210 ms
Viršutinis kvartilis 407 312 ms 2,880 ms
1% visų minučių su didžiausiu kintamumu 14 840 ms 4,100 ms

Visų etapų sparta prastėja kartu, todėl poveikis kaupiasi. Biržos agregavimo ir transliavimo eilės apkrova priklauso nuo prekybos variklio apkrovos, tad minutės, per kurią įvyko 11,000 sandorių, duomenys išsiunčiami vėliau nei minutės su 600 sandorių. Tuo pačiu metu jūsų procesas apdoroja daugiau gylio atnaujinimų ir sandorių pranešimų, todėl požymių atnaujinimas, paprastai trunkantis 3 ms, užima 28. REST pavedimų kelias konkuruoja su visų kitų skubiais pavedimais, tad kartais gaunate 503 klaidą ir bandote dar kartą, o tai savaime kainuoja visą sekundę. Mūsų imtyje koreliacijos koeficientas tarp sandorių skaičiaus signalo žvakėje ir bendros delsos buvo 0.41. Ne itin didelis. Pakankamas, kad nekintanti reikšmė taptų netinkama.

O strategijos, kurios pereina pirminę atranką, dažniausiai prekiauja pramušimais, apsisukimais, kainų neatitikimais ir likvidacijų kaskadomis. Jos suveikia būtent toje grupėje, kurioje delsa didžiausia. Impulso signalas, suveikiantis tik tada, kai per minutę kaina pajuda 40 bps, iš esmės užtikrina, kad jį aptarnaus lėčiausia jūsų sistemos versija.

Kartą visą dieną aiškinomės, kodėl maždaug tuo pačiu metu kiekvieną naktį pasitaikydavo 3.6 sekundės išskirtinis vėlavimas. Paaiškėjo, kad logrotate nukopijuodavo ir sutrumpindavo 2 GB failą tame pačiame EBS tome, į kurį procesas rašė, ir taip sustabdydavo įvykių ciklą. Rinka buvo niekuo dėta. Pirmiausia matuokite, tik tada kaltinkite rinkos mikrostruktūrą.

Kaip tai veikia sandorio įvykdymą

Kol laukiate, kaina slenka. Atsitiktinę minutę vidutinis nepalankus kainos pokytis per mūsų medianinę 195 ms delsą buvo apie 1.1 bps prieš signalo kryptį. Viršutinio kvartilio minutėmis, kai delsa siekė 312 ms, jis sudarė 5.8 bps. Minutėmis, patenkančiomis į didžiausio 1% kintamumo grupę, esant 840 ms delsai, nepalankus kainos poslinkis iki pavedimui pasiekiant pavedimų knygą siekė apie 14 bps.

BTC perpetual sandoriuose spredo įtaka čia beveik nejuntama: vienas žingsnis ties 84,000 kotiruote yra 0.012 bps, tad nuostolį lemia nepalankus kainos poslinkis, o ne pavedimo įvykdymo kaina peržengiant spreadą. Perkelkite tą pačią strategiją į vidutinės kapitalizacijos perpetual sandorį ir atsiranda antras veiksnys: mūsų imtyje geriausios pirkimo ir pardavimo kainos spreadas išaugo nuo 1.4 bps ramiomis minutėmis iki 6.2 bps didžiausio kvartilio minutėmis, o gylis prie geriausios kainos sumažėjo daugiau nei perpus. Dėl tos pačios priežasties vienu metu patiriate kainos poslinkio, didesnio spreado ir mažesnio gylio poveikį.

Kai tas pačias 31 dieną pakartojome su kiekvienai žvakei sąlygine delsa, o ne fiksuota 200 ms, vidutinė įėjimo kaina atgaliniame teste pablogėjo 3.1 bps. Beveik visas pokytis teko 9% sandorių. Įėjimo kainų skirtumas tarp atgalinio testo ir prekybos imitavimo sumažėjo nuo 4.2 bps iki 0.9 bps. Tos strategijos Sharpe IS sumažėjo nuo 1.7 iki 1.1. Tai sąžiningas skaičius ir toks jis buvo visą laiką.

Kokią reikšmę tada įrašyti į konfigūraciją

Ne vieną skaičių. Dabar darome taip:

  1. Imkite imtį, o ne nustatykite reikšmę. Kiekvienam imituojamam pavedimui delsą parinkite iš empirinio pasiskirstymo, atsižvelgdami į tos žvakės aktyvumą: pakanka sandorių skaičiaus ir absoliučios grąžos, kuriuos jau pateikia standartinis kline. Apskaičiuokite atskirai kiekvienai biržai ir pavedimo tipui, perskaičiuokite kas mėnesį.
  2. Išsaugokite pasiskirstymo uodegą. Nepritaikykite lognormaliojo skirstinio ir nelaikykite darbo baigtu: p99 lemia pakartotinių bandymų virtinės ir GC pauzės, kurių joks tolygus pasiskirstymas neatkuria. Naudojame empirinius kvantilius, o virš p95 esančią uodegą parenkame pakartotinai iš imties.
  3. Delsa taikoma ir atšaukimams. Stop pavedimo pakeitimui ar apsidraudimo pavedimo atšaukimui galioja ta pati delsa, o greitoje rinkoje jūsų atšaukimo pavedimas lenktyniauja su įvykdymu. Jei simuliatorius atšaukia iškart, jūsų rizikos modelis neatitinka tikrovės.
  4. Pridėkite pasenusių signalų filtrą ir jį simuliuokite. Mes atmetame kiekvieną signalą, kurio žvakė gavimo metu yra senesnė nei 1.5 sekundės. Tai realus elgesys, turintis realią kainą: jis nepastebimai pašalina sandorius, todėl tokius pačius sandorius turi pašalinti ir atgalinis testas.
  5. Iš naujo kalibruokite pagal prekybos imitavimo duomenis. Prekyba imituojant realią prekybą suteikia tikrą atskaitos tašką. Užrašykite kiekvieno pavedimo keturių etapų laiko žymas ir kas savaitę palyginkite pasiskirstymus su simuliatoriaus prielaidomis.

Kitos turto klasės, ta pati problema. JAV akcijos: konsoliduota kotiruočių juosta prideda savo agregavimo delsą prie brokerio delsos, kuri dėl tos pačios priežasties padidėja augant pranešimų srautui. Prognozių rinkos: daugumoje platformų pavedimai pateikiami tik per REST, o mūsų matuotos medianos, nesiekusios 100 ms, per rezultatų paskelbimo įvykį išauga iki kelių sekundžių, kai visi dalyviai prisijungia vienu metu. Kriptovaliutų opcionai: kotiruotė, pagal kurią nustatote kainą, gali būti 2 sekundėmis pasenusi būtent tą minutę, kai pajuda bazinio turto kaina.

Bendra klaidos esmė – vykdymo parametrą laikyti nepriklausoma konstanta, nors jis priklauso nuo to paties būsenos kintamojo, kuris lemia jūsų signalą. Mokesčiai elgiasi nuspėjamai, finansavimo mokėjimai irgi, o delsa – ne. Jei iš viso to įsiminsite vieną skaičių, įsiminkite santykį: mūsų p99 yra penkiolika kartų didesnis už medianą, o signalai neproporcingai dažnai atkeliauja arti p99 ribos.

Įdiekite laiko žymų fiksavimą tuose keturiuose etapuose. Tai vienos popietės darbas, kuris apie jūsų strategiją pasakys daugiau nei dar viena parametrų paieškos savaitė.

delsaatgalinis testavimasprekyba imituojant realią prekybąvykdymaskriptovaliutų ateities sandoriai
← Visi įrašai