Décorrélations entre backtest et exécution réelle

Bonjour à tous,

 

On se pose souvent et légitimement la question de la fiabilité des backtests.

Je vais essayer d’être concis. Je ne parlerai que des backtests sous Prorealtime que j’utilise, pas sur d’autres plateformes de trading (notamment les Expert Advisor de Metatrader, etc.)

 

De façon général, les backtests sont fiables, surtout avec l’utilisation du tick par tick.

Lorsque l’on backteste une stratégie, on peut en vérifier l’exactitude pour chaque trade.

 

Cependant…

Les trades « réels » ne sont pas toujours exécutés de façon identique.

Prenons notamment 2 facteurs qui l’expliquent facilement : le SPREAD et le SLIPPAGE.

 

Le slippage peut faire qu’un ordre n’est pas exécuté pile au moment où il devrait l’être. On peut donc avoir une petite différence de quelques pips.

Le spread peut varier au cours d’une même session. Or il n’est pas possible de backtester avec un spread variable selon les tranches horaires ou les circonstances de volatilité, et encore moins avec le spread tel qu’il l’a été au moment du trade testé en backtest : impossible d’avoir cette donnée.

 

En soi, vous allez me dire que ce n’est pas bien grave… mais parfois si.
Car il est déjà arrivé lors d’un krach (au printemps 2020, lors de ce que j’appelle la « crise du Coronavirus ») que le spread sur le DAX est passé de 1,2 point à presque 7 points en journée !!

En effet, en cas de volatilité extrême, le spread peut augmenter fortement.

De ce fait :

  • un ordre en backtest avait frôlé le stop loss à 5 pips près, avant d’aller ensuite directement au take profit
  • l’ordre en réel a touché le stop loss en raison du spread de 7 points

 

Par conséquent, le trade qui a été perdant en réel était en fait gagnant en backtest, et aurait du être gagnant, HORS cette anomalie de spread.

Il est malheureusement donc possible d’observer cette décorrélation entre backtest et résultat réel.

 

 

Autre cas de figure

avec un exemple récent.

Je prends l’exemple de mon « algorithme « DAY M15 », version DAX (comme vous le voyez, je n’ai pas peur de dire la vérité, pour ma propre stratégie).

 

Voici ce qui s’est passé en mars 2021 :

 

Le backtest avait clôturé après passage au breakeven, avec un petit gain, durant la nuit.

Or dans la réalité, c’est au stop loss que la stratégie a clôturé sa position, dans la matinée.

J’avais donc contacté ProRealTime (la plateforme de trading), qui m’avait fait comprendre qu’il fallait que je me rapproche d’IG (le courtier qui lui est associé), qui m’a répondu, j’ai recontacté ProRealTime en retour, etc

Je vous montre quelques emails d’échanges.

 

Réponse de PRT :

 

Email à IG :

 

Réponse de IG :

 

Nouvelle réponse de PRT :

 

Nouvelle réponse de IG :

 

Bref…

L’algorithme était bien fonctionnel, mais en raison d’un problème de volatilité l’exécution a été incorrecte.

Je n’avais heureusement pas vu cela auparavant.

 

En décortiquant le code, on en arrive en fait à la conclusion le les ordres limites / stop ne sont pas déclenchés en réel car ils ne sont valables en réel que pour la durée d’une barre : c’est ceci qu’il faut modifier dans le code de l’algorithme.

 

Pour conclure…

On peut très bien élaborer une excellente stratégie en backtests, qui a fonctionné très bien pendant des années.
Ce n’est malheureusement pas pour autant qu’une décorrélation entre le backtest et l’exécution en réel ne peut pas survenir par la suite.

 

Je ne suis pas responsable de ces erreurs d’exécution, tandis que ma stratégie fonctionne.

Par contre je suis (comme chacun l’est pour soi) responsable des choix que je fais dans le placement de mon capital entre diverses stratégies. Et pour éviter d’avoir une évolution du capital de mon portefeuille en « dents de scie », j’ai donc depuis le début fait les choix suivants :

 

Bon trading à tous, et je fais même dire : 
Bon trading diversifié à tous !