Et fryst øyeblikksbilde av markedsdata er ikke nok til å gjøre en backtest pålitelig. Det kan gjenskape det samme svaret og samtidig skjule at leverandøren endret inndataene som ga dette svaret.
Behold øyeblikksbildet. Før deretter en endringslogg som viser hva som ble endret, når det skjedde, og om strategien ble påvirket. Dette er særlig viktig når forskningen bruker korrigerte handler, reviderte fundamentale data, rekonstruert funding eller historikk som leverandøren har oppdatert uten å varsle.
Hvordan kan en reproduserbar backtest fortsatt villede deg?
La oss si at du laster ned fem år med timebars på mandag og kjører en strategi. På fredag har leverandøren rettet en feilaktig handel, justert en selskapshendelse eller fylt et hull. Den lagrede filen gir fortsatt nøyaktig mandagens resultat. Det er reproduserbart. Men hvis du kjører testen på nytt med leverandørens nåværende historikk, kan du få et annet resultat uten å ha noen oversikt over hvorfor.
Problemet begrenser seg ikke til store korreksjoner. Én endret topp kan utløse en stop, og en revidert sluttkurs kan flytte en indikator over terskelen. I et bredt investeringsunivers kan historikken for ett symbol endre rangeringen og presse en annen eiendel ut av porteføljen. Den endelige Sharpe kan endre seg selv når strategikoden og konfigurasjonen er identiske.
En filhash forteller deg at to filer er forskjellige. Den forteller ikke om en splitjustering endret 40 års kurser, om leverandøren korrigerte tre handler, eller om en parser gjorde et tomt felt om til null.
Hva bør en endringslogg for markedsdata inneholde?
Registrer endringer på det minste nyttige nivået, med nok kontekst til å gjenskape forskningen som ble påvirket. For en barfeed betyr det vanligvis instrument, intervall, hendelsestidspunkt, tidligere og nye verdier, kilde og tidspunktet da du oppdaget oppdateringen. Ta vare på den opprinnelige nyttelasten hvis leverandøren tilbyr en.
| Registrer | Hvorfor ta det med | Eksempel |
|---|---|---|
| Kildeversjon eller hentetidspunkt | Identifiserer tilstanden hos leverandøren som ble brukt | Øyeblikksbilde hentet 2026-11-02 08:15 UTC |
| Endret felt og gamle/nye verdier | Viser hva som faktisk ble endret | ETHUSDT 1h topp: 3,412.10 → 3,418.60 |
| Klassifisering av endring | Skiller rettelser fra transformasjoner | Forsinket handelskorreksjon, splitjustering, etterfylling |
| Versjon av datapipeline og skjema | Skiller endringer hos kilden fra din egen behandling | Normalizer v7, justert bar-skjema v3 |
For store datasett kan du lagre uforanderlige øyeblikksbilder og et kompakt manifest med kontrollsummer, kildeversjoner og hentetidspunkter. Legg til radnivå-differanser for partisjoner som er endret. Da får du en praktisk mellomløsning: Full gjenskaping er fortsatt mulig uten å skrive hver uendrede rad til en ekstra revisjonstabell.
Hvordan måler jeg om en korreksjon har betydning?
Ikke stopp etter at du har telt endrede rader. Kjør den berørte strategien på nytt med de gamle og nye dataene, og bruk samme kode, parametere, gebyrer og forutsetninger om utførelse. Sammenlign beslutningene og veien fram til resultatet.
- Finn berørte instrumenter og hendelsestidspunkter i differansen.
- Finn ut hvilke features, signaler, ordre eller porteføljevekter som bruker disse postene.
- Kjør den minste gyldige tidsperioden på nytt, inkludert eventuell tilbakeblikksperiode og åpne posisjoner.
- Sammenlign ordre, fills, eksponering, omsetning, drawdown og endelig avkastning.
En leverandørkorreksjon som endrer en 1-minutts topp med $0.02, kan for eksempel berøre en million rader uten å påvirke en daglig momentumstrategi. Én korrigert bar på et stop-nivå kan ha større betydning. Mål påvirkningen på beslutningene; antall endrede poster er en dårlig målestokk.
Hold to spørsmål atskilt: «Kan jeg gjenskape resultatet fra dataene jeg lagret?» og «Ville denne dataversjonen ha vært tilgjengelig for strategien da?» En endringslogg bidrar til å besvare begge, men det siste spørsmålet krever også registreringer av tilgjengelighet på det aktuelle tidspunktet.
Hva koster dette, og når lønner det seg?
Endringssporing krever mer lagringsplass, arbeid med datainnhenting og operative valg. Leverandører tilbyr kanskje ikke stabile versjoner, og enkelte historiske feeder bygges jevnlig på nytt uten tydelig varsel om korreksjoner. Du kan ikke logge en endring du aldri oppdager.
Begynn med data der revisjoner kan endre forskningskonklusjonene: barer brukt i stop-logikk, aksjer justert for selskapshendelser, fundamentale data slik de forelå på et gitt tidspunkt, og serier for funding eller open interest som rekonstrueres. Et daglig manifest med kontrollsummer for partisjoner kan være nok for brede, stabile datasett. Legg til differanser på feltnivå der oppdateringer er vanlige, eller handelsbeslutninger er følsomme for enkeltposter.
Kritikerne har rett i at et fullstendig, evigvarende arkiv over hvert eneste svar fra en leverandør kan bli dyrt og likevel ikke fange opp hva kilden visste på det aktuelle tidspunktet. Løsningen er å avgrense revisjonen til dataene og beslutningene som betyr noe, og dokumentere hullene. Et øyeblikksbilde lar deg kjøre et eksperiment på nytt. En endringslogg lar deg forklare hvorfor svaret på eksperimentet endret seg.
← Alle innlegg


