10 november 2026 · data

Ditt backtest behöver en ändringslogg för data, inte bara en ögonblicksbild

Ditt backtest behöver en ändringslogg för data, inte bara en ögonblicksbild

En fryst ögonblicksbild av marknadsdata räcker inte för att göra ett backtest tillförlitligt. Den kan återskapa samma svar och samtidigt dölja att leverantören ändrade indata som låg till grund för det.

Behåll ögonblicksbilden. För sedan en ändringslogg som visar vad som ändrades, när det ändrades och om strategin påverkades. Det här är särskilt viktigt när forskningen bygger på korrigerade avslut, reviderade fundamenta, rekonstruerad funding eller historik som leverantören har uppdaterat utan att meddela det.

Hur kan ett reproducerbart backtest ändå vilseleda dig?

Anta att du laddar ner fem års timstaplar på måndag och kör en strategi. På fredag har leverantören korrigerat ett felaktigt avslut, justerat en bolagshändelse eller fyllt en lucka. Din sparade fil ger fortfarande exakt måndagens resultat. Det är reproducerbart. Men om du kör om testet med leverantörens aktuella historik kan resultatet bli annorlunda, utan att du har någon dokumentation av varför.

Problemet begränsas inte till stora korrigeringar. En enda ändrad högsta kurs kan utlösa en stop; ett reviderat stängningspris kan flytta en indikator över sin tröskel. I ett brett urval kan historiken för en symbol ändra dess rangordning och tränga undan en annan tillgång ur portföljen. Det slutliga Sharpe-talet kan förändras trots att strategikoden och konfigurationen är identiska.

En filhash talar om att två filer skiljer sig åt. Den berättar inte om en splitjustering ändrade priser för 40 år, om en leverantör korrigerade tre avslut eller om en parser omvandlade ett tomt fält till noll.

Vad bör ingå i en ändringslogg för marknadsdata?

Registrera ändringar på minsta användbara nivå, med tillräcklig kontext för att kunna spela upp den berörda forskningen. För ett stapelflöde innebär det vanligtvis instrument, intervall, händelsetid, tidigare och nya värden, källa och tidpunkten då du upptäckte uppdateringen. Bevara den ursprungliga nyttolasten när leverantören tillhandahåller en sådan.

RegistreraVarför spara detExempel
Källversion eller hämtningstidIdentifierar leverantörens tillstånd som användesÖgonblicksbild hämtad 2026-11-02 08:15 UTC
Ändrat fält och gamla/nya värdenVisar vad som faktiskt ändradesETHUSDT 1h högsta: 3,412.10 → 3,418.60
ÄndringsklassificeringSkiljer korrigeringar från omvandlingarSen korrigering av avslut, splitjustering, efterfyllnad
Pipeline- och schemaversionSkiljer källändringar från din egen bearbetningNormaliserare v7, schema för justerade staplar v3

För stora datamängder kan du lagra oföränderliga ögonblicksbilder och ett kompakt manifest med kontrollsummor, källversioner och hämtningstider. Lägg till radvisa differenser för ändrade partitioner. Det ger en praktisk kompromiss: fullständig uppspelning är fortfarande möjlig utan att du behöver skriva varje oförändrad rad till en separat granskningstabell.

Hur mäter jag om en korrigering spelar någon roll?

Stanna inte vid att räkna ändrade rader. Kör om den berörda strategin med den gamla och den nya datan, med samma kod, parametrar, avgifter och exekveringsantaganden. Jämför besluten och förloppet fram till resultatet.

  1. Identifiera berörda instrument och händelsetider utifrån differensen.
  2. Ta reda på vilka features, signaler, ordrar eller portföljvikter som använder posterna.
  3. Spela upp det minsta giltiga tidsfönstret, inklusive eventuell tillbakablicksperiod och öppna positioner.
  4. Jämför ordrar, avslut, exponering, omsättning, drawdown och slutresultat.

En leverantörskorrigering som ändrar en 1-minuts högsta kurs med $0.02 kan till exempel beröra en miljon rader utan att påverka en daglig momentumstrategi. En enda korrigerad stapel vid en stopnivå kan spela större roll. Mät påverkan på besluten; antalet ändrade poster är ett dåligt mått på den.

Håll isär två frågor: ”Kan jag återskapa resultatet från datan jag sparade?” och ”Skulle den här dataversionen ha varit tillgänglig för strategin då?” En ändringslogg hjälper dig att besvara båda, men den andra frågan kräver också dokumentation av när data blev tillgänglig.

Vad kostar det, och när är det värt det?

Ändringsspårning kräver lagringsutrymme, arbete med inläsning och operativa beslut. Leverantörer kanske inte erbjuder stabila versioner, och vissa historiska flöden byggs om regelbundet utan tydliga korrigeringsmeddelanden. Du kan inte logga en ändring som du aldrig upptäcker.

Börja där revideringar kan ändra forskningsresultaten: staplar som används av stoplogik, aktier justerade för bolagshändelser, fundamenta med punkt-i-tid-data samt funding- eller open-interest-serier som rekonstrueras. Ett dagligt manifest och kontrollsummor för partitioner kan räcka för breda, stabila datamängder. Lägg till differenser på fältnivå där uppdateringar är vanliga eller där handelsbeslut är känsliga för enskilda poster.

Kritiker har rätt i att ett fullständigt, evigt arkiv över varje leverantörssvar kan bli dyrt och ändå missa vad källan visste vid den aktuella tidpunkten. Lösningen är att avgränsa granskningen till data och beslut som spelar roll och dokumentera luckorna. En ögonblicksbild låter dig köra om ett experiment. En ändringslogg låter dig förklara varför experimentets svar förändrades.

datateknikbacktestingreproducerbarhetkvantitativ forskning
← Alla inlägg