Académique Documents
Professionnel Documents
Culture Documents
algorithmique
TheQuants GmbH <trde ining@tpq.io>
Table des matières
Copyright.............................................................................................................................................1
Préface.................................................................................................................................................2
Biographie de l'auteur........................................................................................................................6
1. Python et le trading algorithmique.............................................................................................7
1.1. Introduction..........................................................................................................................7
1.2. Python pour la finance.......................................................................................................7
1.3. Trading algorithmique........................................................................................................14
1.4. Python pour le trading algorithmique..........................................................................18
1.5. Objectif et conditions préalables....................................................................................19
1.6. Stratégies de trading.........................................................................................................21
1.7. Aperçu.................................................................................................................................22
1.8. Conclusions........................................................................................................................25
1.9. Plus loin Ressources.........................................................................................................25
2. Python Infrastructure................................................................................................................27
2.1. Introduction........................................................................................................................27
2.2. Conda en tant que gestionnaire de paquets................................................................29
2.3. Conda en tant que gestionnaire d'environnement virtuel.......................................36
2.4. Utilisation des conteneurs Docker....................................................................................41
2.5. Utilisation d'instances cloud..............................................................................................48
2.6. Conclusions........................................................................................................................55
2.7. Plus loin Ressources.........................................................................................................56
3. Utilisation des données financières........................................................................................58
3.1. Introduction........................................................................................................................58
3.2. Lecture de données financières provenant de différentes sources.........................59
3.3. Utilisation de sources de données ouvertes.....................................................................66
3.4. API de données Eikon.........................................................................................................70
3.5. Stocker efficacement les données financières..............................................................79
3.6. Conclusions........................................................................................................................94
3.7. Plus loin Ressources.........................................................................................................94
3.8. Python Scripts....................................................................................................................95
4. Maîtriser le backtesting vectorisé...........................................................................................97
4.1. Introduction........................................................................................................................97
4.2. Utilisation de la vectorisation............................................................................................98
4.3. Stratégies basées sur des moyennes mobiles simples..................................................105
4.4. Stratégies basées sur le momentum............................................................................116
4.5. Stratégies basées sur le retour à la moyenne.............................................................125
4.6. Conclusions......................................................................................................................131
4.7. Plus loin Ressources.......................................................................................................131
4.8. Python Scripts..................................................................................................................133
5. Prédire les mouvements du marché grâce à l'apprentissage automatique.................140
5.1. Introduction......................................................................................................................140
5.2. Utilisation de la régression linéaire pour la prédiction des mouvements du
marché................................................................................................................................141
5.3. Utilisation de l'apprentissage automatique pour la prédiction des mouvements
du marché..........................................................................................................................157
5.4. Utilisation de l'apprentissage profond pour la prédiction des mouvements du marché
172
5.5. Conclusions......................................................................................................................186
5.6. Plus loin Ressources.......................................................................................................187
5.7. Python Scripts..................................................................................................................188
6. Création de classes pour le backtesting basé sur les événements.......................................194
6.1. Introduction......................................................................................................................194
6.2. Classe de base de backtesting.......................................................................................195
6.3. Classe de backtesting longue uniquement.....................................................................201
6.4. Cours de backtesting long short......................................................................................205
6.5. Conclusions......................................................................................................................209
6.6. Plus loin Ressources.......................................................................................................210
6.7. Python Scripts..................................................................................................................211
7. Utilisation des données et des sockets en temps réel............................................................219
7.1. Introduction......................................................................................................................219
7.2. Exécution d'un serveur de données de tick simple.................................................221
7.3. Connexion d'un client de données de tick simple........................................................224
7.4. Génération de signaux en temps réel..........................................................................226
7.5. Visualisation de données de streaming avec Plotly.....................................................229
7.6. Conclusions......................................................................................................................243
7.7. Plus loin Ressources.......................................................................................................244
7.8. Python Scripts..................................................................................................................244
8. Trading FX avec FXCM.............................................................................................................258
8.1. Introduction......................................................................................................................258
8.2. Obtention Commencé.....................................................................................................260
8.3. Récupération Données...................................................................................................261
8.4. Utilisation de l'API............................................................................................................267
8.5. Conclusions......................................................................................................................274
Notez que ce document est toujours en cours de développement et que des ajouts,
des modifications, des mises à jour, etc. substantiels auront lieu dans un proche
avenir. Il est conseillé de vérifier régulièrement les nouvelles versions du
document.
1
Préface
Le dataïsme dit que l'univers est constitué de flux de données, et que la valeur de tout
phénomène ou entité est déterminée par sa contribution au traitement des données. ...
Le dataïsme fait ainsi tomber la barrière entre les animaux [les humains] et les
machines, et s'attend à ce que les algorithmes électroniques finissent par déchiffrer et
surpasser les algorithmes biochimiques.
Trouver le bon algorithme pour trader automatiquement et avec succès sur les
marchés financiers est le Saint Graal de la finance. Il n'y a pas si longtemps, le
trading algorithmique n'était disponible que pour les acteurs institutionnels aux
poches profondes et avec beaucoup d'actifs sous gestion. Les développements
récents dans les domaines de l'open source, des données ouvertes, du cloud
computing et du stockage ainsi que des plateformes de trading en ligne ont
uniformisé les règles du jeu pour les petites institutions et les traders individuels,
ce qui permet de se lancer dans cette discipline fascinante en étant équipé d'un
ordinateur portable moderne et d'une connexion Internet uniquement.
Il s'agit d'un cours sur Python pour le trading algorithmique. Un tel cours, à
l'intersection de deux domaines vastes et passionnants, peut difficilement couvrir
tous les sujets pertinents. Cependant, il peut couvrir en profondeur une série de
méta-sujets importants :
2
moyenne et la prédiction basée sur le machine learning
3
• données en temps réel : le trading algorithmique nécessite de traiter des
données en temps réel, des algorithmes en ligne basés sur celles-ci et une
visualisation en temps réel ; le cours initie à la programmation de sockets avec
ZeroMQ et à la visualisation en streaming avec Plotly
C'est le seul cours couvrant une telle ampleur et profondeur en ce qui concerne les
sujets pertinents en Python pour le trading algorithmique.
Le cours est accompagné d'un dépôt Git avec tous les codes sous une forme
autonome et exécutable (3 000+ lignes de code) ; le référentiel est disponible sur
la Plateforme Quant.
Les Quants Python proposent un cours de formation en ligne et vidéo ( non inclus)
basé sur ce cours/livre qui offre une expérience d'apprentissage interactive (par
exemple, pour voir le code exécuté en direct, poser des questions individuelles)
ainsi qu'un regard sur des sujets supplémentaires ou sur des sujets sous un angle
différent.
4
Le vrai trading comme objectif
Étant donné que le matériel et les codes sont autonomes et ne s'appuient que sur
des packages Python standard, l'étudiant a une connaissance et un contrôle
complets sur ce qui se passe, comment utiliser les exemples de code, comment les
modifier, etc. Il n'est pas nécessaire de s'appuyer sur des plateformes tierces, par
exemple, pour effectuer le backtesting ou pour se connecter aux plateformes de
trading. L'étudiant peut faire tout cela par lui-même avec ce cours - au rythme qui
lui convient le mieux - et dispose de chaque ligne de code pour le faire.
Bien que vous soyez censé être capable de tout faire par vous-même, nous
sommes là pour vous aider. Vous pouvez poser des questions et des
commentaires sur notre forum d'utilisateurs à tout moment. Nous visons à
revenir dans les 24 heures.
• Hilpisch, Yves (2018) : Python pour la finance. 2e éd., O'Reilly, Beijing et al.
• McKinney, Wes (2017) : Python pour l'analyse des données. 2e éd., O'Reilly, Beijing et al.
• VanderPlas, Jake (2016) : Manuel de science des données Python. O'Reilly, Beijing et
coll.
Des informations générales sur le trading algorithmique peuvent être trouvées, par
exemple, dans ces livres :
• Chan, Ernest (2009): Quantitative Trading. John Wiley & Sons, Hoboken et al.
5
• Chan, Ernest (2013) : Trading algorithmique. John Wiley & Sons, Hoboken et al.
6
• Kissel, Robert (2013) : Trading algorithmique et gestion de portefeuille.
Elsevier/Academic Press, Amsterdam et al.
• Narang, Rishi (2013) : À l'intérieur de la boîte noire. John Wiley & Sons, Hoboken et
al.
7
Biographie de l'auteur
Le Dr Yves J. Hilpisch est fondateur et associé directeur de The Python Quants, un
groupe qui se concentre sur l'utilisation de technologies open source pour la science
des données financières, l'intelligence artificielle, le trading algorithmique et la finance
computationnelle. Yves est également fondateur et PDG de The AI Machine.
8
Chapitre 1. Python et le trading
algorithmique
Chez Goldman Sachs, le nombre de personnes engagées dans le trading d'actions est passé
d'un pic de 600 en 2000 à seulement deux aujourd'hui. [2 : « Trop calamar pour échouer. »
L'Économiste, p. 29. Octobre 2016.]
— L'économiste
1.1. Introduction
Ce chapitre fournit des informations générales et un aperçu des sujets abordés
dans ce livre (cours). Bien que Python pour le trading algorithmique soit un
créneau à l'intersection de la programmation Python et de la finance, il s'agit d'un
créneau en pleine croissance qui touche à des sujets aussi divers que le
déploiement de Python, l'analyse financière interactive, l'apprentissage
automatique et profond, la programmation orientée objet, la communication
socket, la visualisation de données en streaming et les plateformes de trading.
Pour un rappel rapide sur les sujets importants liés à Python, lisez d'abord l'Annexe A
: Python, NumPy, matplotlib, pandas .
L'un des principaux obstacles à l'adoption de Python dans le secteur financier a été
le fait que la version par défaut de Python, appelée CPython, est un langage
interprété de haut niveau. Les algorithmes numériques en général et les
algorithmes financiers en particulier sont assez souvent implémentés sur la base de
structures de boucles (imbriquées). Alors que les langages compilés et de bas
niveau comme C ou C++ sont très rapides pour exécuter de telles boucles, Python –
qui s'appuie sur l'interprétation plutôt que sur la compilation – est généralement
9
assez lent à le faire.
10
En conséquence, Python pur s'est avéré trop lent pour de nombreuses applications
financières du monde réel, telles que la tarification des options ou la gestion des
risques.
Bien que Python n'ait jamais été spécifiquement destiné aux communautés
scientifiques et financières, de nombreuses personnes issues de ces domaines ont
néanmoins apprécié la beauté et la concision de sa syntaxe. Il n'y a pas si
longtemps, il était généralement considéré comme une bonne tradition d'expliquer
un algorithme (financier) et en même temps de présenter un pseudo-code comme
une étape intermédiaire vers sa mise en œuvre technologique correcte. Beaucoup
pensaient qu'avec Python, l'étape de pseudo-code ne serait plus nécessaire. Et ils se
sont avérés pour la plupart corrects.
En Python, cela se traduit par un code exécutable — compte tenu des définitions
de variables respectives — qui est également très proche de la formule financière
ainsi que de la représentation Latex :
11
de Monte-Carlo ou pour effectuer une analyse et une gestion des risques basées
sur la simulation. Ces tâches, à leur tour, peuvent nécessiter des millions de
simulations qui doivent être terminées en temps voulu, souvent presque en temps
réel ou du moins en temps quasi réel.
12
Le Python interprété en soi n'a jamais été conçu pour être assez rapide pour
s'attaquer à des tâches aussi exigeantes en termes de calcul.
En 2006, la version 1.0 du package Python NumPy a été publiée par Travis Oliphant.
NumPy est l'abréviation de Python numérique, ce qui suggère qu'il cible des scénarios
qui sont numériquement exigeants. L'interpréteur Python de base essaie d'être
aussi général que possible dans de nombreux domaines, ce qui entraîne souvent
une surcharge au moment de l'exécution. [3 : Par exemple, les objets de liste ne
sont pas seulement mutables, c'est-à-dire qu'ils peuvent être modifiés
en taille, ils peuvent aussi contenir presque n'importe quel autre type
d'objet Python, comme les objets int, float, tuple ou les objets de liste eux-
mêmes.] NumPy, quant à lui, utilise la spécialisation comme approche principale
pour éviter les frais généraux et être aussi bon et rapide que possible dans certains
scénarios d'application.
La classe principale de NumPy est l'objet tableau régulier, appelé objet ndarray pour
tableau à n dimensions. Il est immuable, c'est-à-dire qu'il ne peut pas être modifié en
taille, et ne peut accueillir qu'un seul type de données, appelé dtype. Cette
spécialisation permet la mise en œuvre d'un code concis et rapide. Une approche
centrale dans ce contexte est la vectorisation. Fondamentalement, cette approche
évite le bouclage au niveau Python et délègue le bouclage à du code NumPy
spécialisé, implémenté en général en C et donc assez rapide.
In [1]: %%time
import random
from math import exp, sqrt
S0 = 100 ①
r = 0.05 ②
T = 1.0 ③
sigma = 0.2 ④
values = [] ⑤
for _ in range(1000000): ⑥
ST = S0 * exp((r - 0.5 * sigma ** 2) * T +
sigma * random.gauss(0, 1) * sqrt(T)) ⑦
values.append(ST) ⑧
CPU times: user 1.14 s, sys: 17.2 ms, total: 1.15 s
Wall time: 1.15 s
13
(1) Le niveau initial de l'indice.
Avec NumPy, vous pouvez éviter complètement les boucles au niveau Python par
l'utilisation de la vectorisation. Le code est beaucoup plus concis, plus lisible et
plus rapide d'un facteur d'environ 25.
In [2]: %%time
import numpy as np
S0 = 100
r = 0.05
T = 1.0
sigma = 0.2
(1) Cette seule ligne de code NumPy simule toutes les valeurs et les stocke dans un
ndarray .
finance et du trading algorithmique. Avec NumPy, le code
vectorisé ne rend pas seulement le code plus concis, il peut
également accélérer considérablement l'exécution du code,
comme dans l'exemple de simulation de Monte-Carlo d'un
facteur d'environ 25.
On peut dire sans risque de se tromper que NumPy a contribué de manière significative
au succès de Python dans
14
la science et la finance. De nombreux autres paquets Python populaires de la pile
Python dite scientifique s'appuient sur NumPy en tant que structure de données efficace
et performante pour stocker et gérer des données numériques. En fait, NumPy est une
excroissance du projet de package SciPy, qui fournit une multitude de fonctionnalités
fréquemment nécessaires en science. Le projet SciPy a reconnu le besoin d'une
structure de données numériques plus puissante et a consolidé des projets plus
anciens comme Numeric et NumArray dans ce domaine en une nouvelle structure
unificatrice sous la forme de NumPy.
Le développement des pandas a commencé en 2008 par Wes McKinney, qui travaillait à
l'époque chez AQR Capital Management, un grand fonds spéculatif opérant à
Greenwich, dans le Connecticut. Comme pour tout autre hedge fund, travailler
avec des données de séries chronologiques est d'une importance capitale pour
AQR Capital Management, mais à l'époque, Python ne fournissait aucun support
attrayant pour ce type de données. L'idée de Wes était de créer un package qui
imite les capacités du langage statistique R (http://r-project.org ) dans ce domaine.
Cela se reflète, par exemple, dans la dénomination de la classe majeure DataFrame,
dont l'homologue en R est appelé data.frame. N'étant pas considéré comme assez
proche du cœur de métier de la gestion de fonds, AQR Capital Management a
ouvert le projet pandas en 2009, ce qui marque le début d'une success story
majeure dans le domaine de l'open source data et de l'analyse financière.
En partie grâce aux pandas, Python est devenu une force majeure dans l'analyse
des données et des finances. De nombreuses personnes qui adoptent Python, provenant
de divers autres langages, citent les pandas comme une raison majeure de leur
décision. En combinaison avec des sources de données ouvertes comme Quandl,
pandas permet même aux étudiants d'effectuer des analyses financières
sophistiquées avec les barrières à l'entrée les plus faibles qui soient : un ordinateur
portable ordinaire avec une connexion Internet suffit.
15
Supposons qu'un trader algorithmique soit intéressé par le trading de Bitcoins, la
crypto-monnaie ayant la plus grande capitalisation boursière. Une première étape
pourrait consister à récupérer des données sur l'historique du taux de change en USD.
À l'aide des données Quandl et des pandas, une telle tâche est
16
accompli en moins d'une minute. L'historique du taux de change Bitcoin en USD
du début de 2013 jusqu'en septembre 2018 montre le graphique qui résulte du
code Python ci-dessous, qui n'est (en omettant certains paramétrisations liées au
style de traçage) que quatre lignes. Bien que pandas ne soit pas explicitement
importé, le package wrapper Python Quandl renvoie par défaut un objet
DataFrame qui est ensuite utilisé pour ajouter une moyenne mobile simple (SMA)
de 100 jours, ainsi que pour visualiser les données brutes à côté du SMA.
(6) Sélectionne les données à partir du 1er janvier 2013 et les trace.
17
Graphique 1. Historique du taux de change Bitcoin en USD de début 2013 à septembre 2018
seul
API. L'exemple Bitcoin que nous venons de décrire montre qu'un
18
généralement exécuté assez rapidement en raison de l'utilisation
intensive de code compilé sous le capot.
19
1.3. Trading algorithmique
Le terme de trading algorithmique n'est ni unique ni universel. À un niveau assez
basique, il s'agit de la négociation d'instruments financiers basés sur un algorithme
formel. Un algorithme est un ensemble d'opérations (mathématiques, techniques) à
mener dans un certain ordre pour atteindre un certain objectif. Par exemple, il
existe des algorithmes mathématiques pour résoudre un Rubik's cube. [4 : Voir Les
mathématiques du Rubik's Cube ou Algorithmes pour résoudre le Rubik's Cube.]
Un tel algorithme peut résoudre le problème à résoudre par le biais d'une
procédure étape par étape, souvent parfaitement. Un autre exemple est celui des
algorithmes permettant de trouver la ou les racines d'une équation si elle existe. En
ce sens, l'objectif d'un algorithme mathématique est souvent bien spécifié et une
solution optimale est souvent attendue.
Le trading sur les marchés financiers est une activité économique importante. Les
transactions sont nécessaires pour entrer et sortir du marché, pour mettre de l'argent
inutile sur le marché et pour le reconvertir en espèces lorsque l'argent est nécessaire. Ils
sont également nécessaires pour déplacer de l'argent sur le marché, pour échanger un
actif contre un autre, pour gérer les risques et pour exploiter les informations sur les
mouvements de prix futurs.
20
• couverture statique : couverture contre les risques de marché en achetant, par
exemple, des options de vente hors de la monnaie sur le S&P 500
• couverture dynamique : couverture contre les risques de marché affectant les options
sur le S&P
500 en négociant dynamiquement des contrats à terme sur le S&P 500 et
21
Instruments de trésorerie, du marché monétaire ou de taux appropriés
• tenue de marché : fournir, par exemple, de la liquidité aux options sur le S&P 500
en achetant et en vendant des options à des prix d'achat et de vente différents.
Tous ces types de transactions peuvent être mis en œuvre par une approche
discrétionnaire, le trader humain prenant des décisions principalement par lui-
même. ainsi que sur la base d'algorithmes soutenant le trader humain ou même le
remplaçant complètement dans le processus de prise de décision. Dans ce
contexte, l'informatisation du trading financier joue bien sûr un rôle important.
Alors qu'au début du trading financier, le floor trading avec un grand groupe de
personnes se criant dessus (« cri ouvert ») était le seul moyen d'exécuter des
transactions, l'informatisation et l'avènement d'Internet et des technologies Web
ont révolutionné le trading dans le secteur financier. La citation au début de ce
chapitre l'illustre de manière impressionnante en termes de nombre de personnes
activement engagées dans la finance chez Goldman Sachs en 2000 et en 2016. C'est
une tendance qui était prévue il y a 25 ans, comme le soulignent Solomon et Corso
(1991) :
Les ordinateurs ont révolutionné le trading de valeurs mobilières et le marché boursier est
actuellement en pleine transformation. Il est clair que le marché de l'avenir ne ressemblera
pas aux marchés du passé.
La technologie a permis d'envoyer des informations sur les cours des actions dans le
monde entier en quelques secondes. À l'heure actuelle, les ordinateurs acheminent les
ordres et exécutent de petites transactions directement du terminal de la société de
courtage à la bourse. Des ordinateurs relient désormais différentes bourses, une
pratique qui contribue à la création d'un marché mondial unique pour le négoce de
valeurs mobilières. Les améliorations continues de la technologie permettront
d'exécuter des transactions à l'échelle mondiale par le biais de systèmes de négociation
électroniques.
Il est intéressant de noter que l'un des algorithmes les plus anciens et les plus utilisés
se trouve dans la couverture dynamique des options. Déjà avec la publication des
articles fondateurs sur la tarification des options européennes par Black et Scholes
(1973) et Merton (1973), l'algorithme, appelé delta hedging, a été mis à disposition – bien
avant que le trading informatisé et électronique ne commence. La couverture delta en
tant qu'algorithme de trading montre comment couvrir tous les risques de marché
22
dans un monde modèle simplifié, parfait et continu. Dans le monde réel, avec des
coûts de transaction, des transactions discrètes, des marchés imparfaitement liquides
et d'autres frictions (« imperfections »), l'algorithme a fait ses preuves – de manière
quelque peu surprenante
23
Peut-être — son utilité et sa robustesse aussi. Il ne permet peut-être pas de couvrir
parfaitement les risques de marché affectant les options, mais il est utile pour se
rapprocher de l'idéal et est donc encore utilisé à grande échelle dans l'industrie
financière. [5 : Voir Hilpisch (2015) pour une analyse détaillée des stratégies de
couverture delta pour les options européennes et américaines à l'aide de Python.]
rendements positifs (au-dessus d'un indice de référence)
indépendamment de la performance du marché lui-même.
L'alpha est défini dans ce livre (cours) de la manière la plus
simple comme le rendement excédentaire d'une stratégie par
rapport à l'instrument financier de référence.
24
Une question importante reste à résoudre : y a-t-il un avantage à utiliser des
algorithmes pour le trading au lieu de la recherche, de l'expérience et de la
discrétion humaines ? Il est difficile de répondre à cette question de manière
générale. C'est sûr, il y a des
25
les traders et les gestionnaires de portefeuille qui ont gagné, en moyenne, plus que
leur indice de référence pour les investisseurs sur de plus longues périodes.
L'exemple le plus frappant à cet égard est celui de Warren Buffett. D'autre part, les
analyses statistiques montrent que la majorité des gestionnaires de portefeuille
actifs battent rarement les indices de référence pertinents de manière cohérente. Se
référant à l'année 2015, Adam Shell écrit :
L'année dernière, par exemple, lorsque l'indice Standard & Poor's 500 a affiché un
rendement total dérisoire de 1,4 % dividendes inclus, 66 % des fonds d'actions de
grandes entreprises « gérés activement » ont affiché des rendements inférieurs à ceux
de l'indice. Les perspectives à long terme sont tout aussi sombres, 84 % des fonds à
grande capitalisation ayant généré des rendements inférieurs à ceux du S&P 500 au
cours des cinq dernières années et 82 % au cours des 10 dernières années, selon l'étude.
[8 : Source : « 66 % des gestionnaires de fonds ne peuvent pas égaler les résultats de
S&P. » USA Today, 14 mars 2016.]
Dans une étude empirique publiée en décembre 2016, Harvey et al. (2016) écrivent :
Les résultats de l'étude montrent que les hedge funds macro systématiques («
algorithmiques ») obtiennent les meilleurs résultats en tant que catégorie, tant en
termes non ajustés qu'en termes ajustés au risque. Ils génèrent un alpha annualisé
26
de 4,85% sur la période étudiée. Il s'agit de hedge funds qui mettent en œuvre des
stratégies qui sont généralement mondiales, multi-actifs, et qui impliquent souvent
des éléments politiques et macroéconomiques. Les hedge funds systématiques en
actions ne battent leurs homologues discrétionnaires que sur la base du ratio
d'évaluation du rendement ajusté (0,35 contre 0,25).
27
Tableau 1. Performance annualisée des catégories de hedge funds
Par rapport au S&P 500, la performance des hedge funds a été plutôt maigre pour
l'année 2017. Alors que l'indice S&P 500 a enregistré un rendement de 21,8 %, les fonds
spéculatifs n'ont rapporté que 8,5 % aux investisseurs (voir http://investopedia.com).
Cela illustre à quel point il est difficile, même avec des budgets de plusieurs millions
de dollars pour la recherche et la technologie, de générer de l'alpha.
28
• Gestion des API modernes : Les plateformes de trading en ligne modernes telles
que celles de FXCM, Oanda et Gemini offrent des interfaces de programmation
d'applications (API) RESTful et des API de socket (streaming) pour accéder aux
données historiques et en direct. Python est en général bien adapté pour interagir
efficacement avec de telles API.
29
• Forfaits dédiés : En plus des packages d'analyse de données standard, il existe
plusieurs packages dédiés à l'espace de trading algorithmique, tels que
PyAlgoTrade et Zipline pour le backtesting des stratégies de trading, et
Pyfoliopour effectuer des analyses de portefeuille et de risque.
En résumé, on peut dire sans risque de se tromper que Python joue déjà un rôle
important dans le trading algorithmique, et semble avoir une forte dynamique
pour devenir encore plus important dans un avenir proche. C'est donc un bon
choix pour tous ceux qui tentent d'entrer dans l'espace, que ce soit en tant que
trader « amateur » ambitieux ou en tant que professionnel employé par une
institution financière de premier plan engagée dans le trading automatisé.
31
expérience avec Python et les progiciels Python populaires utilisés pour l'analyse
de données. Les bons livres d'introduction sont, par exemple, Hilpisch (2018),
McKinney (2017) et VanderPlas (2016), qui peuvent tous être consultés pour
construire une base solide en Python pour l'analyse de données et la finance. On
s'attend également à ce que le lecteur ait une certaine expérience des outils
typiques utilisés pour l'analyse interactive avec Python, tels que IPython, auquel
VanderPlas (2016) fournit également une introduction.
Ce livre (cours) présente et explique le code Python qui est appliqué aux sujets
abordés, comme le backtesting des stratégies de trading ou le travail avec des
données en streaming. Il ne peut pas fournir une introduction complète à tous les
paquets utilisés à différents endroits. Il essaie, cependant, de mettre en évidence les
capacités des paquets qui sont au cœur de l'exposition (comme la vectorisation
avec NumPy).
Le livre (cours) ne peut pas non plus fournir une introduction et un aperçu
approfondis de tous les aspects financiers et opérationnels pertinents pour le
trading algorithmique. L'approche se concentre plutôt sur l'utilisation de Python
pour construire l'infrastructure nécessaire aux systèmes de trading automatisés et
algorithmiques. Bien sûr, la majorité des exemples utilisés sont tirés de l'espace de
trading algorithmique. Cependant, lorsqu'il s'agit, par exemple, de stratégies de
momentum ou de retour à la moyenne, elles sont plus ou moins simplement
utilisées sans fournir de vérification (statistique) ou une discussion approfondie de
leurs complexités. Chaque fois que cela semble approprié, des références sont
données qui dirigent le lecteur vers des sources qui abordent des questions laissées
en suspens pendant l'exposition.
Dans l'ensemble, ce livre (cours) est écrit pour les lecteurs qui ont une certaine
expérience à la fois de Python et du trading (algorithmique). Pour un tel lecteur, le
livre (cours) est un guide pratique pour la création de systèmes de trading automatisés
à l'aide de Python et de packages supplémentaires.
32
finance) consultent en outre d'autres textes d'introduction à Python.
33
1.6. Stratégies de trading
Tout au long de ce livre (cours), quatre stratégies de trading algorithmique
différentes sont utilisées à titre d'exemples. Ils sont présentés brièvement ci-
dessous et plus en détail dans Mastering Vectorized Backtesting. Toutes ces
stratégies de trading peuvent être classées comme des stratégies principalement à
la recherche d'alpha, car leur objectif principal est de générer des rendements
positifs et supérieurs à ceux du marché, indépendamment de la direction du
marché. Des exemples canoniques tout au long du livre (cours) en ce qui concerne
les instruments financiers négociés sont un indice boursier, une action unique ou une
crypto-monnaie (libellée dans une monnaie fiduciaire). Le livre (cours) ne couvre
pas les stratégies impliquant plusieurs instruments financiers en même temps
(stratégies de trading par paires, stratégies basées sur des paniers, etc.). Il ne
couvre également que les stratégies dont les signaux de trading sont dérivés de
données structurées de séries chronologiques financières et non, par exemple, de
sources de données non structurées telles que les flux d'actualités ou de médias
sociaux. Cela permet de garder les discussions et les implémentations de Python
concises et plus faciles à comprendre, conformément à l'approche (discutée
précédemment) de se concentrer sur Python pour le trading algorithmique. [10 :
Voir le livre de Kissel (2013) pour un aperçu des sujets liés au trading
algorithmique, le livre de Chan (2013) pour une discussion approfondie du
momentum et des stratégies de retour à la moyenne, ou le livre de Narang (2013)
pour une couverture du trading quantitatif et du HFT en général.]
Le reste de cette section donne un aperçu rapide des quatre stratégies de trading
utilisées dans ce livre (cours).
Le premier type de stratégie de trading repose sur des moyennes mobiles simples
(SMA) pour générer des signaux de trading et des positionnements de marché. Ces
stratégies de trading ont été popularisées par ce que l'on appelle les analystes
techniques ou chartistes. L'idée de base est qu'une SMA à court terme ayant une valeur
plus élevée qu'une SMA à long terme signale une position longue sur le marché et que
le scénario inverse signale une position neutre ou courte sur le marché.
1.6.2. Élan
L'idée de base qui sous-tend les stratégies de momentum est qu'un instrument
34
financier est supposé se comporter en fonction de ses performances récentes
pendant un certain temps supplémentaire. Par exemple, lorsqu'un indice boursier
a enregistré un rendement négatif en moyenne au cours des cinq derniers jours, on
suppose que sa performance sera négative demain, car
35
puits.
soyez
qui sont cités dans ce chapitre et dans les autres qui suivent. Mais
1.7. Aperçu
Voici un bref aperçu des sujets abordés dans chaque chapitre :
Python Infrastructure
Jette les bases de tous les chapitres suivants en ce sens qu'il montre comment
36
mettre en place un environnement Python approprié. Ce chapitre utilise
principalement conda en tant que gestionnaire de packages et
d'environnements, et illustre le déploiement de Python via des conteneurs
Docker et dans le cloud.
37
Utilisation des données financières
Les données des séries chronologiques financières sont au cœur de tout projet
de trading algorithmique. Ce chapitre vous montre comment récupérer des
données financières à partir de différentes données publiques ainsi que de
sources de données propriétaires. Il montre également comment stocker
efficacement des données de séries chronologiques financières avec Python.
La nécessité de faire face à des données en temps réel ou en continu est une réalité,
même pour le trader algorithmique individuel ambitieux. L'outil de prédilection
est la programmation par socket, pour laquelle ce chapitre présente ZeroMQ en tant
que technologie légère et évolutive. Le chapitre illustre également comment utiliser
Plotly pour créer de jolies intrigues interactives en streaming. Il présente également
une classe wrapper qui simplifie la création de tels graphiques dans les cas où
38
plusieurs flux de données doivent être visualisés simultanément (par exemple, à la
manière d'un tableau de bord).
39
Trading FX avec FXCM
Oanda est une autre plateforme de trading de forex et de CFD offrant un large
éventail d'instruments négociables, par exemple basés sur des paires de
devises, des indices boursiers, des matières premières ou des instruments de
taux (obligations de référence). Ce chapitre fournit des conseils sur la façon de
mettre en œuvre des stratégies de trading algorithmiques automatisées avec
Oanda.
Interactive Brokers est une plateforme de courtage en ligne de premier plan qui se
concentre sur le trading d'actions et d'options. Le chapitre traite de l'API
Interactive Brokers qui est technologiquement basée sur l'application Trader
Workstation. Il introduit une classe wrapper Python qui rend la vie assez pratique
et efficace dans ce contexte.
[automating_trading]
40
Annexe A : Python, NumPy, matplotlib, pandas
Cette annexe fournit une introduction concise aux principes les plus importants
de Python,
41
NumPy et les pandas dans le contexte du matériel présenté dans les chapitres
principaux. Il représente un point de départ à partir duquel on peut ajouter à ses
propres connaissances Python au fil du temps.
1.8. Conclusions
Python est déjà une force dans la finance en général, et est en passe de devenir une
force majeure dans le trading algorithmique. Il existe un certain nombre de bonnes
raisons d'utiliser Python pour le trading algorithmique, parmi lesquelles le
puissant écosystème de packages qui permettent une analyse efficace des données
ou la gestion d'API modernes. Il existe également un certain nombre de bonnes
raisons d'apprendre Python pour le trading algorithmique, notamment le fait que
certaines des plus grandes institutions d'achat et de vente font un usage intensif de
Python dans leurs opérations de trading et recherchent constamment des
professionnels chevronnés de Python.
• Harvey, Campbell, Sandy Rattray, Andrew Sinclair et Otto Van Hemert (2016) : «
L'homme contre la machine : comparaison de la performance discrétionnaire et
systématique des hedge funds ». Livre blanc, Man Group.
• Dorn, Anne, Daniel Dorn et Paul Sengmueller (2008) : « Pourquoi les gens font-ils
du commerce ? »
Journal of Applied Finance, automne/hiver, 37-50.
42
• Merton, Robert (1973) : « Théorie de la tarification rationnelle des options. »
Journal Bell des sciences économiques et de gestion, vol. 4, 141-183.
43
• Solomon, Lewis et Louise Corso (1991) : « L'impact de la technologie sur la
négociation de valeurs mobilières : le marché mondial émergent et ses
implications pour la réglementation ». The John Marshall Law Review, vol. 24, n°
2, 299-338.
• Chan, Ernest (2013) : Trading algorithmique. John Wiley & Sons, Hoboken et al.
• Lewis, Michael (2015) : Flash Boys. W.W. Norton & Company, New York et
Londres.
• Hilpisch, Yves (2018) : Python pour la finance. 2e éd., O'Reilly, Beijing et al.
Ressources sous http://pff.tpq.io.
• Hilpisch, Yves (2015) : Analyse des produits dérivés avec Python. Wiley Finance.
Ressources sous http://dawp.tpq.io.
• McKinney, Wes (2017) : Python pour l'analyse des données. 2e éd., O'Reilly, Beijing et al.
• Narang, Rishi (2013) : À l'intérieur de la boîte noire. John Wiley & Sons, Hoboken et
al.
• VanderPlas, Jake (2016) : Manuel de science des données Python. O'Reilly, Beijing et
coll.
44