21. september 2026 · inseneeria

Käivita oma strateegia tagasitesti poole pealt uuesti. Kas see mäletab, mis talle kuulub?

Käivita oma strateegia tagasitesti poole pealt uuesti. Kas see mäletab, mis talle kuulub?

Kasulik tagasitest ei tähenda parema parameetri leidmist: peata protsess poole pealt, taasta see ja vii sama taasesitus lõpuni. Kui sisendid on identsed ja täitmissimulaator kontrollitud, peaksid selle otsused, orderid ja omakapitali kõver kattuma katkestusteta käitusega.

Kui need ei kattu, oled leidnud olekuhalduse probleemi. Strateegia sõltub millestki, mida sa ei salvestanud või ei suutnud taastada. See sõltuvus on oluline iga kord, kui uurimistöö käivitusi jätkatakse, töötajad asendatakse või paberkaubanduse teenusesse paigaldatakse uus kood.

Mulle meeldib see test, sest oodatav vastus on ebatavaliselt selge. Pole vaidlust selle üle, kas turg muutus. Mõlemad käitused saavad samad turuandmed.

Siin on kolm valet viisi taaskäivitamiseks. Numbrid on näitlikud; iga rike võib tekkida ka muidu deterministlikus süsteemis.

1. Laadi mõned küünlad uuesti ja pea indikaatoreid soojendatuks

Oletame, et strateegia kasutab 100-perioodilist eksponentsiaalset libisevat keskmist. Selle uuendusvalem on:

alpha = 2 / 101
ema_next = alpha * close + (1 - alpha) * ema_previous

Katkestusteta protsess kannab kogunenud EMA väärtust edasi. Taaskäivitatud protsess hangib 100 küünalt, seab EMA algväärtuseks esimese sulgemishinna ja eeldab, et 100-perioodiline indikaator vajab 100 vaatlust.

See eeldus ajab indikaatori silumisparameetri segi piiratud pikkusega mäluga. EMA säilitab kahaneva panuse oma algolekust. Kui kahe versiooni EMA-d erinevad alguses 10 hinnaühiku võrra, kahandavad identsed järgnevad hinnad seda erinevust järgmiselt:

Uuendusi alates algväärtuse määramisestAllesjäänud erinevusOsa algsest veast
1001.35313.53%
2500.06740.674%
5000.0004540.00454%

Arvutus on 10 * (99 / 101)^k. Kui hangid 100 küünalt, saad vaid 99 uuendust, sest esimene vaatlus annab algväärtuse.

Kahju ilmneb tavaliselt otsustuspiiri lähedal. Ühes käituses on hind EMA-st kõrgem, teises madalam. Väike arvuline erinevus tekitab terve lisatehingu. Seejärel võivad lahkneda ka ooteajad, kasutatav raha ja hilisemad otsused.

Salvesta rekursiivse indikaatori olek, selle algväärtuse määramise staatus ja viimati töödeldud sündmus. Teise võimalusena taasesita andmed teadaolevast algolekust. Pikem soojendus võib anda vastuvõetava lähendi, kuid vali selle pikkus selge veatolerantsi alusel ja kontrolli, kas see tolerants võib otsuseid muuta. „Viis korda periood” on kokkulepe, mitte tõestus.

Ja indikaatorid pole kogu ajalugu. Veerev protsentiil vajab oma akent. Veebimudel võib vajada optimeerija olekut. Reegel, mis ootab pärast kaotust kolm küünalt, peab kaotust ja loendurit mäletama.

2. Salvesta positsioonid, aga unusta täitmist ootavad orderid

Sinu sihtpositsioon on 10 ühikut. 10 ühiku ostuorderist on täidetud 4, seega ootab veel 6. Salvestad kontrollpunkti positsioonina 4, taaskäivitad süsteemi ja esitad puuduva 6 ühiku ostmiseks uue orderi.

Kui täituvad nii algse orderi ülejäänud osa kui ka asendusorder, kuulub sulle 16 ühikut.

Tagasitesti versioon sellest veast jääb sageli varjatuks, sest täitmismootori taaskäivitamine kustutab töötavad orderid vaikselt. Paberkaubanduses võib simulaator või väline teenus need alles hoida. Sama taastamiskood tekitab siis erineva riskipositsiooni olenevalt sellest, milline komponent ellu jäi.

TaaskäivitamiselTegelik olekAinult positsiooni taastades nähakse
Sihtpositsioon1010
Täidetud positsioon44
Ootel ostukogus60
Vajalik lisakogus06

Kahju väljendub vahetult pärast taastamist ootamatult suureneva orderite voona. Mõnikord kahekordistub riskipositsioon. Mõnikord suletakse positsioon, mille kaitseorder on endiselt aktiivne, ning see võib hiljem uue positsiooni avada.

Kontrollpunkt peab sisaldama lisaks positsioonidele ka orderite identiteeti ja elutsükli olekut. Enne uute toimingute loomist tuleb need kirjed täitmiskeskkonnaga kooskõlastada. Tundmatu tulemusega order vajab uurimist; eeldus, et „salvestatud kinnitus puudub” tähendab „orderit ei esitatudki”, tekitab duplikaatordereid.

Püsivad kliendiorderi identifikaatorid aitavad juhtunut üles leida. Need hoiavad duplikaadid ära ainult siis, kui vastuvõttev süsteem jõustab nõutud unikaalsuse või idempotentsuse reegleid. Salvesta ka töödeldud täitmiste identifikaatorid, et taasesitatud täitmine ei suurendaks positsiooni kaks korda.

Mul on sümpaatia igava orderi oleku kuva vastu. Taaskäivitamise päeval saavad selle väikesed read äkki kogu hoone kõige huvitavamaks liideseks.

3. Taasta positsioon ja alusta uut kasumi-kahjumi arvestust

Vaatame võimenduseta hetketehingu näidet ilma tasudeta. Alusta $10,000 sularahaga, osta 10 ühikut hinnaga $100 ja salvesta kontrollpunkt, kui arvestushind jõuab $110-ni.

Õige olek on $9,000 sularaha pluss positsioon väärtusega $1,100: omakapital kokku $10,100. Kui taastamine toob tagasi 10 ühikut, kuid lähtestab sularaha algsele $10,000-le, näitab süsteem $11,100. Protsessi taaskäivitamisega oled tekitanud $1,000.

Teised variandid on vähem silmatorkavad. Taastamine säilitab omakapitali, kuid lähtestab sisenemishinna väärtusele $110. Omakapital kokku võib jääda õigeks, samal ajal kui realiseeritud ja realiseerimata tulemuse arvestus muutub. Kui stop või väljumistingimus sõltub sisenemishinnast, muudab see arvestuslik otsetee nüüd kauplemiskäitumist.

Või unustab süsteem senise omakapitali tipu. Oletame, et omakapital jõudis enne langemist $10,600-ni ja on nüüd $10,100. Selle langus tipust on umbes 4.72%. Kui taastamisel lähtestada tipptaseme piir, usub strateegia äkki, et langus on null. Iga langusel põhinev riskikontroll on saanud loata lähtestuse.

Seega võib kahju avalduda omakapitali järsu hüppena, kahtlaselt paranenud langusnäitajana või riskireeglina, mis pärast juurutusi enam ei rakendu. Säilita arvestusraamat ja strateegia arvestusest sõltuv olek: rahaliikumised, positsioonid, vajaduse korral soetusmaksumus, kogunenud tasud ja riskikontrolli mälu. Võrdle taastatud omakapitali arvestusraamatuga sama hindamisaja seisuga.

Kontrollpunkt vajab ühtset piirjoont. Kui salvestad sularaha pärast täitmist, aga positsiooni koguse enne seda täitmist, saad oleku, mida pole kunagi eksisteerinud. Kinnita seotud olekud koos või salvesta püsiv sündmuste jada, mille põhjal saab need uuesti luua. Salvesta koos selle olekuga ka sündmusjärje kursor, et taastamisel ei jäetaks täitmist vahele ega rakendataks seda kaks korda.

Uurimistööde testimisraamistikus hoiaksin alles testi, mis käivitab esmalt ühe katkestusteta etalontaasesituse ja taaskäivitab seejärel teise käituse meelega keerulistes punktides: indikaatori algväärtuse määramise ajal, pärast osalist täitmist ja aktiivse riskipiirangu korral. Kasuta sama sündmuste järjekorda ja säilita simulaatori juhuslikkuse olek. Võrdle esimest otsust pärast taastamist, orderite ja täitmiste kirjeid ning omakapitali kõverat. Ainult lõppsaldo kokkulangevus võib vastastikku tasakaalustavad vead peita.

Kui süsteem jookseb kokku pärast orderi esitamist, kuid enne kinnituse saamist, peab testimisraamistik säilitama ka täitmisteenuse oleku strateegiaprotsessist sõltumatult. Muidu kustutab see just selle ebakindluse, mida proovite testida.

Strateegia spetsifikatsioon hõlmab ka seda, mida see mäletab. Tee see mälu piisavalt selgesõnaliseks, et saaksid protsessi taasesituse poole pealt peatada ja täpselt näidata, kuidas see töö juurde naaseb.

strateegia olektagasitestiminekontrollpunktist taastaminepaberkaubandus
← Kõik postitused