Concevoir un bot de trading, partie 1

Alexandre Batisse
La Baleine
Published in
3 min readOct 15, 2017

Ils s’appellent Gunbot, Zenbot ou bien portent encore d’autres noms et tous promettent la même chose : gagner de l’argent sans rien faire. Réfléchissons ensemble à la conception d’un tel programme.

Elle est pas belle la vie ?

Pour cette série d’articles, nous allons donc tenter de mettre en place un bot de trading, en commençant avec une stratégie très simple appelée DMAC (Dual Moving Average Cross-Over).

DISCLAIMER : En ce qui concerne le partage du code source, je me retrouve face à un cas de conscience. Quelque chose dans le genre de la citation sur le fait d’apprendre à un homme à pêcher si vous voyez ce que je veux dire. Bien que Zenbot soit lui ouvert, je trouve que la situation est ici différente de celle de rendre open source un outil d’aide à la décision. C’est pourquoi je ne compte pas pour l’instant donner libre accès au code source complet.

Un principe reconnu en finance est que les marchés évoluent en tendances. Celles-ci peuvent être classées en plusieurs catégories : mineures, moyennes et majeures par exemple. C’est ainsi qu’au sein d’une tendance majeure de hausse d’un marché on retrouve périodiquement des tendances mineures de hausses et de baisses. Notre but sera donc ici de “surfer” sur ces tendances plus mineures afin d’obtenir un meilleur résultat qu’en holdant simplement dans un marché haussier, et pourquoi pas de gagner sur un marché baissier (sans short selling).

Les moyennes mobiles (moving average) font parties des indicateurs les plus simples à comprendre. Elles consistent simplement à apposer à la courbe d’un cours quelconque un second tracé dont la valeur est une moyenne des <X> dernières valeurs du cours. C’est un moyen facile à mettre en place pour visualiser ces fameuses tendances que j’évoquais précédemment. En effet, une moyenne mobile sur une longue période permet de dégager la tendance majeure d’un marché tandis qu’avec une période plus courte nous observons des tendances plus mineures.

La stratégie DMAC consiste à repérer les instants où deux moyennes mobiles de périodes différentes se croisent et, suivant s’il s’agit de la moyenne courte qui passe dessus ou bien la longue, déclencher un ordre d’achat ou de vente. C’est une stratégie extrêmement simple, mis il faut bien commencer quelque part !

Un exemple concluant de l’utilisation de deux moyennes mobiles.

Le principal reproche adressé aux moyennes mobiles est leur faible réactivité. C’est évidemment une conséquence logique du principe même de calculer une moyenne sur une période passée, mais cela ne permet pas d’obtenir l’instant optimal où déclencher un passage d’ordre. Pour pallier quelque peu à ce problème nous utiliserons donc par la suite des moyennes exponentielles mobiles (exponential moving average). La seule différence entre les deux étant que donner davantage de poids aux données récentes offre une plus grande réactivité face à l’évolution du marché, sans toutefois corriger entièrement cette lacune comme on peut le voir ci-dessus.

La bibliothèque Python Pandas nous permet d’obtenir de façon très aisée ces moyennes mobiles à partir des données OCHL (Open, Close, High, Low) obtenues depuis un exchange par exemple :

Pour repérer les croisements de deux moyennes mobiles, j’utilise une méthode tout à fait personnelle, mais de meilleures solutions existent probablement :

En ayant extrait un court lapse de temps le plus récent (par exemple les trois derniers ticks) dans mes données “OCHL+EMAs”, cette méthode permet effectivement de détecter un croisement de moyennes mobiles (si la multiplication des différences en début et fin d’intervalle est négative). La condition suivante permet quant à elle de savoir quelle moyenne mobile a pris le dessus sur l’autre, et donc d’émettre un ordre en conséquence.

C’est ainsi que se conclut notre première partie dédiée à la conception d’un bot de trading. Dans un prochain article nous implémenterons alors la stratégie décrite ci-dessus pour pouvoir observer nos premiers résultats.

N’hésitez pas à rejoindre La Baleine ici.

--

--