Optimisation des variables avec Prorealtime
Cet article est un extrait du livre « Trading Automatique avec ProRealTime » écrit par Vivien Schmitt.
Dans ce chapitre nous allons procéder à des tests sur les valeurs des variables que nous avons choisi lors de la programmation de notre stratégie. Nous allons essayer de savoir si nous avons fait les bons choix de valeurs et s’il existe de meilleurs choix. Nous utiliserons beaucoup l’optimiseur des variables fourni par la plateforme Prorealtime.
Fonctionnement de l’optimiseur des variables
Le fonctionnement de l’optimiseur des variables est assez simple. Il va tester toutes les valeurs possibles d’une variable de manière incrémentale sur une plage de donnée défini et avec un pas d’avancement défini.
Par exemple vous pourrez tester toutes les valeurs du RSI de 0 à 100 avec un pas de 1. L’optimiseur des variables lancera donc 101 incrémentations.
Lancement de l’optimiseur des variables
Ouvrir la fenêtre de l’optimiseur
Pour lancer l’optimiseur des variables, il faut cliquer sur le lien « ajouter » qui se trouve en haut à gauche de la fenêtre de l’éditeur de code :

Note : vous pouvez aussi cliquer sur la clé à molette pour ouvrir l’optimiseur.
Fenêtre de l’optimiseur
La fenêtre de l’optimiseur des variables va s’ouvrir :

Optimiser une variable
Ajouter une variable à l’optimiseur
Pour ajouter une variable à optimiser, il faut d’abord mettre en commentaire la ligne de sa déclaration dans le code puis copier et coller le nom de la variable dans l’optimiseur.
Pour l’exemple, je vais lancer l’optimiseur sur la variable de volatilité maximum d’une de mes stratégies :
Mise en commentaire de l’initialisation de la variable « ecarTypeSmallMax » :

Ajout de la variable dans l’optimiseur :

Configurer la plage de données et le pas
Lorsque vous aurez cliqué sur « ajouter », la variable sera intégrée dans l’optimiseur des variables avec les valeurs par défauts suivantes :

La valeur « Min » correspond à la valeur de départ, c’est à dire que le premier backtest sera lancé en valorisant la variable « ecarTypeSmallMax » à ‘1’. Et puisque le pas est de 1, le second test sera lancé en valorisant « ecarTypeSmallMax » à ‘2’, etc.
Lancement de l’optimiseur
Pour lancer, l’optimisation des variables, il faut fermer la fenêtre de l’optimiseur et lancer votre backtest comme habituellement. Il faut simplement penser à cocher la case « maintenir la fenêtre ouverte » :

Lecture du résultat de l’optimiseur
Après avoir lancé votre backtest, la fenêtre du résultat de l’optimiseur va apparaître :

Cette fenêtre est composée de sept colonnes donnant des informations sur le résultat :
Colonne | Définition |
Gain | Gain total dans la devise de référence |
% Gain | Gain total en pourcentage |
Nbr positions | Nombre de positions ouvertes par votre système |
% Positions gagnantes | Taux de réussite de votre stratégie |
Gains moyens par position | Gains moyens par position |
Mode Tick | Quantité de bougies où un doute existe (1) |
Dernière(s) colonne(s) à droite | Valeurs testées de votre (vos) variable(s) |
Optimisation des variables et Tick par Tick
(1) Le backtest en mode tick par tick va tester toutes les données OHLC jusqu’au timeframe le plus petit en cas de doute sur un ordre ouvert et fermé durant la même barre (problème du “zero bar”).
Le mode dit de “levée de doute”, n’est pas actif durant une optimisation de variables, même si le mode est enclenché, d’où la présence de la colonne “tick mode” qui comptabilise la quantité de bougies où un doute existe et pour lequel il sera nécessaire de procéder à un backtest normal (sans optimisation) pour valider les résultats obtenus durant l’optimisation.
Trier le résultat de l’optimiseur
Les résultats de l’optimisation des variables est trié par défaut selon le gain généré par votre stratégie. Ce tri par défaut est assez trompeur car la plupart du temps, la valeur de la variable testée générant le plus de gain est totalement suroptimisée.
La meilleure façon de trier le résultat de l’optimiseur des variables est selon la variable tester. Il faut que vous puissiez observer l’évolution de la performance de votre système selon une variation linéaire de la variable testée.
Pour trier le résultat selon une colonne, il suffit de cliquer sur cette colonne. Nous allons donc trier le résultat de l’optimiseur selon l’évolution de la variable « ecarTypeSmallMax » :

Premier constat
Le premier constat que l’on peut faire est que la stratégie ne génère aucun profit si la valeur de la variable « ecarTypeSmallMax » est inférieure ou égale à 2.
Deuxième constat
Le deuxième constat est que la performance de la stratégie semble baisser si la valeur de la variable « ecarTypeSmallMax » est supérieur à 7. Pour avoir plus de visibilité sur l’impact de la valeur de la variable « ecarTypeSmallMax » sur notre stratégie, je vais relancer l’optimiseur test avec un plus grand intervalle de valeurs.
Approfondir l’intervalle de valeur
Pour modifier l’intervalle de valeur de l’optimiseur des variables, il suffit de réouvrir la fenêtre de l’optimiseur et de modifier les valeurs sur la ligne de la variable :

Voici le résultat de la relance de l’optimiseur

Troisième constat
Le troisième constat que l’on peut faire après avoir élargie l’intervalle de valeurs est que lorsque la valeur de la variable « ecarTypeSmallMax » est supérieure à ‘24’, la performance du système ne varie plus.
On est en droit de conclure que les valeurs supérieures ou égales à ‘24’ sont sous-optimisées.
On peut donc faire un élagage alpha-bêta des valeurs en supprimant les valeurs inférieures ou égales à ‘2’ et supérieures ou égales à ‘24’. Cet élagage sera surtout utile lorsque nous lancerons l’optimiseur sur plusieurs variables.
Les valeurs orphelines
Ce que je nomme « valeurs orphelines » sont des valeurs de variables impliquées dans la prise de décision qui sont suroptimisées par excès de précision. Cela signifie que si on fait varier un tout petit peu la valeur d’une variable orpheline, la stratégie tout entière devient perdante.
Par exemple, il est possible que sur une période de test, acheter le marché quand le RSI 14 est inférieur à 17 donnait un résultat très positif. Mais si on relançait cette mème stratégie en remplaçant 17 par 18 ou par 16 alors la stratégie devient très perdante.
C’est une sorte de concours de circonstance qui a fait qu’acheter si le RSI 14 est inférieur à 17 précisément avait donné un résultat très positif.
Tester si une variable est orpheline
Pour savoir si la valeur d’une variable est orpheline, il faut lancer l’optimiseur de variable sur cette variable avec un intervalle de valeur suffisamment large et avec un pas suffisamment précis.
Dans l’exemple suivant imaginons une stratégie simple : nous souhaitons acheter quand le marché est survendu à l’aide de l’indicateur RSI. Nous souhaitons ouvrir une position acheteuse quand le RSI est inférieur à 30. Nous avions choisi par défaut la période 14 (RSI[14]) et nous souhaitons vérifier si cette valeur est orpheline.
Nous lançons donc l’optimiseur de variable en faisant varier la période du RSI de 0 à 30 avec un pas de deux.
Voici le résultat de l’optimiseur de variables

Dans le tableau précédent, la variable sur la dernière colonne de droite (x) correspond aux valeurs possibles de la période de l’indicateur RSI. Nous avons trié par ordre croissant le résultat du tableau selon la période du RSI, ce qui est très important pour la suite.
On voit que la période de l’indicateur RSI n’est gagnante que pour une période de 14 bougies. Les valeur précédentes (12) et suivantes (16) sont perdantes, ce qui est typique des variables orphelines.
En fait, on pourrait définir une valeur orpheline comme « une valeur gagnante entourée de valeurs perdantes ».
Elargissement de la période de test
Par curiosité nous allons relancer notre test mais en augmentant la période maximum du RSI à 50 bougies :

Le résultat est très intéressant car on observe que toutes les valeurs de la période allant de 30 à 50 sont gagnantes. On peut donc imaginer que la meilleure valeur de période de notre RSI se trouve quelque part entre 30 et 50.
Conclusion
L’optimiseur des variables de ProRealTime est un outil très puissant qui nous permets de tester toutes les valeurs possibles d’une variable.
Par défaut, l’optimiseur des variables va trier le résultat selon le gain, mais il sera souvent plus intéressant de trier le résultat selon la variable que l’on teste.
La valeur générant le plus grand gain n’est pas toujours le meilleur choix possible. Si cette valeur est orpheline, c’est-à-dire qu’elle est entourée par des valeurs perdantes, alors il y a un risque de suroptimisation.
Dans l’idéal, vous devriez lancer l’optimiseur des variables sur chacune des variables directement impliquées dans la prise de décision pour être sûr qu’aucune valeur ne soit suroptimisées par excès de précisions.
Il existe différents modèles permettant de choisir la meilleure valeur tout en limitant le risque de suroptimisation. Il y a notamment l’algorithme du Gradient Descent, le Walk-Forward et la modélisation Stochastique.
Dans mon livre au chapitre « VI. Analyse des Backtests » , je vous présente ces modèles en vous expliquant comment les utiliser avec ProRealTime. Je vous montrerai également quels sont leurs possibilités et leurs limites afin que vous puissiez utiliser au mieux ces modèles.
Vivien Schmitt
Accédez vous aussi à la méthode que j'utilise au quotidien
Vous êtes 64% à souhaiter développer une nouvelle source de revenus.
52% à vouloir devenir libre financièrement
28% à vouloir vous constituer un capital pour préparer votre retraite.
Vous en avez marre de voir vos gains effacés par les pertes? Vous avez perdu beaucoup en bourse?
Vous ne savez pas détecter les actions qui vont monter, ni si c'est le moment d'acheter ou de vendre?
Peut-être avez vous peur de vous lancer? Vous êtes hésitant?
Alors essayez mon outil d'aide à la décision dont l'objectif est de vous simplifier la vie au maximum.
Vous voulez en savoir plus?Cliquez ici pour accéder à ma méthode de swing trading complète
