Ir jautājums, no kura izvairās ikviens backtests: vai tas pats kods, barots ar to pašu tirgu reāllaikā, būtu rīkojies tāpat? Uz to nevar atbildēt ar vēl vairāk backtestēšanas. Atbildi var iegūt tikai tad, ja stratēģiju darbina uz reāllaika datiem ar īstu izpildes semantiku un pēc tam pārbauda — darījumu pa darījumam —, vai abas pasaules sakrīt. Mēs šo pārbaudi veicam katru dienu automātiski, un tā ir bijusi visproduktīvākais kļūdu atradējs visā platformā.
Pirmā diena: uzbūvēt spoguli
Katra paaugstinātā stratēģija darbojas savā izolētajā reāllaika mezglā, patērējot īstas biržas plūsmas: reāllaika kotācijas izpildēm, reālus spredus, reālas sesiju stundas. Nekāda kopīga stāvokļa starp stratēģijām (to mēs iemācījāmies grūtā ceļā — kopīgs mezgls ļāva vienas stratēģijas pozīciju vaicājumiem noplūst citā). Katra izpilde tiek pierakstīta kopā ar signāla vērtību, kas to radīja.
Katru rītu: atkārtot un salīdzināt
Ikdienas darbs paņem katras stratēģijas papīra periodu, izlaiž identisko kodu cauri backtesta dzinējam par to pašu periodu uz kataloga datiem un saskaņo izpildes viena pret vienu: tā pati puse, tā pati laika zīmoga tolerance, tas pats apjoms. Rezultāts nav korelācija vai sajūta. Tā ir tabula: saskaņots, tikai papīrā, tikai atkārtojumā. Veselīga stratēģija sasniedz 54 no 55 saskaņotiem. Neveselīga precīzi parāda, kurš darījums atšķīrās un kad.
Kas salūza, tādā secībā, kā tas lūza
- Iesildīšanās izpildes. Reāllaika mezgls padeva vēsturi indikatoru iesildīšanai — un stratēģijas ar pielāgotiem sveču apstrādātājiem priecīgi tirgojās uz tās. Backtesti šos fantoma pieteikumus nekad neredzēja. Risinājums bija aizsargs iesniegšanas slānī, nevis labojums pašā stratēģijā, jo citādi katra stratēģija šo kļūdu manto.
- Secīga vairāku kāju iesildīšanās. Šķērsgriezuma stratēģija iesildīja vienu instrumentu vienlaikus; katra kāja redzēja tukšus kaimiņus, un enkurs nekad neinicializējās. Reāllaikā tā netirgojās nemaz; atkārtojumā tirgojās normāli. Nulle saskaņotu darījumu — bet to skaļi pateica tikai salīdzinājums.
- Tikšķu precizitātes avāriju cikli. Reāllaika aggTrade tikšķi pienāk citā precizitātē, nekā gaidīja smilškastes instruments. Mezgls avarēja ciklā uz apgalvojuma, kuru backtests nekad nespētu izraisīt, jo kataloga sveces jau ir normalizētas.
- Restarta amnēzija. Procesa restarti atkārtoti palaida pieteikšanās loģiku uz jau esošām pozīcijām — pārbalansēšanas stratēģijai restarts klusi kļuva par pārbalansēšanu. Reālā tirdzniecībā tā nav paritātes zemsvītras piezīme; tas ir sarkans karogs ar naudu pie tā.
Ievērojiet likumsakarību: neviena no šīm nav signāla kļūda. Tās visas ir izpildes robežas kļūdas — iesildīšanās, stāvoklis, precizitāte, restarti. Tieši šai kļūdu klasei backtesti ir strukturāli akli, jo backtestā backtesta dzinējs ir izpildes robeža.
Asimetrijas, ko saglabājam apzināti
Abas pasaules ar nolūku nav identiskas. Backtests PnL iekšienē iekasē modelētu pusspredu plus kvadrātsaknes ietekmi; papīrs izpildes cenā samaksā reālo spredu un ietekmes modeļa nav vispār. Modelētā spreda pievienošana papīram (vai reālā spreda pievienošana backtestiem) skaitītu divreiz. Paritāte nozīmē tos pašus lēmumus, tās pašas izpildes tolerances robežās — nevis bitu identisku PnL. Zināt, kuras atšķirības ir principiālas un kuras ir kļūdas, ir lielākā daļa no visas disciplīnas.
Backtests ir hipotēze. Papīra tirdzniecība ir eksperiments. Atkārtojuma paritāte ir laboratorijas žurnāls, kas pieķer jūs pašapmānā.
Ja jūs darbināt stratēģijas un regulāri nesalīdzināt reāllaika uzvedību ar atkārtoto uzvedību, jums ir kļūdu kategorija, ko nekad neesat redzējuši. Mēs atrodam pa vienai apmēram ik pēc pāris nedēļām, un katra no tām no backtesta iekšpuses bija neredzama.
← Visi raksti
