26. september 2026 · uuringud

Püüdsime strateegia järeltesti korrata. Siin läksid numbrid lahku.

Püüdsime strateegia järeltesti korrata. Siin läksid numbrid lahku.

Käivitasime salvestatud järeltesti uuesti ja saime teistsuguse omakapitalikõvera. Sama strateegiakood, sama ajavahemik, sama sümbol. Lõppsaldo erines 1.8% ja kolm tehingut olid nihkunud ühe küünla võrra.

Sellest piisab, et uuringutulemust oleks raske usaldada. Kui tiimikaaslane, sina ise tulevikus või paberkaubanduse teenus ei suuda käivitust korrata, ei saa aru, kas muudatus parandas strateegiat või muutis lihtsalt katset. Siin on sammud, mida lahknevuse leidmiseks järgisime.

1. päev: panime kirja, mida tähendab „sama käivitus”

Meie esimene viga oli pidada strateegiafaili kogu katseks. See polnud nii. Käivitus sõltus ka lähteandmetest, mootori versioonist, kalendrist, instrumendi metaandmetest ja täitmise seadetest. Kood kirjeldas arvutust vaid osaliselt.

Enne millegi muutmist koostasime käivituse manifesti. Sinna märkisime strateegia koodi sissekande, andmetõmmiste tunnused, ajavahemiku, kauplemiskoha, tasugraafiku, rahastusmäära allika, täitmismudeli ja tarkvaraversioonid. Salvestasime ka tekkinud orderid ja täitmised, sest üksnes omakapitalikõver ei näita, kus kaks käivitust esimest korda lahku lähevad.

ArtefaktMida talletadaMiks see oluline on
TuruteaveTõmmise ID, skeemi versioon, kohandusedTeenusepakkujad parandavad ajalugu ja muudavad ettevõttesündmuste andmeid
Tehingute täitmineTasude tase, rahastuse aegrida, täitmise ja turumõju seadedVaikesätted ja konto eeldused muudavad tulemusi
KäituskeskkondKoodi sissekanne, mootori ja sõltuvuste versioonidTeegid võivad muuta järjestust, ümardamist või indikaatoreid
VäljundOrderid, täitmised, positsioonid ja mõõdikudNäitab, kust käivituste tulemused lahknema hakkavad

2. päev: võrdlesime tehinguid, mitte Sharpe'i

Koondnäitajad viisid tähelepanu kõrvale. Mõlema käivituse Sharpe oli peaaegu sama, kuid täitmiste logidest nähtus esimene erinevus rahastusarvestusel. Ühes käivituses arvestati tasu positsioonilt, mis oli avatud arvestuse ajatemplil; teises kasutati positsiooni pärast sama ajatempli tasakaalustamist.

Strateegiakood polnud muutunud. Muutunud oli mootori sündmuste järjekord. Väike versiooniuuendus muutis järjekorra selgesõnaliseks, kuigi varem sõltus see sellest, kuidas kaks sündmust juhuslikult järjestati.

Täiendasime käivituse kokkulepet, et järjekord oleks kirjas: esmalt rakendatakse rahastust arveldusse kantud positsioonile, seejärel töödeldakse selle ajatempli strateegiaotsuseid. Täpne tava võib kauplemiskoha ja mootori järgi erineda. Selle vaikimisi jätmine on viga.

3. päev: „sama” andmefail osutus erinevaks

Pärast sündmuste järjekorra lukustamist koondusid allesjäänud lahknevused mõne aktsiatehingu juurde. Teenusepakkuja oli parandanud varasemat aktsiate jagunemise kohandust. Meie failil oli sama nimi ja ridade arv nagu varem, mistõttu paistis see muutumatuna.

Nüüd arvutame igale muutumatule andmetõmmisele sõrmejälje ja hoiame kohanduspoliitika selle juures. Räsi näitab, kas baidid muutusid, aga ei selgita, miks. Seepärast salvestab manifest ka allika, hankimise aja ja teisenduse versiooni. Muutuvate andmete puhul kuuluvad need üksikasjad tulemuse juurde.

Korratav järeltest peab vastama küsimusele: „millist mineviku versiooni see nägi?”

4. päev: leidsime ühe märkamatuks jäänud vaikesätte

Viimane erinevus tulenes sellest, et maker-tasu oli 0, kuna strateegia konfiguratsioonis polnud seda välja määratud. Uuem mootor rakendas konto vaiketasu. See üks vaikesäte muutis piirtehinguid piisavalt, et selgitada suuremat osa lõppsaldo vahest.

Määrasime majanduslikult olulised seaded selgesõnaliselt ja panime mootori lahendatud konfiguratsiooni käivituse kirjesse väljastama. Vaikesätted on katsetades mugavad. Aja jooksul tulemusi võrreldes ei ole need aga kuigi head tõendid.

3leitud lahknevuse allikat
1.8%esialgne lõppsaldo erinevus
0väärtus üksnes kokkulangevast Sharpe'ist

Mida teeksime järgmine kord teisiti

Kulutasime pool päeva koondnäitajate võrdlemisele, enne kui vaatasime esimest erinevat täitmist. Ära alusta sealt. Järjesta mõlema käivituse sündmuslogid ajatemplite järgi ja võrdle esimest lahknevust; hilisemad erinevused tulenevad sageli sellest ühest põhjusest.

Jätaksime ka kõrvale mõtte, et konteineri tõmmis muudab käivituse iseenesest korratavaks. See lukustab suure osa tarkvarakeskkonnast, kuid mitte välist andmefaili, käitusajal hangitud tasugraafikut ega teenusepakkuja parandatud ajalugu.

Kui järeltest muutub, säilita mõlema käivituse manifestid ja logid ning kõrvalda korraga üks lahknevuse allikas. Kasulik tulemus pole lihtsalt kõver, mida saab uuesti arvutada. See on kirje, mis selgitab, millised andmed ja eeldused selle tekitasid ning miks järgmine käivitus võib erineda.

korratavusjäreltestimineandmetöötluspaberkaubandus
← Kõik postitused