{"id":215,"date":"2023-12-03T10:36:31","date_gmt":"2023-12-03T09:36:31","guid":{"rendered":"https:\/\/mltrading.fr\/?page_id=215"},"modified":"2025-01-21T15:26:35","modified_gmt":"2025-01-21T14:26:35","slug":"algorithme-smart-forest","status":"publish","type":"page","link":"https:\/\/mltrading.fr\/index.php\/algorithme-smart-forest\/","title":{"rendered":"Algorithme &#8220;Smart Forest&#8221;"},"content":{"rendered":"\n<p>L&#8217;algorithme &#8220;Smart Forest&#8221; est le fruit d&#8217;un processus personnel de R&amp;D de plusieurs ann\u00e9es, adapt\u00e9 \u00e0 la plateforme MetraTrader5. <\/p>\n\n\n\n<p>Chaque nouveau robot a \u00e9t\u00e9 l&#8217;occasion d&#8217;am\u00e9liorer et d&#8217;affiner cette m\u00e9thodologie pour aboutir \u00e0 des pr\u00e9dictions de plus en plus fiables et des robots plus robustes. <\/p>\n\n\n\n<p>Au d\u00e9part, certaines hypoth\u00e8ses sont \u00e9mises: <\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>1\/ il est possible d&#8217;identifier  par un ensemble de crit\u00e8res des configurations de march\u00e9 reproductibles,<\/li>\n\n\n\n<li>2\/ pour une configuration de march\u00e9 donn\u00e9e, la probabilit\u00e9 de succ\u00e8s\/\u00e9chec d&#8217;un trade \u00e9valu\u00e9e par le pass\u00e9 reste valable pour le futur<\/li>\n<\/ul>\n\n\n\n<p>On suppose donc que les historiques d&#8217;\u00e9volution des prix d&#8217;un actif portent en eux-m\u00eames les informations n\u00e9cessaires pour que l&#8217;on puisse parvenir \u00e0 une pr\u00e9diction correcte des mouvements \u00e0 venir. Cela constitue les fondements de base de l&#8217;analyse technique qui a fait ses preuves depuis plus de 50 ans, ce qui en fait donc des hypoth\u00e8ses tr\u00e8s acceptables.<\/p>\n\n\n\n<p>La grande difficult\u00e9 r\u00e9side dans l&#8217;identification des caract\u00e9ristiques (features) permettant d&#8217;identifier une &#8220;configuration de march\u00e9&#8221; reproductible et l&#8217;\u00e9valuation de sa probabilit\u00e9. <\/p>\n\n\n\n<p>L&#8217;algorithme &#8220;Smart Forest&#8221; tire son nom de son cousin &#8220;Random Forest&#8221; qui est un algorithme bien connu et largement utilis\u00e9 dans diff\u00e9rents domaines, et notamment celui des pr\u00e9dictions de donn\u00e9es boursi\u00e8res. Je ne vais pas rentrer ici dans le d\u00e9tail sur le fonctionnement d&#8217;un algorithme Random Forest, mais le plus important \u00e0 retenir ici est qu&#8217;il est constitu\u00e9 d&#8217;un ensemble d&#8217;arbres de d\u00e9cision (decision tree) qui, combin\u00e9s entre eux, permettent d&#8217;augmenter la pr\u00e9cision du mod\u00e8le initial. <\/p>\n\n\n\n<p>Pour constituer un arbre de d\u00e9cision, Random Forest va, comme son nom l&#8217;indique, s\u00e9lectionner des caract\u00e9ristiques de mani\u00e8re al\u00e9atoire afin de tenter d&#8217;identifier des patterns int\u00e9ressants dans l&#8217;ensemble des donn\u00e9es mises \u00e0 sa disposition. On est dans le domaine de l&#8217;apprentissage automatique, qui a le vent en poupe depuis plusieurs ann\u00e9es. <\/p>\n\n\n\n<p>En application aux donn\u00e9es boursi\u00e8res, m\u00eame si le codage peut ne prendre que quelques lignes gr\u00e2ce au merveilleux langage qu&#8217;est Python, la mise en \u0153uvre d&#8217;un algorithme Random Forest soul\u00e8ve tout de m\u00eame des difficult\u00e9s majeures. Il faut en effet fournir \u00e0 l&#8217;algorithme toutes les caract\u00e9ristiques pertinentes dont il peut avoir besoin pour bien faire son travail. Or nous ne sommes pas dans un simple probl\u00e8me de pr\u00e9diction de temp\u00e9rature&#8230;. Les march\u00e9s boursiers sont d&#8217;une complexit\u00e9 rare, ce qui fait dire r\u00e9guli\u00e8rement \u00e0 des experts en machine learning qu&#8217;ils doutent m\u00eame de leur caract\u00e8re pr\u00e9visible. <\/p>\n\n\n\n<p>Dans son livre &#8220;Advances in Financial Machine Learning&#8221;, Marco Lopez de Prado, un expert dans ce domaine, parle d\u00e8s son introduction des moyens humains et technologiques consid\u00e9rables n\u00e9cessaires pour faire aboutir un tel projet. Tr\u00e8s loin des tutoriels que l&#8217;on trouve \u00e0 foison sur internet et sur YouTube qui laissent penser que c&#8217;est simple. <\/p>\n\n\n\n<p>Le choix des caract\u00e9ristiques \u00e0 utiliser est l&#8217;une des grandes difficult\u00e9s, et seule l&#8217;exp\u00e9rience, les essais et erreurs, peuvent nous permettre de progresser. Indicateurs techniques, rsi, stochastique, bandes de bollinger, moyennes mobiles, gradients de moyennes mobiles, positionnement des moyennes mobiles entre elles, etc, etc&#8230; et ceci dans diff\u00e9rentes \u00e9chelles de temps. A cela s&#8217;ajoutent l&#8217;identification &#8220;visuelle&#8221; de figures chartistes qui, si elles ne sont pas donn\u00e9es \u00e0 l&#8217;algorithme, ne seront pas utilis\u00e9es. Or ces figures jouent un r\u00f4le important puisque les march\u00e9s sont le r\u00e9sultat d&#8217;un ensemble vaste de facteurs, et la psychologie des traders en fait partie. <\/p>\n\n\n\n<p>Ainsi, parmi  les difficult\u00e9s principales soulev\u00e9es par la mise en oeuvre d&#8217;un algorithme Random Forest pour des donn\u00e9es boursi\u00e8res, je donnerai les suivantes:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>difficult\u00e9 de choisir les caract\u00e9ristiques les plus pertinentes<\/li>\n\n\n\n<li>mauvaise interpr\u00e9tabilit\u00e9<\/li>\n\n\n\n<li>difficult\u00e9 d&#8217;une labellisation vraiment pertinente. En effet, des trades peuvent \u00eatre gagnants &#8220;par chance&#8221; et perdants &#8220;par malchance&#8221;. Ce serait une erreur de les prendre en compte dans l&#8217;\u00e9laboration des crit\u00e8res<\/li>\n<\/ul>\n\n\n\n<p>La mise en \u0153uvre de &#8220;Smart Forest&#8221; a pour ambition d&#8217;essayer de r\u00e9pondre \u00e0 ces probl\u00e9matiques, en rempla\u00e7ant l&#8217;al\u00e9atoire par l&#8217;analyse humaine \u00e9clair\u00e9e. Pour cela, une m\u00e9thodologie tr\u00e8s rigoureuse a d\u00fb \u00eatre mise en \u0153uvre, et des solutions trouv\u00e9es aux nombreuses difficult\u00e9s rencontr\u00e9es tout au long du chemin. <\/p>\n\n\n\n<p>Bien entendu, chaque approche a ses points forts et ses points faibles et il est rare de trouver une solution parfaite. Smart Forest ne d\u00e9roge pas \u00e0 la r\u00e8gle. <\/p>\n\n\n\n<p>Le remplacement de l&#8217;automatique par l&#8217;humain, si il r\u00e9sout certains probl\u00e8mes, va en introduire d&#8217;autres: augmentation du risque de bug et des mauvaises d\u00e9cisions qui peuvent induire de l&#8217;over-fitting, dur\u00e9e de d\u00e9veloppement importante quoique raisonnable (il faut compter plusieurs semaines \u00e0 plusieurs mois pour finaliser l&#8217;\u00e9criture d&#8217;un nombre satisfaisant d&#8217;arbres de d\u00e9cision)<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Smart Forest: un algorithme sur 2 niveaux<\/h2>\n\n\n\n<p>L&#8217;algorithme &#8220;Smart Forest&#8221; est constitu\u00e9 de 2 niveaux principaux:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Niveau 1<\/strong>: strat\u00e9gie brute. A ce niveau, une strat\u00e9gie simple est impl\u00e9ment\u00e9e, dont l&#8217;objectif est de g\u00e9n\u00e9rer suffisamment de trades, avec une proportion de trades gagnants satisfaisante. Les trades doivent \u00eatre suffisamment repr\u00e9sentatifs pour que l&#8217;on puisse \u00e9mettre des statistiques dessus. A ce niveau, c&#8217;est le nombre de trades gagnants qui nous int\u00e9resse principalement, plut\u00f4t que leur proportion. <\/li>\n\n\n\n<li><strong>Niveau 2<\/strong>: arbres de d\u00e9cision. Ce niveau constitue le v\u00e9ritable c\u0153ur du robot. La for\u00eat peut \u00eatre constitu\u00e9e de 50, 100, voire m\u00eame plus d&#8217;arbres de d\u00e9cisions. Chaque arbre a la responsabilit\u00e9 d&#8217;identifier une configuration de march\u00e9 pr\u00e9cise, qui est particuli\u00e8rement d\u00e9favorable \u00e0 notre strat\u00e9gie. Vous l&#8217;aurez certainement compris, c&#8217;est ici que nous allons enlever les trades perdants g\u00e9n\u00e9r\u00e9s par notre strat\u00e9gie d&#8217;entr\u00e9e. Les arbres peuvent avoir des tailles tr\u00e8s diff\u00e9rentes et ainsi \u00eatre compos\u00e9s d&#8217;un seul tronc, ou bien d&#8217;un tronc et de plusieurs branches. Chaque branche \u00e9tant charg\u00e9e de g\u00e9rer les exceptions. Nous verrons plus bas un exemple pour illustrer ce point. <\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"691\" src=\"http:\/\/mltrading.fr\/wp-content\/uploads\/2023\/11\/decision-tree-design-vector-1024x691.jpg\" alt=\"\" class=\"wp-image-159\" srcset=\"https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/11\/decision-tree-design-vector-1024x691.jpg 1024w, https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/11\/decision-tree-design-vector-300x202.jpg 300w, https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/11\/decision-tree-design-vector-768x518.jpg 768w, https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/11\/decision-tree-design-vector-1536x1037.jpg 1536w, https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/11\/decision-tree-design-vector-2048x1382.jpg 2048w, https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/11\/decision-tree-design-vector-1200x810.jpg 1200w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/figure>\n\n\n\n<p>A cela s&#8217;ajoute bien entendu une strat\u00e9gie de sortie adapt\u00e9e \u00e0 notre strat\u00e9gie d&#8217;entr\u00e9e. Il est important que celle-ci soit d\u00e9j\u00e0 bien d\u00e9finie avant d&#8217;entamer l&#8217;\u00e9criture des arbres de d\u00e9cision, notamment la modification des stop loss et take profit peut avoir un impact tr\u00e8s important sur les crit\u00e8res retenus. En effet, avec un stop loss serr\u00e9, les arbres de d\u00e9cision seront beaucoup plus &#8220;stricts&#8221;. Si l&#8217;on augmente apr\u00e8s coup le stop loss, de beaux trades gagnants peuvent alors \u00eatre bloqu\u00e9s. Il s&#8217;agit clairement d&#8217;un point faible de cette approche manuelle par rapport \u00e0 ses homologues de Machine Learning, mais quand on en bien conscience, on fait en sorte de faire ses choix correctement d\u00e8s le d\u00e9part et de ne pas y revenir dessus apr\u00e8s.  <\/p>\n\n\n\n<p>Pour qu&#8217;un trade soit valid\u00e9, il doit passer brillamment l&#8217;examen aupr\u00e8s de chacun des arbres de d\u00e9cision (application d&#8217;un &#8220;ET logique&#8221;). Donc si on a 50 arbres de d\u00e9cision, correspondant \u00e0 50 configurations de march\u00e9 distinctes, l&#8217;algorithme va \u00e9valuer pour chacune de ces configurations si le trade en fait partie ou non, et va ainsi lui donner le droit de passage ou pas. <\/p>\n\n\n\n<p>Tous ces arbres de d\u00e9cision sont parfaitement d\u00e9corr\u00e9l\u00e9es, et peuvent \u00eatre \u00e9valu\u00e9s\/am\u00e9lior\u00e9s ind\u00e9pendamment les uns des autres gr\u00e2ce \u00e0 des outils adapt\u00e9s. Le risque d&#8217;over-fitting n&#8217;est pas tant li\u00e9 au nombre d&#8217;arbres de d\u00e9cisions que l&#8217;on va impl\u00e9menter, mais plut\u00f4t \u00e0 la profondeur maximale autoris\u00e9e pour ces arbres. Ainsi, plus un arbre va d\u00e9crire une configuration de march\u00e9 tr\u00e8s sp\u00e9cifique, notamment en descendant dans les \u00e9chelles de temps, moins il y aura de chances que cette m\u00eame configuration, avec exactement les m\u00eames conditions, se rencontrent \u00e0 nouveau dans le futur. Et c&#8217;est exactement ce que l&#8217;on veut \u00e9viter. On recherche avant toute choses des situations qui se sont pass\u00e9es un nombre suffisant de fois par le pass\u00e9, avec majoritairement des trades perdants, ce qui peut laisser supposer que dans le futur, si cette situation se rencontre de nouveau, elle donnera probablement les m\u00eames r\u00e9sultats. A causes identiques, cons\u00e9quences identiques. <\/p>\n\n\n\n<p>Une des cl\u00e9s du succ\u00e8s r\u00e9side ainsi dans la capacit\u00e9 \u00e0 capter les \u00e9l\u00e9ments cl\u00e9s permettant l&#8217;identification d&#8217;une configuration de march\u00e9, sans entrer trop dans les d\u00e9tails.  <\/p>\n\n\n\n<p>Marco Lopez de Prado utilise une structure assez comparable \u00e0 celle-ci, mais introduit un concept suppl\u00e9mentaire: chaque arbre retourne non pas &#8220;oui&#8221; ou &#8220;non&#8221; mais plut\u00f4t la probabilit\u00e9 du trade \u00e0 \u00eatre gagnant. En combinant les probabilit\u00e9s de chacun des arbres, il en d\u00e9duit ensuite la taille de la position la plus adapt\u00e9e (\u00e9ventuellement 0). <\/p>\n\n\n\n<p>Si vous souhaitez aller plus loin sur la d\u00e9marche de cr\u00e9ation manuelle d&#8217;un arbre de d\u00e9cision, <a href=\"https:\/\/mltrading.fr\/index.php\/2023\/12\/04\/cas-pratique-creation-manuelle-dun-arbre-de-decision\/\">cet article<\/a> vous pr\u00e9sente un exemple simple. <\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Mesure de l&#8217;\u00e9volution des performances <\/h2>\n\n\n\n<p>Nous allons voir maintenant, en application au robot Pegase, comment l&#8217;ajout d&#8217;arbres de d\u00e9cision va influencer les performances globales de notre mod\u00e8le.<\/p>\n\n\n\n<p>Contexte: USTECH, sur p\u00e9riode 30.12.2013 \/ 11.11.2023. <br>Risk ratio per trade: 5%<br>Capital initial: 5000$<\/p>\n\n\n\n<p>Pegase &#8211; USTECH &#8211; <strong>Evolution du capital avec 0 arbre:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"351\" src=\"https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-0-arbre-1-1024x351.png\" alt=\"\" class=\"wp-image-282\" srcset=\"https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-0-arbre-1-1024x351.png 1024w, https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-0-arbre-1-300x103.png 300w, https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-0-arbre-1-768x263.png 768w, https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-0-arbre-1-1536x527.png 1536w, https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-0-arbre-1-1200x411.png 1200w, https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-0-arbre-1.png 1887w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/figure>\n\n\n\n<p>Pegase &#8211; USTECH &#8211; <strong>Evolution du capital avec 10 arbres:<\/strong> <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"340\" src=\"http:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-10-arbre-1024x340.png\" alt=\"\" class=\"wp-image-281\" srcset=\"https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-10-arbre-1024x340.png 1024w, https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-10-arbre-300x99.png 300w, https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-10-arbre-768x255.png 768w, https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-10-arbre-1536x509.png 1536w, https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-10-arbre-1200x398.png 1200w, https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-10-arbre.png 1873w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/figure>\n\n\n\n<p>Pegase &#8211; USTECH &#8211; <strong>Evolution du capital avec 20 arbres:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"349\" src=\"https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-20-arbre-1024x349.png\" alt=\"\" class=\"wp-image-284\" srcset=\"https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-20-arbre-1024x349.png 1024w, https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-20-arbre-300x102.png 300w, https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-20-arbre-768x262.png 768w, https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-20-arbre-1536x524.png 1536w, https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-20-arbre-1200x409.png 1200w, https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-20-arbre.png 1891w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/figure>\n\n\n\n<p>Pegase &#8211; USTECH &#8211; <strong>Evolution du capital avec 50 arbres:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"356\" src=\"https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-50-arbre-1024x356.png\" alt=\"\" class=\"wp-image-289\" srcset=\"https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-50-arbre-1024x356.png 1024w, https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-50-arbre-300x104.png 300w, https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-50-arbre-768x267.png 768w, https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-50-arbre-1536x534.png 1536w, https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-50-arbre-1200x417.png 1200w, https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-50-arbre.png 1875w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/figure>\n\n\n\n<p>Sous forme de tableau, voici synth\u00e9tis\u00e9es les informations parmi les plus int\u00e9ressantes (risque par trade 5%):<\/p>\n\n\n\n<table id=\"tablepress-3\" class=\"tablepress tablepress-id-3\">\n<thead>\n<tr class=\"row-1 odd\">\n\t<th class=\"column-1\">Nombre d&#8217;arbres<\/th><th class=\"column-2\">Profit total Net ($)<\/th><th class=\"column-3\">Facteur de profit<\/th><th class=\"column-4\">WinRate (%)<\/th><th class=\"column-5\">Nombre de trades<\/th><th class=\"column-6\">DrawDown max relatif (%)<\/th>\n<\/tr>\n<\/thead>\n<tbody class=\"row-hover\">\n<tr class=\"row-2 even\">\n\t<td class=\"column-1\">0<\/td><td class=\"column-2\">1 712 621$<\/td><td class=\"column-3\">1,24<\/td><td class=\"column-4\">32,43%<\/td><td class=\"column-5\">919<\/td><td class=\"column-6\">82,72%<\/td>\n<\/tr>\n<tr class=\"row-3 odd\">\n\t<td class=\"column-1\">10<\/td><td class=\"column-2\">4 841 369$<\/td><td class=\"column-3\">1,71<\/td><td class=\"column-4\">34,66%<\/td><td class=\"column-5\">802<\/td><td class=\"column-6\">78,05%<\/td>\n<\/tr>\n<tr class=\"row-4 even\">\n\t<td class=\"column-1\">20<\/td><td class=\"column-2\">7 636 079$<\/td><td class=\"column-3\">2,11<\/td><td class=\"column-4\">39,01%<\/td><td class=\"column-5\">669<\/td><td class=\"column-6\">64,36%<\/td>\n<\/tr>\n<tr class=\"row-5 odd\">\n\t<td class=\"column-1\">30<\/td><td class=\"column-2\">9 932 294$<\/td><td class=\"column-3\">2,81<\/td><td class=\"column-4\">44,94%<\/td><td class=\"column-5\">534<\/td><td class=\"column-6\">48,96%<\/td>\n<\/tr>\n<tr class=\"row-6 even\">\n\t<td class=\"column-1\">40<\/td><td class=\"column-2\">10 536 303$<\/td><td class=\"column-3\">3,14<\/td><td class=\"column-4\">47,60%<\/td><td class=\"column-5\">500<\/td><td class=\"column-6\">48,96%<\/td>\n<\/tr>\n<tr class=\"row-7 odd\">\n\t<td class=\"column-1\">50<\/td><td class=\"column-2\">10 818 877$<\/td><td class=\"column-3\">3,35<\/td><td class=\"column-4\">48,72%<\/td><td class=\"column-5\">470<\/td><td class=\"column-6\">49,04%<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<!-- #tablepress-3 from cache -->\n\n\n<p><\/p>\n\n\n\n<p>Bien \u00e9videmment, les montants des profits g\u00e9n\u00e9r\u00e9s ne veulent plus dire grand chose \u00e0 ces niveaux-l\u00e0. Si l&#8217;on est pr\u00eat \u00e0 risquer 5% sur 5000$ par trade, on y serait bien moins dispos\u00e9 avec un capital de 100.000$. Le risque s&#8217;appr\u00e9cie en fonction du capital \u00e0 disposition, et ces simulations ne refl\u00e8tent pas ce point. Les autres informations sont bien plus int\u00e9ressantes. On constate une \u00e9volution nette et rapide du taux de trades gagnants, et du facteur profit. Le nombre de trades a \u00e9t\u00e9 divis\u00e9 par pr\u00e8s de 2 au bout de 50 arbres, ce qui montre bien que l&#8217;approche consistant \u00e0 enlever les trades perdants (ou faux positifs) est une strat\u00e9gie payante. Le drawdown quant \u00e0 lui reste trop \u00e9lev\u00e9 \u00e0 49% m\u00eame si il a bien diminu\u00e9 depuis le premier lancement. Toutefois ce chiffre est \u00e0 relativiser car on a opt\u00e9 ici pour un param\u00e9trage tr\u00e8s agressif avec 5% du capital mis en jeu sur chaque trade. Cela d\u00e9note toutefois la pr\u00e9sence de s\u00e9ries de trades perdants assez importantes, et il y a s\u00fbrement des choses \u00e0 am\u00e9liorer dans ces zones de march\u00e9. <\/p>\n\n\n\n<p>L&#8217;effet de &#8220;lissage&#8221; de la courbe est assez flagrant entre le premier graphe et le graphe obtenu apr\u00e8s 50 arbres. Ce lissage peut aussi \u00eatre interpr\u00e9t\u00e9 comme un d\u00e9faut puisque l&#8217;on rentre dans la cat\u00e9gorie p\u00e9rilleuse du &#8220;trop beau pour \u00eatre vrai&#8221;. C&#8217;est pour cette raison que l&#8217;attente de r\u00e9sultats suffisants sur les donn\u00e9es futures sont primordiaux pour une validation\/invalidation du mod\u00e8le. <\/p>\n\n\n\n<p>En machine learning il est d&#8217;usage de diviser le jeu de donn\u00e9es en 2 parties: une partie pour l&#8217;entra\u00eenement et une autre partie pour l&#8217;\u00e9valuation du mod\u00e8le. La s\u00e9paration se fait de mani\u00e8re al\u00e9atoire, tout en respectant le caract\u00e8re chronologique des donn\u00e9es pour \u00e9viter le ph\u00e9nom\u00e8ne de &#8220;fuite temporelle&#8221;. Concr\u00e8tement, des fen\u00eatres glissantes peuvent par exemple \u00eatre utilis\u00e9es pour r\u00e9pondre \u00e0 cette sp\u00e9cificit\u00e9. Une telle impl\u00e9mentation est bien plus complexe \u00e0 mettre en \u0153uvre dans un environnement Metatrader. On pourrait bien entendu r\u00e9server la derni\u00e8re ann\u00e9e pour l&#8217;\u00e9valuation du mod\u00e8le, mais cela ferait perdre des informations cruciales. Un historique de 10 ann\u00e9es est d\u00e9j\u00e0 assez limit\u00e9, si en plus on enl\u00e8ve une ann\u00e9e&#8230; A cela il faut ajouter le fait que nous utilisons des tendances weekly et monthly lors de l&#8217;\u00e9criture des arbres de d\u00e9cisions. Evincer une ann\u00e9e compl\u00e8te reviendrait \u00e0 \u00e9vincer totalement un contexte de march\u00e9 probablement unique sur le jeu de donn\u00e9es. Il m&#8217;a donc sembl\u00e9 plus pertinent d&#8217;entra\u00eener le robot sur plusieurs actifs proches, 5 indices dans le cas de Pegase, et de r\u00e9server un indice suppl\u00e9mentaire \u00e0 l&#8217;\u00e9valuation\/contr\u00f4le de chaque arbre de d\u00e9cision.<\/p>\n\n\n\n<p>Il est \u00e9galement important de pr\u00e9ciser que, dans le cas de Pegase, la strat\u00e9gie initiale brute, pourtant tr\u00e8s simple, est d\u00e9j\u00e0 gagnante, du moins sur l&#8217;USTECH. Le fait d&#8217;enlever majoritairement des trades perdants ne devrait donc en aucun cas mettre en p\u00e9ril cette strat\u00e9gie qui, de toute fa\u00e7on, \u00e9tait d\u00e9j\u00e0 gagnante sans optimisation. L&#8217;optimisation n&#8217;est l\u00e0 que pour ajouter un confort suppl\u00e9mentaire et par la m\u00eame occasion permettre l&#8217;augmentation de la prise de risque et donc des gains esp\u00e9r\u00e9s. <\/p>\n\n\n\n<p>Ceci \u00e9tant dit, m\u00eame si les gains \u00e9taient divis\u00e9s par 2 ou 3, le mod\u00e8le resterait tout autant int\u00e9ressant!<\/p>\n\n\n\n<p>Nous allons maintenant regarder l&#8217;impact de ces m\u00eames arbres, sur le m\u00eame robot Pegase, mais cette fois appliqu\u00e9 \u00e0 l&#8217;indice DE40.<br>Nous venons de voir que la strat\u00e9gie brute \u00e9tait gagnante sans arbre de d\u00e9cision sur l&#8217;USTECH, mais ce n&#8217;est plus le cas sur le DE40. <\/p>\n\n\n\n<p>Pegase &#8211; DE40- <strong>Evolution du capital avec 0 arbre:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"327\" src=\"https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-jp225-0-arbre-1024x327.png\" alt=\"\" class=\"wp-image-345\" srcset=\"https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-jp225-0-arbre-1024x327.png 1024w, https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-jp225-0-arbre-300x96.png 300w, https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-jp225-0-arbre-768x245.png 768w, https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-jp225-0-arbre-1536x491.png 1536w, https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-jp225-0-arbre-1200x384.png 1200w, https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-jp225-0-arbre.png 1871w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/figure>\n\n\n\n<p>Pegase &#8211; DE40- <strong>Evolution du capital avec 10 arbres:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"387\" src=\"https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-jp225-10-arbre-1024x387.png\" alt=\"\" class=\"wp-image-350\" srcset=\"https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-jp225-10-arbre-1024x387.png 1024w, https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-jp225-10-arbre-300x113.png 300w, https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-jp225-10-arbre-768x290.png 768w, https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-jp225-10-arbre-1536x581.png 1536w, https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-jp225-10-arbre-1200x454.png 1200w, https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-jp225-10-arbre.png 1867w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/figure>\n\n\n\n<p>Pegase &#8211; DE40- <strong>Evolution du capital avec 20 arbres:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"389\" src=\"https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-jp225-20-arbre-1024x389.png\" alt=\"\" class=\"wp-image-351\" srcset=\"https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-jp225-20-arbre-1024x389.png 1024w, https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-jp225-20-arbre-300x114.png 300w, https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-jp225-20-arbre-768x291.png 768w, https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-jp225-20-arbre-1536x583.png 1536w, https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-jp225-20-arbre-1200x455.png 1200w, https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-jp225-20-arbre.png 1863w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/figure>\n\n\n\n<p>Pegase &#8211; DE40- <strong>Evolution du capital avec 30 arbres:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"383\" src=\"https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-jp225-30-arbre-1024x383.png\" alt=\"\" class=\"wp-image-353\" srcset=\"https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-jp225-30-arbre-1024x383.png 1024w, https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-jp225-30-arbre-300x112.png 300w, https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-jp225-30-arbre-768x287.png 768w, https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-jp225-30-arbre-1536x575.png 1536w, https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-jp225-30-arbre-1200x449.png 1200w, https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-jp225-30-arbre.png 1876w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/figure>\n\n\n\n<p>Pegase &#8211; DE40- <strong>Evolution du capital avec 50 arbres:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"384\" src=\"https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-de40-50-arbre-1024x384.png\" alt=\"\" class=\"wp-image-356\" srcset=\"https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-de40-50-arbre-1024x384.png 1024w, https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-de40-50-arbre-300x113.png 300w, https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-de40-50-arbre-768x288.png 768w, https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-de40-50-arbre-1536x577.png 1536w, https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-de40-50-arbre-1200x451.png 1200w, https:\/\/mltrading.fr\/wp-content\/uploads\/2023\/12\/Pegase-de40-50-arbre.png 1867w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/figure>\n\n\n\n<p>On constate cette fois que nos m\u00eames arbres de d\u00e9cision ont r\u00e9ussi \u00e0 faire passer une strat\u00e9gie de d\u00e9part perdante en une strat\u00e9gie largement b\u00e9n\u00e9ficiaire.<\/p>\n\n\n\n<table id=\"tablepress-4\" class=\"tablepress tablepress-id-4\">\n<thead>\n<tr class=\"row-1 odd\">\n\t<th class=\"column-1\">Nombre d&#8217;arbres<\/th><th class=\"column-2\">Profit total net ($)<\/th><th class=\"column-3\">Facteur de profit<\/th><th class=\"column-4\">WinRate (%)<\/th><th class=\"column-5\">Nombre de trades<\/th><th class=\"column-6\">Drawdown max relatif (%)<\/th>\n<\/tr>\n<\/thead>\n<tbody class=\"row-hover\">\n<tr class=\"row-2 even\">\n\t<td class=\"column-1\">0<\/td><td class=\"column-2\">-3 392$<\/td><td class=\"column-3\">0,97<\/td><td class=\"column-4\">43,37%<\/td><td class=\"column-5\">731<\/td><td class=\"column-6\">94,16%<\/td>\n<\/tr>\n<tr class=\"row-3 odd\">\n\t<td class=\"column-1\">10<\/td><td class=\"column-2\">8 395$<\/td><td class=\"column-3\">1,04<\/td><td class=\"column-4\">44,92%<\/td><td class=\"column-5\">659<\/td><td class=\"column-6\">84,89%<\/td>\n<\/tr>\n<tr class=\"row-4 even\">\n\t<td class=\"column-1\">20<\/td><td class=\"column-2\">202 157$<\/td><td class=\"column-3\">1,26<\/td><td class=\"column-4\">49,04%<\/td><td class=\"column-5\">573<\/td><td class=\"column-6\">65,98%<\/td>\n<\/tr>\n<tr class=\"row-5 odd\">\n\t<td class=\"column-1\">30<\/td><td class=\"column-2\">2 374 225$<\/td><td class=\"column-3\">1,94<\/td><td class=\"column-4\">52,94%<\/td><td class=\"column-5\">476<\/td><td class=\"column-6\">68,22%<\/td>\n<\/tr>\n<tr class=\"row-6 even\">\n\t<td class=\"column-1\">40<\/td><td class=\"column-2\">3 790 206$<\/td><td class=\"column-3\">2,11<\/td><td class=\"column-4\">53,93%<\/td><td class=\"column-5\">458<\/td><td class=\"column-6\">66,57%<\/td>\n<\/tr>\n<tr class=\"row-7 odd\">\n\t<td class=\"column-1\">50<\/td><td class=\"column-2\">4 588 967$<\/td><td class=\"column-3\">2,15<\/td><td class=\"column-4\">56,63%<\/td><td class=\"column-5\">415<\/td><td class=\"column-6\">52,29%<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<!-- #tablepress-4 from cache -->\n\n\n<p>On peut constater une tr\u00e8s nette am\u00e9lioration globale en terme de proportion de trades gagnants, facteur de profit et drawdown. <\/p>\n\n\n\n<p>Dans les 2 cas (USTECH et DE40), on observe encore des p\u00e9riodes pouvant durer plusieurs mois o\u00f9 les gains stagnent, voire baissent. L&#8217;ajout de nouveaux arbres semble n\u00e9cessaire  pour rajouter du confort psychologique \u00e0 l&#8217;utilisateur de ce robot, car c&#8217;est un aspect tout aussi important. Faire tourner un robot qui perd de l&#8217;argent pendant plusieurs mois est assez d\u00e9courageant et peut inciter l&#8217;utilisateur \u00e0 cesser de l&#8217;utiliser. <\/p>\n\n\n\n<p>C&#8217;est la raison pour laquelle je poursuis g\u00e9n\u00e9ralement la cr\u00e9ation d&#8217;arbres de d\u00e9cisions tant qu&#8217;il perdure des p\u00e9riodes longues de pertes ou de stagnation. Le risque est bien entendu celui de l&#8217;over-fitting, et il est \u00e9vident que les r\u00e9sultats r\u00e9els ne pourront pas \u00eatre aussi lin\u00e9aires que sur les p\u00e9riodes d&#8217;entra\u00eenement. Toutefois, il y a over-fitting qui fait passer une strat\u00e9gie payante \u00e0 une strat\u00e9gie perdante, et over-fitting qui va r\u00e9duire les gains escompt\u00e9s. La deuxi\u00e8me situation reste acceptable ici \u00e9tant donn\u00e9 l&#8217;ampleur des gains esp\u00e9r\u00e9s. <\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Pour conclure &#8230;<\/h2>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>&#8220;Amateurs develop individual strategies, believing that there is such a thing as a magical formula for riches. In contrast, professionals develop methods to mass-produce strategies. The money is not in making a car, it is in making a car factory.<br>Think like a business. Your goal is to run a research lab like a factory, where true discoveries are not born out of inspiration, but out of methodic hard work. That was the philosophy of physicist Ernest Lawrence, the founder of the first U.S. National Laboratory&#8221;<\/p>\n<cite>Marcos Lopez de Prado &#8211; Advances en Financial Machine Learning<\/cite><\/blockquote>\n\n\n\n<p>&#8220;Smart Forest&#8221; est principalement un ensemble de m\u00e9thodes valid\u00e9es par l&#8217;exp\u00e9rience et en perp\u00e9tuelle am\u00e9lioration, avec pour objectif la mise en \u0153uvre de robots de trading robustes, tout en limitant l&#8217;over-fitting. Quoique relativement complexe, sa mise en \u0153uvre me semble toutefois plus accessible que pour un mod\u00e8le de machine learning dont il ne faut pas sous estimer la complexit\u00e9. Son autre avantage est qu&#8217;il permet de se familiariser avec les combinaisons de caract\u00e9ristiques qui &#8220;fonctionnent bien&#8221;, ce qui sera toujours tr\u00e8s utile si l&#8217;on souhaite passer \u00e0 un mod\u00e8le de machine learning classique. <\/p>\n\n\n\n<p>Si vous souhaitez en savoir plus sur l&#8217;algorithme &#8220;Smart Forest&#8221;, sachez que je propose des formations sur ce sujet. Vous pouvez \u00e9galement me sous-traiter le d\u00e9veloppement d&#8217;un robot de trading correspondant \u00e0 vos attentes. <\/p>\n\n\n\n<p>J&#8217;ai \u00e9galement plusieurs robots en phase d&#8217;incubation qui seront probablement mis \u00e0 disposition par le biais d&#8217;abonnements ou \u00e0 la vente. N&#8217;h\u00e9sitez pas \u00e0 vous inscrire \u00e0 la newsletter pour \u00eatre tenu au courant des informations futures sur ce sujet ou \u00e0 prendre contact avec moi directement!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>L&#8217;algorithme &#8220;Smart Forest&#8221; est le fruit d&#8217;un processus personnel de R&amp;D de plusieurs ann\u00e9es, adapt\u00e9 \u00e0 la plateforme MetraTrader5. Chaque nouveau robot a \u00e9t\u00e9 l&#8217;occasion d&#8217;am\u00e9liorer et d&#8217;affiner cette m\u00e9thodologie pour aboutir \u00e0 des pr\u00e9dictions de plus en plus fiables et des robots plus robustes. Au d\u00e9part, certaines hypoth\u00e8ses sont \u00e9mises: On suppose donc que &hellip; <a href=\"https:\/\/mltrading.fr\/index.php\/algorithme-smart-forest\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Algorithme &#8220;Smart Forest&#8221;&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"om_disable_all_campaigns":false,"advgb_blocks_editor_width":"","advgb_blocks_columns_visual_guide":"","_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"class_list":["post-215","page","type-page","status-publish","hentry"],"aioseo_notices":[],"coauthors":[],"author_meta":{"author_link":"https:\/\/mltrading.fr\/index.php\/author\/admin3872\/","display_name":"stephanie"},"relative_dates":{"created":"Posted 2 years ago","modified":"Updated 1 year ago"},"absolute_dates":{"created":"Posted on 3 December 2023","modified":"Updated on 21 January 2025"},"absolute_dates_time":{"created":"Posted on 3 December 2023 10h36","modified":"Updated on 21 January 2025 15h26"},"featured_img_caption":"","featured_img":false,"series_order":"","_links":{"self":[{"href":"https:\/\/mltrading.fr\/index.php\/wp-json\/wp\/v2\/pages\/215","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mltrading.fr\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mltrading.fr\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mltrading.fr\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mltrading.fr\/index.php\/wp-json\/wp\/v2\/comments?post=215"}],"version-history":[{"count":71,"href":"https:\/\/mltrading.fr\/index.php\/wp-json\/wp\/v2\/pages\/215\/revisions"}],"predecessor-version":[{"id":486,"href":"https:\/\/mltrading.fr\/index.php\/wp-json\/wp\/v2\/pages\/215\/revisions\/486"}],"wp:attachment":[{"href":"https:\/\/mltrading.fr\/index.php\/wp-json\/wp\/v2\/media?parent=215"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}