Du fortalte meg at prosessen for papirhandel krasjet i løpet av natten. Du startet den på nytt før neste beslutning, så ingen feil og antok at den fortsatte der den slapp. Så la den inn en kjøpsordre på et aktivum du allerede eide. Du vil vite om strategien har en feil.
Det kan hende. Men først bør du sjekke om den omstartede prosessen vet det samme som papirkontoen. En omstart er et problem med gjenoppretting av tilstand: posisjoner, kontanter, åpne ordrer og alt strategiminne som påvirker neste beslutning, må stemme overens. Å få koden til å kjøre igjen er den enkle delen.
Hva trodde strategien før den krasjet?
Skriv ned den siste beslutningen prosessen tok før den stoppet. For hvert instrument du handler, noter ønsket posisjon, kontoens faktiske posisjon, utestående ordrer og signaltilstanden som påvirker neste handling. Hvis disse opplysningene ikke finnes, kan du ikke vite om omstarten gjenopprettet tilstanden eller bare startet en ny strategi fra grunnen av.
La oss si at strategien din på timesbasis kjøper 1 enhet når trendsignalet blir positivt, og holder til det blir negativt. Prosessen sender kjøpsordren kl. 14:00, men krasjer før den rekker å registrere at ordren ble akseptert. Papirhandelsplattformen fyller ordren. Ved omstart ser strategien ingen registrert posisjon, mens signalet fortsatt er positivt, og sender derfor en ny kjøpsordre. Signalet oppfører seg konsekvent. Minnet om hva kontoen eier, er utdatert.
Derfor må kontoens nåværende posisjon avstemmes mot den lagrede strategitilstanden før nye ordrer tillates. Et lokalt øyeblikksbilde kan være nyttig, men kontoen eller handelsplattformen er fasiten for hva som faktisk ble fylt.
Hvilken tilstand må overleve en omstart?
Begynn med tilstanden som kan endre neste ordre. Oppbevar en varig logg med tidsstempel og versjon for hver oppdatering. Ta en kopi før du endrer gjenopprettingslogikken, slik at du kan gjenskape feilen senere.
| Tilstand | Hvorfor det er viktig | Kontroll ved gjenoppretting |
|---|---|---|
| Posisjoner og kontanter | De avgjør eksponering og tilgjengelig kjøpekraft | Sammenlign lagrede verdier med papirkontoen |
| Åpne ordrer | En ordre kan ha blitt fylt mens prosessen var nede | Hent ordrestatus og avstem delvise fyllinger |
| Signalminne | Kryssinger, nedkjølingsperioder og holdeperioder kan strekke seg over flere beslutninger | Gjenopprett inndataene fra den sist bekreftede beslutningen |
| Sist behandlede hendelse | Den bestemmer hvor strategien fortsetter å lese data fra | Spill av hendelsene etter dette punktet på nytt uten å behandle dem flere ganger |
Signalminne er lett å overse. En strategi som handler på grunnlag av en kryssing, kan lagre gårsdagens indikatorverdi for å oppdage en ny kryssing. Hvis den starter med en tom verdi, kan den forveksle en eksisterende tilstand med en ny hendelse. En nedkjølingstimer har samme problem: En omstart må ikke i det stille nullstille en regel som skulle vedvare.
Hvordan kan du gjøre gjenopprettingen repeterbar?
Gi hver ordre en stabil klient-ID som utledes av strategikjøringen og beslutningen den stammer fra. Hvis prosessen prøver på nytt etter et tidsavbrudd, kan den undersøke om beslutningen allerede opprettet en ordre i stedet for å legge inn en duplikat. Registrer tilstandsendringer først når den tilhørende kontohendelsen er bekreftet, og ta vare på ordre- og fyllings-ID-ene som forklarer endringen.
Test deretter grensen som utløste hendelsen. Kjør strategien gjennom en beslutning, lagre tilstanden, stopp den, og gjenopprett den med papirkontoens posisjoner og ordrehistorikk. Sammenlign neste beslutning og de resulterende ordrene med en uavbrutt kjøring. Gjenta med en delvis fylt ordre og med et krasj mellom innsending og bekreftelse. Den gjenopptatte kjøringen skal ikke finne på en ny posisjon eller gjenta en fullført handling.
Før en gjenopprettingslogg: sist behandlede hendelse, tidspunkt for kontoøyeblikksbildet, status for åpne ordrer, gjenopprettet strategiversjon og den første beslutningen etter omstart. Da kan du revidere hva «den startet opp igjen» faktisk betyr.
Hva bør du stole på etter omstarten?
Stol på prosessen først når konto- og strategitilstanden stemmer overens, ventende ordrer har kjent status, og neste beslutning samsvarer med det du ville forventet fra en sammenhengende kjøring. Hvis du ikke kan forklare et avvik, bør du sette innsending av papirordrer på pause og undersøke hendelsesforløpet. At en prosess kjører, beviser ikke at strategien er gjenopprettet.
Du har allerede funnet noe nyttig i krasjet: Det avdekket en antakelse som den vanlige kjøringen aldri satte på prøve. Gjør omstarten til et scenario du kan gjenta, så vet du hva strategien husker før du ber den handle igjen.
← Alle innlegg


