Backtesting et forward testing
Un backtest montre comment une stratégie se serait comportée sur le passé ; le forward testing la met à l'épreuve sur des données en temps réel, et les résultats en direct sont presque toujours moins bons que ce que le backtest promettait.
SurapprentissageLe backtest s'envole tandis que le live cale et commence à reculer.
Faites glisser le graphique ci-dessus de Simple à Surapprentissage : la courbe verte du backtest se lisse en une ligne parfaite, tandis que la courbe rouge en direct culmine tôt puis s'effondre. Cet écart porte un nom, le surapprentissage, et rester du bon côté de cet écart est précisément l'objet de ce module. Avant de risquer le moindre dollar sur une règle ou un modèle, vous le testez, et il existe exactement deux façons honnêtes de le faire, plus tout un éventail de façons de vous tromper vous-même. Ce module consiste à les distinguer. Un bon test peut vous épargner une mauvaise idée. Un test truqué, généralement truqué par accident, produit l'effet inverse : il vous donne la confiance nécessaire pour perdre de l'argent rapidement. À la fin, vous saurez comment mener un backtest digne de confiance, comment repérer les astuces qui font passer une stratégie perdante pour une machine à cash, et pourquoi le chiffre que votre test affiche est un plafond que vous n'atteindrez jamais tout à fait dans la vraie vie.
Backtesting : rejouer une stratégie sur le passé
Le backtesting consiste à exécuter une stratégie sur des données historiques pour estimer comment elle se serait comportée. Vous prenez vos règles, vous les appliquez à plusieurs années d'historique de prix, et vous les laissez « trader » cet historique pour voir à quoi ressemble la courbe de capital.
C'est nécessaire. Une stratégie qui perd sur le passé ne mérite pas d'être tradée avec de l'argent réel, un backtest constitue donc le seuil minimal à franchir en premier. Mais franchir ce seuil n'équivaut pas à atteindre le plafond. Un backtest se laisse facilement truquer pour afficher des résultats que la stratégie n'aurait jamais pu obtenir en temps réel, et la plupart du temps, personne ne le truque volontairement. Les erreurs s'infiltrent discrètement.
Considérez donc un bon backtest comme une autorisation de poursuivre l'investigation, jamais comme une preuve que vous allez gagner de l'argent. Le reste de ce module dresse la liste des façons dont un backtest d'apparence propre peut vous mentir.
Le biais d'anticipation : tricher avec le journal de demain
Le biais d'anticipation consiste à utiliser, dans votre test, une information qui n'était pas réellement disponible au moment de la décision simulée. Le test « sait » quelque chose que le trader réel n'aurait pas encore pu savoir, et prend donc une décision qu'aucun trader réel n'aurait pu prendre.
Deux exemples classiques :
- Utiliser le cours de clôture d'une journée pour déclencher un trade que vous prétendez placer « à l'ouverture » ce même matin. Dans la réalité, vous ne connaissez pas la clôture avant la fin de la journée.
- Utiliser des données fondamentales révisées qui n'ont été publiées que des semaines après la date que vous testez.
Même une infime fuite d'information future transforme une stratégie ordinaire en un fantasme de gains lisses et sans effort. La courbe de capital paraît magnifique parce que le backtest lit discrètement le journal de demain. Si un backtest semble trop propre et trop facile, le biais d'anticipation est la première chose à soupçonner.
Le surajustement, et la parade in-sample / out-of-sample
Le second grand piège est le surajustement. Si vous continuez à régler les paramètres d'une stratégie jusqu'à ce que sa courbe historique paraisse parfaite, vous n'avez pas trouvé un véritable avantage. Vous avez moulé la stratégie sur les moindres soubresauts du passé, y compris le bruit aléatoire qui ne se reproduira pas. La courbe est magnifique précisément parce que vous l'avez façonnée sur ce seul segment d'historique.
La parade standard est le test in-sample par rapport à out-of-sample, et c'est plus simple qu'il n'y paraît :
- Divisez votre historique en deux tranches.
- In-sample : réglez la stratégie sur la première tranche autant que vous le souhaitez.
- Figez les règles. Plus aucun ajustement.
- Out-of-sample : exécutez ces règles figées sur la seconde tranche, que la stratégie n'a jamais vue.
Si la performance tient bon en out-of-sample, l'avantage est peut-être réel. Si elle s'effondre, vous étiez en train d'ajuster du bruit, et mieux vaut l'apprendre maintenant qu'avec de l'argent réel. Une règle empirique à retenir : une stratégie avec des dizaines de paramètres et une courbe étrangement lisse est coupable jusqu'à preuve du contraire.
Le forward testing : la répétition générale honnête
Le forward testing, aussi appelé paper trading, consiste à exécuter la stratégie en direct sur des données en temps réel, sans capital réel engagé. C'est le complément honnête du backtesting, pour une raison simple : vous ne pouvez pas jeter un œil sur l'avenir. Les données arrivent un tick à la fois, exactement comme dans le trading réel, si bien que le biais d'anticipation et la triche discrète sur les données n'ont plus nulle part où se cacher.
Le forward testing vérifie aussi les aspects ennuyeux qu'un backtest a tendance à survoler : vos types d'ordres, votre timing, et le comportement réel des exécutions lorsque le marché bouge. C'est précisément dans ces hypothèses d'exécution que beaucoup de backtests « parfaits » s'effondrent.
Voyez-le comme le dernier point de contrôle avant l'argent réel. Le sauter, c'est la façon dont un magnifique backtest se transforme en un compte réel désastreux.
Pourquoi le direct est toujours pire que le backtest
Voici le schéma inconfortable : l'écart entre les résultats backtestés et les résultats en direct est réel, il est prévisible, et il va presque toujours dans le même sens. Le direct est pire. Trois forces en sont la cause.
| Force | Ce que c'est | Pourquoi le backtest l'a manqué |
|---|---|---|
| Coûts | Frais, écarts acheteur-vendeur, financement | Un backtest naïf suppose souvent des coûts nuls |
| Slippage | L'écart entre le prix attendu et le prix obtenu | Il augmente sur des marchés rapides ou peu profonds qu'un backtest traite comme calmes |
| Changement de régime | Les conditions de marché qui ont produit vos données ont disparu | L'histoire ne peut pas contenir un marché qui ne s'est pas encore produit |
C'est pourquoi il faut forward-tester assez longtemps pour observer de nombreux trades et au moins un changement de conditions de marché avant d'engager du capital. Comptez les trades et la diversité des conditions, pas les jours calendaires. Une stratégie rapide peut n'avoir besoin que de quelques semaines ; une stratégie plus lente en demande souvent plusieurs mois. La question n'est jamais « depuis combien de temps tourne-t-elle ? » mais « à combien d'épreuves a-t-elle survécu ? »
Le calcul des coûts qui tue discrètement un backtest
Un backtest annonce une stratégie qui gagne +40% par an sur un compte de $10,000, avec une courbe magnifiquement lisse, en tradant 300 fois par an. Le backtest supposait des coûts nuls. Ajoutons maintenant la réalité.
Disons que chaque aller-retour coûte environ 0.1% de la valeur tradée en frais et en spread. Sur 300 trades, cela représente environ 300 x 0.1% = 30% du volume tradé englouti par les coûts. Ajoutez ensuite quelques points de base de slippage par trade dans les moments rapides, et la situation empire.
Une fois recalculé avec les coûts, ce backtest à +40% pourrait réalistement se rapprocher de +8% à +10% en direct. Une stratégie qui semblait simplement médiocre peut basculer en perte nette une fois les coûts comptés honnêtement. Rien n'a changé dans la logique. La seule différence est d'avoir compté les coûts que le backtest ignorait. C'est pourquoi il faut soustraire des coûts et un slippage réalistes avant de s'enthousiasmer, et pourquoi le forward testing (où les coûts sont inévitables) est le véritable banc d'essai.
Une façon plus rigoureuse de séparer l'in-sample et l'out-of-sample
La séparation de base (réglage sur la première tranche, test figé sur la seconde) suffit à repérer la plupart des cas de surajustement. Pour être plus rigoureux, gardez la tranche out-of-sample véritablement scellée :
- Décidez de la séparation avant de regarder le moindre résultat, pas après.
- Testez sur les données out-of-sample une seule fois. Si vous continuez à regarder, ajuster et retester, cette tranche « jamais vue » devient peu à peu de l'in-sample elle aussi, et tout le bénéfice s'évapore.
- Préférez une stratégie qui reste simplement bonne sur les deux tranches à une stratégie éblouissante sur l'une et fragile sur l'autre. La constance sur des données jamais vues est le signal que vous recherchez réellement.
Combien de temps représente une durée « suffisante » de forward testing ?
Il n'existe pas de nombre de jours fixe, car deux stratégies peuvent trader à des vitesses radicalement différentes. La mesure honnête est l'exposition à la diversité :
- Suffisamment de trades pour qu'une série de chance ne puisse pas flatter le bilan. Une douzaine de trades ne vous apprend presque rien ; quelques centaines commencent à avoir du sens.
- Au moins un changement de conditions, afin d'avoir vu la stratégie évoluer aussi bien en range qu'en tendance, dans le calme et dans la panique, et pas seulement dans l'humeur de marché où elle a démarré par hasard.
Une stratégie haute fréquence peut cocher ces deux cases en quelques semaines. Une stratégie de swing plus lente peut avoir besoin de plusieurs mois. Si votre forward test n'a jamais vu qu'un seul type de marché, vous ne l'avez pas vraiment testée.
Vérification rapide des connaissances
Pourquoi un backtest est-il nécessaire, mais pas suffisant à lui seul ? Une stratégie doit au minimum survivre au passé pour mériter d'être tradée, un backtest constitue donc le seuil minimal. Mais les backtests se laissent facilement fausser par le biais d'anticipation, le surajustement et des coûts ignorés, si bien que le réussir ne prouve pas que vous gagnerez de l'argent en direct.
Qu'est-ce que le biais d'anticipation, en un exemple ? Utiliser dans le test une information qui n'était pas disponible au moment de la décision, par exemple déclencher un trade « à l'ouverture » en utilisant le cours de clôture de ce même jour, que ne connaîtrait encore aucun trader réel.
Pourquoi les résultats en direct restent-ils presque toujours en deçà du backtest ? Trois forces que le backtest sous-estime généralement : les coûts (frais, spreads, financement), le slippage (des exécutions moins bonnes que prévu), et le changement de régime (les conditions de marché qui ont produit vos données historiques ont évolué).
Sources
- CFA Institute, « Backtesting and Simulation », définition du test d'une stratégie sur des données historiques pour en estimer la performance.
- arXiv (académique), « Look-Ahead-Freedom as Temporal Non-Interference », l'utilisation d'une information non disponible au moment de la décision simulée.
- Notices of the AMS (académique), « Pseudo-Mathematics and Financial Charlatanism: The Effects of Backtest Overfitting on Out-of-Sample Performance », le surajustement comme le fait de décrire du bruit plutôt que la relation sous-jacente, incapable de se généraliser à de nouvelles données.
- CME Group, « About the Trading Simulator », le forward testing sur des données en temps réel sans capital réel avant le passage en direct.