En rad med markedsdata kan være helt korrekt og likevel være ubrukelig som grunnlag for en backtest. Handelen fant sted, prisen stemmer, og tidsstempelet er gyldig, men feeden kan ha levert den sent, en leverandør kan ha korrigert den senere, eller markedet som er sitert, kan ha vært utilgjengelig for strategien din.
For å vite om historiske data var omsettelige, må du kontrollere mer enn hendelsestidsstempelet. Du må vite hva raden beskriver, når den ble tilgjengelig for systemet, hvilken handelsplass eller hvilket instrument den gjelder, og om kursen eller handelen realistisk kunne ligge til grunn for ordren din.
Er en korrekt historisk pris nok for en backtest?
Nei. Nøyaktighet svarer på spørsmålet «Hvilken pris registrerte kilden til slutt?» En backtest må også svare på «Hva kunne strategien min vite da den tok beslutningen?» og «Hva kunne den ha fått utført?» Dette er ulike spørsmål.
Tenk deg at en kryptohandel registreres kl. 12:00:00.120, men at datastrømmen fra leverandøren når prosessen din kl. 12:00:00.480. En strategi som tar en beslutning kl. .200, kan ikke bruke denne handelen, selv om hendelsestidspunktet er før beslutningen. Hvis den historiske filen bare inneholder hendelsestid, kan backtesten i det stille gi strategien informasjon som produksjonssystemet ennå ikke ville ha mottatt.
| Tidspunkt eller felt | Hva det forteller deg | Feil i backtesten hvis det mangler |
|---|---|---|
| Hendelsestid | Når børsen sier at hendelsen fant sted | At markedstid forveksles med når strategien hadde tilgang til informasjonen |
| Mottakstid | Når innsamleren din mottok meldingen | At forsinkede data brukes som om de kom umiddelbart |
| Sekvens- eller oppdaterings-ID | Hvor hendelsen hører hjemme i rekkefølgen på feeden | At oppdateringer brukes i feil rekkefølge eller hoppes over uten at det oppdages |
| Revisjonstid | Når en korrigert historisk verdi ble kjent | At backtesten bruker en verdi som ikke fantes i den opprinnelige feeden |
Hvis arkivet ditt mangler mottakstider, må du være åpen om dette. Du kan teste en antakelse om forsinkelse eller begrense påstanden til forskning basert på hendelsestid. Du kan ikke rekonstruere det nøyaktige informasjonsgrunnlaget ut fra tidsstempler som aldri ble lagret.
Hvordan finner jeg ut om en kurs var mulig å handle på?
Begynn med markedet ordren din ville ha blitt sendt til. Et konsolidert beste kjøps- og salgstilbud kan oppsummere flere handelsplasser. Det beviser ikke at kontoen din hadde tilgang til den viste mengden, at kursen fortsatt gjaldt da ordren din kom fram, eller at handelsplassen ville godta ordretypen din.
For en markedsordre er utførelse til midtkurs som regel en fiksjon. Et bedre estimat går gjennom den synlige ordreboken ut fra ordrestørrelsen og legger deretter til gebyrer og en antakelse om forsinkelse eller priseffekt. Hvis du bare har data på beste kjøps- og salgskurs, bør du avgrense påstanden: Du kan anslå første nivå, men ikke utlede dybde som aldri ble registrert.
For en limitordre betyr det ikke at du får en utførelse bare fordi kursen berører grensen din. Ordrene foran din kan først bruke opp den tilgjengelige mengden. Køposisjonen er som regel ukjent i vanlige øyeblikksbilder, så en regel som regner med utførelse ved kursberøring, bør behandles som et optimistisk scenario, ikke som en beskrivelse av det som faktisk skjedde.
En 1-minuttsbar kan vise at laveste kurs krysset limitprisen din. Den kan ikke fortelle deg om den hvilende ordren din nådde handelsplassen før kursen falt dit, hvor mye som ble omsatt der, eller hvor mange ordre som lå foran deg i køen.
Hva bør jeg kontrollere før jeg stoler på et markedsdataarkiv?
Jeg begynner med de grunnleggende tingene. De avslører flere dårlige analyser enn en avansert utførelsesmodell bygget oppå en ødelagt feed.
- Dekning: Finnes det manglende intervaller, dupliserte hendelser, hull i sekvensen eller uforklarlige perioder med null volum?
- Markedsidentitet: Er symbolet knyttet til samme børs, kontrakt, noteringsvaluta og instrumentspesifikasjoner over tid?
- Tilgjengelighet: Er både hendelses- og mottakstid bevart? Hvis ikke, hvilken antakelse om forsinkelse setter en grense for resultatet?
- Korrigeringer: Kan du skille den opprinnelige meldingen fra senere etterfyllinger eller revisjoner fra leverandøren?
- Enheter: Tolkes priser, mengder, kontraktsmultiplikatorer og tidsstempler konsekvent?
Den siste kontrollen høres nesten for enkel ut. En gang brukte jeg en hel formiddag på å undersøke et tilsynelatende skifte i volatilitetsregimet. Det viste seg at et mengdefelt hadde skiftet enhet etter en migrering av feeden. Grafen var flott; enheten var feil.
Hvordan kan jeg teste om datatilgjengelighet påvirker resultatet?
Kjør en liten sensitivitetsanalyse rundt strategiens beslutningsgrense. Forskyv tidspunktet dataene blir brukbare med realistiske forsinkelser, forkast oppdateringer der sekvensen ikke henger sammen, og sammenlign utførelser ved hjelp av den faktiske ordreboken på handelsplassen der du har den. Rapporter både det opprinnelige og det svekkede resultatet. Hvis en liten forsinkelse fjerner effekten, kan strategien være avhengig av et informasjonsfortrinn som innsamlingen din ikke kan levere pålitelig.
Et konkret eksempel: Anta at et signal utløses når beste kjøpskurs stiger med ett tick. Spill av signalet én gang med børsens hendelsestid og én gang med innsamlerens mottakstid. Hvis versjonen med hendelsestid handler 40 ganger og versjonen med mottakstid handler 27 ganger, er forskjellen en del av dokumentasjonen for strategien. Det samme gjelder resultatene for hver avspilling. Ikke skjul den svakere avspillingen fordi dataene ser mindre pene ut.
Paper trading er en nyttig neste kontroll fordi den avdekker forsinkelser i feeden, utdaterte kurser, feil i symboltilordningen og begrensninger på handelsplassen i samme driftsløp som forskningssystemet ditt bruker. Den gjenskaper fortsatt ikke alle køer eller all markedspåvirkning i livehandel. Hold denne begrensningen tydelig.
Hva betyr «omsettelige data» i praksis?
Det betyr at backtesten kan forklare når en observasjon fant sted, når strategien kunne bruke den, hvilket marked den kom fra, og hvilket grunnlag for utførelse som støtter den antatte handelen. En ren prisserie er et utgangspunkt. Analysen blir troverdig når antakelsene om tidspunkt, tilgang og utførelse tåler granskning – og resultatet fortsatt gir mening når du gjør dem mindre fordelaktige.
← Alle innlegg


