ProRealTime
Pour partager sur le trading automatique, nos algorithmes, nos backtests

Simulation/Analyse de montecarlo :

par gaugau3000 » 09 Oct 2019 20:39

Bonjour,

je m'intéresse en ce moment aux simulations de montecarlo depuis la lecture d'algoteam et du livre building winning algorithmic trading systems ou une partie est dédié à l'analyse de montecarlo.

Pour ma part : je prends les trades de mon backtest puis simule n années en faisant un tirage aléatoire avec remise des trades puis j'extrais le drawdown médian, le profit médian, le risque de ruine... (en somme la méthode du livre ci-dessus). Comme je suis un visuel j'imprime 11 courbes de gains chacune représentant 0,10, 20 ...100 percentiles du profit médian et aussi 11 des drawdowns médian.

J'utilise une base de 10000 itérations ce qui assure une convergence de la plupart des métriques sauf du risque de ruine (qui est binaire et se produit plus rarement et donc met plus de temps à converger plutôt 100 000)

J'utilise aussi la simulation de montecarlo comme critère d'optimisation du backtest avec un calmar ratio simulé (gain médian/max drawdown médian sur 3 ans)

L'utilisez vous différemment sans remise par exemple ? vous extrayez d'autres métriques ? Vous avez des bonnes ressources à me conseiller pour apprendre (je me remets à niveau sur les statistiques/proba) ?

Bonne soirée.

Gautier.

PS : cela fait du bien d' échanger en français car toutes la plupart des ressources sont en anglais :-)

Re: Simulation/Analyse de montecarlo :

par falex » 09 Oct 2019 21:22

The fact is that Monte-Carlo simulation is a good tool when you want to simulate how a system will run, but this system must be a Gaussian system, which trading isn’t... so to be honest I’m not sure that you’ll gonna found the holly grail using this methods.

Désolé j’ai pas pu résister en lisant ta dernière remarque ;-)

Re: Simulation/Analyse de montecarlo :

par gaugau3000 » 09 Oct 2019 22:28

Hihi,

le holly grail non vu qu'il s'agit d'une analyse post backtest pour gérer le risque j'imagine que non :-). Par contre je ne comprends pas pourquoi les résultats de mon backtest devraient suivre une loi normale pour que la simulation est un sens (si c'est ce que tu entends par Gaussian system,) ? Je suis intéressé par ton explication.

Merci bcp.

Bonne soirée.

Re: Simulation/Analyse de montecarlo :

par VB6backtester » 10 Oct 2019 12:33

Et au fait quelqu'un a des nouvelles de Algoteam ?

Re: Simulation/Analyse de montecarlo :

par gaugau3000 » 17 Jan 2020 16:43

Bonjour,

Pour ceux qui seraient intéressés par la compréhension de ce type de simulation pour la gestion des risques je me permets de partager :

https://towardsdatascience.com/improving-your-algo-trading-by-using-monte-carlo-simulation-and-probability-cones-abacde033adf

qui résume ce qui est écrit dans le livre 'building winning algorithmic trading systems' (c'est l'auteur qui l' a écrit).

Pour ceux qui savent à minima utiliser python j'ai implémenté la méthode (open source, licence MIT) :

https://github.com/gaugau3000/mc_sim_fin

Je suis preneur de retours/questions/améliorations

Re: Simulation/Analyse de montecarlo :

par falex » 18 Jan 2020 08:24

Pas mal !
Tu rejoues le backtest en changeant l’ordre des trades ! Très bonne idée.
En tout cas cela rejoint un des problèmes de beaucoup de système de trading : ils cherchent l’ordre parfait des trades pour avoir une EC montante... alors qu’en théorie chaque tirage/trade devrait indépendant.
Ordres « optimale » = sur optimisation ? Certainement à mon humble avis
Autre écueil : le fait de chercher inconsciemment un win ratio de 100%
Ça pourrait être une idée de backrest : s’imposer des win ratio de 50/30/10% .... j’suis sur que cela changerait la façon de concevoir son algo.

Re: Simulation/Analyse de montecarlo :

par VB6backtester » 23 Jan 2020 19:14

Bonsoir les gars. Je n'ai pas forcément le bagage mathématique pour bien comprendre cette technique. Mais je ne vois pas du tout pourquoi et de quel droit inverser l'ordre des trades ? Les trades sont fonction des cotations. Il ne s'agit pas plutôt de mélanger les cotations (les jours par exemple) pour augmenter artificiellement les périodes de backtest ?

Re: Simulation/Analyse de montecarlo :

par gaugau3000 » 24 Jan 2020 00:03

Bonjour,

@VB6backtester Alors je te rassure je n'ai que peu de bagage mathématique. Alors tu parts du postulat que tes trades sont indépendant les un des autre (comme à la roulette le trade précédent n'affecte pas le trade suivant) sinon tu es victime du biais de corrélation illusoire. Tu peux t'amuser à le tester avec l’auto-corrélation de durbin-watson https://www.easycalculation.com/statistics/durbin-watson-test-calculator.php.
Le tirage du loto est différent à chaque fois et des fois tu gagnes et des fois tu perds la tu vas tirer non pas le loto mais les trades qui peuvent malheureusement/heureusement arriver dans un autre ordre (imaginons l'année suivante où tu n'a pas de backtest) et influencer ton drawdown. Maintenant tu ne va pas simuler l'année suivante 1 fois mais 10000 fois histoire d'avoir une convergence de ce qui pourrait ce produire. Tu n'inverse pas l'ordre des trades mais tu pioches un trade de ton chapeau puis que tu remets dans ton chapeau (car il peut revenir le coquin).
Après si tu as 100 trades sur une année tu peux tirer 200 trades pour avoir deux ans et faire des statistiques sur 2 ans au lieu d'un selon tu référentiel.

Si tu mélanges les cotations tu mélange les trades vu que les trades sont basés sur les cotations (pour augmenter/simuler les périodes de backtest il suffit de rejouer plus de trades ? )?

N'hésite pas si tu as d'autres questions (fin de soirée pas sur d'avoir été très clair).
Le fil d'algoteam explique tout cela très bien (mes clés pour un trading gagnant je crois).

@Falex je te repondrais j'espère demain.

Re: Simulation/Analyse de montecarlo :

par VB6backtester » 24 Jan 2020 08:18

Je vois que partiellement le truc.
Mais mon système n'admet qu'un trade à la fois, et chaque trade attend soit un gain mini, soit un Stop pour simplifier. Donc un trade a bien une influence sur le trade suivant de par son existence même !
Toute manipulation extérieure arbitraire peut, peut être apprendre des choses mais sur des bases fausses quand même...c'est ça que j'ai du mal à voir.
Ma démarche est au contraire d'être le plus précis possible dans toutes mes simulations.
A quoi bon chercher à savoir, si un EA doit par exemple s'arrêter le soir à telle heure en moyenne sur 1000 trades au poil prés ? et en même temps tout mélanger au hasard ?

Re: Simulation/Analyse de montecarlo :

par gaugau3000 » 24 Jan 2020 11:05

Bonjour,

Je vais te répondre en vert.

Je vois que partiellement le truc.
Mais mon système n'admet qu'un trade à la fois, et chaque trade attend soit un gain mini, soit un Stop pour simplifier. Donc un trade a bien une influence sur le trade suivant de par son existence même !
oui si tu as un trade tu es 'bloqué' dans le marché et cela retarde potentiellement un nouveau trade mais cela n'affecte pas son résultat (si tu pers 5 fois de suite cela ne veut pas dire que la 6 ème fois tu vas encore perdre) : imagine ton trade comme une pièce qui tombe d'un coté puis de l'autre les probabilités sont les même à chaque fois et le résultat précédent n'influence pas le résultat suivant.

Toute manipulation extérieure arbitraire peut, peut être apprendre des choses mais sur des bases fausses quand même...c'est ça que j'ai du mal à voir.


Ma démarche est au contraire d'être le plus précis possible dans toutes mes simulations.
A quoi bon chercher à savoir, si un EA doit par exemple s'arrêter le soir à telle heure en moyenne sur 1000 trades au poil prés ? et en même temps tout mélanger au hasard ?
Désolé je n'ai pas compris

Alors peut être on ne se comprends pas sur l'usage. Grosso modo en utilisant cette méthode cela ne permet juste de stresser les résultats d'un backtest pour définir une taille de position pour mes trades par rapport au drawdown auquel je peux m'attendre (et pas que celui du backtest qui a peut être les étoiles/trades bien alignés avec un drawdown faible mais non réaliste). Rien de plus c'est juste une approche de money management.

Imagine juste un backtest qui a pour résultat (tp 100, sl:50 ) +100, -50, +100 ,-50, +100,-50... il a un win rate de 50% (tu le sais tu as 10000 trades ce qui est assez pour que le winrate converge). Tu as eu de la chance qu'il fasse ces trades dans cet ordre ta courbe va être droite et ton drawdown faible. Maintenant ton système aurait pu très bien faire -50, -50, -50, -50, -50, 100.... et la bonjour le drawdown (la proba est de (0.5)^5 de faire 5 trades perdant soit environ 3% si tu ne fais que 5 trades si tu en fait 10000 cela risque d'arriver).

Tu peux jouer avec ce site pour voir ce que cela donne par exemple sur ta courbe par exemple
https://www.suricate-trading.com/equity-curve-simulator/

Dis toi que cela ne change rien à ton robot juste que tu as une meilleur vision sur ce que tu peux mettre par trade par rapport au risque que tu es prêt à prendre. Et puis tu peux par exemple dire le robot s'arrête si il fait 2 fois le drawdown median (avoir un seuil objectif que u respectes est obligatoire j'imagine).

J'espère que cela aide un peu n'hésite pas si tu as d'autres questions.


ProRealTime