Een backtest leverde 20% rendement op jaarbasis op. Hij gebruikte 8 jaar aan data, 1,640 transacties en een nette walk-forward-splitsing. Toen vervingen we de huidige historie van de leverancier door de waarden die destijds waren vastgelegd, zakte de edge naar 3%.
Het verrassende getal was niet het oorspronkelijke rendement. Het waren de 17 procentpunten die afhankelijk waren van herziene data. Dat soort achterafkennis kan schuilgaan in economische publicaties, bedrijfsfundamentals, indexlidmaatschap en zelfs in ogenschijnlijk eenvoudige marktvelden. Historische data vertelt je wat de bron nu zegt. Een point-in-time-dataset vertelt je wat je strategie toen had kunnen weten.
Waarom kan historische data na een gebeurtenis veranderen?
Sommige waarden zijn eerst schattingen en worden later gecorrigeerd. Een economisch cijfer dat op vrijdag wordt gepubliceerd, kan de volgende maand worden herzien. Een bedrijf kan een winstcijfer opnieuw vaststellen. Een dataleverancier kan een foutieve koersnotering herstellen, een ontbrekend interval aanvullen of een voorlopige waarde vervangen door een definitieve. Een database die alleen de meest recente waarde opslaat, laat al die wijzigingen lijken alsof ze altijd al zo waren.
Dat is van belang wanneer een strategie bedrijven rangschikt op basis van gerapporteerde omzet of handelt op een markt na een geplande datapublicatie. Als de strategie de gecorrigeerde waarde maanden te vroeg ziet, heeft de backtest haar informatie gegeven die op het beslismoment niet op de markt beschikbaar was. De signaalberekening kan foutloos zijn; de invoer is nog steeds afkomstig uit de verkeerde versie van de geschiedenis.
Hier zit een eenvoudige valkuil: een veld met de naam date beschrijft vaak de periode waarop een waarde betrekking heeft, niet wanneer die beschikbaar kwam. Een regel met kwartaalomzet en de datum 31 maart is misschien pas op 8 mei gepubliceerd. Het label gaat over de bedrijfsperiode, niet over de informatie waarover de strategie kon beschikken.
Welke tijdstempel moet een backtest gebruiken?
Houd de effectieve periode van de waarde en het beschikbaarheidstijdstip ervan apart bij. Sla waar mogelijk ook het publicatietijdstip en het ingestietijdstip op. Een strategie kon een waarde pas gebruiken nadat die was gepubliceerd en door het systeem was ontvangen; als die tijdstippen verschillen, gebruik dan voor een conservatieve replay het latere tijdstip.
| Tijdstempel | Wat die beschrijft | Waar die bij helpt |
|---|---|---|
| Effectieve tijd | De periode of gebeurtenis waar de waarde naar verwijst | Groepeert waarnemingen op basis van wat wordt gemeten |
| Publicatietijd | Wanneer de bron deze versie heeft gepubliceerd | Voorkomt dat een publicatie verschijnt voordat die bestond |
| Ingestietijd | Wanneer je systeem de versie heeft ontvangen | Legt vertragingen in de levering en late backfills vast |
Stel bijvoorbeeld dat de kwartaalomzet van een bedrijf betrekking heeft op januari tot en met maart, op 8 mei om 16:15 Eastern wordt gerapporteerd en om 16:17 in je onderzoeksopslag binnenkomt. Een strategie die beslist bij het slot op 8 mei kan dat rapport niet gebruiken als haar beslissing op het sluitingstijdstip om 16:00 viel. Een strategie die de volgende ochtend beslist, kan dat wel. Alleen de einddatum van het kwartaal geeft op geen van beide vragen antwoord.
Hoe test ik of revisies het resultaat bepalen?
Voer dezelfde strategie twee keer uit: één keer met de dataversie die op elk historisch beslismoment beschikbaar was, en één keer met de laatst herziene historie. Houd uitvoeringsaannames, universum en code gelijk. Het verschil is een resultaat voor revisiegevoeligheid, geen vergelijking van nieuwe strategieën.
Onderzoek vervolgens waar het verschil vandaan komt. Verandert de prestatie op publicatiedagen? Zijn de grootste verschillen geconcentreerd bij enkele bedrijven waarvan cijfers opnieuw zijn vastgesteld of bij gecorrigeerde waarnemingen? Handelt de strategie vóór het relevante publicatietijdstip? Een kleine controle op gebeurtenisniveau geeft vaak meer inzicht dan nog een grafiek met cumulatieve rendementen.
Deze cijfers zijn een voorbeeld, geen universele aftrekpost. De nuttige uitkomst is een gepaard resultaat voor je eigen strategie, met waar mogelijk dezelfde transacties en kosten. Als de herziene versie veel beter presteert, zoek dan uit welke velden en datums het verschil verklaren voordat je de headline van de backtest vertrouwt.
Wat moet een point-in-time-data-audit vastleggen?
Begin met de velden die je strategie daadwerkelijk gebruikt. Bepaal voor elk veld de bron, de betekenis van de tijdstempel, het revisiebeleid en of eerdere versies kunnen worden opgevraagd. Vraag de leverancier hoe correcties worden weergegeven: overschreven regels, nieuwe versieregels of een apart auditlogboek. Het woord ‘historisch’ op een productpagina geeft daar geen uitsluitsel over.
- Sla elke versie op met het publicatietijdstip of het tijdstip waarop die voor het eerst beschikbaar was.
- Koppel kenmerken aan beslissingen op basis van het beschikbaarheidstijdstip, niet op basis van periodeaanduidingen.
- Bewaar een bevroren snapshot of bronversie voor reproduceerbare runs.
- Markeer waarden die laat binnenkomen, worden herzien of geen betrouwbare historie hebben.
Houd de scope ook praktisch. Als je strategie alleen transacties en candles van beurzen gebruikt, zijn revisies van economische data misschien niet relevant. Maar correcties van candles en backfills van leveranciers kunnen nog steeds van belang zijn, vooral als een signaal afhankelijk is van een illiquide markt of een precies gebeurtenisvenster.
Wanneer point-in-time-historie niet beschikbaar is
Behandel de waarde van vandaag niet stilzwijgend als die van gisteren. Markeer het veld als een beperking, sluit het uit van claims die afhangen van historische beschikbaarheid, of pas een conservatieve vertraging toe en laat zien hoeveel het resultaat verandert. Een vertraagde benadering kan nuttig zijn voor onderzoek, zolang de vertraging expliciet is en de beperking bij het resultaat blijft vermeld.
De taak van een backtest is een beslissing te reconstrueren met de informatie die op dat moment beschikbaar was. Als je data alleen de nieuwste versie kan tonen, heeft het eerlijke resultaat een grens: het kan de strategie toetsen aan de vandaag gereconstrueerde historie, maar niet precies vaststellen wat een historische agent had kunnen zien.
← Alle artikelen

