Test de robustesse

Forums ProRealTime forum Français Support ProOrder Test de robustesse

Viewing 12 posts - 1 through 12 (of 12 total)
  • #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

     

     

    #142359

    Il 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/

     

    #142362

    Excellent, un grand merci Nicolas, je vais éplucher tout ça!

    #148363

    Bonjour,

    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.
    #148481

    Merci beaucoup pour cette vulgarisation de ta vision de la robustesse Thierry, c’est très intéressant et “facile” à comprendre et à reproduire.

    #148509

    Merci 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

    #148511

    L’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

    #148512

    On peut programmer des régressions polynomiales sous PRT, avec les tableaux de données c’est maintenant possible. Ce sera encore plus simple avec des tableaux à 2 dimensions.

    #148514

    On parle de régression de niveau bien plus élevée Nicolas

    Mais peu importe car le curve fitting est de toutes façons ce qu’il faut éviter

    Très bonne journée

    #148515

    Bien plus élevée qu’une régression linéaire qui est une régression polynomiale de degré 1 en effet. Je confirme qu’il est possible de le programmer 🙂

    #148536

    Euh avec une régression polynomiale de degré 4 par ex avec auto calcul des variables a, b, c et d recalculé sur chaque bougie, le tout sans matrice, je crains que non sur PRT.

    Bien à toi

     

     

    #233067

    Bonjour, 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

Viewing 12 posts - 1 through 12 (of 12 total)

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