Test de robustesse
Forums › ProRealTime forum Français › Support ProOrder › Test de robustesse
- This topic has 11 replies, 5 voices, and was last updated 6 months ago by YvesRobert.
-
-
08/23/2020 at 3:03 PM #142343
Bonjour à tous,
J’entends beaucoup parler de “Test de Robustesse” pour nos stratégies, cependant, hormis le Walk Forward qui permet de tester l’efficience des variables choisies ou bien lancer la stratégie en démo durant des mois, je ne vois pas comment tester la robustesse générale de notre stratégie.
Y’a t-il des “add-ons” à ajouter aux codes ou bien des modules/plug-in afin de réaliser divers test de robustesse, comme par éxemple la méthode Monte-Carlo ?
Comment testez-vous la robustesse de vos stratégies ?
Cordialement
08/23/2020 at 4:28 PM #142359Il n’y a en effet que l’affrontement avec le marché qui peut donner une idée de la robustesse d’une stratégie, comme tu l’as remarqué on peut le faire dans le passé avec le module de Walk Forward.
Le tirage de Monte Carlo est aussi une autre façon de procéder. Je te conseille de lire et d’utiliser les outils que @Vonasi a créé pour cela, dans ce sujet anglophone: https://www.prorealcode.com/topic/day-month-year-strategy-robustness-tester/
Il y a aussi ce nouveau sujet créé par un membre récemment : https://www.prorealcode.com/topic/tableur-google-sheet-danalyse-de-track-record/
08/23/2020 at 4:43 PM #142362Excellent, un grand merci Nicolas, je vais éplucher tout ça!
10/24/2020 at 9:39 PM #148363Bonjour,
Evidemment au minimum la courbe de gains doit être la plus régulière possible avec un drawdown minimal. Le bon critère d’optimisation d’une stratégie n’est d’ailleurs pas le gain, ni le % de réussite, mais le ratio Drawdown max / capital. Et tout ça dans des conditions de marché variables : des périodes haussières et baissières, et des périodes à forte et faible volatilité.
Mais ça ne suffit pas. J’ai tourné longtemps autour de ce sujet, y compris en lisant la théorie de Vapnik-Chervonenkis, qui constitue le top sur le sujet (mais y a intérêt à aimer les maths…). Voir sur google ou lire le bouquin de Yann Le Cun sur le sujet des réseaux de neurones et de l’apprentissage. La notion de “dimension de Vapnik-Chervonenkis”, dite “Dimension VC” est la clé du problème mais est tout sauf utilisable facilement. Pour simplifier et qui est logique, c’est que moins un algorithme (qui donne les résultats qu’on en attend) utilise de paramètres différents, plus il est robuste.
Voici une analogie hyper-simplificatrice de ce principe finalement de bon sens : quand on a 2 points on trouve toujours une droite (un polynome de degré 1) qui passe par ces 2 points. Quand on a 3 points, sauf cas particulier (s’ils sont alignés), on ne peut pas faire passer une droite par les 3 points mais on trouve toujours une parabole (polynome de degré 2) qui passe par les 3 points.
En quand on a N points, on trouve toujours un polynome de degré N+1 qui passe par les N points.
Traduction en trading : Si mon algorithme utilise N paramètres différents, je trouverai toujours une combinaison de valeurs qui me donne un backtest de N+1 trades gagnants…
Donc si mon algorithme est complexe (20 paramètres par exemple), je peux toujours trouver un paramétrage qui me donnera un backtest de 21 trades gagnants (100% de taux de réussite). Et évidemment mon jeu de paramètres est exclusivement optimisé pour ces 21 trades. Et il est presque sur qu’il commencera à perdre dès le prochain trade…
Bien sûr, optimiser le paramétrage pour atteindre “seulement” 60 ou 80% de trades gagnants est encore plus simple et pourra s’obtenir avec 3 ou 4 fois plus de trades
Donc la stratégie est d’autant plus robuste que le nombre de paramètres est petit (c’est à dire que la stratégie est simple) et que le nombre de trades sur lequel le backtest est concluant est grand…
Alors ou est le seuil ? Disons que si notre backtest de 200 trades minimum ( 10 fois le nb de paramètres) est gagnant, avec une equity assez régulière, dans des conditions de marché variables, pour notre stratégie à 20 paramètres, il y a une certaine probabilité que la stratégie soit robuste. Mais obtenir un backtest gagnant de 50 trades avec la même stratégie à 20 paramètres ne signifie absolument rien.
En pratique, si vous avez une stratégie très simple avec 3 paramètres de tendance (ex : 2 périodes de moyennes mobiles + l’écart entre les 2) + 2 paramètres de signal (1 stoch + 1 autre) + 1 paramètre de sortie (TP ou stop suiveur par exemple) + la valeur du stop, soit 7 paramètres, il faut que l’optimisation génère un backtest à bon ratio Drawdown/capital, et dans des conditions de marché variables en tendance et en volatilité, d’au moins 70 trades pour penser que la stratégie est probablement robuste…
Mais tout ça n’est pas suffisant : ce que je viens de dire ne vaut qu’à comportement de marché relativement stable dans le temps. Si ce comportement (psychologie des traders, nouvelles stratégies des robots) change, tout le raisonnement précédent ne vaut plus rien. Et avec pas de chance ça peut évidemment arriver juste à partir de demain…
Pour conclure, j’évalue la robustesse de mes stratégies comme suit :
- je choisis une durée de backtest avec des périodes haussières et baissières et des périodes de volatilité faible et forte (une bonne crise dans la backtest est un plus…). Exemple 1 an pour du 15mn avec la crise Covid au milieu…
- j’optimise et dois trouver un jeu de paramètres qui donne un résultat satisfaisant avec un ratio drawdown/capital qui ne doit pas dépasser 1 seule fois 6% sur la durée du backtest et comprendre au moins 10 fois plus de trades générés que de paramètres dans la stratégie
- Si ça ne génère pas assez de trades, j’allonge la durée de backtest ou j’essaie d’éliminer des paramètres peu utiles pour atteindre mon ratio de 10, tout en gardant ma performance Drawdown/capital de 6% max
- A titre de vérification, je backteste SANS OPTIMISER sur une durée au moins double. La stratégie doit performer sur l’ensemble de la période (performance généralement un peu moindre). C’est en gros du walkforward à l’envers mais plus simple et qui à mon sens garantit mieux l’avenir puisqu’on a optimisé sur une période plus récente.
Quand ma stratégie passe avec succès cette batterie de tests, elle a de bonnes chances d’être robuste. Mon expérience est que pour du 15 mn, elle tient sans reparamétrage 1 ou 2 ans. si les résultats se dégradent trop au bout d’un certain temps, je la réoptimise selon la même procédure. Et si je n’y arrive pas elle est morte… Heureusement pendant ces 1 ou 2 ans j’aurai normalement eu le temps d’en étudier d’autres…
Au passage, le critère drawdown sur capital est un moyen de résoudre l’épineux problème de l’exposition : pourquoi l’exposition de 1% du capital généralement recommandée ? pourquoi pas 0,5% ou 2% ?. Alors c’est assez simple : Partez de 1%. Si votre stratégie réussit sa qualification décrite ci-dessus avec un ratio Draw/down max/capital de 3%, vous pouvez doubler l’exposition à 2% et cela générera 2 fois plus de gains. Si au contraire elle donne un ratio de 12%, diminuez l’exposition à 0,5%. Vous gagnerez 2 fois moins mais avec une sécurité suffisante.
Pour quoi 6% pour ce ratio ? : c’est la valeur qui représente mon aversion personnelle au risque. et j’ai des stratégies qui m’autorisent des expositions à 3% et d’autres à seulement 0,5%. Votre aversion au risque peut être de 15% ou de 3%. (Si c’est 0%, allez à la caisse d’épargne 🙂
Attention, à 15% vous assumez que votre robot puisse perdre 15% de votre capital avec sérénité, c’est à dire sans l’arrêter, sans le reparamétrer etc…
En espérant que tout cela vous soit utile.
Et je suis très intéressé par vos réactions à cette vision des tests de robustesse…
3 users thanked author for this post.
10/26/2020 at 9:34 AM #14848110/26/2020 at 1:47 PM #148509Merci Thierry
Pour infos on a discuté de tout cela sur la file anglophone également.
Assez d’accord avec tout cela
Après il y a toutes les notions sur le lissage, la régression linéaire polynomiale, l’overfitting, l’optimisation 3d etc..on retrouve tout cela ds les bouquins de chan notamment
Très bonne fin de journée
10/26/2020 at 1:53 PM #148511L’utilisation de dimensions de Vapnik-Chervonen est très intéressante, quoique assez proche des régressions polynomiales de degré n, mais absolument inprogrammable sur un logiciel basique comme PRT, malheureusement, peut être plus sur python et encore
10/26/2020 at 2:15 PM #14851210/26/2020 at 2:19 PM #14851410/26/2020 at 2:51 PM #14851510/26/2020 at 4:45 PM #14853605/26/2024 at 6:26 PM #233067Bonjour, j’aimerai faire une remarque concernant les backtests sur PRT. Lorsque le système de trading sort d’un trade et donc prend une perte ou un gain, il le fait sur la bougie suivante, or en condition réel et en temps réel une condition de sortie programmée dans le code peut tout autant se faire sur la même bougie, ce qui peut changer beaucoup le résultat, en perte ou en gain bien sûr et donc le drawdown, le ration gain/perte, etc.
Bonne journée à tous et à toutes
-
AuthorPosts