Comment backtester une stratégie de trading : la méthode

Une méthode de backtest manuel pour le forex et les indices : replay honnête, coûts en R, taille d'échantillon, séries de pertes et contrôle prop firm.

Pour backtester une stratégie de trading, vous rédigez ses règles avec précision, vous rejouez l'historique des prix bougie par bougie sans voir la suite, vous consignez chaque trade que les règles produisent, coûts compris, et vous jugez le résultat au regard du nombre de trades dont vous disposez réellement. Pour un trader manuel ou discrétionnaire, comment backtester une stratégie se résume donc à du replay de graphique et un tableur, pas à du code.

La plupart des backtests échouent pour des raisons qui n'ont rien à voir avec la stratégie : des règles floues complétées après coup, des coûts oubliés, trente trades pris pour une preuve, une session supprimée après six mauvais trades. Chacune de ces erreurs produit un résultat meilleur que tout ce que vous verrez en réel.

Ce guide s'adresse aux traders forex et CFD sur indices qui travaillent EUR/USD, XAU/USD, NAS100 et des marchés similaires, y compris sur des comptes de prop firm. Il présente la méthode dans l'ordre, chaque chiffre étant calculé pas à pas.

Que peut vous apprendre un backtest, et que ne peut-il pas vous dire ?

Un backtest répond à une seule question : si ces règles exactes avaient été suivies sur ces données, avec ces coûts, à quoi auraient ressemblé les trades ? Il montre si un setup (une configuration d'entrée définie) a produit une espérance mathématique (expectancy) positive en R, jusqu'où sont allés les drawdowns et les séries de pertes, et si le résultat dépend d'une seule session ou d'un seul mois.

Il ne peut pas vous dire que l'avantage statistique (edge) va se maintenir : une stratégie ajustée sur une période peut échouer sur la suivante. Il ne peut pas vous dire si vous appliquerez les règles sous pression : c'est le forward test et un journal en réel qui le mesurent. Et un backtest manuel réduit votre propre biais sans le supprimer. Traitez le résultat comme un indice assorti d'une marge d'erreur, pas comme une prévision.

Comment écrire des règles qu'un inconnu pourrait appliquer ?

Le test d'une règle est simple : quelqu'un d'autre, avec seulement votre document et le graphique, prendrait-il les mêmes trades ? Si deux personnes divergeaient sur un tiers des setups, vous testez votre humeur, pas une stratégie.

Utilisez un modèle fixe :

Stratégie :         Cassure de Londres avec pullback   Version : 1.0
Marché / UT :       EUR/USD, entrées M15, contexte H1
Fenêtre horaire :   07:00-11:00 UTC uniquement
Filtre de contexte : clôture H1 au-dessus de la 50 EMA pour les achats (en dessous pour les ventes)
Déclencheur :       clôture M15 au-delà du plus haut ou du plus bas du range asiatique
Entrée :            ordre limite au niveau cassé, valable 4 bougies
Stop :              2 pips au-delà de l'extrémité opposée de la bougie déclencheuse
Sortie :            2R fixe ; clôture à 16:00 UTC si aucun des deux n'est atteint
Gestion :           aucune en v1.0
Taille :            0.5% du solde par trade
Pas de trade :      news à fort impact dans les 30 min ; 2 trades par jour au maximum

Chaque champ doit pouvoir se vérifier sur une bougie clôturée : « fort momentum » n'est pas une règle, « corps M15 plus grand que les trois précédents » en est une.

Versionnez vos règles. Modifiez quoi que ce soit, même la marge du stop, et vous passez en version 1.1 ; les trades pris sous la 1.0 ne comptent pas dans l'échantillon de la 1.1. Mélanger les versions, c'est ainsi qu'un backtest glisse sans bruit vers le curve fitting, c'est-à-dire la sur-optimisation sur le passé.

Comment configurer le replay de graphique pour ne pas tricher ?

Le backtest manuel souffre de deux biais distincts, et ils demandent des remèdes différents.

Le biais rétrospectif (hindsight bias) est dans votre tête. Vous avez déjà vu le graphique ou vous vous souvenez de la période : le setup gagnant paraît évident, et celui qui a échoué semble ne pas avoir rempli les conditions. Savoir que mars 2020 a été violent suffit déjà.

Le biais d'anticipation (look-ahead bias) se trouve dans les données ou les outils : une information qui n'existait pas au moment de la décision. Par exemple une bougie H4 ou journalière pas encore clôturée, un indicateur de fractales ou de zigzag qui confirme un swing plusieurs bougies plus tard, ou un script qui récupère mal les données d'une unité de temps supérieure. Dans le Pine Script de TradingView, request.security avec lookahead_on et sans décalage [1] renvoie des valeurs futures sur les bougies historiques.

Les remèdes :

  1. Départ aléatoire. Tirez les dates de départ au hasard, par exemple avec =RANDBETWEEN() (=ALEA.ENTRE.BORNES() dans Excel en français) sur une plage de dates, au lieu de choisir des périodes dont vous vous souvenez.
  2. Masquez les dates. Ignorez l'échelle des dates pendant le test et sautez les périodes que vous avez tradées en réel.
  3. Décidez uniquement à la clôture. Avancez d'une bougie, puis décidez.
  4. Notez les setups ignorés. Chaque fois que les règles se déclenchent et que vous passez votre tour, consignez-le avec la raison. Si les setups ignorés avaient été surtout gagnants ou surtout perdants, votre jugement fait partie de la stratégie et doit lui aussi être testé.
  5. Tranchez à l'avance l'ambiguïté d'une même bougie. Si une bougie touche à la fois le stop et l'objectif, vous ne pouvez pas savoir lequel est venu en premier. Supposez le stop, ou vérifiez l'unité de temps inférieure, et notez par écrit la convention retenue.

Connaissez les limites de votre outil. Le centre d'aide de TradingView indique jusqu'où remonte le Bar Replay sur le graphique 1 minute : environ 6 mois avec Essential, 1 an avec Plus, l'historique complet à partir de Premium. Le replay à la seconde commence en août 2022, le replay tick par tick est réservé au forfait le plus élevé et limité à 7 jours, et les graphiques Renko, Kagi et similaires ne sont pas pris en charge. TradingView précise aussi que les ordres passés pendant le replay sont exécutés aux prix en temps réel : le paper trading dans le replay ne constitue donc pas un historique de backtest valable. Tenez votre propre registre. Les pages d'aide sur le Bar Replay donnent les détails à jour.

Fips propose dans son application web un replay de graphique bougie par bougie qui masque le futur : avancer ou reculer d'une bougie, lecture de 0.25× à 10×, saut à une date et une heure précises, ou clic droit pour démarrer n'importe où. Les ordres au marché, limites et stop dessinent des boîtes de position sur le graphique, la taille se règle en lots ou en % de risque, et si le SL et le TP sont touchés dans la même bougie, Fips retient le stop. Le point de départ n'est pas tiré au hasard : choisissez la date vous-même. L'application est en bêta privée, avec un accès sur liste d'attente.

Que doit contenir le registre des trades d'un backtest ?

Un registre qui ne contient que des résultats est un tableau d'affichage, pas un test. Ces champs vous permettent de vérifier et de découper les données ensuite :

ChampPourquoi c'est important
Identifiant du setupRetrouver la capture et revérifier le trade
Version des règlesGarde les versions séparées
Heure (UTC) et sessionAnalyse par session sans erreur de fuseau
Stop en pips et en RLa base de tout chiffre en R
Coût en RSpread, commission, swap
MAE / MFE en RÀ quel point les gagnants ont frôlé le stop
Règle respectéeLes backtests ont aussi leurs écarts aux règles
News à proximitéVérifie si votre filtre news se justifie
Capture d'écranAuditer n'importe quel trade plus tard
Setup ignoré et raisonMesure votre jugement

Marquez les news à partir d'un vrai calendrier : le calendrier économique montre quelles publications à fort impact sont tombées dans votre fenêtre. Pour ce qu'il faut consigner une fois la stratégie en réel, voyez que noter dans un journal de trading.

Comment intégrer le spread, la commission et le swap en R ?

Les coûts sont la ligne que la plupart des backtests oublient, et sur des stops serrés ce sont eux qui décident de tout. Inscrivez le coût de chaque trade en R, dans une colonne dédiée.

Exemple chiffré. Hypothèses : EUR/USD, 1.00 lot, $10 par pip et par lot, un stop de 10 pips, un spread moyen de 1.2 pip et une commission aller-retour de $7 par lot.

1R               = 10 pips x $10    = $100
Spread           = 1.2 pip x $10    = $12
Commission       = $7 aller-retour
Coût total       = $12 + $7         = $19
Coût par trade   = $19 / $100       = 0.19R

La taille de lot s'annule : à 0.10 lot, chaque montant est dix fois plus petit et le coût reste de 0.19R. Le stop, lui, ne s'annule pas. Les mêmes coûts représentent 0.38R sur un stop de 5 pips, 0.095R sur un stop de 20 pips et 0.063R sur un stop de 30 pips. Le calculateur de valeur du pip donne le montant par pip pour d'autres symboles et d'autres devises de compte.

Appliquons-le. Une stratégie qui gagne 40% des trades à +2R et perd −1R sur les autres a une espérance brute de +0.20R. Sur un stop de 10 pips avec ces coûts, l'espérance nette tombe à +0.01R : autant dire rien. Avec le même profil en R sur un stop de 30 pips, il reste environ +0.14R.

Trois autres coûts ont leur place dans le registre :

  • Le slippage. Dans les marchés rapides, surtout pendant les news, les stops sont exécutés plus mal que le prix du stop. Ajoutez une estimation aux sorties stoppées proches d'une publication.
  • Le swap. Les positions conservées au-delà du rollover quotidien paient ou reçoivent un swap. Sur la plupart des symboles FX, une nuit, souvent celle du mercredi, est facturée triple pour couvrir le week-end ; les CFD sur indices et métaux peuvent différer. Référez-vous à la spécification du symbole chez votre broker.
  • L'élargissement du spread. Au rollover et autour des news, les spreads peuvent atteindre plusieurs fois leur moyenne. Si vos entrées se concentrent à ces moments, utilisez le chiffre élargi.

Combien de trades faut-il pour un backtest ?

Il n'existe pas de nombre magique. Beaucoup de guides parlent de 30, 50 ou 100 trades ; la réponse honnête dépend de la taille de l'avantage par rapport à la dispersion de vos résultats. Les tableaux donnent des intervalles de confiance à 95% : intervalles de Wilson pour le taux de réussite, approximation normale pour l'espérance.

Si 55% de vos trades backtestés ont été gagnants :

TradesTaux de réussite réel plausible (95%)
3037.7% à 71.2%
10045.2% à 64.4%
20048.1% à 61.7%
40050.1% à 59.8%

Après 30 trades, 55% est compatible avec tout, d'une stratégie clairement perdante à une excellente stratégie.

Le taux de réussite n'est pas l'avantage : faites donc le même exercice pour l'espérance. Pour la stratégie ci-dessus (40% de gagnants à +2R, perdants à −1R), l'espérance vaut +0.20R et l'écart-type d'un trade est d'environ 1.47R. L'intervalle à 95% vaut espérance ± 1.96 × 1.47 ÷ √n :

TradesIntervalle à 95% de l'espérance
30−0.33R à +0.73R
100−0.09R à +0.49R
2070.00R à +0.40R
500+0.07R à +0.33R

Il faut environ 207 trades pour que la borne basse passe au-dessus de zéro, et cela avant les coûts. Si les trades ne sont pas indépendants, par exemple parce que les setups se regroupent pendant les semaines de tendance, les vrais intervalles sont plus larges. Un avantage plus petit demande bien plus de trades : à +0.01R net, des dizaines de milliers.

Combien de trades par session avant de la supprimer ?

Découper par session, paire, jour de la semaine ou setup est utile, mais chaque tranche est un petit échantillon. Certains guides éliminent la session asiatique après six trades perdants : c'est du surapprentissage (overfitting) à l'état pur.

Pour la stratégie ci-dessus, la bande à 95% d'une tranche de 12 trades vaut environ ±0.83R. Une session à −0.30R sur 12 trades est statistiquement impossible à distinguer d'une session à +0.50R. Sur 50 trades, la bande reste d'environ ±0.41R.

Fixez la règle avant de regarder : un nombre minimum par tranche, par exemple 50 trades, en dessous duquel rien n'est supprimé. Quand une tranche paraît vraiment mauvaise, la retirer constitue une nouvelle version des règles, et l'amélioration doit tenir sur des données que vous n'avez pas encore vues.

Comment lire les résultats d'un backtest ?

Calculez les mêmes indicateurs que sur un compte réel, en R et après coûts : espérance nette, profit factor, payoff ratio, drawdown maximum en R, plus longue série de pertes et recovery factor. Le guide des indicateurs de performance trading détaille chaque formule sur des trades forex et or, elles ne sont donc pas reprises ici.

Trois habitudes comptent davantage qu'un indicateur isolé :

  • Lisez l'espérance avec son intervalle. « +0.18R sur 60 trades » signifie « quelque part entre nettement négatif et très bon ».
  • Vérifiez la concentration. Retirez les deux meilleurs trades et recalculez. Un résultat qui disparaît sans eux est fragile.
  • Comparez les setups ignorés aux setups pris. Si les setups ignorés ont fait mieux, votre filtre vous coûte de l'argent.

Quelle longueur de série de pertes faut-il attendre ?

Plus longue que ce que suggère l'intuition, même pour une stratégie rentable. Une simulation de trades indépendants donne ces chiffres :

Stratégie et échantillonPlus longue série de pertes typique8+ pertes d'affilée10+ d'affilée
40% de gagnants, 100 tradesenviron 8environ 49%environ 20%
40% de gagnants, 200 tradesenviron 9environ 75%environ 38%
40% de gagnants, 500 tradesenviron 11environ 97%environ 70%
55% de gagnants, 100 tradesenviron 5environ 8%environ 2%

Si 200 trades backtestés d'une stratégie à 40% de gagnants montrent une pire série de cinq pertes, vous avez eu de la chance. Ne dimensionnez pas vos positions comme si cinq était le pire cas.

Une série de pertes et un drawdown sont deux chiffres différents. La série compte les pertes consécutives ; le drawdown est la baisse du sommet au creux du R cumulé, qui peut inclure de petits gains et qui est en général plus profonde.

Comment faire un rééchantillonnage Monte Carlo dans un tableur ?

Votre backtest n'est qu'un ordre possible de ses trades. Un rééchantillonnage (reshuffle) mesure à quel point le drawdown dépend de cet ordre :

  1. Placez le R net de chaque trade en colonne A et =RAND() (=ALEA() dans Excel en français) en colonne B.
  2. Triez les deux colonnes selon B. En C, calculez le R cumulé ; en D, le sommet courant (=MAX(D1,C2)) ; en E, le drawdown (=D2-C2).
  3. Notez le maximum de E et la plus longue série de pertes dans A.
  4. Répétez 1,000 fois ou plus avec une table de données (analyse de scénarios) ou un petit script.
  5. Retenez le 95e percentile : le drawdown que seul 1 ordre sur 20 a dépassé.

Sur un registre hypothétique de 200 trades, 80 gagnants à +2R et 120 perdants à −1R, rééchantillonné 100,000 fois, le drawdown maximum médian était de 12R et le 95e percentile de 20R. La plus longue série de pertes avait une médiane de 9 et un 95e percentile de 13. Planifiez autour des 20R, pas des 12R.

Un rééchantillonnage suppose des trades indépendants et ne peut pas inventer un régime de marché que vos données n'ont jamais contenu.

Comment éviter le surapprentissage avec les tests out-of-sample et walk-forward ?

Chaque règle que vous ajustez après avoir vu les résultats consomme une partie de vos données. Bailey, Borwein, López de Prado et Zhu ont montré en 2014 qu'avec cinq ans de données journalières, il suffit d'essayer environ 45 variantes indépendantes pour s'attendre à ce qu'au moins une paraisse solide in-sample, même si aucune n'a de véritable avantage. Une douzaine de marges de stop multipliée par trois fenêtres horaires, cela fait déjà 36.

Séparez la découverte de la validation :

  • Découverte. Explorez, ajustez et arrêtez-vous sur une version 1.x.
  • Gel. Écrivez les règles et ne les modifiez plus.
  • Validation. Testez une seule fois sur des données plus récentes que vous n'avez pas regardées. Si le résultat s'effondre, le précédent tenait surtout de l'ajustement.
  • Walk-forward. Découvrez sur une fenêtre, validez sur la suivante, faites avancer les deux et ne jugez que les résultats de validation mis bout à bout.

Indiquez combien de variantes vous avez essayées.

Votre backtest résiste-t-il aux règles d'une prop firm ?

Une espérance positive peut quand même échouer à un challenge, car les règles des prop firms sanctionnent le chemin parcouru. Convertissez séries et drawdowns dans les limites du compte, mesurées sur l'equity, coûts compris.

Exemple : FTMO Challenge 2-Step (Standard), $100,000. L'equity ne doit pas descendre sous le solde de 00:00 CE(S)T moins 5% du capital initial ($5,000), ni sous le capital initial moins 10% ($10,000, statique). Le FTMO Challenge 1-Step a une limite de perte journalière de 3% calculée à partir du solde de 00:00 CE(S)T. Ces chiffres ont été vérifiés le 26 septembre 2026 par rapport aux règles officielles de FTMO ; confirmez-les sur la page de la société et comparez les autres sociétés sur la page des règles des prop firms.

Risque par tradeMarge journalière (2-Step)Marge jusqu'à la perte maxTrois pertes dans la journée
1% ($1,000)5R10R3% plus les coûts : franchit la limite journalière du 1-Step
0.5% ($500)10R20R1.5% plus les coûts : à l'intérieur des deux

En simulant la stratégie à 40% de gagnants sans coûts sur 200 trades, les pertes cumulées ont atteint 10R depuis le départ dans environ 14% des simulations et 20R dans environ 2%. À 1% de risque, cela fait une violation de la perte maximale statique dans à peu près un challenge sur sept, avec une stratégie rentable. Les coûts font nettement monter ces deux chiffres. Sur le FTMO Challenge 1-Step, trois trades par jour à 1% sont tous perdants sur environ 22% des jours : une violation journalière en quelques semaines est donc très probable.

Dimensionnez à partir du drawdown au 95e percentile, pas de la moyenne. Le calculateur de taille de lot convertit le % de risque et le stop en lots, et l'article drawdown journalier prop firm expliqué montre comment chaque société fixe son plancher journalier.

Comment utiliser le Strategy Tester de MT5 ?

Le Strategy Tester de MT5 exécute des stratégies codées (Expert Advisors) : il convient donc aux systèmes fondés sur des règles, et son mode de test modifie les résultats bien plus que la plupart des gens ne l'imaginent. La comparaison des modes publiée par MetaQuotes a fait tourner un même EA sur EUR/USD H1 pendant le premier semestre 2016 :

ModeProfit netTrades
1 minute OHLC+169.4696
Every tick−466.81158
Every tick based on real ticks−97.24156

L'aide de MetaTrader 5 sur la génération des ticks explique pourquoi : les modes générés construisent les ticks à partir des bougies avec un spread fixe par bougie M1, tandis que le mode à ticks réels utilise des ticks enregistrés avec un spread variable.

  • Utilisez « Every tick based on real ticks » pour les stops serrés, et lisez l'onglet Journal pour confirmer que les ticks réels ont bien été chargés. Un article communautaire sur MQL5 note que « History Quality 100% » ne le prouve pas à lui seul.
  • Utilisez l'option Forward. Elle réserve 1/2, 1/3, 1/4 ou une part personnalisée de la période comme données out-of-sample, toujours la partie la plus récente.
  • Activez le délai aléatoire. L'aide de MetaTrader 5 décrit 0 à 8 secondes avec 90% de probabilité et 9 à 18 secondes avec 10% de probabilité, une approximation grossière de l'exécution réelle.

Comment passer du backtest au forward test, puis au réel ?

Un backtest réussi est une raison de continuer à tester, pas d'augmenter la taille.

  1. Forward test. Tradez les règles gelées sur un compte démo, en temps réel, pendant un nombre de trades fixé à l'avance. Cela teste ce que le replay ne peut pas tester : votre capacité à repérer et à prendre les setups en direct.
  2. Petit réel. Tradez les mêmes règles avec de l'argent réel à risque réduit, par exemple un quart de la taille prévue.
  3. Comparez à l'intervalle. Demandez-vous si l'espérance en réel se situe dans l'intervalle du backtest et si les coûts d'exécution correspondent à vos hypothèses.

Gardez les trades de backtest, de forward test et de réel séparés ou clairement étiquetés dans votre journal de trading, pour que l'écart reste visible. Les sessions de replay de Fips affichent le résultat net, le taux de réussite, le profit factor, le drawdown maximum, l'espérance, le R moyen et une courbe d'equity. Elles ne modélisent pas les coûts : retranchez votre colonne de coûts avant de comparer.

Comment backtester une stratégie : la check-list

ÉtapeTerminée quand
RèglesSur modèle, versionnées, vérifiables sur bougies clôturées
ReplayDépart aléatoire, dates masquées, décisions à la clôture
RegistreTous les champs remplis, setups ignorés consignés
CoûtsSpread, commission, slippage et swap en R
ÉchantillonEspérance donnée avec son intervalle
RééchantillonnageDrawdown et série au 95e percentile connus
ValidationRègles gelées testées une fois sur des données récentes jamais vues
Contrôle propDrawdown au 95e percentile compatible avec les marges journalière et maximale
ForwardDémo, puis petit réel, comparés à l'intervalle

Questions fréquentes

Combien de trades faut-il backtester ?

Assez pour que l'intervalle de l'espérance, après coûts, exclue zéro. Pour une stratégie à +0.20R comme celle de l'exemple, cela représente environ 200 trades ; un avantage plus faible en demande beaucoup plus. Trente trades décrivent un échantillon mais ne confirment pas un avantage.

Le backtest manuel est-il fiable ?

Il est utile si vous maîtrisez les biais et intégrez les coûts en R. Il n'est jamais aussi propre qu'un test codé, car vous savez toujours à peu près ce qu'ont fait les marchés ; le forward test comble une partie de cet écart.

Peut-on backtester sur TradingView ?

Oui, avec le Bar Replay, dans la limite de l'historique que votre forfait autorise. TradingView précise que les ordres passés en replay sont exécutés aux prix en temps réel : gardez donc vos trades de replay dans votre propre registre.

Qu'est-ce qu'un bon résultat de backtest ?

Il n'existe pas de seuil universel. Un résultat exploitable montre une espérance positive après coûts avec un intervalle au-dessus de zéro, un drawdown au 95e percentile que les règles de votre compte peuvent absorber, et un comportement similaire hors échantillon.

Quelle est la différence entre backtest et forward test ?

Le backtest applique des règles à des données historiques. Le forward test applique les règles gelées en temps réel, sur démo ou en réel avec une petite taille, et vérifie si vous savez les exécuter et si l'avantage tient sur des données jamais vues.

Également disponible en : English, Türkçe, Deutsch, Español, Italiano

Icône de l’app Fips

Prêt quand vous l’êtes.

Notez, analysez et dimensionnez vos trades avec précision, rapidité et clarté.