10. november 2026 · data

Din backtest har brug for en ændringslog for data, ikke kun et datasnapshot

Din backtest har brug for en ændringslog for data, ikke kun et datasnapshot

Et fastfrosset snapshot af markedsdata er ikke nok til at gøre en backtest troværdig. Det kan genskabe det samme resultat og samtidig skjule, at dataleverandøren ændrede de input, der førte til det.

Behold snapshot'et. Før derefter en ændringslog, der viser, hvad der ændrede sig, hvornår det skete, og om strategien blev påvirket. Det er især vigtigt, når din forskning bruger korrigerede handler, reviderede fundamentale data, rekonstruerede fundingdata eller historik, som leverandøren har opdateret uden videre.

Hvorfor kan en reproducerbar backtest stadig vildlede dig?

Forestil dig, at du downloader fem års timelige bars om mandagen og kører en strategi. Om fredagen har leverandøren rettet en fejlbehæftet handel, justeret en selskabshændelse eller udfyldt et hul. Din gemte fil giver stadig præcis mandagens resultat. Det er reproducerbart. Men hvis du kører strategien igen med leverandørens aktuelle historik, får du måske et andet resultat uden at have nogen registrering af hvorfor.

Problemet er ikke begrænset til store korrektioner. En enkelt ændret topkurs kan udløse et stop; en revideret lukkekurs kan flytte en indikator over dens tærskel. I et bredt univers kan historikken for ét symbol ændre dets rangering og skubbe et andet aktiv ud af porteføljen. Den endelige Sharpe kan ændre sig, selv når strategikoden og konfigurationen er identiske.

En filhash fortæller dig, at to filer er forskellige. Den fortæller dig ikke, om en splitjustering ændrede 40 års kurser, en leverandør korrigerede tre handler, eller en parser lavede et tomt felt om til nul.

Hvad skal en ændringslog for markedsdata indeholde?

Registrer ændringer på det mindste nyttige niveau med tilstrækkelig kontekst til at kunne afspille den berørte forskning igen. For et bar-feed betyder det som regel instrument, interval, hændelsestidspunkt, tidligere og nye værdier, kilde og tidspunktet, hvor du registrerede opdateringen. Bevar den oprindelige payload, hvis leverandøren stiller den til rådighed.

RegistreringHvorfor gemme denEksempel
Kildeversion eller hentetidspunktIdentificerer den anvendte tilstand hos leverandørenSnapshot hentet 2026-11-02 08:15 UTC
Ændret felt og gamle/nye værdierViser, hvad der faktisk ændrede sigETHUSDT 1h high: 3,412.10 → 3,418.60
Klassificering af ændringenSkelner mellem rettelser og transformationerSen korrektion af handel, splitjustering, efterfyldning
Pipeline- og skemaversionSkelner mellem ændringer hos kilden og din egen behandlingNormalizer v7, justeret bar-skema v3

For store datasæt kan du gemme uforanderlige snapshots og et kompakt manifest med deres kontrolsummer, kildeversioner og hentetidspunkter. Tilføj diff på rækkeniveau for ændrede partitioner. Så får du en praktisk mellemvej: Det er stadig muligt at afspille hele forløbet uden at skrive hver uændret række til en ekstra audit-tabel.

Hvordan måler jeg, om en korrektion har betydning?

Nøjes ikke med at tælle ændrede rækker. Kør den berørte strategi igen med de gamle og de nye data under samme kode, parametre, gebyrer og udførelsesforudsætninger. Sammenlign beslutningerne og forløbet frem mod resultatet.

  1. Identificer berørte instrumenter og hændelsestidspunkter ud fra diffen.
  2. Find ud af, hvilke features, signaler, ordrer eller porteføljevægte der bruger disse registreringer.
  3. Afspil det kortest mulige gyldige vindue igen, inklusive eventuel lookback og åbne positioner.
  4. Sammenlign ordrer, fills, eksponering, omsætning, drawdown og endeligt afkast.

En leverandørkorrektion, der ændrer en 1-minute-topkurs med $0.02, kan for eksempel berøre en million rækker uden at påvirke en daglig momentumstrategi. Én korrigeret bar ved et stopniveau kan have større betydning. Mål effekten på beslutningerne; antallet af ændrede registreringer er en dårlig målestok.

Hold to spørgsmål adskilt: “Kan jeg genskabe resultatet ud fra de data, jeg gemte?” og “Ville denne dataversion have været tilgængelig for strategien dengang?” En ændringslog hjælper med at besvare begge spørgsmål, men det andet kræver også registreringer af, hvornår dataene var tilgængelige.

Hvad koster det, og hvornår kan det betale sig?

Ændringssporing kræver mere lagerplads, arbejde med dataindlæsning og driftsmæssige beslutninger. Leverandører stiller måske ikke stabile versioner til rådighed, og nogle historiske feeds bliver jævnligt genopbygget uden en tydelig besked om korrektioner. Du kan ikke logge en ændring, du aldrig opdager.

Begynd dér, hvor revisioner kan ændre forskningsresultater: bars, der bruges af stoplogik, aktier justeret for selskabshændelser, fundamentale data med point-in-time-tidsstempler samt funding- eller open-interest-serier, der rekonstrueres. Et dagligt manifest med kontrolsummer for partitioner kan være nok til brede, stabile datasæt. Tilføj diff på feltniveau, hvor opdateringer er hyppige, eller handelsbeslutninger afhænger af enkelte registreringer.

Kritikerne har ret i, at et komplet, permanent arkiv over hvert svar fra hver leverandør kan blive dyrt og stadig ikke indfange, hvad kilden vidste på det pågældende tidspunkt. Løsningen er at afgrænse auditten til de data og beslutninger, der betyder noget, og dokumentere hullerne. Et snapshot gør det muligt at køre et eksperiment igen. En ændringslog gør det muligt at forklare, hvorfor eksperimentets resultat ændrede sig.

datateknikbacktestingreproducerbarhedkvantitativ forskning
← Alle indlæg