Protections anti-repainting

Comprenez ce qu'est le repainting d'indicateurs, comment Backtrex le prévient, et pourquoi vos résultats de backtest sont fiables.

Qu'est-ce que le repainting ?

Le repainting se produit lorsqu'un indicateur ou une stratégie modifie ses signaux historiques après coup. Un signal qui semblait déclencher un achat à un moment précis peut disparaître ou changer lorsque vous regardez le même graphique plus tard.

C'est l'une des sources les plus courantes de résultats de backtest trompeurs. Une stratégie qui paraît très profitable en backtest peut performer faiblement en trading live parce que les signaux affichés historiquement ont été modifiés après le mouvement du prix.

Causes courantes du repainting

Utilisation des données de la barre en cours

De nombreux indicateurs utilisent le prix de clôture de la barre en cours alors que la barre est encore en formation. La valeur change à chaque tick jusqu'à la clôture de la barre, ce qui signifie :

  • Un signal "achat" peut apparaître en cours de barre, puis disparaître au moment de la clôture
  • Les moteurs de backtest qui utilisent les données finales de la barre montreront le signal comme s'il était confirmé, mais en trading live, vous auriez agi sur un signal non confirmé

Biais d'anticipation (Lookahead Bias)

Certains calculs d'indicateurs référencent des points de données futurs. Par exemple, un indicateur zigzag doit "regarder en avant" pour trouver le prochain pivot, ce qui signifie que ses valeurs historiques changent à mesure que de nouvelles données arrivent.

Recalcul de l'historique

Certains indicateurs recalculent tout leur historique lorsque de nouvelles données arrivent, réécrivant effectivement les signaux passés.

Comment Backtrex prévient le repainting

Données de barre confirmées uniquement

Backtrex impose une règle stricte : tous les calculs d'indicateurs et évaluations de signaux utilisent uniquement les données de barre confirmées. Spécifiquement :

  • Toutes les références de prix utilisent close[1] (la clôture confirmée de la barre précédente), pas close[0] (la barre en cours de formation)
  • Aucun indicateur ne peut accéder aux données de la barre en cours pour la génération de signaux
  • Cela garantit que chaque signal dans votre backtest existait et était visible au moment où il s'est déclenché

Pas d'anticipation

Le moteur de backtest traite les barres strictement dans l'ordre chronologique. À chaque barre :

  • Seules les données passées sont disponibles
  • Les barres futures sont complètement invisibles au calcul
  • Aucun indicateur ne peut référencer des données qui n'auraient pas été disponibles à ce moment

Ce que cela signifie pour vous

Lorsque vous voyez un signal d'achat à une barre spécifique dans votre backtest Backtrex :

  1. Ce signal a été généré en utilisant uniquement les données disponibles à ce moment
  2. Le signal aurait été visible si vous aviez regardé le graphique en direct
  3. Le même signal apparaîtra si vous exportez vers TradingView et vérifiez la même barre

Vérification par l'export

La fonctionnalité d'export Pine Script fournit une couche de vérification supplémentaire :

  • Exportez votre stratégie et lancez-la sur TradingView
  • Comparez les signaux et entrées de trades entre Backtrex et TradingView
  • La divergence garantie de moins de 2% confirme que l'anti-repainting fonctionne correctement

Pourquoi c'est important

Une stratégie avec des résultats de backtest réalistes vous donne :

  • Confiance : Ce que vous voyez correspond à ce que vous auriez vécu en trading live
  • Évaluation précise du risque : Les chiffres de drawdown et de perte reflètent le risque réel
  • Optimisation fiable : Les changements de paramètres produisent des améliorations réelles, pas des artefacts de repainting

Idée reçue courante

Certains traders pensent qu'utiliser close[1] au lieu de close[0] signifie "rater" une barre. Ce n'est pas une limitation. C'est la seule manière correcte d'évaluer les signaux :

  • En trading live, vous ne pouvez agir sur un signal qu'après la clôture de la barre
  • Utiliser close[0] vous donnerait un signal basé sur des données sur lesquelles vous ne pouvez pas trader en temps réel
  • Le "retard" d'une barre correspond en réalité au fonctionnement réel du trading