Introduction au Deep Learning Trading dans les Hedge Funds
Publié: 2022-03-11Au cours des dernières années, les réseaux de neurones profonds sont devenus extrêmement populaires. Ce domaine émergent de l'informatique a été créé autour du concept de réseaux de neurones biologiques, et l'apprentissage en profondeur est devenu un mot à la mode aujourd'hui.
Les scientifiques et les ingénieurs en apprentissage profond tentent de décrire mathématiquement divers schémas des systèmes nerveux biologiques. Les systèmes d'apprentissage en profondeur ont été appliqués à divers problèmes : vision par ordinateur, reconnaissance vocale, traitement du langage naturel, traduction automatique, etc. Il est intéressant et excitant que dans certaines tâches, l'apprentissage en profondeur ait surpassé les experts humains. Aujourd'hui, nous allons nous pencher sur l'apprentissage en profondeur dans le secteur financier.
L'une des applications les plus attrayantes de l'apprentissage en profondeur concerne les fonds spéculatifs. Les hedge funds sont des fonds d'investissement, des organismes financiers qui lèvent des fonds auprès d'investisseurs et les gèrent. Ils travaillent généralement avec des données de séries chronologiques et essaient de faire des prédictions. Il existe un type spécial d'architecture d'apprentissage en profondeur qui convient à l'analyse des séries chronologiques : les réseaux de neurones récurrents (RNN), ou encore plus spécifiquement, un type spécial de réseau de neurones récurrent : les réseaux à mémoire longue à court terme (LSTM).
Les LSTM sont capables de capturer les caractéristiques les plus importantes à partir de données de séries chronologiques et de modéliser leurs dépendances. Un modèle de prévision du cours des actions est présenté comme une étude de cas illustrative sur la façon dont les fonds spéculatifs peuvent utiliser de tels systèmes. Le framework PyTorch, écrit en Python, est utilisé pour former le modèle, concevoir des expériences et dessiner les résultats.
Nous commencerons par quelques bases d'apprentissage en profondeur avant de passer à des exemples concrets :
- Présentez l'apprentissage en profondeur en tant que concept abstrait.
- Présentez les RNN - ou, plus précisément, les LSTM - et comment ils peuvent être utilisés pour modéliser des données de séries chronologiques.
- Familiarisez les lecteurs avec les données financières adaptées à l'apprentissage en profondeur.
- Illustrez comment un fonds spéculatif réel utilise l'apprentissage en profondeur pour prédire les cours des actions.
- Enfin, fournissez des recommandations concrètes aux fonds spéculatifs nouveaux et existants sur la manière d'utiliser/de tirer parti de l'apprentissage en profondeur pour augmenter leurs performances.
Présenter le cas du Deep Learning Trading
L'une des tâches les plus difficiles et les plus passionnantes du secteur financier consiste à prédire si les cours des actions augmenteront ou baisseront à l'avenir. Aujourd'hui, nous sommes conscients que les algorithmes d'apprentissage en profondeur sont très efficaces pour résoudre des tâches complexes, il vaut donc la peine d'essayer d'expérimenter des systèmes d'apprentissage en profondeur pour voir s'ils peuvent résoudre avec succès le problème de la prévision des prix futurs.
En tant que concept, le réseau de neurones artificiels existe depuis longtemps, mais le matériel n'était pas assez bon pour permettre des expériences rapides d'apprentissage en profondeur. Nvidia a contribué à révolutionner les réseaux d'apprentissage en profondeur il y a dix ans, en proposant des unités de traitement graphique (GPU) très rapides pour l'informatique à usage général dans les produits de la série Tesla. Au lieu d'ombrager les polygones dans les jeux et les applications de conception professionnelles, les GPU hautement parallélisés peuvent également calculer d'autres données et, dans de nombreux cas, ils sont largement supérieurs aux CPU.
Il existe très peu d'articles scientifiques sur l'utilisation du deep learning dans la finance, mais la demande d'experts en deep learning de la part des entreprises fintech est forte, car elles reconnaissent évidemment son potentiel. Cet article aidera à expliquer pourquoi l'apprentissage en profondeur dans la finance devient de plus en plus populaire en décrivant comment les données financières sont utilisées dans la construction de systèmes d'apprentissage en profondeur. Un type particulier de réseau neuronal récurrent, le réseau LSTM, sera également présenté. Nous décrirons comment une tâche liée à la finance peut être résolue à l'aide de réseaux de neurones récurrents.
Cet article présente également une étude de cas illustrative sur la façon dont les fonds spéculatifs peuvent utiliser de tels systèmes, présentée à travers des expériences. Nous examinerons également comment les systèmes d'apprentissage en profondeur peuvent être améliorés et comment les fonds spéculatifs peuvent recruter des talents pour construire ces systèmes, c'est-à-dire quel type de formation les talents en apprentissage en profondeur doivent-ils avoir.
Ce qui rend les fonds spéculatifs différents
Avant de passer à l'aspect technique du problème, nous devons expliquer ce qui rend les fonds spéculatifs uniques. Alors, qu'est-ce qu'un fonds spéculatif?
Un hedge fund est un fonds d'investissement, une organisation financière qui lève des fonds auprès d'investisseurs et les place dans des investissements à court et à long terme, ou dans différents produits financiers. Il s'agit généralement d'une société en commandite ou d'une société à responsabilité limitée. L'objectif d'un hedge fund est de maximiser les rendements. Un rendement est un gain ou une perte de la valeur nette des fonds spéculatifs sur une période donnée. Il est généralement admis que lorsque plus de risques sont pris, il existe un plus grand potentiel de rendements et de pertes plus élevés.
Afin d'obtenir de bons rendements, les fonds spéculatifs s'appuient sur divers types de stratégies d'investissement, essayant de gagner de l'argent en exploitant les inefficacités du marché. En raison de divers types de stratégies d'investissement qui ne sont pas autorisés dans les fonds d'investissement ordinaires, les fonds spéculatifs ne sont pas enregistrés en tant que fonds, c'est-à-dire qu'ils ne sont généralement pas supervisés par l'État comme les autres fonds. Ils n'ont pas besoin de publier leurs stratégies d'investissement et leurs résultats commerciaux, ce qui peut les rendre assez risqués. Certains fonds spéculatifs génèrent plus d'argent que la moyenne du marché, mais certains d'entre eux perdent de l'argent. Certains d'entre eux apportent des résultats permanents, tandis que certains des résultats des fonds spéculatifs sont variables.
En investissant dans des fonds spéculatifs, les investisseurs augmentent la valeur nette du fonds. Cependant, tout le monde ne peut pas investir dans des fonds spéculatifs. Les fonds spéculatifs sont destinés à un petit nombre d'investisseurs fortunés. Habituellement, ceux qui veulent participer à des fonds spéculatifs doivent être accrédités. Cela signifie qu'elles doivent avoir un statut particulier au regard des lois de régulation financière. Il y a une distinction d'un pays à l'autre concernant qui peut avoir ce statut spécial. Habituellement, la valeur nette d'un investisseur doit être très élevée - non seulement les particuliers, mais les banques et les grandes entreprises peuvent également opérer dans des fonds spéculatifs. Cette accréditation est conçue pour autoriser uniquement les personnes ayant des connaissances importantes en matière d'investissement à participer, protégeant ainsi les petits investisseurs inexpérimentés contre les risques.
Cet article examine le cadre réglementaire américain, car les États-Unis ont le marché financier le plus développé au monde. Ainsi, aux États-Unis d'Amérique, le terme « investisseur qualifié » est défini dans la règle 501 du règlement D de la Securities and Exchange Commission (SEC) des États-Unis.
Selon ce règlement, les investisseurs qualifiés peuvent être :
- Banques
- Sociétés privées de développement des affaires
- Organisations
- Administrateurs, membres de la haute direction et associés commandités des émetteurs des titres offerts ou vendus
- Personnes physiques dont la valeur nette individuelle, ou la valeur nette conjointe avec le conjoint de cette personne, dépasse 1 000 000 $
- Les personnes physiques qui ont eu un revenu individuel supérieur à 200 000 $ au cours de chacune des deux années les plus récentes ou un revenu conjoint avec le conjoint de cette personne supérieur à 300 000 $ au cours de chacune de ces années et qui s'attendent raisonnablement à atteindre le même niveau de revenu au cours de l'année en cours
- Fiducies dont l'actif total dépasse 5 000 000 $
- Entités dont tous les actionnaires sont des investisseurs qualifiés
Les gestionnaires de fonds spéculatifs gèrent le fonds spéculatif. Un gestionnaire de fonds spéculatifs doit trouver un moyen de créer un avantage concurrentiel pour réussir, c'est-à-dire créer un avantage sur ses rivaux et la capacité de générer une plus grande valeur. Cela peut être un choix de carrière très attrayant, car il peut être très rentable si une personne excelle dans la gestion du fonds.
D'un autre côté, si beaucoup de décisions des gestionnaires de fonds spéculatifs s'avèrent mauvaises, ils ne seront pas payés et auront une mauvaise réputation. Les meilleurs gestionnaires de fonds spéculatifs constituent l'une des professions les mieux rémunérées dans tous les secteurs. Les gestionnaires de fonds spéculatifs reçoivent un pourcentage des rendements qu'ils gagnent pour les investisseurs, en plus des frais de gestion. Ce mode de rémunération incite les gestionnaires de fonds spéculatifs à investir de manière plus agressive afin d'obtenir de meilleurs rendements, mais d'un autre côté, cela entraîne également une augmentation du risque de l'investisseur.
Une brève histoire des fonds spéculatifs
Le premier fonds spéculatif est apparu en 1949, créé par l'ancien écrivain et sociologue Alfred Winslow Jones. C'était alors qu'il écrivait un article sur les tendances d'investissement actuelles pour Fortune, en 1948.
Il a essayé de gérer l'argent et a très bien réussi. Il a levé des fonds en utilisant son innovation en matière d'investissement, qui est maintenant largement connue sous le nom de long/short equity. La stratégie est toujours très populaire parmi les hedge funds. Les actions peuvent être achetées (achat : long) ou vendues (vente : short).
Lorsque le prix d'une action est bas et qu'on s'attend à ce que le prix d'une action monte, il est logique d'acheter une action (long) et de la vendre (short) dès qu'elle atteint son pic de prix élevé, et que C'est exactement le but de l'innovation d'Alfred Winslow Jones : prendre des positions longues sur des actions qui devraient s'apprécier et des positions courtes sur des actions qui devraient baisser.
Données financières et ensembles de données
Les données financières appartiennent aux données de séries chronologiques. Une série chronologique est une série de points de données indexés dans le temps. Habituellement, une série chronologique est une séquence prise à des points successifs et également espacés dans le temps : une séquence de données à temps discret. Des exemples de séries chronologiques sont les hauteurs des marées océaniques, le nombre de taches solaires et la valeur de clôture quotidienne du Dow Jones Industrial Average.
Les données historiques dans ce contexte sont des données de séries chronologiques du passé. C'est l'une des parties les plus importantes et les plus précieuses pour spéculer sur les prix futurs. Il existe des ensembles de données accessibles au public en ligne, mais généralement, ces données ne contiennent pas beaucoup de fonctionnalités - il s'agit généralement de données d'intervalle d'un jour, de données d'intervalle d'une heure ou de données d'intervalle d'une minute.
Les ensembles de données avec des fonctionnalités plus riches et sur des intervalles de temps plus courts ne sont généralement pas accessibles au public et peuvent être très coûteux à obtenir. Des intervalles plus petits signifient plus de données de séries chronologiques sur une période fixe - dans une année, il y a 365 (ou 366) jours, il y a donc un maximum de 365 (ou 366) points de données disponibles. Chaque jour compte 24 heures, donc en un an, il y a 8 760 (ou 8 784) points de données horaires disponibles, et chaque jour compte 86 400 minutes, donc en un an, il y a 525 600 (ou 527 040) points de données minutes disponibles.
Avec plus de données, plus d'informations sont disponibles, et avec plus d'informations, il est possible de tirer de meilleures conclusions sur ce qui se passera au cours de la prochaine période, en supposant, bien sûr, que les données consistent en une fonctionnalité suffisamment bonne pour bien généraliser. Les données sur les cours des actions de 2007-2008, au plus fort de la crise financière mondiale, sont biaisées et probablement non pertinentes pour faire des prévisions de prix de nos jours. Avec un intervalle de temps plus petit, il est plus facile de prédire ce qui se passera ensuite en raison du grand nombre de points de données dans un intervalle fixe. Il est plus facile de prédire ce qui se passera dans la prochaine nanoseconde si nous avons tous les points de données pour chaque nanoseconde dans un intervalle fixe de n ans que ce qui se passera sur le marché boursier l'année prochaine si nous avons tous les n points de données pour chaque année dans un intervalle fixe de n ans.
Cependant, cela ne signifie pas que, en supposant qu'une série rapide de prédictions à court terme soit correcte, la prédiction à long terme devrait également être correcte. Chaque prédiction introduit une erreur et, en enchaînant plusieurs prédictions, la prédiction à long terme contiendra une quantité importante d'erreur à la fin et sera inutile. Vous trouverez ci-dessous un exemple de données d'intervalle d'un jour pour les partages Google extraits en ligne de Yahoo Finance.
Il n'y a que quelques colonnes dans l'ensemble de données : Date, Ouverture, Haut, Bas et Clôture - respectivement, le prix auquel un titre s'échange pour la première fois à l'ouverture d'une bourse, le prix le plus élevé atteint par le titre un jour de bourse donné , le prix le plus bas atteint un jour de bourse donné et le prix final auquel un titre est négocié ce jour-là.
Habituellement, il y a deux autres colonnes dans ces ensembles de données—Clôture ajustée et Volume, mais elles ne sont pas pertinentes ici. La clôture ajustée est le cours de clôture après les ajustements pour les fractionnements et les distributions de dividendes applicables, tandis que le volume est le nombre d'actions négociées sur le marché au cours d'une période donnée.
Vous pouvez voir que certaines dates manquent. Ce sont les jours où la bourse ne fonctionne pas, généralement pendant les week-ends et les jours fériés. Aux fins de notre démonstration d'algorithme d'apprentissage en profondeur, les jours manquants sont complétés par le prix précédemment disponible. Par exemple, les prix de clôture pour 2010-01-16, 2010-01-17, 2010-01-18 seront tous de 288,126007 car c'est ce qu'ils étaient le 2010-01-15. Il est important pour notre algorithme que les données soient sans lacunes afin de ne pas les confondre. L'algorithme d'apprentissage en profondeur pourrait apprendre à partir d'ici lorsque les week-ends et les jours fériés sont - par exemple, il apprendra qu'après cinq jours ouvrables, il doit y avoir deux jours avec des prix fixes à partir du dernier jour ouvrable.
Il s'agit d'un graphique des mouvements du cours de l'action Google depuis le 04/01/2010. Notez que seuls les jours de bourse sont utilisés pour tracer le graphique.
Qu'est-ce que l'apprentissage en profondeur ?
L'apprentissage en profondeur fait partie de l'apprentissage automatique et repose sur l'apprentissage de représentations de données. L'apprentissage automatique examine les algorithmes dont la fonctionnalité n'est pas programmée mais apprise à partir des données. Il s'agit essentiellement d'une approche de l'intelligence artificielle.
L'apprentissage en profondeur a été appliqué à divers domaines : vision par ordinateur, reconnaissance vocale, traitement du langage naturel, traduction automatique - et dans certaines de ces tâches, il a atteint des performances supérieures à celles des humains.
Un réseau de neurones profonds est au centre de l'apprentissage en profondeur. L'exemple le plus simple et le plus basique d'un réseau de neurones profond est un réseau de neurones à anticipation. Vous trouverez ci-dessous une image d'un simple réseau de neurones à anticipation. Il se compose des couches d'entrée et de sortie et des couches cachées.
Les couches masquées sont toutes les couches situées entre les couches d'entrée et de sortie. On dit qu'un réseau de neurones est profond s'il possède plusieurs couches cachées. Chaque couche est composée de différents nombres de neurones. Les couches de ce réseau neuronal prédictif de base sont appelées couches linéaires - les neurones de la couche linéaire ne multiplient que les valeurs des entrées 1-D (ou 2-D si les données sont envoyées via le réseau par lots) avec un poids approprié, additionnent les produits et donner le résultat final en tant que sortie 1-D ou 2-D.
La fonction d'activation est généralement appliquée dans les réseaux à anticipation pour introduire des non-linéarités afin que le réseau puisse modéliser des problèmes non linéaires plus complexes. Dans les réseaux à anticipation, les données circulent de la couche d'entrée à la couche de sortie sans rebouclage. Les connexions entre les neurones sont pondérées. Les pondérations doivent être ajustées afin que le réseau de neurones renvoie des sorties correctes pour les entrées données. Le réseau à anticipation mappe les données de l'espace d'entrée vers l'espace de sortie. Les couches masquées extraient des caractéristiques importantes et plus abstraites des caractéristiques de la couche précédente.
Le pipeline général d'apprentissage en profondeur est le même que le pipeline d'apprentissage automatique et se compose des étapes suivantes :
- Collecte de données. Les données sont séparées en trois parties : données de formation, données de validation et données de test.
- Formation du DNN à l'aide des données de formation sur un certain nombre d'"époques" (chacune consistant en un certain nombre d'itérations) et validation après chaque époque à l'aide des données de validation.
- Tester le modèle (une instance d'un réseau de neurones à paramètres fixes) après l'enchaînement des entraînements et des validations.
Entraîner le réseau de neurones revient en fait à ajuster les poids entre les paires de neurones en minimisant la fonction de perte à l'aide d'un algorithme de rétropropagation en combinaison avec la descente de gradient stochastique. À l'exception des poids qui sont déterminés par le processus d'apprentissage, les algorithmes d'apprentissage en profondeur nécessitent généralement de définir les hyperparamètres, des paramètres qui ne sont pas appris mais fixés avant l'apprentissage. Les hyperparamètres sont le nombre de couches, le nombre de neurones dans les couches, les types de couches, les types de neurones et l'initialisation du poids.
Il existe des restrictions matérielles dans la configuration des hyperparamètres ; actuellement, il n'est physiquement pas possible de définir un billion de neurones sur un seul GPU. Le deuxième problème de la recherche exhaustive d'hyperparamètres est l'explosion combinatoire ; il n'est pas possible de rechercher dans toutes les combinaisons possibles d'hyperparamètres car cela prendrait un temps infini. Pour cette raison, les hyperparamètres sont définis de manière aléatoire ou à l'aide d'heuristiques et d'exemples bien connus décrits dans des articles scientifiques. L'un des hyperparamètres utilisés pour l'analyse des données financières présenté plus loin dans cet article de blog est l'utilisation de neurones récurrents, en tant que scientifiques et ingénieurs. ont prouvé qu'ils fonctionnent bien avec les données de séries chronologiques. Habituellement, la meilleure façon de voir si les hyperparamètres d'un problème donné sont bons ou non consiste à effectuer des expériences.

Le but de la formation est de faire en sorte que les réseaux de neurones correspondent aux données de formation. La validation du modèle, qui est effectuée après chaque étape de formation, et le test du modèle, qui est effectué après toute la procédure de formation, sont effectués pour voir si le modèle peut bien se généraliser. La généralisation signifie que le réseau de neurones peut faire de bonnes prédictions sur de nouvelles données inédites.
Il existe deux termes importants liés à la sélection du modèle : surajustement et sous- ajustement . Si un réseau de neurones est trop complexe en ce qui concerne les données sur lesquelles il est formé - s'il a trop de paramètres (trop de couches et/ou trop de neurones dans les couches) - le réseau de neurones peut suradapter les données. Il peut bien s'adapter aux données de formation car il a une capacité plus que suffisante pour s'adapter à toutes les données, mais les performances sur les ensembles de validation et de test sont médiocres.
Si le réseau de neurones est trop simple en ce qui concerne les données sur lesquelles il est formé, le réseau de neurones peut sous-adapter les données. Dans ce cas, le réseau de neurones a de mauvaises performances sur les ensembles de formation, de validation et de test car sa capacité n'est pas assez bonne pour s'adapter aux données de formation et pour généraliser. Sur l'image ci-dessous, ces termes sont expliqués graphiquement. La ligne bleue représente ce qui est modélisé par le réseau neuronal. La première image montre la situation où il y a peu de paramètres de réseau de neurones, pas assez pour s'adapter aux données d'apprentissage et pour généraliser. La deuxième image montre la situation où il y a le nombre optimal de paramètres et le réseau de neurones peut bien généraliser sur des données invisibles, et la troisième image montre la situation où le nombre de paramètres d'un réseau de neurones est trop grand et le réseau de neurones peut parfaitement correspond à toutes les données de l'ensemble d'apprentissage, mais ses performances sont médiocres sur les ensembles de validation et de test.
Réseaux de neurones récurrents
Une version plus compliquée d'un réseau neuronal est un réseau neuronal récurrent. Dans les réseaux de neurones récurrents, les données peuvent circuler dans n'importe quelle direction, contrairement aux réseaux de neurones à anticipation. Ils peuvent bien apprendre les dépendances des séries chronologiques. L'architecture d'un réseau neuronal récurrent général est illustrée dans l'image ci-dessous.
Sur l'image ci-dessous est représenté un neurone récurrent. Il prend X_{t} , point dans le temps t , comme entrée et renvoie h_{t} , état caché dans le temps t , comme sortie. La sortie cachée est propagée vers le neurone. Le neurone récurrent peut être déroulé comme il est montré sur la même image du côté droit. X_{t_0} est un point dans la période t_{0} , X_{t_1} dans la période t_{1} et X_{t} dans la période t . Les sorties obtenues à l'aide des entrées X_{t_0} , X_{t_1} , …, X_{t_n} dans les périodes de temps t_{0} , t_{1} , …, t_{n} sont des sorties dites cachées : h_{t_0} , h_{t_1} , …, h_{t_n} , respectivement.
L'une des meilleures architectures de réseaux de neurones récurrents est l'architecture LSTM. LSTM est illustré ci-dessous :
Les LSTM ont la même structure générale que les réseaux de neurones récurrents généraux, mais le neurone récurrent est un peu différent avec une structure plus complexe. On peut voir sur l'image ci-dessus que beaucoup de calculs sont effectués à l'intérieur d'une cellule LSTM. Les cellules LSTM peuvent être observées comme une boîte noire dans le contexte de cet article, mais pour les lecteurs plus curieux, cet excellent article de blog explique les calculs à l'intérieur des LSTM et bien plus encore.
Appelons l'entrée du réseau de neurones un "vecteur de caractéristiques". C'est un vecteur à n dimensions dont les éléments sont des caractéristiques : f_{0} , f_{1} , f_{2} …, f_{n} .
\vv{X} = [f_{0}, f_{1}, f_{2}, …, f_{n}] Maintenant, expliquons comment les réseaux de neurones récurrents peuvent être appliqués à une tâche liée à la finance. L'entrée pour le réseau neuronal récurrent est [X_{t_0}, X_{t_1}, X_{t_2}, …, X_{t_n}] . Disons que n = 5 . Nous prenons cinq cours de l'action Google Close sur cinq jours consécutifs (voir le tableau avec les données Open/High/Low/Close ci-dessus) entre, disons, le 04/01/2010 et le 08/01/2010, c'est-à-dire [[311.35], [309.98], [302.16], [295.13], [299.06]] . Le vecteur caractéristique dans cet exemple est unidimensionnel. La séquence temporelle se compose de cinq de ces vecteurs caractéristiques. Les sorties du réseau neuronal récurrent sont des caractéristiques cachées [h_{t_0}, h_{t_1}, h_{t_2}, …, h_{t_n}] . Ces caractéristiques sont à un niveau plus abstrait que les caractéristiques d'entrée [X_{t_0}, X_{t_1}, X_{t_2}, …, X_{t_n}] —LSTM devrait apprendre les parties importantes des caractéristiques d'entrée et les projeter sur l'espace des fonctions cachées. Ces caractéristiques cachées et abstraites peuvent être propagées dans la cellule LSTM suivante, ce qui donnera le prochain ensemble de caractéristiques cachées et plus abstraites qui pourront ensuite être propagées à nouveau au LSTM suivant, et ainsi de suite. Après la séquence de LSTM enchaînés, le dernier composant du réseau de neurones est la couche linéaire (la partie de construction du réseau d'anticipation simple expliquée dans la section précédente) qui mappe les caractéristiques cachées du dernier LSTM au point dans un espace dimensionnel, et ce point est la sortie finale du réseau, le prix de clôture prévu dans la période X_{t+1} . La vérité terrain dans cet exemple pour X_{t+1} est 298.61 .
Remarque : Il peut également y avoir aussi peu qu'un seul LSTM - la définition du nombre de LSTM est un hyperparamètre, qui est généralement trouvé de manière empirique, bien que nous puissions utiliser certaines heuristiques. Si les données ne sont pas si complexes, nous utilisons une architecture moins complexe afin que le modèle ne surajuste pas les données. Si les données sont complexes, nous utilisons un modèle complexe afin que le modèle ne sous-ajuste pas les données.
Dans la phase de formation, les prix de fermeture prédits sont comparés aux prix de vérité terrain, et la différence entre les prix de fermeture prédits et les prix de vérité terrain est minimisée à l'aide d'un algorithme de rétropropagation et d'un algorithme d'optimisation de descente de gradient (ou l'une de ses formes - concrètement, dans ce cas). blog, la version dite "Adam" d'un algorithme d'optimisation de descente de gradient est utilisée) en modifiant les poids du réseau de neurones.
Après la formation et les tests, à l'avenir, l'utilisateur n'aura plus qu'à fournir des données d'entrée au réseau de neurones et celui-ci renverra le prix prédit (et, espérons-le, un prix très proche du prix de vérité terrain du futur).
Une autre chose à mentionner ici est que, généralement, des lots de données sont envoyés via le réseau, à la fois dans les phases de formation et de test, pour que le réseau calcule plusieurs sorties en une seule passe.
Ci-dessous, une image d'une architecture utilisée dans ce blog pour des expériences. Il se compose de deux LSTM empilés et d'une couche linéaire.
Expériences avec des algorithmes de fonds spéculatifs
Essayez d'utiliser des stratégies de trading algorithmique aussi simples, comme suit : si l'algorithme prédit que le prix augmentera le jour suivant, alors achetez n ( n = 1 dans cet exemple) actions d'une société (long), sinon vendez toutes les actions d'une compagnie (court). La valeur initiale du portefeuille (la valeur des liquidités et des actions combinées) est fixée à 100 000 $. Chaque action longue ou courte achètera n actions d'une société (Google, dans cet exemple) ou vendra toutes les actions d'une société, respectivement. Au départ, le système possède 0 actions d'une entreprise donnée.
Rappelez-vous toujours qu'il s'agit d'un exemple très basique et simple, non destiné à être utilisé dans le monde réel, car beaucoup plus de travail de R&D serait nécessaire pour ajuster le modèle afin qu'il fonctionne bien dans la pratique. Certaines choses sont négligées ici et doivent être prises en compte dans un scénario réel ; par exemple, les frais de transaction ne sont pas intégrés au modèle. On suppose que le système peut négocier exactement à la même heure chaque jour, et on suppose que chaque jour, même un week-end ou un jour férié, est un jour de négociation.
Pour les tests, une méthode de backtesting est utilisée. La méthode de backtesting utilise des données historiques pour reconstruire les transactions qui auraient eu lieu dans le passé en utilisant les règles définies avec la stratégie développée. L'ensemble de données est divisé en deux parties : la première partie est l'ensemble d'apprentissage (passé) et la deuxième partie est l'ensemble de test (futur). Le modèle est entraîné sur un ensemble d'entraînement et, après l'entraînement, nous simulons le futur sur la deuxième partie de l'ensemble de données pour voir comment le modèle entraîné se serait comporté à l'avenir sans avoir été entraîné dessus.
La métrique pour évaluer la stratégie de trading est le ratio de Sharpe (sa version annualisée, en supposant que tous les jours d'une année sont des jours de trading, et que l'année compte 365 jours : sqrt(365)*mean(returns)/std(returns)) , où le rendement est défini comme p_{t}/p_{t-1} - 1 , et p_{t} est le prix sur la période t . Le ratio de Sharpe montre le rapport entre les rendements et le risque supplémentaire encouru, il est donc bon d'avoir un ratio de Sharpe plus grand. Ordinairement, un ratio supérieur à 1 est acceptable par les investisseurs, 2 est très bon et 3 est excellent.
Seul le prix de clôture quotidien, des prix historiques de Google à partir de l'ensemble de données Yahoo Finance, est utilisé comme caractéristique. Plus de fonctionnalités seront utiles, mais il n'entre pas dans le cadre de ce blog de tester quelles autres fonctionnalités de l'ensemble de données (Open, High, Low) sont importantes. Certaines autres fonctionnalités non incluses dans le tableau pourraient également être utiles, par exemple, le sentiment des nouvelles à une minute particulière ou des événements importants un jour particulier. Cependant, il est parfois très difficile de créer des représentations de données utiles pour l'entrée de réseaux de neurones et de les combiner avec des fonctionnalités existantes. Par exemple, il est facile d'étendre le vecteur de caractéristiques et de mettre un nombre qui représente le sentiment d'actualité ou le sentiment de tweet de Trump ( -1 très négatif, 0 neutre, +1 très positif, etc.) pour chaque période donnée, mais ce n'est pas le cas. si facile de mettre des moments événementiels particuliers (pirates dans le canal de Suez, bombe dans une raffinerie au Texas) dans le vecteur de caractéristiques car, pour chaque moment spécifique, nous aurons besoin d'avoir un élément supplémentaire dans le vecteur de caractéristiques pour mettre 1 si l'événement s'est produit ou 0 sinon, ce qui conduira à un nombre infini d'éléments pour tous les moments possibles.
Pour ces données plus difficiles, nous pourrions définir des catégories et, pour chaque instant, déterminer à quelle catégorie elle appartient. Nous pourrions également ajouter des fonctionnalités à partir des actions d'autres sociétés pour qu'un système apprenne la corrélation entre les cours des actions de différentes sociétés. De plus, il existe un type de réseau de neurones spécialisé pour la vision par ordinateur - les réseaux de neurones convolutifs - qu'il serait intéressant de combiner avec des couches récurrentes et de voir comment les caractéristiques visuelles sont en corrélation avec les prix de certaines entreprises. Peut-être pourrions-nous utiliser le flux de la caméra d'une gare bondée comme fonctionnalité et attacher ce flux à un réseau de neurones et voir si ce que le réseau de neurones voit est corrélé avec les cours des actions de certaines entreprises - il pourrait y avoir des connaissances cachées même dans ce exemple banal et absurde.
Vous trouverez ci-dessous un graphique qui montre comment la perte d'entraînement moyenne diminue avec le temps, ce qui signifie que le réseau de neurones a une capacité suffisante pour s'adapter aux données d'entraînement. Il est important de dire que les données doivent être normalisées pour que l'algorithme d'apprentissage en profondeur puisse converger.
Vous trouverez ci-dessous un graphique qui montre comment la perte de test moyenne diminue avec le temps, ce qui signifie que le réseau de neurones a la capacité de généraliser sur des données invisibles.
L'algorithme est gourmand ; s'il prédit que le prix augmentera le lendemain, alors l'algorithme achète immédiatement n=1 action d'une entreprise (si suffisamment de liquidités sont dans le portefeuille), et sinon, il vend toutes les actions de l'entreprise (si elle en a ). La période d'investissement est fixe et dure 300 jours. Après 300 jours, toutes les actions sont vendues. La simulation sur des données invisibles, après un certain entraînement, peut être vue ci-dessous. Il est montré comment la valeur du portefeuille augmente au fil du temps par des actions longues/courtes (ou ne rien faire) chaque jour.
Le ratio de Sharpe pour la simulation ci-dessus est de 1,48. La valeur finale du portefeuille après 300 jours est de 100 263,79 $. Si nous achetions des actions le premier jour et les vendions après 300 jours, le portefeuille vaudrait 99 988,41 $.
Ci-dessous, une situation où le réseau de neurones n'est pas bien formé et perd de l'argent après une période fixe de 300 jours.
Le ratio de Sharpe est de -0,94. La valeur finale du portefeuille après 300 jours est de 99 868,36 $.
Voici un exemple intéressant : l'algorithme ci-dessus est gourmand et prédit simplement le prix du lendemain, prenant des mesures basées sur cette seule prédiction. Il est possible d'enchaîner plusieurs prédictions et de prédire le prix dans les prochaines étapes à venir. Par exemple, avec une première entrée de [X_ground_truth_{t0}, X_ground_truth_{t1}, X_ground_truth_{t2}, X_ground_truth_{t3}, X_ground_truth_{t4}] et la première sortie étant [X_predicted_{t5}] , nous pouvons alimenter le réseau neuronal avec cette prédiction de sorte que l'entrée suivante soit [X_ground_truth_{t1}, X_ground_truth_{t2}, X_ground_truth_{t3}, X_ground_truth_{t4}, X_predicted_{t5}] et la sortie soit [X_predicted_{t6}] . La prochaine entrée à partir de là est [X_ground_truth_{t2}, X_ground_truth_{t3}, X_ground_truth_{t4}, X_predicted_{t5}, X_predicted_{t6}] qui se traduit par [X_predicted_{t7}] , et ainsi de suite. Le problème ici est que nous introduisons une erreur de prédiction qui augmente à chaque nouvelle étape et se retrouve finalement avec un très mauvais résultat à long terme, comme le montre l'image ci-dessous. La prédiction au début suit la tendance décroissante de la vérité terrain, puis stagne et s'aggrave au fil du temps.
Une analyse d'apprentissage en profondeur très simple a été effectuée sur les cours des actions de Google, mais elle peut intégrer presque n'importe quel ensemble de données financières, à condition que la quantité de données soit suffisamment importante et de bonne qualité. Les données doivent être discriminantes et doivent bien décrire et représenter le problème.
Emballer
S'il fonctionnait et se généralisait bien sur des tests approfondis, ce système pourrait permettre aux gestionnaires de fonds spéculatifs de spéculer sur les cours futurs des actions d'une entreprise en utilisant le deep learning et en s'appuyant sur des stratégies de trading algorithmique.
Les gestionnaires de fonds spéculatifs pourraient donner au système une somme d'argent pour négocier automatiquement chaque jour. Cependant, il serait très mauvais de laisser les algorithmes de trading automatisés négocier sans aucune supervision. Le gestionnaire de fonds spéculatifs doit avoir des compétences d'apprentissage approfondies ou employer une personne possédant les compétences nécessaires pour superviser le système et déterminer quand le système a perdu la capacité de généraliser et de bien négocier.
If the system lost the ability to generalize, then it would be necessary to retrain it from the beginning and test it again (maybe by introducing more discriminative features or new knowledge—using new data from the past that didn't exist when the model was first trained).
Sometimes, the data is simply not good enough for the deep learning system to be trained and generalize well and, in that case, an experienced deep learning engineer should be able to detect and rectify such a situation. To build a deep learning trading system, you need hedge funds data scientists, machine learning/deep learning experts (both scientists and engineers), R&D engineers familiar with machine learning/deep learning, etc. No matter which part of an application of machine learning they are familiar with, whether it's computer vision or speech recognition, seasoned professionals will be able to put their experience to good use in the financial sector. At its root, deep learning has the same basics regardless of application or industry, and it should be easy for someone experienced to switch from theme to theme.
The system we presented is very basic and, to be applied in the real world, more R&D should be done in order to increase the returns. Possible improvements of the system could be in developing better trading strategies. Collecting more data for training, which is usually very expensive, will help. A smaller time interval between the points is better. Improvements can also surface in using more features (eg, news sentiments or important happenings corresponding to each point in the dataset, despite being hard to code for a neural network) and extensive grid search for hyperparameters and RNN architecture discovery.
Also, more computing power (powerful GPUs are a must) is needed to make a lot of extensive experiments in parallel and to process a large amount of data, provided that a large amount of data is collected.
Les références:
- https://www.datacamp.com/community/tutorials/finance-python-trading
- http://colah.github.io/posts/2015-08-Understanding-LSTMs/
- https://en.wikipedia.org
- https://www.investopedia.com/
- https://finance.yahoo.com/
- http://pytorch.org/
Author's Note: I would like to thank Ivan Capalija and Matej Paradzik for the constructive conversations and advice about deep learning in finance, which helped me in writing this blog.
