Au 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 modèles 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 passionnant que dans certaines tâches, l'apprentissage profond 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 profond se trouve dans les hedge funds. Les hedge funds sont des fonds d'investissement, des organisations financières qui lèvent des fonds auprès des 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 de séries chronologiques: réseaux de neurones récurrents (RNN) , ou même plus spécifiquement, un type spécial de réseau neuronal récurrent: réseaux de mémoire à long terme (LSTM) .
Les LSTM sont capables de capturer les caractéristiques les plus importantes des 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 hedge funds peuvent utiliser ces systèmes. Le framework PyTorch, écrit en Python, est utilisé pour entraîner le modèle, concevoir des expériences et dessiner les résultats.
Nous commencerons par quelques notions de base sur l'apprentissage en profondeur avant de passer à des exemples concrets:
L'une des tâches les plus difficiles et passionnantes du secteur financier consiste à prédire si les cours des actions augmenteront ou baisseront A l'avenir. Aujourd'hui, nous sommes conscients que les algorithmes d'apprentissage en profondeur sont très bons 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 performant pour permettre des expériences rapides d'apprentissage en profondeur. Nvidia a contribué à révolutionner les réseaux d'apprentissage profond il y a dix ans, en proposant des unités de traitement graphique (GPU) très rapides pour l'informatique générale en Produits de la série Tesla . Au lieu d'ombrer des 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 processeurs.
à quoi sert le nœud js
Il y a très quelques articles scientifiques sur l'utilisation de l'apprentissage en profondeur dans la finance, mais la demande d'experts en apprentissage profond de la part des entreprises de technologie financière est forte, car elles reconnaissent évidemment son potentiel. Cet article aidera à expliquer pourquoi l'apprentissage profond en finance est de plus en plus populaire en expliquant comment les données financières sont utilisées dans la construction de systèmes d'apprentissage profond. Un type spécial de réseau neuronal récurrent - le Réseau LSTM - sera également présenté. Nous expliquerons 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 hedge funds 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 d'expérience les talents d'apprentissage en profondeur doivent avoir.
Avant de passer à l'aspect technique du problème, nous devons expliquer ce qui rend les hedge funds uniques. Alors, qu'est-ce qu'un hedge fund?
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 est généralement constitué en société en commandite ou en 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 hedge funds sur une période donnée. Il est généralement admis que lorsque plus de risque est pris, il y a un plus grand potentiel de rendements et de pertes plus élevés.
Afin d'obtenir de bons rendements, les hedge funds s'appuient sur différents 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ées dans les fonds d'investissement ordinaires, les hedge funds 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 très risqués. Certains hedge funds génèrent plus d'argent que la moyenne du marché, mais certains perdent de l'argent. Certains d’entre eux apportent des résultats permanents, tandis que certains des résultats des hedge funds sont variables.
En investissant dans des hedge funds, les investisseurs augmentent la valeur nette du fonds. Cependant, tout le monde ne peut pas investir dans des hedge funds. Les hedge funds sont destinés à un petit nombre d'investisseurs fortunés. En général, ceux qui souhaitent participer à des hedge funds doivent être accrédités. Cela signifie qu'ils doivent avoir un statut spécial en ce qui concerne les lois de réglementation financière. Il y a une distinction d'un pays à l'autre en ce qui concerne qui peut avoir ce statut spécial. En règle générale, 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 permettre uniquement aux personnes ayant des connaissances importantes en matière de placement de participer, protégeant ainsi les petits investisseurs inexpérimentés du risque.
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 agréé» est défini dans Règle 501 du règlement D de la US Securities and Exchange Commission (SEC) .
Selon ce règlement, les investisseurs accrédités peuvent être:
Les gestionnaires de hedge funds gèrent le hedge fund. Un gestionnaire de hedge funds doit trouver un moyen de créer un avantage concurrentiel pour réussir, c'est-à-dire créer un avantage sur ses concurrents 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 un individu excelle dans la gestion du fonds.
D'un autre côté, si de nombreuses décisions des gérants de hedge funds s'avèrent mauvaises, ils ne seront pas payés et gagneront 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 obtiennent un pourcentage des rendements qu'ils gagnent pour les investisseurs, en plus des frais de gestion. Ce mode de rémunération incite les gérants de hedge funds à investir de manière plus agressive afin d'obtenir de meilleurs rendements, mais d'un autre côté, cela conduit également à une augmentation du risque pour les investisseurs.
Le premier hedge fund 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 actuelles en matière d'investissement pour Fortune, en 1948.
Il a essayé de gérer l'argent et a eu beaucoup de succès. Il a levé des fonds en utilisant son innovation d'investissement, qui est maintenant largement connue sous le nom d'actions longues / courtes. La stratégie est toujours très appréciée des hedge funds. Les actions peuvent être achetées (acheter: long) ou vendues (vendre: vendre).
Lorsque le prix d'une action est bas et que l'on s'attend à ce que le prix d'une action augmente, il est logique d'acheter une action (longue) et de la vendre (courte) dès qu'elle atteint son pic de prix élevé, et que C'est exactement le but de l'innovation qu'Alfred Winslow Jones a faite: prendre des positions longues sur des actions qui devraient s'apprécier et des positions courtes sur des actions qui devraient baisser.
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 en temps discret. Des exemples de séries chronologiques sont les hauteurs des marées océaniques, le dénombrement des 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 pièces 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 - en un an, 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, 8 760 (ou 8 784) points de données horaires sont disponibles, et chaque jour compte 86 400 minutes, donc en un an, 525 600 (ou 527 040) points de données minutes sont 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 dans 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 boursières de 2007-2008, au plus fort de la crise financière mondiale, sont biaisées et probablement pas pertinentes pour faire des prévisions de prix ces jours-ci. Avec un intervalle de temps plus petit, il est plus facile de prédire ce qui va se passer 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 n
-year que ce qui se passera en bourse l'année prochaine si nous avons tout n
points de données pour chaque année dans un intervalle fixe n
-year.
Cependant, cela ne signifie pas que, en supposant qu’une série rapide de prévisions à court terme soit correcte, la prévision à 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é significative d'erreur à la fin et sera inutile. Vous trouverez ci-dessous un exemple de données d'intervalle d'un jour pour les actions Google extraites en ligne de Yahoo Finance.
Il n'y a que quelques colonnes dans l'ensemble de données: Date, Open, High, Low et Close - respectivement, le prix auquel un titre se négocie pour la première fois à l'ouverture d'une bourse, le prix le plus élevé atteint par le titre un jour de négociation donné , le prix le plus bas atteint un jour de négociation 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: la fermeture ajustée et le volume, mais elles ne sont pas pertinentes ici. La clôture ajustée est le cours de clôture après 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é pendant une période donnée.
Vous pouvez voir que certaines des dates sont manquantes. Ce sont les jours où la bourse ne fonctionne pas, généralement pendant les week-ends et les jours fériés. Dans le cadre 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 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 tirer des leçons d'ici quand 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.
Ceci est un graphique des mouvements du cours de l'action Google depuis le 04/01/2010. Notez que seuls les jours de négociation sont utilisés pour tracer le graphique.
L'apprentissage en profondeur fait partie de l'apprentissage automatique et est basé sur l'apprentissage des 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. C'est essentiellement une approche de l'intelligence artificielle.
L'apprentissage profond 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 neuronal profond est au centre de l'apprentissage profond. L'exemple le plus simple et le plus élémentaire d'un réseau neuronal profond est un réseau neuronal à réaction directe. Ci-dessous, une image d'un simple réseau de neurones à feedforward. Il se compose des couches d'entrée et de sortie et des couches cachées.
Les calques masqués sont tous des calques entre les calques d'entrée et de sortie. Nous disons qu'un réseau de neurones est profond s'il a plus d'une couche cachée. Chaque couche est composée de différents nombres de neurones. Les couches de ce réseau de neurones à action directe de base sont appelées couches linéaires - les neurones de la couche linéaire ne multiplient que les valeurs d'entrées 1-D (ou 2-D si les données sont envoyées via le réseau par lots) avec un poids approprié, additionnez les produits et donne le résultat final comme sortie 1-D ou 2-D.
La fonction d'activation est généralement appliquée dans les réseaux à action directe 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 vers la couche de sortie sans rebouclage. Les connexions entre les neurones sont pondérées. Les poids doivent être ajustés afin que le réseau neuronal renvoie des sorties correctes pour les entrées données. Le réseau par anticipation mappe les données de l'espace d'entrée vers l'espace de sortie. Les couches cachées extraient des caractéristiques importantes et plus abstraites des caractéristiques de la couche précédente.
Le pipeline d'apprentissage en profondeur général est le même que le pipeline d'apprentissage automatique et comprend les étapes suivantes:
Entraîner le réseau de neurones signifie 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 pondérations déterminées au cours du 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 pas physiquement possible de placer un billion de neurones sur un seul GPU. Le deuxième problème pour 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 au hasard ou en utilisant des heuristiques et des exemples bien connus qui sont 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 ce billet 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 pour un problème donné sont bons ou non est de faire des expériences.
Le but de l'entraînement est d'adapter les réseaux de neurones aux données d'entraînement. 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 neuronal peut faire de bonnes prédictions sur de nouvelles données invisibles.
Il existe deux termes importants liés à la sélection du modèle: surapprentissage et sous-ajustement . Si un réseau de neurones est trop complexe en ce qui concerne les données sur lesquelles il est entraîné - 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 contenir toutes les données, mais les performances sur la validation et les ensembles de tests sont médiocres.
Si le réseau neuronal est trop simple en ce qui concerne les données sur lesquelles il est formé, le réseau neuronal peut sous-adapter les données. Dans ce cas, le réseau neuronal a des performances médiocres sur les ensembles d'entraînement, de validation et de test, car sa capacité n'est pas assez bonne pour s'adapter aux données d'apprentissage et 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 neuronal, pas assez pour s'adapter aux données d'apprentissage et généraliser. La deuxième image montre la situation où il y a le nombre optimal de paramètres et le réseau neuronal peut bien se 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 neuronal est trop grand et le réseau neuronal peut parfaitement adapter toutes les données de l'ensemble d'apprentissage, mais ses performances sont médiocres sur les ensembles de validation et de test.
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, par opposition aux réseaux de neurones à réaction. 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 montré 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 le point dans la période de temps t_{0}
, X_{t_1}
dans la période de temps t_{1}
, et X_{t}
dans la période de temps t
. Sorties obtenues avec les entrées X_{t_0}
, X_{t_1}
,…, X_{t_n}
par périodes 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 dans 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, ce grand article de blog explique les calculs à l'intérieur des LSTM et bien plus encore.
Appelons l'entrée du réseau neuronal un «vecteur de caractéristiques». C'est un vecteur n
-dimensionnel dont les éléments sont des entités: 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 de cinq jours consécutifs (voir le tableau avec les données Open / High / Low / Close ci-dessus) entre, disons, 2010-01-04 et 2010-01-08, c'est-à-dire [[311.35], [309.98], [302.16], [295.13], [299.06]]
. Le vecteur de caractéristiques dans cet exemple est unidimensionnel. La séquence temporelle se compose de cinq de ces vecteurs de caractéristiques. Les sorties du réseau neuronal récurrent sont des fonctionnalités cachées [h_{t_0}, h_{t_1}, h_{t_2}, …, h_{t_n}]
. Ces fonctionnalités sont à un niveau plus abstrait que les entités en entrée [X_{t_0}, X_{t_1}, X_{t_2}, …, X_{t_n}]
—LSTM devrait apprendre les parties importantes des entités en entrée et les projeter dans l'espace des entités 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, plus abstraites, qui peuvent ensuite être propagées à nouveau au LSTM suivant, et ainsi de suite. Après la séquence de LSTM chaînés, le dernier composant du réseau de neurones est la couche linéaire (la partie de construction du réseau à feedforward simple expliqué dans la section précédente) qui mappe les entités cachées du dernier LSTM au point dans l'espace unidimensionnel, et ce point est la sortie finale du réseau, le prix de clôture prévu pour 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 en avoir aussi peu qu'un seul LSTM - la définition du nombre de LSTM est un hyperparamètre, qui se trouve généralement 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 suradapte pas les données. Si les données sont complexes, nous utilisons un modèle complexe afin que le modèle ne soit pas sous-adapté aux données.
Dans la phase d'apprentissage, les prix de clôture prédits sont comparés aux prix de vérité terrain, et la différence entre les prix de clôture 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 la descente de gradient (ou l'une de ses formes - concrètement, dans ce blog, la version dite «Adam» d'un algorithme d'optimisation de descente de gradient est utilisée) en modifiant les poids du réseau neuronal.
Après la formation et les tests, à l'avenir, l'utilisateur n'a plus qu'à fournir des données d'entrée au réseau de neurones et il renverra le prix prédit (et, espérons-le, un prix très proche du prix de la vérité terrain du futur).
Une autre chose à mentionner ici est que, généralement, des lots de données sont envoyés à travers 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.
Essayez d'utiliser des stratégies de trading algorithmiques 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 vendre toutes les actions d'une société (short). La valeur initiale du portefeuille (valeur combinée des espèces et des actions) est fixée à 100 000 $. Chaque action longue ou courte achètera n
actions d'une entreprise (Google, dans cet exemple) ou vendre toutes les actions d'une entreprise, respectivement. Au début, le système possède 0 action d'une entreprise donnée.
Rappelez-vous toujours qu'il s'agit d'un exemple très basique et simple, qui n'est pas destiné à être utilisé dans le monde réel, car beaucoup plus de travail de R&D serait nécessaire pour peaufiner le modèle afin qu'il fonctionne bien dans la pratique. Certaines choses sont négligées ici et devraient être considérées dans un scénario du monde 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 des 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 seconde partie est l'ensemble de test (futur). Le modèle est entraîné sur un ensemble d'apprentissage et, après l'entraînement, nous simulons l'avenir sur la deuxième partie de l'ensemble de données pour voir comment le modèle entraîné se serait comporté dans le futur sans y être entraîné.
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 de l'année sont des jours de trading, et l'année a 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 dans la période de temps t
. Le ratio de Sharpe indique le rapport entre les rendements et le risque supplémentaire encouru, il est donc bon d'avoir un ratio de Sharpe plus grand. Habituellement, un 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 fonctionnalité. Plus de fonctionnalités vous aideront, mais il est hors de la portée de ce blog de tester quelles autres fonctionnalités de l'ensemble de données (ouvertes, élevées, faibles) sont importantes. Certaines autres fonctionnalités non incluses dans le tableau pourraient également être utiles, par exemple, le sentiment de l'actualité à une minute donnée ou des événements importants d'un jour particulier. Cependant, il est parfois très difficile de faire des représentations de données utiles pour l'entrée de réseau neuronal 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 de l'actualité ou le sentiment du tweet de Trump (-1
très négatif, 0
neutre, +1
très positif, etc.) pour chaque période donnée, mais il n'est pas 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 précis, nous aurons besoin d'un élément supplémentaire dans le vecteur de caractéristiques à 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 certaines catégories et, à 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 un système permettant d’apprendre la corrélation entre les cours des actions de différentes sociétés. Il existe également 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 fonctionnalités 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 une 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 cela 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 neuronal 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 au fil du temps, ce qui signifie que le réseau neuronal 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
part d'une entreprise (s'il y a suffisamment de liquidités dans le portefeuille), et sinon, elle vend toutes les actions de l'entreprise (le cas échéant). La période d'investissement est fixe et prend 300 jours. Après 300 jours, toutes les actions sont vendues. La simulation sur des données invisibles, après quelques entraînements, 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 simplement des actions le premier jour et les vendions après 300 jours, le portefeuille vaudrait 99 988,41 $.
Ci-dessous, une situation dans laquelle 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 $.
Lequel des exemples suivants illustre une stratégie de niche ?
Voici un exemple intéressant: l'algorithme ci-dessus est gourmand et ne prédit que le prix pour le jour suivant, 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 est [X_predicted_{t6}]
. L'entrée suivante à partir de là est [X_ground_truth_{t2}, X_ground_truth_{t3}, X_ground_truth_{t4}, X_predicted_{t5}, X_predicted_{t6}]
ce qui donne [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 aboutit finalement à un très mauvais résultat à long terme, comme le montre l'image ci-dessous. La prédiction au début suit la tendance à la baisse de la vérité terrain, puis stagne et s'aggrave avec le temps.
Une analyse d'apprentissage en profondeur très simple a été effectuée sur les cours de l'action 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 grande et de bonne qualité. Les données doivent être discriminantes et doivent décrire et bien représenter le problème.
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 prix futurs des actions d'une entreprise en utilisant le deep learning et en s'appuyant sur des stratégies de trading algorithmiques.
Les gestionnaires de fonds spéculatifs pourraient donner au système une somme d'argent à négocier automatiquement chaque jour. Cependant, il serait très mauvais de laisser les algorithmes de trading automatisés se négocier sans aucune supervision. Le gestionnaire de fonds spéculatifs doit avoir des compétences d'apprentissage approfondi ou employer quelqu'un avec 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.
Si le système perdait la capacité de généraliser, il serait alors nécessaire de le recycler depuis le début et de le tester à nouveau (peut-être en introduisant des fonctionnalités plus discriminantes ou de nouvelles connaissances - en utilisant de nouvelles données du passé qui n'existaient pas lorsque le modèle était première formation).
Parfois, les données ne sont tout simplement pas assez bonnes pour que le système d'apprentissage en profondeur soit formé et se généralise correctement et, dans ce cas, un ingénieur en apprentissage profond expérimenté devrait être en mesure de détecter et de rectifier une telle situation. Pour créer un système de trading d'apprentissage en profondeur, vous avez besoin de scientifiques de données sur les fonds spéculatifs, d'experts en apprentissage automatique / apprentissage en profondeur (scientifiques et ingénieurs), d'ingénieurs en R&D familiarisés avec l'apprentissage automatique / l'apprentissage profond, etc. Quelle que soit la partie d'une application d'apprentissage automatique qu'ils connaissent, que ce soit la vision par ordinateur ou la reconnaissance vocale, des professionnels aguerris pourront mettre à profit leur expérience dans le secteur financier. À la base, l'apprentissage en profondeur a les mêmes bases, quelle que soit l'application ou le secteur, et il devrait être facile pour une personne expérimentée de passer d'un thème à l'autre.
Le système que nous avons présenté est très basique et, pour être appliqué dans le monde réel, il faudrait faire plus de R&D afin d'augmenter les rendements. Les améliorations possibles du système pourraient consister à développer de meilleures stratégies commerciales. La collecte de plus de données pour la formation, qui est généralement très coûteuse, aidera. Un plus petit intervalle de temps entre les points est préférable. Des améliorations peuvent également apparaître en utilisant plus de fonctionnalités (par exemple, des sentiments d'actualité ou des événements importants correspondant à chaque point de l'ensemble de données, bien qu'il soit difficile à coder pour un réseau de neurones) et une recherche de grille étendue pour les hyperparamètres et la découverte de l'architecture RNN.
De plus, plus de puissance de calcul (des GPU puissants sont indispensables) est nécessaire pour effectuer de nombreuses expériences approfondies en parallèle et pour traiter une grande quantité de données, à condition qu'une grande quantité de données soit collectée.
Les références:
Note de l'auteur: Je tiens à remercier Ivan Čapalija et Matej Paradžik pour les conversations constructives et les conseils sur l'apprentissage profond en finance, qui m'ont aidé à rédiger ce blog.
Les hedge funds lèvent des fonds auprès de leurs investisseurs et les placent dans des investissements à court et à long terme, ou dans différents produits financiers pour maximiser les profits. Les hedge funds s'appuient sur différents types de stratégies d'investissement, essayant de gagner de l'argent en exploitant les inefficacités du marché.
Le trading algorithmique est une méthode d'utilisation d'ordinateurs afin de réaliser automatiquement des bénéfices en utilisant les règles qui sont déduites de modèles d'apprentissage automatique ou de règles manuscrites.
L'apprentissage en profondeur fait partie de l'apprentissage automatique qui apprend les représentations de données. La finance est la gestion de l'argent. L'apprentissage profond en finance est l'application de technologies d'apprentissage en profondeur dans le domaine financier.