Mēs atkārtoti palaidām saglabātu atpakaļtestu un ieguvām citu kapitāla līkni. Tas pats stratēģijas kods, tas pats datumu diapazons, tas pats simbols. Beigu atlikums atšķīrās par 1.8%, un 3 darījumi bija pārbīdījušies par 1 sveci.
Ar to pietiek, lai pētniecības rezultātam būtu grūti uzticēties. Ja komandas biedrs, jūs pats nākotnē vai simulētās tirdzniecības pakalpojums nespēj atkārtot izpildi, nevar pateikt, vai izmaiņas uzlaboja stratēģiju vai tikai mainīja eksperimentu. Lūk, kā mēs soli pa solim meklējām novirzes cēloni.
1. diena: mēs pierakstījām, ko nozīmē “tā pati izpilde”
Mūsu pirmā kļūda bija uzskatīt, ka stratēģijas fails ir pats eksperiments. Tā nebija. Izpilde bija atkarīga arī no ievades datiem, dzinēja versijas, kalendāra, instrumentu metadatiem un izpildes iestatījumiem. Kods aprakstīja tikai vienu aprēķina daļu.
Pirms kaut ko mainīt, izveidojām izpildes manifestu. Tajā ierakstījām stratēģijas komitu, datu momentuzņēmumu identifikatorus, datumu diapazonu, tirdzniecības vietu, komisijas grafiku, finansējuma avotu, izpildes modeli un programmatūras versijas. Saglabājām arī izveidotos rīkojumus un izpildes, jo kapitāla līkne viena pati neparāda, kur abas izpildes pirmoreiz atšķīrās.
| Artefakts | Kas jāreģistrē | Kāpēc tas ir svarīgi |
|---|---|---|
| Tirgus dati | Momentuzņēmuma ID, shēmas versija, korekcijas | Piegādātāji labo vēstures datus un pārskata korporatīvos notikumus |
| Izpilde | Komisijas līmenis, finansējuma laika rinda, izpildes un ietekmes iestatījumi | Noklusējuma iestatījumi un konta pieņēmumi maina rezultātus |
| Izpildvide | Koda komits, dzinēja un atkarību versijas | Bibliotēkas var mainīt secību, noapaļošanu vai indikatorus |
| Rezultāts | Rīkojumi, izpildes, pozīcijas un rādītāji | Parāda, kur izpildes sāk atšķirties |
2. diena: mēs salīdzinājām darījumus, nevis Sharpe
Kopsavilkuma rādītāji novērsa uzmanību. Abām izpildēm Sharpe bija gandrīz vienāds, taču izpildes žurnāli atklāja pirmo neatbilstību finansējuma norēķina brīdī. Vienā izpildē likmi piemēroja pozīcijai, kas bija atvērta norēķina laika zīmogā; otrā — pozīcijai pēc līdzsvarošanas šajā laika zīmogā.
Stratēģijas kods nebija mainījies. Bija mainījusies dzinēja notikumu secība. Neliels versijas atjauninājums padarīja secību skaidri noteiktu, turpretī iepriekš tā bija atkarīga no tā, kā sakārtojās 2 notikumi.
Mēs atjauninājām izpildes līgumu, skaidri nosakot secību: vispirms finansējumu piemēro pozīcijai, kas tika turēta līdz norēķinu brīdim, pēc tam apstrādā stratēģijas lēmumus šim laika zīmogam. Precīzā kārtība var atšķirties atkarībā no tirdzniecības vietas un dzinēja. Kļūda ir atstāt to nenoteiktu.
3. diena: izrādījās, ka “tas pats” datu fails ir atšķirīgs
Pēc notikumu secības fiksēšanas atlikušās neatbilstības koncentrējās dažos akciju darījumos. Piegādātājs bija izlabojis vēsturisku akciju sadalīšanas korekciju. Mūsu failam bija tāds pats nosaukums un rindu skaits kā iepriekš, tāpēc tas izskatījās nemainīgs.
Tagad katram nemaināmajam datu momentuzņēmumam izveidojam kontrolsummu un kopā ar to saglabājam korekciju politiku. Jaucējvērtība pasaka, vai baiti ir mainījušies, bet neizskaidro, kāpēc. Tāpēc manifestā norādām arī avotu, izgūšanas laiku un transformācijas versiju. Datiem, kas tiek pārskatīti, šī informācija ir daļa no rezultāta.
Reproducējamam atpakaļtestam jāspēj atbildēt uz jautājumu: “Kuru pagātnes versiju tas redzēja?”
4. diena: mēs atradām vienu klusu noklusējuma iestatījumu
Pēdējā atšķirība bija maker komisija, kas bija iestatīta uz 0, jo stratēģijas konfigurācijā šī lauka nebija. Jaunāks dzinējs piemēroja konta noklusējuma komisiju. Šis viens noklusējuma iestatījums pietiekami mainīja darījumus ar nelielu peļņas robežu, lai izskaidrotu lielāko daļu beigu atlikuma starpības.
Mēs skaidri norādījām ekonomiski nozīmīgos iestatījumus un likām dzinējam ierakstīt atrisināto konfigurāciju izpildes žurnālā. Noklusējuma iestatījumi ir ērti izpētes laikā. Tie nav drošs pamats, salīdzinot rezultātus dažādos laikos.
Ko nākamreiz izlaistu
Pusstundu pavadījām, salīdzinot kopējos rādītājus, pirms apskatījām pirmo atšķirīgo izpildi. Nesāciet ar to. Sakārtojiet abus notikumu žurnālus pēc laika zīmoga un salīdziniet pirmo novirzi; vēlākās atšķirības bieži izriet no šī viena cēloņa.
Izlaistu arī domu, ka ar konteinerattēlu vien pietiek, lai izpilde būtu reproducējama. Tas fiksē lielu daļu programmatūras vides, taču ne ārēju datu failu, izpildes laikā izgūtu komisiju grafiku vai piegādātāja pārskatītos vēstures datus.
Kad atpakaļtests mainās, saglabājiet abu izpildes manifestus un žurnālus, pēc tam novērsiet pa vienam novirzes avotam. Noderīgs rezultāts nav tikai atkārtoti iegūstama līkne. Tas ir ieraksts, kas paskaidro, kuri dati un pieņēmumi to radīja un kāpēc nākamā izpilde var atšķirties.
← Visi raksti


