Aller au contenu

Fuite de données et biais d’anticipation

Information indisponible au moment de la décision qui contamine features, règles, validation ou simulation des ordres et produit des résultats historiques non reproductibles causalement.

Citer cette entrée

Cette référence cite l’entrée de Cyclepedia. Les documents utilisés sont indiqués dans les sources de l’entrée.

À qui s’adresse cette page — À quiconque transforme des données historiques en signaux, optimise des paramètres, emploie le machine learning ou simule des ordres. Un modèle peut être correctement programmé et pourtant « connaître » le futur parce que la causalité a été violée dans une jointure, une feature, un découpage ou un prix d’exécution.

La fuite de données est la contamination d’une procédure de recherche par une information qui n’aurait pas dû être disponible au point où elle est employée. Le biais d’anticipation est son cas temporel : la décision au temps t intègre directement ou indirectement des données connues seulement après t. Le résultat n’est pas simplement optimiste ; il simule une autre stratégie, dotée d’un canal d’information inexistant.

En termes simples — Il ne suffit pas de trier les lignes par date. Chaque étape doit respecter cette chaîne : information disponible → signal → ordre → éventuelle exécution → position → résultat.

Pipeline causal : événement, signal, ordre et exécutionChaque flèche doit respecter la disponibilité et le premier instant exécutable. Exemple temporel : aucune exécution sur la même barre n’est supposée sans une règle de marché vérifiable.Pipeline causal : événement, signal, ordre etexécutionChaque flèche doit respecter la disponibilité et le premier instant exécutableExemple temporel : aucune exécution sur la même barre n’est supposée sans une règle de marché vérifiable.t₀1ÉvénementLe fait économiqueou de marché seproduit au momentde l’événement.t₁2DisponibilitéLa stratégie nereçoit et ne peuttraiter la donnéequ’après le délaicorrespondant.t₂3SignalLe calcul s’achèveen utilisantl’instantanéinformationneldisponible.t₃4OrdreL’instruction estconstruite,envoyée etacceptéeconformément au…t₄5ExécutionL’exécution exigeun prix et uneliquiditéultérieurscompatibles avec…evento ≤ disponibilità ≤ segnale ≤ ordine ≤ primo fill possibileCyclepedia · schéma pédagogique conditionnel, ni prévision ni promesse
Chaque flèche doit aller du passé vers le futur. Un retour vers la gauche signale une possible fuite d’information.

Distinctions essentielles

Problème Ce qui se passe Exemple
Look-ahead une valeur future entre dans la décision décider avec le prix final de l’enchère puis antidater l’ordre à cette même enchère
Target leakage la variable à prévoir filtre dans les features agrégation incluant également la période future de la cible
Fuite du prétraitement estimation ou sélection emploie ensemble train et test normaliser avec la moyenne et l’écart-type de tout l’échantillon
Fuite entre échantillons l’entraînement intègre des résultats encore inobservables à sa date limite une cible à cinq séances se termine pendant la période de test
Information révisée la valeur finale remplace le millésime disponible donnée macro corrigée plusieurs mois plus tard
Simulation non causale l’ordre reçoit un prix impossible signal sur le close et exécution garantie à ce même close

Le biais de survie est distinct : il résulte de l’observation exclusive des entités survivantes ou sélectionnées a posteriori. Il peut coexister avec une fuite, mais corriger les horodatages ne recrée pas à lui seul les instruments défaillants, les fonds fermés ou les anciennes composantes d’un indice.


Trois horloges : signal, ordre et exécution

Une règle de trading doit déclarer au moins trois moments :

  1. Heure du signal : moment où le signal est prêt, distinct de l’heure limite des informations admises dans le calcul.
  2. Heure de l’ordre : création et transmission, suivies de l’arrivée et de l’acceptation sur le marché.
  3. Heure d’exécution : instant ou intervalle où l’ordre admis peut rencontrer des prix et quantités compatibles.

Si la décision exige le prix final close[t], elle ne peut déterminer la participation à l’enchère même qui forme ce prix. Un ordre de clôture transmis auparavant doit respecter les heures limites du marché et utiliser les informations alors disponibles : la fiche NYSE citée distingue l’entrée des ordres du processus d’enchère. Une exécution ultérieure pourrait avoir le même prix numérique, mais pas le même instant. Le plus haut et le plus bas définitifs de la barre ne sont pas des entrées disponibles avant son achèvement ; une relecture intrabar doit n’exposer que les événements déjà observés à chaque décision.

Pour les communiqués, dépôts et données macroéconomiques, la date de la période économique n’est pas l’horodatage de diffusion. La stratégie doit aussi avoir reçu et pouvoir traiter la donnée. Les données point-in-time conservent les versions (millésimes) : une révision ultérieure ne remplace pas celle disponible lors de la décision. ALFRED reconstitue ce qui était connu à une date historique ; il ne certifie pas à lui seul l’heure intrajournalière ni la latence du fournisseur utilisé.


Où se cache la fuite

Features et transformations

  • moyennes centrées, filtres bidirectionnels ou interpolations utilisant des observations futures ;
  • classement cross-sectional calculé sur un univers reconstitué aujourd’hui ;
  • winsorisation, imputation ou standardisation estimées sur tout le jeu de données ;
  • fondamentaux alignés sur la fin du trimestre plutôt que sur le dépôt ;
  • splits et dividendes appliqués sans distinguer date d’effet et information connue.

Pour standardiser une variable : z = (x − moyenne_train) / écart_type_train. Estimez moyenne et écart-type dans l’entraînement de chaque fold, puis réutilisez-les sur son test ; traitez aussi un écart-type nul. scikit-learn distingue fit de transform.

Recherche et sélection

Le data snooping réutilise l’échantillon pour l’inférence ou la sélection : il peut produire un gagnant fortuit même si toutes les entrées respectent le temps. Il se distingue donc du biais d’anticipation.

Le jeu de test peut être contaminé même sans colonne future. Consulter répétitivement son résultat pour choisir features, seuils ou modèles le transforme progressivement en donnée de développement. Le hors échantillon n’est pas une étiquette de fichier : c’est un rôle dans le processus. Le nombre de solutions essayées, les décisions écartées et les critères de sélection doivent être enregistrés.

Ordres et exécution

Un prix OHLC ne démontre pas que l’ordre aurait été exécuté. Stops et ordres à cours limité peuvent être touchés sans exécution ; la quantité disponible peut être insuffisante ; la priorité dans la file est inconnue ; retards et exécutions partielles changent la position. Attribuer systématiquement le prix le plus favorable de la barre constitue une connaissance rétrospective, distincte mais liée aux coûts de transaction du backtest.


Protocole causal

  1. Écrire la décision avant le code. Énumérer entrées, horodatages, fuseau, heure limite, fréquence et action produite.
  2. Versionner les données brutes. Conserver instantanés, millésimes, univers et opérations sur titres sans écraser l’histoire.
  3. Calculer chaque feature « as of ». À la décision t, exclure les enregistrements avec available_at > t et sélectionner la version alors disponible de chaque donnée ; documenter la construction de available_at.
  4. Ajuster uniquement dans l’entraînement. Estimer imputation, mise à l’échelle et sélection des variables dans l’entraînement de chaque fold ; appliquer au test les transformations apprises. Choisir les paramètres avec la validation, en préservant le test final.
  5. Respecter l’ordre temporel. Chaque cible d’entraînement doit déjà être observable à sa date limite. Si les intervalles d’information chevauchent le test, évaluer la purge et les gaps selon les dates effectives, et non la seule proximité des lignes.
  6. Geler la spécification. Avant l’évaluation finale, enregistrer règles, paramètres, univers, benchmark et métriques.
  7. Séparer signal, ordre et exécution. Appliquer retards, calendrier, type d’ordre et données réellement observables.
  8. Conserver tous les essais. Un registre des variantes réduit l’invisibilité du data snooping.
  9. Repartir d’un instantané propre. Le résultat doit être reproductible sans fichiers intermédiaires construits avec le futur.

Exemple illustratif — Une règle achète à l’ouverture lorsque le bénéfice trimestriel dépasse les attentes. La base associe la donnée à la fin du trimestre, mais le communiqué arrive six semaines plus tard. Le test initial achète donc avant la publication. La correction conserve disponibilité et millésimes du communiqué comme du consensus des attentes, calcule le signal et attend une fenêtre d’exécution compatible avec l’arrivée de l’ordre. Les nombres et la séquence illustrent le contrôle causal, et non une stratégie recommandée.


Tests diagnostiques

Test Ce qu’il peut révéler
Décaler chaque feature d’une barre dépendance cachée à la barre courante
Reconstituer le jeu de données à une date historique valeurs révisées ou appartenance rétrospective
Augmenter artificiellement latence et gap fragilité de la séquence causale
Ajuster le prétraitement séparément pour chaque fold contamination train/test
Supprimer le prix « parfait » de la barre exécutions impossibles ou sélection favorable
Réaliser un placebo avec une cible décalée dans le temps corrélations suspectes dans la chaîne

Un effondrement après ces tests est un signal d’alarme, pas une preuve automatique de la cause. Un résultat stable ne démontre pas non plus l’absence de fuite : certaines contaminations peuvent résister aux perturbations.

Cibles futures et frontières de l’entraînement

La cible est le résultat à prévoir. Par exemple, le rendement des cinq séances suivant la ligne t n’est connu qu’après ces séances. L’utiliser comme objectif d’un entraînement ultérieur est normal ; l’introduire parmi les entrées de t, ou dans un entraînement terminé avant sa réalisation, apporte une information future. Exclure les cibles dépassant la date limite est différent d’interdire toute corrélation entre observations. Le gap de scikit-learn compte les lignes exclues : il ne reconstitue pas automatiquement la durée et la disponibilité de chaque cible.

Limites

Découpages temporels, walk-forward ou validation croisée ne réparent pas des données déjà contaminées. Purge et embargo doivent découler de la structure des labels, et non être appliqués comme des rituels. Un jeu causal peut encore souffrir d’erreurs de mesure, de sélection multiple, de changement de régime, de faible puissance ou d’un univers incomplet. La validation exige donc à la fois des contrôles statistiques et un audit du parcours de l’information.


Références

Liens connexes