Grâce à l’amélioration technologique des ordinateurs personnels et l’apparition de logiciels de trading tels que NinjaTrader et MultiCharts bénéficiant de langages de programmation professionnels (Microsoft C#, Python…), mais aussi grâce à l’accès aux données historiques de marché, tout un chacun peut maintenant créer et automatiser ses stratégies de trading à peu de frais.
L’idée d’avoir conçu votre système, puis de l’installer sur un serveur VPS pour qu’il trade à votre place est séduisante. Et pourquoi pas aller jusqu’à imaginer d’aller à la plage aux Maldives avec votre petite amie pendant que votre ordinateur engrange des gains ? … STOP ! Il faut arrêter de rêver !
Il faudra d’abord travailler : faire l’effort d’apprendre un langage de programmation. Puis, vous comprendrez bien vite qu’il faudra ensuite surveiller les prises de positions en temps réel dès lors que vous engagerez des montants conséquents. C’est pourquoi je n’aime pas utiliser l’expression populaire « Robot trading » et que je préfère parler de « système de trading », car vous réaliserez que dans certaines configurations de marché, il faudra savoir le « débrancher ».
Oui, il existe effectivement des langages de programmation plus simples tels que Metatrader, voire des « assistants » à la conception de systèmes de trading, mais ceux-ci ne vous permettront pas d’utiliser la puissance des langages professionnels (qui sont maintenant gratuits) pour concevoir une vraie stratégie robuste, ou même tout simplement de trouver une stratégie réellement gagnante.
D’ailleurs, concernant la création de stratégies de trading avec des langages comme C# ou Python, je m’autoriserais même à dire que votre imagination sera votre seule limite (enfin presque…) !
Alors pourquoi ne pas tenter cette aventure passionnante ?
Avec de l’expérience, vous pourrez créer des systèmes de trading automatique qui :
- traderont une multitude d’actifs simultanément ;
- gèreront le money management de tous vos comptes de trading en même temps ;
- scanneront des situations spéciales sur des centaines d’actifs ;
- feront du « web scraping » à la recherche de mots clés pertinents ;
- etc., la liste étant non exhaustive.
Découvrez dans cet article les différentes étapes à respecter pour réaliser son système de trading automatique : définition de la stratégie, backtesting de la stratégie, et enfin optimisation de la stratégie. Nous reviendrons ensuite sur les 7 erreurs à éviter au moment de se lancer dans la conception de son système de trading automatique.
Robot trading : les étapes pour réaliser son système de trading automatique
Mais au-delà de nouvelles stratégies qui deviennent maintenant envisageables, implémenter sa stratégie jusqu’à présent « manuelle » via un système de trading présente des avantages indéniables.
Définir sa stratégie de trading
Vous devrez d’abord définir votre stratégie clairement. L’idée d’une stratégie naît toujours de l’observation du comportement d’un actif boursier en fonction d’une ou plusieurs situations particulières. Mais nombre de traders novices ont une stratégie floue qui fluctue au gré de l’actualité des marchés et de leur peur ou de leur appétence au risque, si bien qu’en réalité, ils n’ont pas de stratégie.
Programmer permet de définir une stratégie avec précision, car l’« à peu près » n’existe pas en informatique. En effet, « vendre lorsque le marché a monté de 10 % », ne signifie pas « vendre le marché après +9,9 %, ni même + 9,999 % », car un ordinateur est (très) précis.
Traduire votre stratégie en un logigramme, que vous transcrirez ensuite en code de programmation, vous forcera à définir les conditions détaillées de mise en place et de sortie d’une position.
Backtester sa stratégie de trading
Vous pourrez tester votre stratégie. Pour cela, il faut d’abord disposer d’un historique de données suffisant. Le premier avantage d’un backtesting1 est tout simplement de voir si la stratégie aurait été gagnante dans le passé, sans avoir risqué un seul centime d’euro sur son compte de trading ! Ce qui n’est pas négligeable…
Beaucoup de traders particuliers tradent une stratégie en réel en ayant « vérifié » sa profitabilité (ou pas) à partir de seulement quelques rares exemples visuels, pour se rendre compte après coup qu’elle n’est en réalité pas adaptée !
Backtester permet ainsi de se poser des questions sur l’efficacité de la stratégie, car en observant son comportement dans le passé sur de nombreux exemples, on pourra entrevoir et donc comprendre les conditions dans lesquelles celle-ci fonctionne ou ne fonctionne pas.
Et l’on en revient donc au premier point : suivant les résultats obtenus, il faudra probablement redéfinir la stratégie, l’améliorer, voire l’abandonner.
Voici le backtest d’une stratégie intraday basée sur l’indicateur RSI, appliqué sur la paire EUR/USD. Les signaux d’achat et de vente sont basés sur les critères couramment énoncés dans les livres d’Analyse Technique, à savoir « Vente de l’actif en zone de surachat (RSI > 70 %) et achat en zone de survente (RSI < 30 %) ».
EUR/USD en barres 1 minute, le 16 avril 2021*
Backtest de l’indicateur RSI
EUR/USD barres 1 minute, du 1er janvier 2021 au 16 avril 2021*
Backtest de l’indicateur RSI. Equity Curve2 & Drawdown3
Le signal a généré 8 % de gains en février, mais a vite replongé dans le rouge et la perte a même atteint 18 % le 24 mars. Au 16 avril, date de fin du backtest, le signal est encore en légère perte. Le résultat de cette stratégie est donc décevant.
De plus, l’Equity Curve2 semble plutôt évoluer de façon aléatoire et non pas dans une tendance plus ou moins régulière qui permettrait d’espérer une amélioration possible du système.
Regardons maintenant les résultats d’une stratégie que tout le monde connaît. C’est même la toute première stratégie qu’un trader débutant découvre dans un livre d’analyse technique : le croisement de moyennes mobiles !
La littérature dit qu’un signal d’achat est déclenché lorsque la moyenne mobile courte croise par le haut la moyenne mobile longue, et vice versa pour le signal de vente. Pour cette stratégie, j’ai donc pris deux moyennes mobiles communément utilisées : à savoir 55 jours pour la courte et 100 jours pour la longue.
L’examen du graphe de cette stratégie ci-dessous permet instantanément de déceler les défauts de celle-ci. Alors que l’EUR/USD atteint un plus haut en (1), le 16 février 2018, le système ne détecte pas immédiatement le violent retournement de tendance le 23 avril 2018 et ne passe en position vendeuse qu’en (2), soit le 17 mai 2018. Une configuration similaire apparaît en (3), lorsque la paire de devises réalise un plus bas à 1,0635, le 24 mars 2020 et le système n’entre en position acheteuse que le 23 juin 2020, à 1,1182, soit après 547 pips de hausse !
Le même retard apparaît entre les points (5) et (6). De même, la remontée brutale de plus de 700 pips (entourée en rouge), apparue entre le 24 février et le 8 mars 2020 lorsque les marchés ont réalisé que l’épidémie du SARS-CoV-2 en Italie devenait une pandémie, est complètement ignorée par le système.
EUR/USD en barres daily, du 1er janvier 2017 au 25 avril 2021*
Backtest des Croisements de moyennes mobiles 55 et 100 jours
Le graphe ci-après, représente la période du 10 avril 2015 au 22 novembre 2016, c’est-à-dire une évolution de l’EUR/USD sans tendance, le résultat est lui aussi mauvais avec 6 trades perdants sur 9.
Il est certain que tout trader normalement constitué aurait abandonné une stratégie qui ne gagne pas sur une période d’un an et demi.
EUR/USD en barres daily, du 10 avril 2015 au 22 novembre 2016*
Backtest de la stratégie de croisements de moyennes mobiles 55 et 100 jours
EUR/USD barres 1 minute, du 1er janvier 2020 au 16 avril 2021*
Backtest de la stratégie de croisements de moyennes mobiles 55 & 100 jours. Equity Curve2 & Drawdown3
Le backtest montre que si vous aviez commencé à trader cette stratégie dès le 1er janvier 2020, la violence des mouvements, lors de l’éclatement de la pandémie aurait mis votre compte à zéro ! De plus, si vous aviez persisté en renflouant votre compte aussitôt après, vous auriez obtenu une plus-value latente de 20 % au maximum et vous seriez à nouveau à -22 % au 16 avril 2021.
Pour résumer, on constate deux choses :
- que le croisement de moyennes mobiles réagit beaucoup trop tardivement en cas de hausse ou de baisse violente ;
- qu’en cas de trading range aussi des pertes sont occasionnées.
On peut donc en conclure que cette stratégie va fonctionner lorsqu’une tendance se développe doucement et de façon continue dans le temps.
Mais, au vu des performances et même sans optimiser les durées des moyennes mobiles, la stratégie du croisement de moyennes mobiles, affichée en exemple dans de nombreux livres d’analyse technique, semble tout simplement… bonne à oublier !
Optimiser sa stratégie de trading
Vous pourrez optimiser votre stratégie. Lors du backtest, il est donc possible d’optimiser les paramètres afin de trouver la meilleure performance possible.
Dans l’exemple de la stratégie du croisement de moyennes mobiles, vous pourrez faire varier le nombre de jours des deux moyennes mobiles. Ici, j’ai demandé (en (1)) de faire varier la moyenne mobile lente entre 56 et 100 jours et la moyenne mobile courte entre 21 et 55 jours.
EUR/USD barres 1 minute, du 1er janvier 2020 au 16 avril 2021*
Optimisation de la stratégie de croisements de moyennes mobiles 55 & 100 jours
On réalisera tout de suite (en (2)), que cela fait 1 575 combinaisons possibles pour seulement deux paramètres ! Il faudra donc choisir judicieusement l’amplitude des paramètres, au risque de mobiliser la puissance de son ordinateur des journées entières.
Enfin, optimiser (en (3)), en recherchant le profit net maximal (« Net Profit »), ne sera pas forcément l’idéal. Choisir d’optimiser le ratio gains moyens/pertes moyennes (« Win/Loss Ratio ») pourra vous rendre les performances plus régulières.
En espérant ne pas vous avoir démoralisé, et avant de vous montrer le genre de stratégie robuste que l’on peut obtenir, voyons maintenant quelques erreurs de base à ne pas commettre lorsque l’on envisage de concevoir ses systèmes de trading.
Trading automatique : 7 erreurs du trader débutant
Ne pas connaître l’actif sous-jacent
Il ne faut surtout pas partir bille en tête dans le codage, notamment d’indicateurs d’analyse technique, sans se poser de questions sur la pertinence d’un indicateur appliqué sur l’actif à trader choisi.
La première chose essentielle est de bien comprendre les mécanismes qui dirigent un actif donné et c’est essentiel ! Concevoir un système de trading ne compensera jamais la méconnaissance de l’actif que l’on trade.
Créer un système de trading universel
Le plus souvent, un système (une stratégie) ne fonctionnera que sur un actif donné, en fonction de ses particularités. Au mieux, vous pourrez l’adapter sur un autre actif très similaire, en changeant les paramètres, mais il faudra plutôt s’attendre à devoir modifier le code.
Inventer une usine à gaz
C’est l’erreur la plus courante du trader / développeur novice. J’ai eu par exemple, une personne qui me demandait de lui programmer son système et de prévoir dès le départ dans le code des montants d’ordres fractionnés pour répartir les gains sur différents comptes. Il partait du principe que sa stratégie était gagnante au vu de quelques observations visuelles, sans jamais avoir fait de Backtest !
Pire encore, ce monsieur n’avait même pas envisagé d’intégrer des ordres stop loss qui sont pourtant la base du trading !
La stratégie doit d’abord être conçue de façon simple, clairement. Ensuite, on la perfectionne si et seulement si les backtests donnent des résultats prometteurs.
De plus, cet exemple illustre un des nombreux biais psychologiques dans lequel tout trader novice tombe : l’œil humain perçoit ce qu’il veut voir et ignore ce qu’il ne veut pas voir. Autrement dit, si le système avait une petite voix, elle lui dirait « Regarde sur la gauche de ton graphe : les conditions d’entrée en position de ton système sont présentes ici aussi, sauf que ce n’est pas du tout gagnant et tu ne l’as pas vu ! ».
Grâce au backtesting, on peut connaître les performances qu’aurait réalisée une stratégie dans le passé. C’est aussi une bonne leçon d’humilité quand on s’aperçoit que la stratégie, pour laquelle on aurait parié père et mère, donne des résultats finalement médiocres voire mauvais.
Vouloir concevoir des systèmes de trading haute fréquence
Avec l’utilisation d’un ordinateur qui analyse hyper rapidement (comparé au cerveau humain), le trader / développeur débutant se met à envisager une stratégie avec des prises d’entrée et de sortie en position très rapides, et se met à rêver de trades en millisecondes, de « High Frequency Trading » comme les fonds spéculatifs appelés Hedge Funds.
Il semble absurde de concevoir une stratégie de trading haute fréquence alors que, lorsqu’on est un particulier, il existe un goulot d’étranglement important, à savoir le ping4 d’une connexion Internet à domicile qui peut se chiffrer en plusieurs centaines de millisecondes. C’est un peu comme si on installait un moteur de Ferrari dans une 2CV. Nul doute qu’il y aurait des problèmes de freinage au premier virage !
De plus, il faudra utiliser un historique de données non pas en heures ou en minutes, mais en « tick by tick »5 pour les backtests. Ce qui signifie que rien que pour une seule année de backtest, votre ordinateur devra alors scanner, non pas 5 280 ni 316 800 données, mais plutôt de l’ordre de 44 millions de données au minimum. Autant dire qu’un PC avec un processeur 4 cœurs et une carte graphique de 4 Go, il vous faudra… des heures pour réaliser UN SEUL test. Sachant, que lorsque l’on optimise les paramètres, il faut réaliser des centaines voire plusieurs milliers de tests…
Si l’on réalise un système de trading intraday, des données en minutes suffisent amplement, ce qui vous évitera d’investir dans un matériel informatique coûteux.
Ne pas tenir compte des frais
En regardant le backtest de sa stratégie HFT, notre trader s’enthousiasme à la vue des performances mirifiques en centaines de pourcent. Sauf que, chaque trade réalise… des micro-gains. Il se voit riche mais n’imagine pas que dès que les montants impliqués deviendront conséquents, le courtier élargira de facto le spread bid-ask, ruinant ainsi toute possibilité de gain !
Et le plus souvent même, les commissions du courtier Bourse n’auront pas été intégrées dans le backtest. Or plus le système réalise de trades, plus la performance est amputée par les commissions. Sur un système de trading intraday, les commissions peuvent rapidement représenter plus de 50 % des gains.
Continuer son chemin de croix de l’analyse technique
Influencé notamment lors des formations trading gratuites dispensées par certains courtiers Bourse, le trader débutant ne jure que par l’analyse technique. Il n’a pas appris les mécanismes de décisions des institutionnels car ils sont beaucoup plus complexes. À force d’avoir testé tous les indicateurs techniques manuellement, il ne croît plus trop au « Holy Grail », mais sait-on jamais ? La solution devrait se trouver dans une « customisation » et une combinaison d’indicateurs qu’il n’a jamais pu tester, faute de temps. Il crée alors un système de trading pour combiner, recombiner tous les indicateurs. Et il recommence alors son chemin de croix qu’il a initié après la découverte de chaque nouvel indicateur technique.
Développer un système de trading, ne veut pas forcément dire utiliser une combinaison d’indicateurs techniques. Et l’on revient (à nouveau) au premier point, à savoir connaître l’actif sous-jacent pour créer une stratégie adaptée aux particularités d’un actif donné.
Mal réaliser une optimisation du backtesting
Un des avantages majeurs dans le codage d’un système, est le fait de pouvoir faire ensuite varier les paramètres. Sur la stratégie du croisement de moyennes mobiles par exemple, nous pourrions faire varier le nombre de jours des deux moyennes mobiles. Nous pourrions aussi changer les unités de temps et tester sur des barres en heures ou en minutes.
Toutefois, d’autres difficultés attendent le trader /développeur débutant.
Il est tentant de vouloir optimiser sur un grand nombre de données. Mais, que penser des performances d’une stratégie appliquée sur l’indice S&P 500 dans les années 1980 ? Sont-elles représentatives des évolutions d’aujourd’hui alors qu’à l’époque, beaucoup de gens n’avaient pas accès à la bourse : Internet et des plateformes comme Robinhood n’existaient pas encore ? De plus, il n’y avait aucun système de trading en fonctionnement : tous les ordres étaient passés uniquement par téléphone, du client au trader, sur le parquet de la Bourse.
Le backtest doit se faire dans des données qui possèdent des caractéristiques d’environnement similaires, pour obtenir des comportements de l’actif pendant le backtest semblables à ceux d’aujourd’hui.
De même, il faut vérifier si le backtesting ne montre pas de détérioration significative ou au contraire d’amélioration des gains dans des grandes tendances ou dans des trading ranges. Il faut savoir juger qualitativement le système de trading pour déterminer sa robustesse en fonction des événements.
Sur le graphe ci-dessous, on remarquera en (1), que l’évolution en trading range de la paire EUR/USD n’empêche pas le système de réaliser des gains. En (2), le renversement brutal de la paire de devises génère une l’accélération des profits qui ne diminuent pas sensiblement lorsque la baisse de l’EUR/USD ralentit en (3). Ce système apparaît donc robuste.
EUR/USD daily, du 1er janvier 2015 au 16 avril 2021
Mais surtout, ce n’est pas tant le gain réalisé qui est important, mais la régularité de la performance. En effet, sur le graphe suivant, un système qui réaliserait la performance en (1) serait refusé par le « Risk Officer » du département Contrôle des Risques d’un Hedge Fund, car la majorité des gains est due à un seul trade. Ce dernier vous rétorquerait alors que dans d’autres circonstances malheureuses, ce trade aurait bien pu se retrouver dans le mauvais sens et les performances du système sont donc jugées peu fiables.
Le but est de concevoir une stratégie offrant des gains réguliers, comme en (2). Et pour augmenter la performance, il suffira ensuite d’augmenter le levier, comme en (3) ou en (4).
Système de trading dont la majorité des gains est dû à un seul trade
Dans le même genre d’erreur, il faudra aussi éviter le « Curve fitting », c’est-à-dire l’optimisation des paramètres lors du backtest, de telle façon que les trades correspondent exactement à l’évolution historique de l’actif. On parle alors de suroptimisation. Le système « colle à la courbe » en tous points. Or, la probabilité qu’un actif reproduise dans l’avenir son évolution passée exactement à 100 %, est nulle.
Afin de s’affranchir de cela, il est possible de faire des backtests sur un historique de données « découpé » en plusieurs tranches. C’est le « Walk-Forward Backtesting ».
Dans l’exemple ci-dessous, toujours pour notre système de croisements de moyennes mobiles, le jeu de données historique sera divisé en 33 périodes de tests sur des périodes de 220 jours chacune. Chaque période est constituée de données (« In-Sample Data ») où l’on fait varier les paramètres (ici le nombre de jours de chacun des deux moyennes mobiles) pour trouver le meilleur résultat. On applique ensuite les meilleures valeurs trouvées pour les paramètres à des données non utilisées pendant l’optimisation (« Out-of-Sample Data »). Ce procédé permet ainsi de vérifier si les performances se dégradent sur des données non vues. On recommence ensuite avec la 2ème période de test qui est légèrement décalée dans le temps, avec les données IS qui incorporent maintenant les données OOS du premier de test. Et ainsi de suite, jusqu’à aujourd’hui.
Exemple de Walk-Forward Backtesting : backtests sur un historique de données découpé en plusieurs tranches
Voici maintenant l’exemple d’une stratégie intraday qui profite des brusques variations occasionnées lors de la publication de chiffres économiques.
EUR/USD en tick par tick, du 1er janvier 2015 au 23 avril 2021
La stratégie réalise une performance cumulée de + 242,36 % depuis le premier janvier 2015 et une performance moyenne de 38,36 % par an. Vous noterez la régularité de la performance et son Drawdown qui n’est que de – 7,56 %. La stratégie cumule 4 séries de plus de 10 positions gagnantes consécutives et elle a perdu au maximum 7 fois de suite.
Tableau récapitulatif des positions gagnantes et perdantes pour l’EUR/USD en tick par tick, du 1er janvier 2015 au 23 avril 2021
Chaque position est clôturée dans la même journée, ce qui signifie que vous n’êtes donc pas en risque de flash krach chaque nuit, ni en risque de gap après chaque réouverture du marché le dimanche soir.
Bref, vous l’aurez compris, il n’est pas facile de concevoir un système de trading gagnant dès les premières lignes de codage. Toutefois, en tenant compte des mises en gardes que je vous ai mentionnées tout au long de cet article, le jeu en vaut la chandelle car trop nombreux sont les traders qui engagent des sommes sur une stratégie non vérifiée, pour réaliser a posteriori qu’elle ne marche pas du tout, lorsque le solde de leur compte est tombé à… zéro.
Avec la programmation, vous pourrez optimiser votre stratégie, mais aussi vous obtiendrez une meilleure connaissance de ses performances, des conditions dans lesquelles celle-ci donne de mauvais résultats ou au contraire surperforme. Votre trading n’en sera que plus bénéfique !
1Backtesting : Test d’une stratégie avec des données historiques, qui permet d’établir quelle aurait été la performance dans le passé.
2Equity Curve : Profil de gain/perte du portefeuille dans le temps.
3Drawdown : Perte maximale endurée à un certain moment de la vie de la stratégie.
4Ping : Abbréviation de « Packet Internet Groper ». C’est la mesure du temps (en millisecondes) mis par des paquets de données pour effectuer l’aller-retour entre un ordinateur et le réseau Internet.
5Tick by Tick : Historique de données comprenant toutes les cotations du marché.
*Lors de chaque backtest, le dépôt de départ du compte est de 10 000 € et le montant unitaire total de chaque position est de 100 000 €, soit un levier de 10. Il est tenu compte du spread et des frais de négociation.
Source des images : Freepik
Toutes nos informations sont, par nature, génériques. Elles ne tiennent pas compte de votre situation personnelle et ne constituent en aucune façon des recommandations personnalisées en vue de la réalisation de transactions et ne peuvent être assimilées à une prestation de conseil en investissement financier, ni à une incitation quelconque à acheter ou vendre des instruments financiers. Le lecteur est seul responsable de l’utilisation de l’information fournie, sans qu’aucun recours contre la société éditrice de Cafedelabourse.com ne soit possible. La responsabilité de la société éditrice de Cafedelabourse.com ne pourra en aucun cas être engagée en cas d’erreur, d’omission ou d’investissement inopportun.