Évaluer la robustesse d’une stratégie de trading au premier coup d’œil

Forums ProRealTime forum Français Support ProOrder Évaluer la robustesse d’une stratégie de trading au premier coup d’œil

Viewing 15 posts - 1 through 15 (of 70 total)
  • #139325

    Bonjour à tous,

    je souhaite partager avec vous la traduction de l’article que j’ai rédigé pour mon blog anglophone sur le trading automatique au sujet de l’évaluation de la robustesse d’une stratégie.

    Bonne lecture 🙂


    Vous trouverez sur internet un grand nombre de systèmes de trading automatiques qui affichent une performance surhumaine sur le papier. Le problème est qu’ils génèrent des pertes immédiatement après leurs mise en production.

     

    Plusieurs questions se posent en conséquence :

    • Comment savoir si une stratégie est robuste ou sur-optimisée ?
    • Comment être sure qu’une stratégie ne va pas devenir immédiatement perdante après sa mise en production ?
    • Existe-t-il une manière d’évaluer la robustesse d’une stratégie de trading automatique ?

     

    Je vais vous expliquer ce que vous devriez vérifier pour savoir si une stratégie est robuste ou non. J’ai créé une batterie de tests pour vous permettre de valider votre stratégie avant de la lancer sur votre compte réel. Après quoi vous pourrez détecter si une stratégie est robuste au premier coup d’œil.

    Voici un premier ensemble de contrôles visuels que vous pouvez faire assez rapidement en vous basant sur le résultat de votre backtest.

     

    Écart-type globale de votre stratégie

    Vous pouvez commencer par regarder l’écart-type de vos résultats sur toute la durée de la stratégie. L’écart-type ne doit pas être trop important et il doit surtout être régulier tout au long de la stratégie. Cette régularité doit être indépendante des variations de marché.

     

    Écart-type trop important

    Voici le résultat d’une simulation d’une stratégie présentant trop d’écart-type :


    Cette stratégie offre une performance supérieure à 20 % mais avec plus de 30 % d’écart-type.

     

    Écart-type acceptable

    Voici le résultat d’une simulation d’une stratégie présentant un écart-type acceptable :

    Cette stratégie offre une performance inférieur à la première mais avec beaucoup moins d’écart-type. Elle est donc moins risquée et sera très certainement plus profitable à long terme.

    La première stratégie affiche une performance presque deux fois supérieure à la première mais elle présente un très grand écart-type. Cela traduit plus d’incertitude donc un plus grand risque.

     

    Répartition des gains

    L’essentiel des gains ne doivent pas être concentré sur une petite durée du test. Si vos gains sont concentrés sur une partie d’une période de votre backtest, c’est une preuve évidente de sur-optimisation. Cela signifie que votre stratégie est sur-optimisée sur une toute petite partie du marché qui a peu de chance de se reproduire dans l’avenir.

     

    Répartition des gains concentrés

    Voici le résultat d’une stratégie dont les gains sont trop connectés sur une petite partie du marché :

     

    Répartition des gains dispersés

    Le backtest suivant montre que la stratégie génère des gains régulièrement tout au long de la période de test :

     

    La répartition des gains pourra aussi être utilisée pour distinguer deux stratégies. Il vaut mieux choisir une stratégie moins profitable mais plus régulière.

     

    Mesure du Tracking Error

    Le « tracking error » est se mesure par l’écart type de la différence de performance entre l’actif et son indice de référence. Il devrait être faible et positif pour une stratégie.

    TrackingError = σ(Performance de la Strategie – Performance de l’actif)

    Le tracking error d’une stratégie robuste devrait être le plus petit possible.

     

    Tracking error d’une stratégie

    Dans la figure suivante, on voit que la forme de la courbe des gains suit celle de l’actif tradé. La différence de la performance entre la stratégie et l’actif est assez stable. On peut donc en déduire que le tracking error est acceptable.

     

     

    Il faut toute fois préciser que certaines stratégies peuvent être décorrélées de leur actif notamment les stratégies de très court terme (scalping et intraday). Dans ce cas il pourrait être normal que votre stratégie soit plus impactée par la volatilité de l’actif que par sa tendance de fond.

    Personnellement je préfère éviter les marchés trop volatiles même s’ils sont haussier. Il est donc normal dans ce cas d’avoir un tracking error plus important.

    Si le tracking error est proche de zero, alors il faut se demander s’il ne serait pas moins risqué de prendre un tracker et de faire du « buy and hold ».

    Par contre, une stratégie ayant un tracking error proche de 0 avec un levier inférieur ou égale à un mais clôturant toutes ses positions le soir et les week-end pourrait être une bonne approche. Car dans ce cas, vous reproduisez la performance d’un actif tout en gardant vos liquidités disponibles chaque soir. Cela vous permet de maximiser l’allocation de votre capital et d’avoir plus de sécurité.

     

    Ratio gain / perte

    Les gains moyens devraient être supérieurs aux pertes moyennes. D’autre part, cela doit être aussi le cas pour le plus gros gain qui doit être supérieur à la plus grande perte.

    En réalité le ratio gain / perte affiché par votre backtest n’est pas toujours pertinent. Si vous lancez une stratégie dont le nombre de trades perdants est trop importants à votre goût, vous pourriez être tenté de baisser vos stoploss. De cette manière, vous allez gonfler artificiellement votre taux de réussite. En contre partie, votre risque va augmenter car lorsque vos stoploss seront touchés, ils généreront une plus grande perte.

    Si on voulait pousser cette pratique à son paroxysme on pourrait carrément ne pas mettre de stoploss. Bien-sur, dans un marché très haussier, une tel configuration sera très gagnante jusqu’au jour vous les marchés se retournerons contre vous.

    Dans l’exemple suivant, j’ai volontairement sur-optimisé le taux de réussite d’une stratégie en augmentant le positionnement des stoploss à 1000 points sur le DAX :


    La stratégie affiche un taux de réussite à 100 % pour 23 positions ouvertes. Ce résultat semble exceptionnel mais si vous regardez la courbe des gains quelque chose devrait vous sauter aux yeux : on voit en effet que parfois, avant de gagner, une position génère une énorme perte potentielle.

    Maintenant voyons ce qui se serait passé si j’avais lancé cette stratégie sur mon compte réel après quelques semaines :


    La stratégie n’affiche qu’une seule perte mais de 562 points. Comparé aux 15 points de gains moyens, une seule perte peut dévaster la quasi totalité de la performance affichée d’une stratégie.

    On voit bien l’effet d’un seul trade perdant sur l’ensemble des gains générer par la stratégie :

     

    Vous devez donc rester méfiant à l’égard du ratio gain / perte affiché par votre backtest. Celui-ci ne traduira pas toujours la réalité. Le véritable ration de gain / perte doit se calculer à partir du positionnement de votre stoploss.

     

    Sécurisation des gains

    Pour être robuste une stratégie doit être équipée d’un système de sécurisation des gains. Ce dispositif consiste à placer automatiquement un ordre de vente lorsque les gains latents atteignent un certain niveau.

    De cette manière, si le prix de l’actif venait à baisser avant d’atteindre l’objectif initial, la position restera tout de même gagnante. (sauf en cas de gap ou de flash crack)

    Il faut donc vérifier si la stratégie sécurise bien ses gains en regardant si des gains latents ne se transforment pas en pertes ou en faibles gains. On peut faire cette vérification visuellement car on voit apparaître des pics sur la courbe des gains devenant des pertes au niveau du résultat de la stratégie.

     


    En principe, dans le cas d’une stratégie de continuation de tendance, le niveau de sécurisation des gains doit être supérieur ou égal au niveau du stoploss en terme de points. Donc si vous mettez votre stoploss à 50 points, vous devrez commencer à sécuriser vos gains à partir de 50 points au minimum.

    Personnellement je préfère ajouter quelques points en plus. C’est à dire que si je place mon stoploss à 50 points, je commencerais à sécuriser mes gains à partir de 55 points de profit latent.

     

    Temps dans le marché

    Le temps dans le marché doit être raisonnable. Si le temps dans le marché est supérieur à une journée alors il faut intégrer les frais overnight en les déduisant de la performance affichée.

    Il est très important de suivre l’évolution du temps dans le marché de la stratégie. Si le temps dans le marché devient de plus en plus long, cela peut être un signe de sur-optimisation. Le temps dans le marché doit aussi être surveiller durant l’exécution de la stratégie en trading réel.

     

    Écart-type du temps dans le marché

    Comme on l’a fait pour la courbe des gains on peut analyser l’écart-type du temps dans le marché sur toute la période du backtest.

    L’écart-type du temps dans le marché ne devrait pas être trop important. Dans le cas contraire, cela signifiait que certaines positions ont un temps très court alors que d’autres auraient un temps très long. Ce phénomène pourrait traduire un problème de sous-optimisation de votre stratégie.

    Voici un exemple d’une stratégie présentant trop d’écart-type sur son temps dans le marché :

     

    too much standard-deviation of its time in the market


    Le temps dans le marché du graphique précédent est beaucoup trop irrégulier. Cela traduit un problème de sous-optimisation donc la performance de cette stratégie est uniquement due à celle du marché. Donc quand le marché se retournera à la baisse, cette stratégie deviendra perdante.

     

    Augmentation du temps dans le marché

    La variation du temps dans le marché peut donner une indication sur le fait qu’une stratégie soit sur-optimisée ou sous-optimisée. Celui-ci devrait être stable du début à la fin du backtest.

    Exemple d’une stratégie avec une augmentation du temps dans le marché :

     


    Ici on voit que le temps dans le marché devient de plus en plus long. La stratégie a de plus en plus de mal à atteindre ses objectifs de prix. Dans ce cas de figure, soit la stratégie est sous-optimisée soit la stratégie est en train de devenir obsolète.

    Si l’augmentation du temps dans le marché survient quand le marché entre dans un range ou quand il y a un affaiblissement de la tendance de fond alors on peut conclure que la stratégie est sous-optimisée.

    Si non, il est possible que la stratégie soit en train de devenir obsolète et que le signal qu’elle donne est désormais ignoré par le marché.

     

    Temps en difficulté

    Le temps en difficulté est le temps durant lequel une position est en perte latente. On observe souvent des épisodes de reflux durant une position de swing trading ou intraday et cela est normal. Il y a cependant plusieurs choses à regarder par rapport à cela.

    Le plus important est la variation du temps en difficulté au cours de votre backtest. Si le temps en difficulté est de plus en plus long, cela peut traduire un risque de sur-optimisation ou que votre stratégie est en train de devenir obsolète. Vous devez aussi surveiller et comparer l’évolution temps en difficulté en trading réel par rapport à votre backtest.

    Si vous constatez que vos positions deviennent systématiquement en perte latente juste après leur ouverture, alors cela veut peut-être dire que les autres traders attaquent vos points d’entrés dans le sens inverse.

     

    Voici l’exemple d’un trade positif mais dont le temps en difficulté est beaucoup trop important :


    Durant toute la durée de ce trade, le système était en perte latente et n’aurait pas été en mesure de couper cette position sans concrétiser une perte. Ce trade est gagnant mais c’est un mauvais trade.

     

    Conclusions

    • Votre stratégie devrait générer des gains avec peu d’écart-type.
    • Vos profits devraient être réguliers et corrélés avec l’actif tradé.
    • Le plus important n’est pas nécessairement la performance en soit mais plutôt la régularité du résultat.
    • Si l’évolution de vos profits est trop erratique, alors il y a peu-être un problème de sur-optimisation ou de sous-optimisation.

     

    La découverte et l’apprentissage de chacun des concepts que j’ai abordé ici m’a coûté quelque chose. Aujourd’hui je prend le temps qu’il faut pour m’assurer que ma stratégie est robuste avant de la lancer sur mon compte réel. J’espère que la lecture de ce poste vous aura apporté quelque chose.


    Je serais ravis de savoir comment vous faites pour vérifier la robustesse d’une stratégie ?

    N’hésitez pas à me donner votre avis, surtout si vous avez un autre point de vu 😉

    Total of 11 users thanked author for this post. Here are last 10 listed.
    #145363

    Merci beaucoup pour cet article particulièrement bien écrit, il devrait servir de référence pour bien comprendre les dangers de la sur-optimisation, bravo.

    2 users thanked author for this post.
    #145869

    Bonjour Nicolas et merci pour ce retour 🙂

    #151177

    Salut

     

    Juste une question que je me posais, as tu créé des robots rentables dans le temps ? Testé en réel j’entends bien et non seulement en backtest

    #151228

    Bonjour Julik et merci pour votre question.

    Tout l’intérêt de faire des backtests approfondis, c’est de minimiser le risque d’envoyer une stratégie sur-optimisée en production.

    J’ai construit cette batterie de tests de robustesses au fur et à mesure de mes observations en situation réel.

    Donc oui, j’ai des stratégies gagnantes qui tournent sur mon compte réel.

    Ce article est un extrait de mon livre qui sera disponible demain sur le Marketplace de Prorealcode 🙂

    Vivien

    #166610

    Très bel article tiré de ton livre Vivien (Que j’ai dévoré en quelques heures, vraiment très intéressant, notamment même sur la notion de Gradient descent même s’il eut été top de faire une mini étude corrélation IS/OOS en fonction de cette notion, en tout cas je te félicite)

    Sur les points ci-dessus je suis globalement d’accord avec toi. Le seul risque, pour moi, c’est une (sur)optimisation en période IS ( Mais Quid en OOS) car avoir une très belle courbe “Overfit” des gains ne traduit pas nécessairement une très belle courbe OOS comme on le sais tous et malheureusement. On essaie juste de trouver des “éléments” permettant de rester sur cette lancée IS

    Pour aller plus loin, comme ci-dessus, je pense qu’il serait intéressant de faire une “mini” étude IS/OOS en fonction de chacun de ces points (Ce que j’avais fait sur d’autres notions kurtosis etc..que tu retrouveras sur le forum car cela fait des années que je bosse là dessus)

    En terme de publication, la seule qui tient la route à mon gout “montre” qu’il n’y a que 3-5 notions corrélées (Longue queue etc…). Tout le monde s’énerve sur les super stratégies, super indicateurs en occultant malheureusement beaucoup de points tantôt statistique, tantôt de money management etc…

    Passe une très bonne fin de journée

    Zilliq

    1 user thanked author for this post.
    #166657

    Bonjour Zilliq,

     

    Merci beaucoup pour vos compliments, surtout venant de ta part, car je sais à quel point tu es exigeant dans ton approche du trading automatique 😊 J’ai également parcouru ton blog (https://www.zilliqtradingresearch.fr) avec beaucoup d’attention 😉

     

    Personnellement, j’ai toujours observé une dégradation de la performance entre l’IS et l’OOS. Je n’ai jamais trouvé aucuns modèles permettant de garantir une équité entre les deux. Mais le fait de sélectionner des valeurs « stables » autour de la valeur donnée par le Gradient Descent peut aider à réduire ce risque. J’ai remarqué qu’un système légèrement sous-optimisé génère moins de différences entre l’IS et OOS. Je me méfie toujours des trop belles courbes de gains avec un taux de réussite supérieur à 70%.

     

    Je n’ai pas encore étudié kurtosis, mais depuis début février j’ai intégré le z-score en tant qu’indicateur de gestion de mes systèmes de trading automatiques. Quand celui-ci est supérieur à 85%, je coupe la stratégie et j’attends qu’elle réintègre sa performance « normal » (et que les conditions de marchés soient réunies). Pour le moment, cela à plutôt bien fonctionné car j’ai évité pas mal de pertes (mais aussi quelques gains). Globalement cette méthode de m’a permis de réduire la volatilité de mon compte de trading, ce qui est une très bonne chose à mon sens.

     

    Il est clair que l’erreur commune est de chercher un backtest offrant un haut taux de réussite avec un maximum de gains en IS. Pour moi une stratégie doit générer un minimum d’erreur en backtest. Je considère qu’une stratégie ayant un taux de réussite légèrement supérieur à 55% avec un gain moyen supérieur au perte moyenne est une bonne approche. Il faut surtout travailler sur la probabilité qu’a la stratégie de continuer de gagner dans l’avenir.

     

    Encore merci d’avoir acheté mon livre Zilliq, je suis très content que cela t’a apporté quelques chose,

    Je te souhaite un bon weekend

    Vivien

    #166660

    De rien Vivien @vschmitt c’est sincère

    J’ai lu et je lis encore énormément de livres de trading ( 95 % en anglais (Chan, Prado etc..) ) et je trouve sincèrement que le tien apporte un regard différent et très intéressant ce qui est très très rare en France

    Ce que j’ai trouvé intéressant c’est que tu arrives sur certains points aux mêmes conclusions que moi.

    Notamment sur ce point ” J’ai remarqué qu’un système légèrement sous-optimisé génère moins de différences entre l’IS et OOS”. Même observation, mais je n’ai pas d’explication. En gros moins on a de belles courbes et d’overfit, plus les résultats OOS seront corrélés. Un peu flippant et perturbant mais cela semble ainsi. Dans ma tête je vois cela comme une sorte de plafond de verre que l’on arrive pas à dépasser. Pareil les trades à SL constant semblent être ceux qui donnent plus de constante en OOS etc..

    J’ai du étudier les relations IS/OOS notamment avec un test de robustesse dont je parle sur le forum, je ne sais plus où, mais en gros sur une grande parti des indicateurs stats des résultats de backtest, et malheureusement aucun ne permet de bonnes prédictions de corrélation. La plupart des choses cela donne juste un petit avantage. En ce moment je travaille sur l’influence MAE/MFE. Des choses intéressantes mais trop tôt pour conclure et cela se trouve cela ne donnera rien

    Le piège dans ces études IS/OOS est une forme d’apophénie, autrement dit trouver des corrélations en éliminant les cas où il n’y a aucune corrélation. Ce que l’on fait naturellement dans 90 % des cas. Par exemple se dire qu’un RSI donne de très bons signaux d’achat/vente en éliminant tous les cas où cela ne fonctionne pas. En cela, le fana de maths que je suis adore, car les maths cela ne trompe pas, pas de subjectif que de l’objectif

    Toutes ces choses sont très intéressantes à étudier mais très très longues pour obtenir une conclusion, car il faut tout coder de A à Z, donc très long et après mouliner, mouliner, remouliner et PRT n’est pas réputé pour sa rapidité

    Sur ce, au plaisir de te lire et échanger

    Très bon WE

    Zilliq

    1 user thanked author for this post.
    #166691

    En gros moins on a de belles courbes et d’overfit, plus les résultats OOS seront corrélés.

    Logique puisque moins optimisé finalement ? Dans tout les cas, si on connaît le passé, on aura toujours un biais de réussite induit qu’on aura forcément pas en temps réel / futur. Tous les calculs prédictifs et statistiques ne pourront jamais labeliser une stratégie 100% identique à ce qu’elle était par le passé. Le prix du marché, c’est une “ligne dans le sable” , dés que le prix a pris un chemin, c’est irréversible et peu importe ce qu’est IS a voulu nous apprendre.

    Dans une analyse WF, si on veut des OOS corrélés à l’IS, alors on introduit un biais et par conséquent on suroptimise, d’où des OOS temps réel qui ne correspondent plus à nos tests de robustesse.

    L’idée du fusible avec le Z-score (écart type vis à vis de résultats moyen ?) est une bonne idée.

    1 user thanked author for this post.
    #166694

    Logique, mais perturbant 😉

    Imagine, moins la courbe IS est “belle” plus on a de chances que les résultats OOS soient corrélés

    Alors oui, mais jusqu’à quelle limite ?. Car finalement, à ce compte là on ne s’embête plus on fait un backtest “pourri” avec un gain positif et roule

    Il y a donc une ligne de fracture pas simple à déterminer (60-70 % de trades gagnants ?)

    En l’état actuel des recherches, je dirais que l’on peut définir une “belle” courbe IS = potentiellement plus d’overfit en fonction de certains paramètres (Faible max drawdown par ex etc..)

    MAIS ces mêmes paramètres/indicateurs ne semblent pas corrélés aux résultats OOS. En tout cas pour avoir fait de très très nombreux tests, je n’ai jamais rien trouvé de probant. Si tu as trouvé certains paramètres “prédictifs” @Nicolas ?

    A +

     

    Ps: Par ailleurs Nicolas, ou autre, aurais tu le code du Z-score indiqué dans les résultats de backtest PRT, car je n’ai trouvé que ce que tu avais posté

     

    1 user thanked author for this post.
    #166705

    Il faut se faire à l’idée, on ne prédit pas le futur. Peu importe toute la literature et les tests statistiques, c’est comme ça, mais vu qu’on a rien d’autre, alors on les utilise, parce que c’est humain de vouloir se repérer dans l’espace et de se rassurer.

    Je ne peux pas communiquer la formule utilisée pour le Z-score de la plateforme, désolé.

    #166711

    Merci @Nicolas même si je ne comprends pas que tu ne puisses pas la communiquer ?

    Mais bon, comme d’hab, on va se débrouiller et programmer …

    Le Z-Score est la distance à la moyenne de la performance du trade en cours en ombre d’écart type.

    Autrement dit : (Perf absolue-moyenne)/Ecart type

    Théorie de départ, une valeur supérieure à 68 % (85% pour Vivien) donc à plus de 1 EC est suivie par une perte de performance …

    C’est parti …

    #166712

    C’est comme ça, je ne peux pas. Bon weekend 🙂

    #166714

    Bon, c’est parti.

    Cela a été un peu long à calculer tout cela (D’ailleurs @vschmitt il y a des erreurs dans ton chapitre sur le Z-Score. Dans le tableau le Z-Score n’a pas d’unités (c’est un rapport), donc pas en Euro notamment 😉

    Quoi qu’il en soit, si on part sur un trading à trade constant.

    Bah c’est assez logique, mais sur plusieurs essais/algos on est quasi constamment avec un Z-score entre -0.85/+0.85 et on ne peut pas vraiment dire qu’un excès entraîne par la suite une baisse de performance 🙁

    Ps: Sur le Graph, le Z-Score est calculé à partir de la moyenne et de l’écart type de l’ensemble de la série

    1 user thanked author for this post.
    #166716

    Et maintenant avec un Trailing Stop sur plus de 300 trades

    On explose régulièrement les -2/+2 mais on ne peut pas dire que cela soit suivi d’une baisse de performance, ou même l’inverse

    Bref, en l’état et malheureusement, je crains que le Z-Score soit également une apophénie et je ne pense pas que l’on puisse s’en servir comme filtre pour couper un algos

    Bonne soirée

    1 user thanked author for this post.
Viewing 15 posts - 1 through 15 (of 70 total)

Create your free account now and post your request to benefit from the help of the community
Register or Login