Python pour la finance
Yves Hilpisch
First Interactive
Introduction
xvii
Structure du livrexviii
Conventions du livrexix
Code source du livrexx
Terminologie françaisexxi
Pour aller plus loinxxii
Partie I. Python et la finance1
1. Pourquoi Python pour la finance ?3
1.1 : Le langage de programmation Python3
Une brève histoire de Python5
L'écosystème de Python6
Les communautés d'utilisateurs Python7
La pile d'applications scientifiques8
1.2 : Finance et technologie10
Investissements technologiques10
La technologie comme catalyseur11
Technologies et talents comme barrières d'entrée11
Augmentation des vitesses, des fréquences et des volumes de données12
Apparition de l'analyse en temps réel14
1.3 : Python pour la finance15
Syntaxe de Python et mathématiques15
Efficacité et productivité de Python19
Obtention plus rapide des résultats19
Accès aux hautes performances21
Du prototypage à la production23
1.4 : La finance pilotée par les données et par l'IA24
La finance pilotée par les données24
La finance pilotée par l'IA28
Conclusion31
Autres ressources32
2. Infrastructure Python33
2.1 : conda en tant que gestionnaire de paquetages35
Installation de Miniconda35
Commandes principales de conda37
2.2 : conda en tant que gestionnaire d'environnements virtuels40
2.3 : Exploitation d'un conteneur Docker43
Images et conteneurs Docker44
Création d'une image Docker pour Python sous Ubuntu44
2.4 : Utilisation d'une instance Cloud48
Clés publiques et privées RSA49
Fichier de configuration Jupyter Notebook50
Script d'installation pour Python et Jupyter Notebook52
Script d'orchestration de la configuration du Droplet53
Conclusion54
Autres ressources55
Partie II. Maîtriser les bases57
3. Types de données et structures59
3.1 : Types de données élémentaires60
Numériques entiers (integer)60
Numérique à virgule flottante (float)61
Booléens64
Chaînes de caractères (sfr)66
En pratique : afficher et manipuler des chaînes68
En pratique : expressions régulières70
3.2 : Données structurées fondamentales72
Tupie72
List73
En pratique : structures de contrôle d'exécution74
En pratique : la programmation fonctionnelle76
Dictionnaire77
Ensemble (set)79
Conclusion80
Autres ressources80
4. Calculs numériques avec NumPy81
4.1 : Tableaux de données82
Un tableau avec des listes Python82
La classe de tableaux array de Python84
4.2 : Tableaux NumPy réguliers86
Les principes86
Dimensions multiples89
Méta-informations92
Reformage et retaille92
Tableaux booléens95
Comparaison de performances97
4.3 : Tableaux NumPy multitypes99
4.4 : Vectorisation du code100
Vectorisation élémentaire100
Implantation mémoire104
Conclusion106
Autres ressources106
5. Analyse de données avec pandas107
5.1 : La classe DataFrame108
Premiers pas avec la classe DataFrame108
DataFrame et données temporelles112
5.2 : Analyses élémentaires116
5.3 : Premiers pas en visualisation119
5.4 : La classe Series122
5.5 : Opérations GroupBy124
5.6 : Sélections complexes125
5.7 : Concaténation, jointure et fusion129
Concaténation129
Jointures131
Fusion132
5.8 : Considérations de performances134
Conclusion136
Autres ressources137
6. Programmation orientée objets139
6.1 : Premier contact avec les objets Python143
int
143
list144
ndarray
144
DataFrame
146
6.2 : Principe des classes Python147
Le modèle de données Python152
La classe Vector156
Conclusion156
Autres ressources157
Partie III. La science des données financières159
7. Visualisation des données161
7.1 : Tracés 2D statiques162
Jeu de données à une dimension162
Jeux de données à deux dimensions170
Autres styles de tracés177
7.2 : Tracés 3D statiques186
7.3 : Tracés 2D interactifs189
Tracés élémentaires190
Tracés financiers194
Conclusion198
Autres ressources199
8. Séries temporelles financières201
8.1 : Données financières202
Importation des données202
Statistiques générales205
Changements au cours du temps208
Rééchantillonnage211
8.2 : Statistiques mobiles213
Aperçu général214
Exemple d'analyse technique215
8.3 : Analyse de corrélation218
Les données à traiter218
Rendements log220
Régression par moindres carrés OLS221
Corrélation222
8.4 : Données à haute fréquence223
Conclusion225
Autres ressources226
9. Opérations d'entrées/sorties (E/S)227
9.1 : E/S élémentaires avec Python228
Stockage d'objets sur disque229
Lecture et écriture de fichiers texte232
Exploitation d'une base de données SQL235
Lecture et écriture de tableaux NumPy238
9.2 : E/S avec pandas240
Retour sur l'approche SQL241
De SQL vers pandas243
Exploitation d'un fichier CSV246
Exploitation d'un fichier de tableur Excel248
9.3 : E/S avec PyTables249
Utilisation du module Tables250
Utilisation de la compression257
Exploitation de tableaux avec PyTables258
Calculs hors mémoire260
9.4 : E/S avec TsTables263
Génération des données d'exemple263
Stockage des données265
Relecture des données266
Conclusion268
Autres ressources269
10. Performances de Python271
10.1 : Boucles de répétition272
Version Python272
Version avec NumPy273
Avec Numba274
Avec Cython275
10.2 : Algorithmes277
Recherche de nombres premiers278
En Python278
En Numba279
En Cython280
Traitements parallèles281
Suite de Fibonacci282
Algorithme récursif282
Algorithme itératif283
Recherche du nombre Pi285
10.3 : Arbres binomiaux290
En Python290
Avec NumPy291
Avec Numba293
En Cython293
10.4 : Simulation de Monte Carlo294
En Python295
Avec NumPy297
Avec Numba298
Avec Cython298
Parallélisation avec multiprocessing299
10.5 : Algorithmes récursifs avec pandas300
Avec Python301
Avec Numba303
Avec Cython303
Conclusion304
Autres ressources305
11. Outils mathématiques307
11.1 : Approximation308
Régression309
Monômes en tant que fonctions de base309
Fonctions de base individuelles313
Données bruitées315
Données non triées316
Dimensions multiples318
Interpolation321
11.2 : Optimisation convexe325
Optimisation globale326
Optimisation locale328
Optimisation contrainte329
11.3 : Intégration331
Intégration numérique332
Intégration par simulation333
11.4 : Calcul formel ou symbolique335
Grands principes de SymPy335
Équations337
Intégration et différenciation337
Différenciation338
Calcul formel340
Conclusion340
Autres ressources340
12. Stochastique343
12.1 : Valeurs numériques aléatoires344
12.2 : Simulation350
Variables aléatoires350
Processus stochastiques353
Mouvement brownien géométrique354
Diffusion par racines carrées356
Volatilité stochastique362
Diffusion par sauts de Merton366
Réduction de variance369
12.3 : Évaluation372
Évaluation d'une option européenne373
Estimation d'une option américaine377
12.4 : Mesure du risque380
VaR (valeur à risque)381
Ajustement dévaluation de crédits (CVA)385
Script Python complet389
Conclusion392
Autres ressources392
13. Statistiques395
13.1 : Tests de normalité396
Cas d'école et de référence397
Rendements log-normaux397
Valeurs log-normales397
Données du monde réel408
13.2 : Optimisation de portefeuille414
Les données d'entrée414
La théorie fondamentale416
Le portefeuille optimal419
Frontière efficiente422
Droite de marché des capitaux (CML)424
13.3 : Statistiques bayésiennes427
Formule de Bayes427
Régression bayésienne428
Deux instruments financiers433
Actualisation des estimations au cours temps438
13.4 : Apprentissage machine442
Apprentissage non supervisé443
Les données d'entrée443
Groupement par k-moyennes444
Mélange gaussien446
Apprentissage supervisé446
Données d'entrée447
Gaussien naïf bayésien448
Régression logistique450
Arbres de décision451
Réseaux neuronaux profonds453
Transformation de caractéristiques456
Machine à vecteurs de support et répartition entraînement-test459
Conclusion462
Autres ressources463
Partie IV. Trading algorithmique465
14. La plate-forme de trading FXCM467
14.1 : Mise en place468
14.2 : Récupération des données469
Récupération de données de tick469
Récupération des données de chandelles472
14.3 : Exploitation de l'interface API474
Récupération de donnés historiques474
Récupération de données flux en temps réel476
Émission d'ordres de trading477
Informations de compte479
Conclusion480
Autres ressources480
15. Stratégies de trading481
15.1 : Moyennes mobiles simples SMA482
Import des données482
Stratégie de trading483
Rétrotest vectorisé485
Optimisation487
15.2 : Hypothèse de marche aléatoire RWH489
15.3 : Régression linéaire OLS493
Préparation des données493
Régression496
15.4 : Partitionnement (clustering)498
15.5 : Approche fréquentielle500
15.6 : Classification503
Deux caractéristiques binaires503
Cinq caractéristiques binaires505
Cinq caractéristiques numérisées506
Séparation séquentielle entre entraînement et test508
Séparation aléatoire entre entraînement et test509
15.7 : Réseaux neuronaux profonds (DNN)510
DNN avec scikit-learn511
DNN avec TensorFlow514
Conclusion518
Autres ressources519
16. Trading automatisé521
16.1 : Gestion de capital522
Le critère de Kelly dans une configuration binomiale522
Le critère de Kelly pour les actions et les indices527
16.2 : Stratégie de trading à base d'apprentissage machine ML532
Rétrotest vectorisé (backtesting)533
Effet de levier optimal538
Analyse de risque540
Sauvegarde de l'objet modèle pour qu'il soit persistant543
16.3 : Algorithme en ligne544
16.4 : Considération d'infrastructure et de déploiement546
16.5 : Journalisation et surveillance547
Conclusion550
Scripts Python550
Stratégie de trading automatisée550
Monitorat ou surveillance de la stratégie553
Autres ressources553
Partie V. Analytique de produits dérivés555
17. Infrastructure d'évaluation559
17.1 : Théorème fondamental d'évaluation des actifs560
Un exemple simplifié560
Les résultats généraux561
17.2 : Actualisation risque neutre563
Modélisation et traitement des dates563
Taux court constant565
17.3 : Environnement de marché567
Conclusion570
Autres ressources571
18. Simulation de modèles financiers573
18.1 : Génération de valeurs aléatoires574
18.2 : Classe de simulation générique576
18.3 : Mouvement brownien géométrique580
La classe de simulation du modèle GBM580
Cas d'usage du modèle GBM582
18.4 : Diffusion par sauts585
La classe de simulation585
Cas d'usage du modèle de Merton588
18.5 : Diffusion à racines carrées CIR589
La classe square_root_diffusion590
Cas d'usage du modèle CIR592
Conclusion593
Autres ressources595
19. Évaluation de produits dérivés597
19.1 : La classe dévaluation générique598
19.2 : Options européennes602
La classe dévaluation européenne602
Cas d'usage pour option européenne604
19.3 : Options américaines610
Monte Carlo à moindres carrés610
La classe d'évaluation américaine612
Cas d'usage pour option américaine614
Conclusion616
Autres ressources618
20. Évaluation de portefeuille619
20.1 : Positions de produits dérivés620
La classe de position de dérivés620
Cas d'usage622
20.2 : Portefeuille de produits dérivés623
La classe de portefeuille624
Un cas d'usage628
Conclusion635
Autres ressources637
21. Évaluation basée marché639
21.1 : Obtention des données des options640
21.2 : Calibration du modèle643
Sélection des données de marché643
Modélisation des options644
Procédure de calibration647
21.3 : Évaluation du portefeuille652
Modélisation des positions d'options652
Le portefeuille d'options654
21.4 : Code source Python655
Conclusion657
Autres ressources657
22. Dates et heures659
Python659
NumPy et les dates665
pandas et données temporelles668
23. Classe d'options BSM673
Définition de la classe673
Exemple d'utilisation675
Index
679