ProRealTime
Pour partager sur le trading automatique, nos algorithmes, nos backtests
Répondre Page 1 sur 1

Détecter un faux optimum

par Euraed » 28 Oct 2018 23:35

Une contribution à destination des débutants en trading automatique.

L'un des obstacles rencontrés est ce que l'on nomme la sur-optimisation d'un algorithme sur une période donnée, donc par définition limitée dans le temps.

Lors de cette période de test, le marché traité passera par de multiples phases et les enchaînera les unes après les autres (exemple: consolidation, sortie de range, triangle, trend etc). Or lors d'autres périodes les configurations rencontrées seront d'amplitudes, de durées, de fréquences différentes.

Ainsi le premier piège des backtests est de se laisser entraîner dans la recherche des paramètres qui maximisent le résultat du test sur la période déterminée.
Malheureusement ce qui paraît optimum dans un contexte spécifique risque fortement de ne plus l'être dans un autre contexte, ici une autre période de test, dans le passé ou... l'avenir, notamment lorsque le robot sera propulsé dans un futur environnement réel.

La suroptimisation a souvent pour caractéristique d'être fragile et c'est ce qui va nous permettre d'en diagnostiquer la présence. L'equity flotte (varie) beaucoup et surtout les valeurs proches des paramètres testés ne permettent pas de reproduire les résultats.

Voici une illustration graphique du principe



Sur l'axe horizontal des x, nous avons le paramètre que l'on va faire varier. Par exemple, cela peut être un SL, un TP, un écart TP-SL, un ratio TP/SL, une taille d'ordre, un momentum, un seuil d'indicateur x etc. Peu en importe la nature, c'est le paramètre variable dont on souhaite observer l'influence sur le résultat.

L'axe vertical y indique la performance, souvent il va s'agir de l'equity. Notons au passage que la performance pourrait aussi être autre chose tel que un max DD, absolu ou relatif, un profit factor etc.

La figure ci-dessus montre deux exemples, l'un avec une courbe en rouge, le second en bleu.

On y voit des pics de performance isolée. Si l'on fait varier le paramètre x, à la hausse ou à la baisse, la performance décline de façon significative. On dira que la dynamique est élevée.

En revanche on note aussi la présence de plateaux de performance, éventuellement moins élevée que les pics et surtout avec des zones de valeurs du paramètre x assez distinctes du/des pics.

Ce sont ces zones qui sont un indice d'une probabilité forte d'être face à une logique décisionnelle fournissant des résultats robustes, contrairement aux pics qui devraient immédiatement alerter le backtesteur.
Les pics sont la signature caractéristique d'une suroptimisation.
La meilleure option sera souvent de se placer au centre du plateau, même s'il ne s'agit pas du maximum du plateau.

Ainsi je conseille fortement aux apprentis backtesteurs de réaliser ces courbes de performance en faisant varier les paramètres à tester sur de vastes plages.
C'est très long et énergivore mais ce sera une protection contre des désillusions ultérieures et cela permettra aussi de mieux comprendre pourquoi les perfs montent ou baissent et ce qu'il faudrait changer. Cela invite également à explorer des voies que l'on n'avait pas envisagées spontanément.

Bons tests !

Re: Détecter un faux optimum

par Robinhood » 29 Oct 2018 08:37

+1 je ne peux que valider ce qu'Euraed a mis en exergue.

La stabilité du couple paramètres-résultats sur un range de paramètres suffisamment large (ce quil appelle le "plateau") est réellement indispensable.

Dans l'idéal, avoir un plateau semblable sur d'autres sous-jacents peut être souhaitable mais cela dépend des paramètres envisagés.

Re: Détecter un faux optimum

par Euraed » 29 Oct 2018 10:19

Oui, une heuristique peut fournir des résultats similaires sur un autre marché mais avec des zones favorables un peu différentes. D'ailleurs comme tu le soulignes la raison pour laquelle il y a ces différences est à rechercher car cela peut valider ou invalider l'algo.

Sinon j'ai oublié de préciser un autre avantage de la concentration de backtests larges (toutes les configurations de paramètres) sur une seule année en premier lieu, cela évite de lancer un test d'un faux optimum sur d'autres années. Ce qui serait inutilement consommateur de ressources de développement. En outre par hasard on pourrait se retrouver dans une configuration où l'algo fonctionne également sur une autre année mais ce qui représenterait en fait une pseudo validation de la méthode.
Ainsi s'investir plus sur une année peut représenter en fait une économie globale de développement en nous évitant des tests presque inutiles; tant qu'un algo ne fonctionne pas sur des plages paramétriques non étroites il n'est guère valide et reste très fragile.

Cette approche est psychologiquement assez exigeante car elle suppose que l'on réfrène son envie de tester sa nouvelle 8ème merveille des marchés sur une longue période, pressés que nous sommes de valider notre présupposé génie et/ou de gagner un max de blé.

Re: Détecter un faux optimum

par Robinhood » 29 Oct 2018 11:00

+1 décidément on a vraiment une vision et une approche très semblable.

Re: Détecter un faux optimum

par VB6backtester » 01 Nov 2018 17:24

Bonsoir à tous , entièrement d'accord avec cette explication ! perso je le fais pas en graphique mais sur uneliste de valeur fournie par mon backtesteur en VBasic6. J'aime bien les paramètres qui induisent une variation en 'cloche' et pas des pics erratiques....
Mais je pense aussi qu'il faut rester le + possible sur des critères surs et simples (plutot que des indicateurs compliqués) par exemple : jours de congés d'été, heures de news (ou avant), volatilité maxi .... du concret.

Articles en relation
Détecter changement de valeur d'un indice maison
par Doudidoudou » 18 Avr 2018 15:41 (1 Réponses)

ProRealTime