.. _automationfinancetradingrst: ================================================ Les algorithmes, outils de décision automatique. ================================================ .. only:: html **Links:** :download:`notebook `, :downloadlink:`html `, :download:`PDF `, :download:`python `, :downloadlink:`slides `, :githublink:`GitHub|_doc/notebooks/2017/meshs/automation_finance_trading.ipynb|*` L’exemple du trading algorithmique. Introduction ------------ Plan ~~~~ .. code:: ipython3 from jyquickhelper import add_notebook_menu add_notebook_menu(last_level=2, menu_id="main") .. contents:: :local: A propos de moi ~~~~~~~~~~~~~~~ - Senior Data Scientist chez Microsoft - Professeur à l’ENSAE depuis 2000 - Professeur dans la voie data science depuis 2014 - Formation Data Science de l’Institut des Actuaires - `lesenfantscodaient.fr `__ - Passage en finance (hedge funds), travail sur des algorithmes de trading automatiques (2007) A qui s’adresse cette présentation ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - au plus grand nombre Raccourcis d’histoire financière et technique --------------------------------------------- - On débute en 1971. - L’informatique et les mathématiques. - Automatisation. Bretton Woods 1971 : le début de la technique ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Source : `Comment j’ai détesté les maths `__ - Arrêt de la politique du taux de change unique. - Volonté des sociétés multinationales de s’assurer contre le risque de change. - Début de la modélisation mathématique. Informatisation ~~~~~~~~~~~~~~~ - 1984 : dématérialisation des titres à la bourse française - 1986 : CAC (Compagnie de Agents de Changes) devient la *Cotation Assistée en Continu*. - 1988 : les ordres sont tous passés depuis des ordinateurs - 1997 : les ECN (Electronic Communication Network) sont conçus. Il s’agit de centres informatiques qui mettent en relation les professionnels et les brokers pour effectuer des transactions informatisées. - 1997-2002 : premiers algorithmes de trading - 2003 : début du trading haute fréquence - 2010 : `Flash Crash `__, probablement dû au trading haute fréquence La finance est numérisée ~~~~~~~~~~~~~~~~~~~~~~~~ - Un des premiers domaines économique entièrement numérisée. - Un des plus profitables. - Capable de recruter les meilleurs talents. Hedge Fund ~~~~~~~~~~ - `Renaissance Technologies `__ - `CFM `__ Ces sociétés emploient beaucoup de docteurs en mathématiques et physiques. Formation ~~~~~~~~~ - `Master Probabilités et Finance `__ surnommé le master El Karoui Et tout autour du monde et principalement dans les universités anglo-saxonnes : - `MS in Financial Engineering `__ Automatisation possible ~~~~~~~~~~~~~~~~~~~~~~~ Tout est prêt pour l’automatisation - Tout est numérique. - Les meilleurs ingénieurs. - Les meilleurs finances. - Le retour sur investissement est très rapide. Intérêt de l’automatisation ~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Traiter plus de données. - Traiter autant de données mais plus vite. Pour être meilleur que le concurrent. Problème à taille humaine ~~~~~~~~~~~~~~~~~~~~~~~~~ Combien avez-vous d’amis sur Facebook ? `La règle des 150 `__. Un cas concret -------------- - Un exemple d’algorithme de trading algorithmique : trend following. - Notion de back test - Trading haute fréquence ? - Machine learning - Pas un inventaire des stratégies existantes. Une série financière ~~~~~~~~~~~~~~~~~~~~ .. code:: ipython3 from pyensae.finance import StockPrices prices = StockPrices(tick="MSFT", url='yahoo_new') prices.dataframe.tail() .. raw:: html
Date Open High Low Close Adj Close Volume
Date
2018-05-14 2018-05-14 97.919998 98.690002 97.309998 98.029999 97.606934 19454100
2018-05-15 2018-05-15 97.239998 97.849998 96.339996 97.320000 96.900002 24594000
2018-05-16 2018-05-16 97.360001 97.400002 96.620003 97.150002 97.150002 17384700
2018-05-17 2018-05-17 96.760002 97.540001 95.830002 96.180000 96.180000 17246700
2018-05-18 2018-05-18 96.010002 96.930000 96.010002 96.360001 96.360001 17128900
.. code:: ipython3 %matplotlib inline .. code:: ipython3 prices.plot(figsize=(14,4)); .. image:: automation_finance_trading_19_0.png .. code:: ipython3 prices[-20:].plot(figsize=(14,4), field="ohlc"); .. image:: automation_finance_trading_20_0.png Stratégie : trend following ~~~~~~~~~~~~~~~~~~~~~~~~~~~ Le principe : `trend following `__. .. code:: ipython3 from pyquickhelper.helpgen import NbImage NbImage("images/trend.png", width=800) .. image:: automation_finance_trading_22_0.png :width: 800px La mise au point ~~~~~~~~~~~~~~~~ De nombreux paramètres : - La longueur de la `moyenne mobile `__. - La hauteur des `bandes de Bollinger `__. - La somme investie. - … Les stratégies ont souvent plus d’une dizaine de paramètres. Deux paramètres en rouge : longueur de la moyenne mobile et la hauteur des bandes de Bollinger .. code:: ipython3 NbImage("images/trendp.png", width=400) .. image:: automation_finance_trading_25_0.png :width: 400px Optimisation ~~~~~~~~~~~~ - Choisir les meilleurs paramètres - `Backtest `__ : simuler la performance de la stratégie sur le passé .. code:: ipython3 NbImage("images/backtest.png", width=400) .. image:: automation_finance_trading_27_0.png :width: 400px Comparaison de plusieurs jeux de paramètres (source `Backtesting a Simple Stock Trading Strategy `__) .. code:: ipython3 NbImage("images/backtest2.png", width=500) .. image:: automation_finance_trading_29_0.png :width: 500px Tests exhaustifs ~~~~~~~~~~~~~~~~ - Tester de nombreux jeux de paramètres - Tester sur un grand nombre de séries financières - Tester la résistance aux crises - Prise en compte de défaut de simulation : coût de transaction, slippage Portefeuille de stratégies ~~~~~~~~~~~~~~~~~~~~~~~~~~ - Implémenter une seule stratégie est risqué. - Construction de portefeuilles de stratégies (plus d’une centaine) Importance de l’informatique ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Puissance de calcul - Agilité - Passage en production - Résistance aux pannes - Utilisation de `stop-order `__ Trading daily, intraday ~~~~~~~~~~~~~~~~~~~~~~~ - Daily : calcul des décisions chaque jour - Intraday : calcul des décisions chaque minute - Haute Fréquence : calcul d’une décision en quelques millisecondes Plus la vitesse de trading est importante, plus l’informatique joue un grand rôle, plus le boulot est technique. - La course aux millisecondes : `Hibernia Network `__. Réflexions sur la finance ------------------------- - Machine learning, exploitation des news, signaux autres que financiers - Côté éthique - Parallèle avec le real-time-bidding Pourquoi le machine learning ? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - **Back test** : méthode issue du machine learning - **Boîte noire** : une façon d’utiliser l’information qu’on ne sait pas utiliser de manière évidente - **Traitement des news** : celle-ci ont une influence non négligeable sur les cours mais ce n’est pas une informatique numérique. - **Deep learning** : le deep learning fonctionne sur des images, du son, du texte, pourquoi pas sur des cours financiers. Ethique ~~~~~~~ - Trading haute fréquence : quelques millisecondes d’avance sur les concurrents - plus de 50% des échanges issus du trading haute fréquence - Une plus grande fluidité (possibilité d’acheter et de vendre à tout moment) - Quelle utilité économique ? - Recrutement des meilleurs talents Un parallèle avec Bitcoin ~~~~~~~~~~~~~~~~~~~~~~~~~ - Le principe de `Bitcoin `__ : miner - La course à la puissance Un parallèle avec le Real Time Bidding ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - `Real Time Bidding `__, plate-formes d’échanges, enchères - Publicité sur Internet - Un champion national : Criteo - Mécanisme des enchères - Différence avec la finance : utilisation des données Ingéniérisation de la finance ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Popularisation du trading automatique. - La finance n’est plus aussi attractive. - Des traders qui passent de la finance à la data science. Conclusion ---------- - Le rôle prépondérant de l’informatique - L’exécution n’est plus manuelle, trop rapide, en trop grand nombre - Le savoir est converti sous forme d’algorithmes. - La finance en dehors de la finance : `Chine: la finance de l’ombre atteint un record `__