Uporaben preizkus za nazaj nima nič opraviti z iskanjem boljšega parametra: ustavite proces na polovici, ga obnovite in dokončajte isto predvajanje. Ob enakih vhodnih podatkih in nadzorovanem simulatorju izvrševanja bi se morale odločitve, naročila in vrednost portfelja ujemati z neprekinjenim zagonom.
Če se ne, ste odkrili težavo z upravljanjem stanja. Strategija je odvisna od nečesa, česar niste shranili ali česar niste mogli poustvariti. Ta odvisnost je pomembna, kadar se raziskovalni zagoni nadaljujejo, delavci zamenjajo ali storitev trgovanja na papirju uvede novo kodo.
Ta preizkus mi je všeč, ker je pričakovani odgovor nenavadno jasen. Ni razprave o tem, ali se je trg spremenil. Oba zagona dobita isti trg.
Tukaj so trije napačni načini ponovnega zagona. Številke so zgolj ponazoritvene; vsaka od teh napak se lahko pojavi tudi v sicer determinističnem sistemu.
1. Naložite nekaj sveč in predpostavite, da so se indikatorji ogreli
Predpostavimo, da strategija uporablja eksponentno drseče povprečje s periodo 100. Njegova posodobitev je:
alpha = 2 / 101
ema_next = alpha * close + (1 - alpha) * ema_previous
Neprekinjeno delujoči proces prenaša akumulirano EMA naprej. Znova zagnani proces pridobi 100 sveč, inicializira EMA s prvim zaključnim tečajem in predpostavi, da indikator s periodo 100 potrebuje 100 opazovanj.
Ta predpostavka zamenjuje parameter glajenja indikatorja z oknom končnega pomnjenja. EMA ohranja pojemajoč prispevek svojega začetnega stanja. Če se različici začneta z razliko 10 cenovnih enot v EMA, enaki nadaljnji tečaji to razliko zmanjšujejo takole:
| Posodobitev od inicializacije | Preostala razlika | Delež začetne napake |
|---|---|---|
| 100 | 1.353 | 13.53% |
| 250 | 0.0674 | 0.674% |
| 500 | 0.000454 | 0.00454% |
Izračun je 10 * (99 / 101)^k. Če pridobite 100 sveč, dobite le 99 posodobitev, če prvo opazovanje služi kot začetna vrednost.
Težava se navadno pokaže blizu odločitvene meje. En zagon vidi tečaj nad EMA, drugi pod njim. Majhna številčna razlika povzroči dodatno trgovanje. Nato se lahko razhajajo še časi ohlajanja, razpoložljiva denarna sredstva in poznejše odločitve.
Shranite rekurzivno stanje indikatorja, njegovo stanje inicializacije in zadnji obdelani dogodek. Lahko pa predvajanje ponovite od znanega začetnega stanja. Daljše ogrevanje lahko da sprejemljiv približek, vendar njegovo dolžino izberite na podlagi izrecne tolerance napake in preverite, ali lahko ta toleranca vpliva na odločitve. »Petkratna perioda« je konvencija, ne dokaz.
In indikatorji niso celotna zgodovina. Drseči percentil potrebuje svoje okno. Sprotni model morda potrebuje stanje optimizatorja. Pravilo, ki po izgubi čaka 3 sveče, si mora zapomniti izgubo in števec.
2. Shranite pozicije in pozabite na odprta naročila
Ciljna pozicija je 10 enot. Nakupno naročilo za 10 enot je bilo izpolnjeno v obsegu 4, preostalih 6 pa še čaka. Kontrolno točko shranite s pozicijo 4, znova zaženete proces in oddate novo nakupno naročilo za manjkajočih 6.
Če se izpolnita tako prvotni preostanek kot nadomestno naročilo, imate 16 enot.
Različica te napake pri testiranju za nazaj pogosto ostane skrita, ker ponovni zagon mehanizma za izpolnjevanje tiho izbriše delujoča naročila. Pri trgovanju na papirju jih simulator ali zunanja storitev morda ohrani. Ista obnovitvena koda zato povzroči različno izpostavljenost, odvisno od tega, katera komponenta je preživela.
| Ob ponovnem zagonu | Dejansko stanje | Kaj zazna obnovitev samo na podlagi pozicije |
|---|---|---|
| Ciljna pozicija | 10 | 10 |
| Izpolnjena pozicija | 4 | 4 |
| Količina odprtega nakupnega naročila | 6 | 0 |
| Potrebna dodatna količina | 0 | 6 |
Težava se pokaže kot nepojasnjen val naročil takoj po obnovitvi. Včasih podvoji izpostavljenost. Včasih zapre pozicijo, čeprav je zaščitno naročilo še vedno aktivno, zato lahko to naročilo pozneje odpre novo pozicijo.
Kontrolna točka mora poleg pozicij vsebovati identiteto naročil in njihovo stanje v življenjskem ciklu. Pred ustvarjanjem novih dejanj mora obnovitev te zapise uskladiti s sistemom izvrševanja. Naročilo z neznanim izidom je treba raziskati; če »potrditev ni shranjena« obravnavate kot »naročilo ni bilo nikoli oddano«, nastanejo podvojena naročila.
Stalni identifikatorji naročil stranke vam pomagajo poiskati, kaj se je zgodilo. Podvajanje preprečijo le, če prejemni sistem dejansko uveljavlja zahtevano enoličnost ali pravila idempotentnosti. Shranite tudi identifikatorje že obdelanih izvršitev, da ponovljeno izpolnjenje ne poveča pozicije dvakrat.
Imam slabost do dolgočasnega zaslona s stanji naročil. Na dan ponovnega zagona njegove drobne vrstice nenadoma postanejo najzanimivejši vmesnik v stavbi.
3. Obnovite pozicijo in začnite novo evidenco dobička in izgube
Oglejmo si primer promptnega trgovanja brez finančnega vzvoda in provizij. Začnite z 10,000 $ denarnih sredstev, kupite 10 enot po 100 $ in shranite kontrolno točko, ko tržna vrednost doseže 110 $.
Pravilno stanje je 9,000 $ denarnih sredstev in pozicija v vrednosti 1,100 $: kapital znaša 10,100 $. Če obnovitev povrne 10 enot, denarna sredstva pa ponastavi na začetnih 10,000 $, pokaže 11,100 $. S ponovnim zagonom procesa ste ustvarili 1,000 $.
Druge različice so manj dramatične. Obnovitev ohrani kapital, vendar ponastavi vstopno ceno na 110 $. Skupni kapital lahko ostane pravilen, medtem ko se spremeni pripisovanje realiziranega in nerealiziranega dobička oziroma izgube. Če se stop ali pogoj za izstop sklicuje na vstopno ceno, ta računovodska bližnjica zdaj spremeni vedenje pri trgovanju.
Ali pa sistem pozabi prejšnji vrh kapitala. Predpostavimo, da je kapital dosegel vrh pri 10,600 $, nato pa padel na 10,100 $. Njegov padec od vrha znaša približno 4.72%. Če ob obnovitvi ponastavite najvišjo vrednost, strategija nenadoma verjame, da je padec od vrha nič. Vsak nadzor tveganja na podlagi padca od vrha je pravkar dobil nepooblaščeno ponastavitev.
Težava se lahko torej pokaže kot skok v vrednosti portfelja, sumljivo izboljšan padec od vrha ali pravilo tveganja, ki po uvedbah preneha delovati. Ohranite evidenco in računovodsko stanje, od katerega je odvisna strategija: denarne tokove, pozicije, ustrezno nabavno vrednost, obračunane stroške in pomnilnik nadzora tveganja. Obnovljeni kapital uskladite z evidenco za isti čas vrednotenja.
Kontrolna točka potrebuje dosledno mejo. Če denarna sredstva shranite po izpolnitvi, količino pozicije pa pred njo, dobite stanje, ki nikoli ni obstajalo. Povezano stanje zapišite skupaj ali pa zabeležite trajno zaporedje dogodkov, iz katerega ga je mogoče znova zgraditi. Skupaj s tem stanjem shranite kazalec dogodkov, da obnovitev ne preskoči izpolnitve in je ne uporabi dvakrat.
V raziskovalnem okolju bi ohranil preizkus z enim neprekinjenim referenčnim predvajanjem, nato pa bi drugi zagon znova zagnal na namerno nerodnih mestih: med inicializacijo indikatorja, po delni izpolnitvi in med aktivnim limitom tveganja. Uporabite enak vrstni red dogodkov in ohranite morebitno naključno stanje simulatorja. Primerjajte prvo odločitev po obnovitvi, zapise naročil in izpolnitev ter potek vrednosti portfelja. Zgolj ujemanje končnega stanja lahko prikrije napake, ki se medsebojno izničijo.
Za sesutje po oddaji naročila, vendar pred potrditvijo, mora okolje ohraniti tudi stanje storitve izvrševanja neodvisno od procesa strategije. Sicer izbriše prav tisto negotovost, ki jo želite preizkusiti.
Specifikacija strategije vključuje tudi to, česa se spominja. Ta spomin opredelite dovolj natančno, da lahko proces ustavite na polovici predvajanja in pokažete, kako nadaljuje delo.
← Vse objave


