Module 8 — Construire un backtest crédible
Architecture d’un test et chronologie de l’information
Le backtest qui achète au prix qui a créé le signalSituation réelle
Le backtest qui achète au prix qui a créé le signal
Une règle achète à la clôture quand cette clôture dépasse la moyenne mobile. Le moteur calcule le signal avec le prix final de la séance puis exécute au même prix, comme si l’ordre avait été envoyé après connaissance de la clôture mais rempli avant sa fin. La performance paraît excellente parce qu’une petite fuite temporelle se répète à chaque transaction.
L’architecture d’un backtest doit reproduire une horloge : observation, calcul, décision, envoi, exécution, comptabilisation. Toute information voyage uniquement vers le futur.
Objectifs d’apprentissage
- Organiser données, signaux, ordres et portefeuille.
- Prévenir le look-ahead par une chronologie explicite.
- Distinguer test vectorisé et simulation événementielle.
- Produire des résultats reproductibles.
- Limiter la conclusion à ce que les données permettent réellement d’affirmer.
Commencer par la bonne question
À chaque ligne de résultat, pouvons-nous prouver que toutes les données utilisées existaient avant le prix d’exécution simulé ?
Une analyse utile commence par cette question avant de chercher une figure, un indicateur ou un paramètre. Elle force à préciser l’unité observée, l’horizon, la chronologie et le type de conclusion attendu. Sans ce cadre, une description a posteriori peut facilement être prise pour une règle prédictive.
Chronologie type
- 16 h 00 : la séance se termine.
- 16 h 01 : les données de clôture sont disponibles.
- 16 h 02 : le signal est calculé.
- séance suivante : l’ordre est transmis et exécuté selon l’hypothèse.
Si le test crédite le prix de 16 h 00, il exploite une information pas encore stabilisée. Une stratégie d’enchère de clôture peut être possible, mais elle requiert une règle et des données adaptées avant la clôture limite des ordres.
Reproductibilité
Enregistre version du code, paramètres, empreinte des données, environnement, graine aléatoire, date du test et sorties. Un notebook exécuté dans un ordre imprévisible ne suffit pas. Le test doit pouvoir être relancé depuis un environnement propre.
Tests automatiques utiles
- aucun signal ne dépend d’une date future ;
- cash et positions se réconcilient après chaque ordre ;
- frais ne sont jamais négatifs ;
- nombre d’unités respecte les contraintes ;
- une stratégie « rester en cash » produit zéro transaction ;
- un jeu synthétique au résultat connu produit le résultat attendu ;
- le décalage d’une date ne crée pas de rendement impossible.
L’événement pilote le temps
Une architecture événementielle traite successivement données, signaux, ordres et fills. Une approche vectorisée peut être correcte si les décalages sont explicitement vérifiés.
Les prix de barre sont des résumés
Acheter au plus bas ou vendre au plus haut d’une barre sans règle d’ordre préalable est impossible. Le modèle doit choisir un prix accessible et un coût.
Le portefeuille a une comptabilité
Cash, positions, intérêts, dividendes, frais, marge et valeur de marché doivent se réconcilier après chaque événement.
La reproductibilité inclut l’environnement
Version des données, code, dépendances, paramètres, graine aléatoire et horodatage appartiennent au résultat.
Méthode pas à pas
- Dessiner la chronologie. Pour chaque variable, noter date économique, date de publication, heure d’ingestion et première action possible.
- Séparer les objets. Conserver tables de prix, features, signaux, ordres, exécutions et positions distinctes.
- Écrire les invariants. Tester cash, quantité, prix, séquence temporelle et absence de valeurs futures.
- Réconcilier. Vérifier P&L par transactions puis par variation quotidienne du portefeuille.
- Rejouer. Un même identifiant de données et de code doit produire le même résultat.
Laboratoire guidé
du concept au dossier de preuve
- Écris la fiche avant d’ouvrir le résultat. Reformule la question — « À chaque ligne de résultat, pouvons-nous prouver que toutes les données utilisées existaient avant le prix d’exécution simulé ? » — sous forme d’une hypothèse réfutable. Indique la population, l’horizon, l’unité, le benchmark, la date de début et la date de fin. Donne un identifiant à cette version.
- Sépare données et interprétation. Crée une table brute en lecture seule, puis une table de variables dérivées. Pour chaque colonne calculée, conserve formule, paramètres, source, fuseau et premier instant d’utilisation. Une correction de donnée ne doit jamais être confondue avec une amélioration de stratégie.
- Produis un échantillon de contrôle. Utilise une règle plus simple, des dates décalées, une permutation ou un groupe comparable. Le contrôle doit conserver autant que possible fréquence, exposition et régime ; sinon la comparaison attribuerait au signal ce qui vient du marché général.
- Travaille à l’aveugle lorsque c’est possible. Masque la partie future lors de l’annotation et réserve un bloc temporel que tu ne consultes pas pendant la construction. Archive aussi les cas ambigus et les événements qui ne confirment pas le récit.
- Stress les hypothèses, pas seulement les paramètres. Augmente les coûts, retarde l’exécution, réduit la liquidité disponible et change raisonnablement la fenêtre. L’objectif n’est pas de trouver une variante qui réussit, mais de savoir dans quelles conditions la conclusion disparaît.
- Décide avec une règle écrite. Continue seulement si l’effet est mesurable, net de coûts, présent dans plusieurs segments et non concentré sur une valeur isolée. Sinon, classe le résultat « à réviser » ou « à arrêter » et explique précisément pourquoi.
Démonstration chiffrée
Une chronologie causale en cinq instants
À 16 h 00, la séance se termine. À 16 h 01, la clôture officielle est reçue ; à 16 h 02, le signal est calculé ; à 16 h 03, un ordre pour l’ouverture suivante est créé ; à 9 h 30 le lendemain, il est simulé au prix d’ouverture plus slippage. Le rendement de la nuit appartient donc à la période avant l’entrée, pas à la stratégie.
Un test unitaire modifie artificiellement la clôture de demain et vérifie que le signal d’aujourd’hui reste identique. Un second supprime les dernières lignes et vérifie que tout l’historique antérieur est inchangé. Ces contrôles simples détectent de nombreuses fuites.

Interpréter sans surinterpréter
- Timestamp trompeur. L’horodatage de période ne garantit pas que la donnée était publiée ou accessible à cet instant.
- Révisions. Une base actuelle peut contenir des valeurs révisées inconnues historiquement.
- Vectorisation. Un décalage oublié, un centrage ou un remplissage vers l’arrière introduit facilement du futur.
- Réconciliation partielle. Une courbe correcte visuellement peut cacher des erreurs de cash ou de quantité.
La discipline consiste à écrire ces limites avant de consulter le résultat final. Une conclusion négative ou incertaine n’est pas un échec : elle évite de transformer le bruit historique en décision coûteuse.
Lire un résultat qui confirme
ou contredit — l’intuition
Si le résultat paraît confirmer l’idée, commence par rechercher ce qui pourrait l’expliquer autrement : timestamp trompeur et révisions constituent ici deux contrôles prioritaires. Vérifie ensuite si l’effet existe encore après coûts, sur des paramètres voisins et sur une période qui n’a guidé aucune décision. Une confirmation qui disparaît dès qu’un détail raisonnable change est une piste d’exploration, pas une base d’action.
Si le résultat contredit l’intuition, ne déplace pas immédiatement le seuil. Vérifie d’abord les données et la chronologie, puis accepte l’hypothèse nulle comme issue possible. Pour « Architecture d’un test et chronologie de l’information », une absence d’effet peut signifier que le phénomène est descriptif, trop faible face aux coûts, propre à un sous-régime ou simplement absent dans l’échantillon. Chacune de ces explications exige une nouvelle expérience identifiée, jamais une retouche silencieuse.
Exercice
- Dessine la chronologie d’un signal calculé sur clôture et exécuté le lendemain.
- Crée les six tables : données, features, signaux, ordres, fills et positions.
- Écris cinq invariants et deux tests de non-fuite.
- Réconcilie le P&L d’une transaction avec la variation de cash et de position.
- Archive un manifeste avec hachage des données, code, paramètres et versions.
Afficher le corrigé détaillé
La chronologie doit montrer un strict ordre causal. Les features de t n’utilisent que les lignes ≤ t et le signal est décalé jusqu’au premier prix accessible. Les tests incluent l’invariance du passé lorsque le futur change, l’absence de remplissage arrière, la conservation du cash et la concordance entre somme des P&L réalisés/non réalisés et variation de valeur. Le manifeste contient au minimum version du fichier, période, fuseau, commit ou empreinte du code, paramètres, dépendances et graine. Une capture d’écran ne remplace pas cette preuve.
Le corrigé décrit une méthode, pas une unique valeur à mémoriser. Si ton résultat diffère, vérifie d’abord les unités, le calendrier, la définition des variables et l’instant où l’information devient disponible ; documente ensuite toute hypothèse alternative.
VÉRIFIER SA COMPRÉHENSION
Quiz corrigé
01Peut-on utiliser la clôture pour calculer et exécuter instantanément au même prix ?
Pas sans mécanisme d’ordre défini avant la clôture ; par défaut, non.
02Pourquoi séparer ordre et fill ?
Parce qu’un ordre peut être partiel, rejeté, retardé ou exécuté à un autre prix.
03Que détecte le test qui modifie le futur ?
Une dépendance illégitime de résultats passés à des données futures.
04Les données révisées sont-elles point-in-time ?
Pas nécessairement. Il faut conserver les millésimes historiques.
05Qu’est-ce qu’une réconciliation ?
La preuve que transactions, cash, positions et valeur du portefeuille racontent la même histoire.
À retenir
- Un backtest est une horloge avant d’être une courbe.
- Observation, signal, ordre et exécution sont des événements distincts.
- Les données révisées exigent une gestion point-in-time.
- Des invariants automatiques détectent des erreurs invisibles.
- La comptabilité du portefeuille doit se réconcilier.
- Le manifeste rend l’expérience rejouable.
Sources de référence
Enregistré uniquement dans ce navigateur pour l’aperçu gratuit.