Beste bouwer van de payrollfilterstrategie,
Je hebt een eenvoudige regel gebouwd: na het Amerikaanse banenrapport houdt je strategie vijf sessies lang een aandelen-ETF aan als de maandelijkse groei van het aantal banen boven 175,000 uitkomt. Anders blijft ze in cash. Je hebt de instap gepland nadat de aandelenmarkt opengaat, handelskosten meegenomen en de drempel vastgezet. Daarna heb je een historische payrollreeks gedownload en daarmee elk signaal gereconstrueerd.
Je download vormt nog het probleem. Een historische economische reeks kan herziene ramingen bevatten die niet beschikbaar waren op de datums waarop je strategie volgens de simulatie handelde. Om een macrosignaal eerlijk te backtesten, heb je de versie nodig die op elk beslismoment beschikbaar was. De instap één bar opschuiven herstelt geen cijfer dat pas twee maanden later is gepubliceerd.
Je januariwaarneming is meerdere keren jarig
Neem deze verzonnen publicatiegeschiedenis. De datums en veranderingen in het aantal banen laten zien hoe het werkt; het zijn geen gerapporteerde economische resultaten.
| Publicatie | Referentiemaand | Gerapporteerde verandering in aantal banen | Je regel op dat moment |
|---|---|---|---|
| 7 februari, 08:30 ET | januari | +150,000 | In cash blijven |
| 7 maart, 08:30 ET | januari, herzien | +185,000 | Verandert de beslissing van februari niet |
| 4 april, 08:30 ET | januari, opnieuw herzien | +210,000 | Verandert de beslissing van februari niet |
Als je download januari weergeeft als +210,000, stapt je replay in februari in de ETF. Volgens je daadwerkelijke regel was je in cash gebleven. Elke koers, ordertijdstempel en commissie kan kloppen, terwijl die hele transactie fictief is.
Je kunt er niet van uitgaan dat deze besmetting de prestaties verbetert. Revisies kunnen winstgevende transacties creëren, verliesgevende transacties creëren of transacties van beide soorten verwijderen. Het probleem is dat je simulatie een vraag beantwoordt die je strategie destijds niet had kunnen stellen.
En januari is alleen de periode waarover wordt gemeten. Het is niet de datum waarop je de meting leerde kennen. Een rij met het label 1 januari geeft je geen toestemming om er op 1 januari op te handelen.
Leg voor elke waarde vast wanneer die beschikbaar was
Je onderzoekstabel heeft meer nodig dan een maand en een getal. Bewaar de referentieperiode, waarde, publicatietijdstempel, vintage-ID en bron. Noteer bij een doorlopende verzameling ook wanneer je systeem de publicatie heeft ontvangen. Bewaar oude versies in plaats van hun waarden ter plekke bij te werken.
Selecteer op een beslismoment van elke waarneming de nieuwste geldige versie waarvan het beschikbaarheidstijdstip niet later is dan dat beslismoment. Bereken daarna je kenmerken op basis van die gereconstrueerde momentopname.
Je ophaalregel: beperk eerst de records tot wat beschikbaar was, selecteer daarna de toepasselijke versies en bereken vervolgens het signaal. Kenmerken berekenen op basis van de herziene geschiedenis van vandaag en het resultaat daarna verschuiven, laat het lek intact.
Dat je de positie vijf sessies aanhoudt, maakt deze administratie niet optioneel. Je hebt daardoor meer ruimte om een conservatief instapmoment te kiezen; het geeft je geen eerdere toegang tot revisies.
Bij ouder onderzoek heb je mogelijk bewijs van het openbare publicatiemoment, maar geen registratie van het moment waarop je het zelf hebt ontvangen. Houd dat onderscheid expliciet. Je kunt toegang modelleren vanaf een gedocumenteerd publicatietijdstip, met een vermelde vertraging. Je kunt die aanname niet omschrijven als een gemeten historische levering.
Je wilt ook een tijdstempel met tijdzone gebruiken. Sla de gedocumenteerde lokale tijd van de publicatie op en zet die correct om; een vaste UTC-offset voor New York werkt niet bij de overgang naar of van de zomertijd. Gun je toekomstige zelf dat kleine gemak. September-jij zou de kolom met de naam date_actual_final2 van maart-jij niet hoeven te ontcijferen.
Voor je voortschrijdende kenmerken heb je de volledige vintage nodig
Stel dat je de vaste drempel vervangt door ‘de groei van het aantal banen ligt boven het gemiddelde van de voorgaande twaalf maanden’. Dan heb je de eerdere waarnemingen nodig zoals die op dat beslismoment bekend waren, inclusief revisies die toen al waren gepubliceerd.
Voor altijd de eerste publicatie van elke maand gebruiken, definieert een ander kenmerk. Dat kan een legitieme keuze zijn als je expliciet een geschiedenis van de eerste bekendmakingen wilt. Het reconstrueert niet de economische geschiedenis die op een bepaalde ochtend zichtbaar was, want de informatie van die ochtend kan al revisies van eerdere maanden bevatten.
Als je maandelijkse veranderingen in het aantal banen afleidt uit werkgelegenheidsniveaus, reconstrueer dan eerst de reeks met niveaus voor de relevante vintage en bereken daarna de verschillen. Een pas gepubliceerd niveau combineren met het niveau van de voorgaande maand uit een oudere vintage kan een verandering opleveren die in geen enkele gepubliceerde momentopname voorkwam.
Je moet dus vastleggen wat je kenmerk betekent: eerste bekendmakingen, het laatst beschikbare economische beeld of de revisies zelf. ‘Groei van het aantal banen’ laat te veel onbeslist.
Herstel één publicatie voordat je tien jaar opnieuw doorrekent
Je kunt beginnen bij ALFRED, dat voor veel economische reeksen vintagegeschiedenissen aanbiedt. Controleer of je exacte reeks en periode gedekt zijn. Een vintagedatum op zichzelf bewijst geen beschikbaarheid gedurende de handelsdag; combineer die met gedocumenteerde publicatietijden voordat je de gegevens gebruikt voor een signaal op dezelfde dag.
Kies voor je eerste controle één publicatie en reconstrueer die handmatig:
- Zoek de gearchiveerde publicatie en noteer het publicatietijdstip, de referentiemaand en de eerste waarde.
- Bouw de momentopname van de invoer opnieuw op die je strategie vóór de instap zou hebben ontvangen.
- Bereken het signaal handmatig en vergelijk het met je replay.
- Voeg een latere revisie toe aan de gegevensopslag en controleer dat de eerdere beslissing ongewijzigd blijft.
Die laatste controle is bijzonder nuttig in een geautomatiseerde onderzoeksworkflow. Geef je onderzoeksagent naast de kenmerkwaarden ook de afkapgrens van de momentopname en de geselecteerde vintage-ID's. Je hebt genoeg bewijs nodig om een transactie terug te voeren op een specifieke publicatie, ook nadat de onderliggende database is gegroeid.
Zodra die ene beslissing reproduceerbaar is, voer je de geschiedenis opnieuw door en vergelijk je eerst de verschillen in signalen, vóór je de rendementen vergelijkt. Tel hoeveel instappen door het herstel zijn toegevoegd, verwijderd of verschoven. Je leert meer van die gewijzigde beslissingen dan van één enkele Sharpe vóór en na.
Je transactie in februari moet standhouden op basis van de informatie uit februari. Laat de revisie van april in april.
← Alle artikelen


