Praėjus 6 savaitėms po atgalinio testo, jį atlikome dar kartą, naudodami tą patį kodą, konfigūraciją ir datų intervalą. Galutinė nuosavo kapitalo vertė buvo kitokia. Skirtumas nebuvo didelis, bet jo pakako, kad Sharpe rodiklis sumažėtų nuo 1.31 iki 1.08 ir pasikeistų geriausiai atrodęs parametrų rinkinys.
Strategija nepasikeitė. Pasikeitė istoriniai duomenys. Duomenų tiekėjas pakoregavo kelių dienų sandorius ir žvakes, o pirmojo testo metu neišsaugojome tikslios įvesties momentinės kopijos. Kelias kitas dienas aiškinomės, ar naujas rezultatas atsirado dėl duomenų pataisos, duomenų apdorojimo klaidos, ar dėl tyrimo proceso, kurio negalėjome atkurti.
Pirmadienis: pakartotinio testo rezultatas nesutapo
Pirmasis požymis buvo nedidelis neatitikimas likvidžioje neatidėliotinų sandorių poroje. Pradinėje žvakėje aukščiausia kaina buvo 62,418. Pakartotinio testo žvakėje ji siekė 62,431. Skirtumas atrodė nereikšmingas, kol neišsiaiškinome, kur buvo strategijos įėjimo riba: tarp šių kainų. Pakitus vos kelioms žvakėms, pasikeitė signalai, o po kelių dienų – ir pozicijos.
Palyginome dienos sandorių skaičių ir nustatėme, kad neatitikimas prasidėjo vieną konkrečią dieną. Tada palyginome tos dienos žaliavinius įrašus. Dabartiniame tiekėjo atsakyme radome kelis pataisytus sandorius ir perskaičiuotą suvestinę žvakę. Atsakyme, kurį buvome gavę pirmą kartą, pakeitimų žurnalo nebuvo.
Tai įprasta duomenų eiga. Biržos taiso įrašus; tiekėjai užpildo spragas, pataiso klaidingus sandorius ir keičia agregavimo logiką. Kovo mėnesį pateikus užklausą dėl „sausio duomenų“, atsakymas gali skirtis nuo ankstesnio.
Antradienis: radome trūkstamą įrodymą
Paleidimo įraše buvome nurodę tiekėjo pavadinimą, simbolį ir datų intervalą. Tačiau neišsaugojome paties atsakymo ar kiekvienos įvesties duomenų dalies turinio maišos. Taigi galėjome įrodyti, ko prašėme, bet ne kokius baitus tiekėjas grąžino.
Suradome seniausius talpykloje išlikusius failus ir palyginome juos su dabartiniu atsakymu. Skirtumo nesukėlė koregavimas dėl akcijų skaidymo ar laiko juostos konvertavimas. Jį lėmė nedidelis pataisytų sandorių įrašų rinkinys, perėjęs per mūsų žvakių sudarymo procesą. Taip atmetėme vieną versiją, bet talpykla buvo nepilna, todėl vis dar negalėjome tiksliai atkurti kiekvienos paveiktos žvakės.
| Ką užfiksavome | Į kokį klausimą galėjome atsakyti | Ko trūko |
|---|---|---|
| Tiekėją, simbolį, datų intervalą | Kokią užklausą pateikė vykdymas | Atsakymo turinio |
| Duomenų apdorojimo versiją | Koks kodas sudarė žvakes | Tikslių įvesties įrašų |
| Vykdymo laiko žymą | Kada paleidome užduotį | Kokia tiekėjo duomenų versija tuo metu buvo prieinama |
Buvome laikę „ta pati užklausa“ ir „tie patys duomenys“ tuo pačiu dalyku. Dėl šios prielaidos eksperimentas atrodė atkuriamesnis, nei buvo iš tikrųjų.
Trečiadienis: pataisa pakeitė rezultatų interpretaciją
Pakartotinai apdorojome paveiktas datas, naudodami abi turimas duomenų versijas. Pataisytos žvakės panaikino 2 įėjimus ir vienu intervalu pastūmė vieną išėjimą. Šie 3 sandoriai paaiškino didžiąją Sharpe pokyčio dalį. Strategija jautriai reagavo į kelis stebėjimus netoli jos aktyvavimo ribos, nors bendroji kainų seka grafike atrodė beveik identiška.
Tai nereiškė, kad pradinis rezultatas buvo apgaulingas arba kad pataisytas rezultatas savaime buvo geresnis. Tai reiškė, kad turėjome aiškiai apibrėžti teiginio apimtį: senasis vykdymas aprašė tuo metu turėtą duomenų momentinę kopiją, o pakartotinis testas – dabartinę tiekėjo istorinių duomenų versiją. Negalėjome sąžiningai vadinti vieno kito atkūrimu.
Ketvirtadienis: pakeitėme tyrimo įrašus
Naujiems tyrimų vykdymams pradėjome pridėti nekintamas įvesties momentines kopijas. Kiekvienai duomenų daliai priskiriama turinio maiša, o vykdymo manifeste užfiksuojame šaltinį, gavimo laiką, schemos versiją, koregavimo politiką ir transformavimo kodo versiją. Didelius duomenų rinkinius saugome turinio adresavimo saugykloje, todėl identiškas dalis galima naudoti bendrai, neperrašant ankstesnių versijų.
Kai saugojimo ar licencijavimo taisyklės neleidžia mums išsaugoti žaliavinių duomenų, paliekame kuo išsamesnį pagal sąlygas leidžiamą įrodymą: maišas, užklausos parametrus, šaltinio versijos identifikatorius ir nedidelį išanalizuotų įrašų pavyzdį diagnostikai. Maiša duomenų neatkuria, bet parodo, ar dviejuose vykdymuose buvo naudojami skirtingi baitai.
Atkuriamam atgaliniam testui reikia nustatyti įvesties tapatybę, o ne vien duomenų URL. Užfiksuokite, kas gauta, kada tai gauta ir kaip iš to buvo sudaryti strategijos naudoti įrašai.
Penktadienis: ko kitą kartą nedarytume
Nebepasikliautume vien pagrindinių rodiklių palyginimu. Pasikeitęs Sharpe parodo, kad kažkas pakito, bet neatskleidžia priežasties. Pradėkite nuo įrašų skaičiaus ir duomenų dalių maišų, tada raskite pirmąją nesutampančią įvesties datą. Toliau tokia tvarka lyginkite transformuotus įrašus, signalus, pavedimus ir įvykdytus sandorius.
Taip pat tyliai nepakeistume senų duomenų pataisyta istorinių duomenų versija. Pataisos naudingos, bet seni vykdymai turi likti susieti su savo pradinėmis įvestimis. Naujas duomenų rinkinys turi sukurti naują vykdymą su aiškia nuoroda į ankstesnįjį.
Dabar laikomės paprastos taisyklės: jei pakartotiniu testu siekiama atkurti eksperimentą, užfiksuojame duomenų momentinę kopiją. Jei siekiama pasinaudoti pataisytais istoriniais duomenimis, pažymime jį kaip naują eksperimentą. Šį skirtumą suprasti prireikė kelių dienų, o dabar jis įrašytas viena eilute vykdymo manifeste.
← Visi įrašai


