Neli arvu, kõik mõõdetud meie enda paberkaubanduse süsteemis: üks strateegia, 1-minutilised BTCUSDT tähtajatud lepingute signaalid, 31 päeva ja 1,418 orderit. Mediaanaeg küünla sulgumisest orderi börsipoolse kinnituseni: 195 ms. 99. protsentiil: 2,970 ms. Mediaan 1% minutite hulgas, kus realiseeritud volatiilsus oli suurim: 840 ms. Ja latentsuskonstant, mis oli suurema osa eelmisest aastast järeltesti seadistuses: 0.
Kolm neist arvudest on igavad. Kõik teavad, et null on vale, kõik asendavad selle varem või hiljem millegagi ning see miski on peaaegu alati konstant, mille keegi kõhutunde järgi valis. 100 ms, 250 ms, „oleme konservatiivsed, paneme 500”. Tegelikult loeb 840, sest see näitab, et latentsus sõltub turuolukorrast, ning turuolukorrad, kus latentsus hüppeliselt kasvab, on samad olukorrad, kus su signaal arvab, et on midagi leidnud.
Kuhu need 195 millisekundit kuluvad
Siin on täielik eelarve, mõõdetud etappide kaupa, kasutades igas punktis monotoolse kella ajatemplitega märgendeid. Server on AWS-i eksemplar piirkonnas ap-northeast-1, samas piirkonnas kauplemiskoha otspunktidega. Mitteko-lokatsiooniga tavakasutaja seadistuse kohta on see ligikaudu parim võimalik.
| Etapp | p50 | p95 | p99 |
|---|---|---|---|
| Küünla sulgumine → WS-i kline-closed sündmuse saabumine | 128 ms | 402 ms | 1,940 ms |
| Parsimine + tunnuste oleku uuendamine | 3 ms | 9 ms | 28 ms |
| Otsus: mudeli hindamine + riskikontrollid | 11 ms | 22 ms | 60 ms |
| Orderi esitamine → börsi kinnitus | 47 ms | 180 ms | 1,100 ms |
| Otsast lõpuni (mõõdetud, mitte kokku liidetud) | 195 ms | 690 ms | 2,970 ms |
Enne huvitava osa juurde asumist tasub tähele panna kaht asja. Esiteks mediaanid ei liitu: 128 + 3 + 11 + 47 = 189, mõõdetud otsast lõpuni mediaan aga on 195. Protsentiile ei saa liita. Kui koostad latentsushinnangu etappide p99-de summana, saad 3,128 ms, samas kui tegelik p99 on 2,970. Siin on see piisavalt lähedal, kuid kui etapid on vastassuunas korreleeritud, võib tulemus olla täiesti vale. Mõõda kogu teekonda.
Teiseks vaata ülemist rida. Kaks kolmandikku mediaanlatentsusest kulub sellele, et börsilt jõuaks teade küünla sulgumise kohta sinuni. Mitte võrgule, mitte sinu koodile ega orderi suunamisele. Kauplemiskoht koondab tehingud kline-küünlaks, otsustab, et minut on läbi, ja edastab selle. Enne edastamist on järjekord, mida jagad kõigi teiste sama voo tellijatega.
840
Jaota kõik need 1,418 orderit signaali tekitanud minuti realiseeritud volatiilsuse järgi jaotusklassidesse ning jaotus muutub hoopis teistsuguseks.
| Signaaliküünla volatiilsusklass | Ordereid | Otsast lõpuni p50 | Otsast lõpuni p99 |
|---|---|---|---|
| Alumine kvartiil | 201 | 141 ms | 488 ms |
| Kaks keskmist kvartiili | 796 | 183 ms | 1,210 ms |
| Ülemine kvartiil | 407 | 312 ms | 2,880 ms |
| Kõigi minutite ülemine 1% | 14 | 840 ms | 4,100 ms |
Kõik etapid aeglustuvad korraga ja seetõttu kuhjub mõju. Kauplemiskoha koondamis- ja edastusjärjekorda koormab sobitusmootor: minut, mille jooksul tehakse 11,000 tehingut, jõuab kohale hiljem kui minut, mil tehakse 600. Samal ajal töötleb sinu protsess rohkem orderbooki sügavuse uuendusi ja tehingute andmeid, nii et tavaliselt 3 ms kestev tunnuste uuendamine võtab 28 ms. REST-orderite teekond konkureerib kõigi teiste paanikaga ning aeg-ajalt näed 503-t ja korduskatset, mis läheb maksma terve sekundi. Meie valimi signaaliküünla tehingute arvu ja otsast lõpuni latentsuse korrelatsioonikordaja oli 0.41. Mitte üüratu. Piisav, et konstant tuksi keerata.
Ja esialgse sõela läbivad strateegiad on valdavalt need, mis kauplevad läbimurdeid, pöördeid, hinnahälbeid ja likvideerimisahelaid. Need käivituvad just selles jaotusklassis, kus latentsus on kõige suurem. Momentum-signaal, mis käivitub ainult siis, kui minutis toimus 40 bps suurune liikumine, on struktuurselt seadistatud nii, et seda teenindab alati sinu süsteemi kõige aeglasem versioon.
Kulutasime kunagi terve päeva, et uurida 3.6-sekundilist viivitust, mis ilmnes ligikaudu igal ööl samal ajal. Süüdlane oli logrotate: see kopeeris ja tühjendas 2 GB faili samal EBS-kettal, kuhu protsess kirjutas, ning peatas sündmuste tsükli. Turg polnud süüdi. Mõõda kõigepealt, alles siis süüdista turu mikrostruktuuri.
Mida see täitmisega teeb
Ootamise ajal hind liigub. Juhuslikul minutil oli keskmine ebasoodne hinnaliikumine meie 195 ms mediaanlatentsuse jooksul signaali suuna suhtes umbes 1.1 bps. Ülemise kvartiili minutitel, mil latentsus oli 312 ms, oli see 5.8 bps. Ülemise 1% minutitel, mil latentsus oli 840 ms, oli ebasoodne hinnanihe ligikaudu 14 bps enne, kui order üldse orderiraamatusse jõudis.
BTC tähtajatutel lepingutel spread siin peaaegu ei mõjuta: 84,000 hinnaga noteeringu puhul on üks hinnasamm 0.012 bps, seega tuleb kahju ebasoodsast hinnanihkest, mitte spreadi ületamise kulust. Liigu sama strateegiaga keskmise turuväärtusega tähtajatu lepingu juurde ja teine tegur ärkab ellu: meie valimis kasvas parima ostu- ja müügihinna vahe rahulikel minutitel 1.4 bps-lt ülemise kvartiili minutitel 6.2 bps-ni ning selle hinnataseme sügavus kahanes üle poole. Maksad korraga hinnanihke, laiema spreadi ja väiksema sügavuse eest, sest neid põhjustab sama tegur.
Kui mängisime samad 31 päeva uuesti läbi, kasutades fikseeritud 200 ms asemel küünlapõhist tingimuslikku latentsust, halvenes järeltesti keskmine sisenemishind 3.1 bps võrra, peaaegu täielikult 9% tehingutes. Järeltesti ja paberkaubanduse sisenemishindade erinevus vähenes 4.2 bps-lt 0.9 bps-ni. Selle strateegia IS Sharpe langes 1.7-lt 1.1-ni — see on aus tulemus, mis oli tegelik kogu aeg.
Mida siis seadistusse panna
Mitte üht skalaarväärtust. Nüüd teeme nii:
- Vali valimist, ära määra fikseeritud väärtust. Vali iga simuleeritud orderi latentsus empiirilisest jaotusest, mis arvestab selle küünla aktiivsust — tehingute arvust ja absoluuttootlusest piisab, mõlemad on tavalises kline-küünlas juba olemas. Sobita mudel iga kauplemiskoha ja orderitüübi jaoks eraldi ning sobita see kord kuus uuesti.
- Säilita jaotuse saba. Ära sobita lognormaaljaotust ja pea tööd lõpetatuks; p99 peitub kordustormides ja GC-pausides, mida ükski sujuv jaotus ei jäljenda. Me kasutame empiirilisi kvantiile ning võtame p95-st kõrgema saba uuesti valimisse.
- Latentsus kehtib ka tühistamistele. Stopi asendamisel või riskimaanduse orderi tühistamisel kehtib sama viivitus ning kiirel turul võistleb tühistamine orderi täitumisega. Kui sinu simulaator tühistab kohe, on su riskimudel väljamõeldis.
- Lisa aegunud signaali kontroll ja simuleeri seda. Meie süsteem jätab kõrvale iga signaali, mille küünal on saabumise hetkeks vanem kui 1.5 sekundit. See on tegelik käitumine, millel on tegelik hind — see eemaldab tehinguid märkamatult ning järeltest peab eemaldama täpselt samad tehingud.
- Kalibreeri paberkaubanduse järgi uuesti. Paberkaubandusest saad tegeliku võrdlusmaterjali. Salvesta iga orderi puhul ajatemplid kõigist neljast etapist ja võrdle jaotusi igal nädalal simulaatori eeldustega.
Sama probleem esineb ka teistes varaklassides. USA aktsiad: konsolideeritud andmevoog lisab maakleri viivitusele enda koondamisviivituse, mis kasvab sõnumisageduse surve all samal struktuursel põhjusel. Prognoositurud: enamik kauplemiskohti võimaldab orderi esitamist ainult REST-i kaudu ning oleme mõõtnud alla 100 ms mediaane, mis venivad mitme sekundini, kui tulemuse selgumise sündmus saabub ja kõik üritavad korraga turule jõuda. Krüptooptsioonid: noteering, mille alusel hinda arvutad, võib olla täpselt sel minutil, kui alusvara liikus, kaks sekundit vana.
Üldine viga on käsitleda täitmise parameetrit sõltumatu konstandina, kuigi see sõltub samast muutujast, mis juhib su signaali. Tasud käituvad etteaimatavalt, rahastamine käitub etteaimatavalt, latentsus mitte. Kui sellest kõigest ühe arvu meelde jätad, siis jäta meelde suhe: meie p99 on mediaanist 15 korda suurem ja meie signaalid saabuvad ebaproportsionaalselt sageli p99 lähedal.
Lisa need neli mõõtepunkti. See võtab pärastlõuna ja annab su strateegia kohta rohkem teada kui järjekordne nädal parameetrite otsimist.
← Kõik postitused


