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.
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:
- 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į.
- 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.
- 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.
- 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.
- 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ė.
← Visi įrašai


