Aller au contenu

ADR-004 : quatre dates par observation, et une seule gouverne l'accès

Statut : acceptée le 2026-09-01.

Contexte

Une donnée fondamentale porte deux temps que rien n'oblige à distinguer, et que tout oblige à ne pas confondre. Le premier est la période économique décrite : le trimestre clos le 31 mars 2015. Le second est le moment où l'information est devenue connaissable : le dépôt accepté par la SEC le 15 mai 2015.

Un backtest qui utilise le bénéfice du premier trimestre à partir du 31 mars utilise une information que personne n'avait. L'alpha qu'il mesure est celui d'un devin, pas d'un gérant.

Le piège est qu'aucune erreur ne se produit. Le code tourne, les colonnes sont justes, le ratio de Sharpe est excellent, et le résultat est faux.

Décision

Toute donnée fondamentale ou macroéconomique porte quatre dates :

Champ Ce qu'il dit
period_end la fin de la période économique décrite
filing_date la date du dépôt auprès du régulateur
accepted_timestamp l'horodatage d'acceptation, quand il existe
available_from la date à partir de laquelle nous nous autorisons à l'utiliser

Seul available_from gouverne l'accès. Sa valeur par défaut est filing_date, avec un décalage conservateur configurable. Elle ne vaut jamais period_end.

PITFrame.as_of(date) rend, pour chaque entité et chaque période, la dernière observation dont available_from est antérieure ou égale à la date demandée. Les corrections de comptes sont conservées toutes, et c'est as_of qui choisit celle qui était connue.

Une construction où available_from précède period_end lève LookAheadError et arrête le pipeline.

Conséquences

Les données fondamentales entrent en retard, ce qui réduit l'alpha mesuré. C'est l'effet recherché : la différence entre l'alpha avec et sans point-in-time est précisément l'ampleur de la fuite.

Conserver les corrections multiplie le volume des tables par le nombre de révisions. Le coût est réel et accepté, parce que jeter les révisions détruit la propriété qu'on cherche à garantir.

Le test anti-fuite canonique est obligatoire dans la suite : dépôt accepté le 2015-05-15, date de portefeuille le 2015-03-31, accès refusé.

Options écartées

Un décalage fixe de quarante-cinq jours après la fin de trimestre. Rejetée parce qu'elle est fausse dans les deux sens : certains déposants publient en trois semaines, d'autres demandent un délai. L'approximation crée de la fuite là où le déposant est lent et jette de l'information là où il est rapide. Elle reste disponible comme repli explicite quand la vraie date manque, et le manifeste le déclare alors.

Ne garder que la dernière valeur connue. Rejetée parce qu'elle détruit exactement la propriété recherchée.