Quand la physique rencontre la finance : l'IA pour résoudre l'équation Black-Scholes

Voici comment utiliser les réseaux neuronaux basés sur la physique pour résoudre des modèles financiers à l'aide de Python.

Avertissement : Ceci ne constitue pas un conseil financier. Je suis titulaire d’un doctorat en ingénierie aérospatiale, spécialisé en apprentissage automatique ; je ne suis pas conseiller financier. Cet article vise uniquement à démontrer la puissance des réseaux neuronaux à base de physique (PINN) dans un contexte financier.

À 16 ans, je suis tombé amoureux de la physique. La raison était simple mais puissante : je croyais que la physique était juste.

Je n'ai jamais fait d'erreur dans un exercice parce que la vitesse de la lumière changeait du jour au lendemain, ou parce que e<sub> x</sub> pouvait soudainement devenir négatif. Chaque fois que je lisais un article de physique et que je pensais : « Ça n'a pas de sens », je me rendais compte que c'était moi qui ne comprenais pas.

Par conséquent, la physique est toujours juste, et de ce fait, toujours parfaite . La physique démontre cette perfection et cette équité à travers son ensemble de règles, connues sous le nom d'équations différentielles.

L'équation différentielle la plus simple que je connaisse est la suivante :

C'est très simple : on part de x₀ = 0, à l'instant t = 0, et on se déplace à vitesse constante de 5 m/s. Cela signifie qu'après une seconde, on est à 5 mètres (ou kilomètres, si vous préférez) du point de départ ; après deux secondes, on est à 10 mètres ; après 0 43128 secondes… Je pense que vous avez compris.

Comme nous le disions, c'est écrit noir sur blanc : parfait, parfait et indiscutable. Cependant, imaginez cela dans la réalité. Imaginez que vous vous promenez ou que vous conduisez. Même en faisant de votre mieux pour maintenir une vitesse cible, vous ne pourrez jamais la conserver de façon constante. Votre esprit s'emballera à certains moments ; vous pourriez être distrait, vous arrêter à des feux rouges, et probablement une combinaison de ces éléments. Par conséquent, la simple équation différentielle mentionnée précédemment pourrait ne pas suffire. Ce que nous pouvons faire, c'est essayer de prédire votre position dans l'équation différentielle, mais avec l'aide de l'intelligence artificielle . Ce concept est crucial pour la modélisation des systèmes complexes.

Cette idée est appliquée dans les réseaux de neurones à information physique (PINN). Nous les décrirons plus en détail ultérieurement, mais le concept de base est de tenter de faire correspondre les données aux connaissances issues de l'équation différentielle qui décrit le phénomène. Autrement dit, nous contraignons notre solution à satisfaire globalement les attentes de la physique. Je sais que cela peut paraître complexe, mais je vous assure que tout deviendra beaucoup plus clair au fil de cet article.

Maintenant, la grande question :

 

Quel est le rapport entre la finance, la physique et les réseaux neuronaux basés sur la physique ?

Il s'avère que les équations différentielles ne sont pas seulement utiles à ceux qui s'intéressent aux lois de l'univers naturel ; elles peuvent également servir dans les modèles financiers . Par exemple, le modèle de Black-Scholes utilise une équation différentielle pour déterminer le prix d'une option d'achat, sous certaines hypothèses strictes, afin d'obtenir un portefeuille sans risque.

Le but de cette introduction très complexe était double :

  • Je vais vous embrouiller un peu, pour que vous puissiez continuer à lire :)
  • Soyez suffisamment curieux pour voir où tout cela va nous mener.

J'espère avoir réussi 😁. Si vous le faites, le reste de l’article suivra ces étapes :

  1. Nous discuterons modèle Black-Scholes, ses hypothèses et son équation différentielle
  2. Nous parlerons de Réseaux neuronaux basés sur la physique (PINN), d'où il vient et pourquoi il est utile
  3. Nous développerons notre propre algorithme qui entraîne PINN sur Black-Scholes en utilisant Python et Torche et POO.
  4. Nous allons montrer les résultats de notre algorithme.

Je suis surexcité! Au labo ! 🧪

1. Modèle Black-Scholes : un examen approfondi

 

Si vous souhaitez lire l'article original sur le modèle de Black-Scholes, vous le trouverez ici . À lire absolument ! 🙂

Bien, il nous faut maintenant comprendre le monde de la finance dans lequel nous évoluons : quelles sont les variables et quelles sont les règles qui le régissent ? Il est essentiel de comprendre les fondamentaux de la finance et son lien avec le modèle de Black-Scholes.

Tout d'abord, dans le domaine de la finance, il existe un instrument puissant appelé option d'achat . Une option d'achat vous donne le droit (mais non l'obligation) d'acheter une action à un prix déterminé dans le futur (par exemple, dans un an), appelé prix d'exercice.

Maintenant, réfléchissons-y un instant, d'accord ? Supposons que le prix de l’action aujourd’hui soit de 100 $. Supposons également que nous possédions une option d’achat avec un prix d’exercice de 100 $. Supposons maintenant que dans un délai d’un an, le prix de l’action augmente à 150 $. C'est incroyable ! Nous pouvons utiliser cette option d’achat pour acheter l’action puis la revendre immédiatement ! Nous venons de réaliser un bénéfice de 150 $ - 100 $ = 50 $. En revanche, si le prix de l’action chute à 80 $ en un an, nous ne pouvons pas le faire. En fait, il est préférable pour nous de ne pas exercer du tout notre droit d’achat, afin de ne pas perdre d’argent.

En y réfléchissant, l'idée d'acheter une action et de vendre une option semble parfaitement équilibrée . Autrement dit, la volatilité du cours d'une action (ses fluctuations) peut être atténuée en détenant un nombre adéquat d'options. C'est ce qu'on appelle la couverture delta, et il s'agit d'une stratégie fondamentale de gestion des risques.

À partir d'un ensemble d'hypothèses, nous pouvons déterminer un prix d'option équitable permettant d'obtenir un portefeuille sans risque . Ce concept est fondamental dans le modèle de Black-Scholes.

Je ne veux pas vous ennuyer avec tous les détails de la dérivation (franchement, ce n'est pas difficile à suivre dans l'article original), mais l'équation différentielle pour le portefeuille sans risque est la suivante :

Nom:

  • C est le prix de l'option à l'instant t
  • sigma C'est la volatilité de l'action.
  • r C'est le taux sans risque.
  • t est le temps (avec t=0 maintenant et T à la date de fin)
  • S est le prix actuel de l'action

À partir de cette équation, nous pouvons déduire le juste prix d’une option d’achat pour un portefeuille sans risque. L'équation est fermée et analytique, et ressemble à ceci :

avec:

où N(x) est la fonction de distribution cumulative (CDF) de la distribution normale standard, K est le prix d'exercice et T est la date d'expiration.

Par exemple, voici un graphique du prix de l'action (x) par rapport à l'option d'achat (y) , selon le modèle Black-Scholes.

Maintenant, cela semble génial et tout, mais quel est le rapport avec la physique et PINN ? L'équation semble être analytique, alors pourquoi PINN ? Pourquoi l’intelligence artificielle ? Pourquoi est-ce que je lis ça ? La réponse est ci-dessous 👇 :

 

2. Réseaux neuronaux basés sur la physique

 

Si les réseaux de neurones informés par la physique (PINN) vous intéressent, vous pouvez consulter l'article original ici . Je vous le recommande vivement. 🙂

L'équation ci-dessus est analytique , mais elle représente un prix équitable dans un scénario idéal. Que se passe-t-il si nous faisons abstraction de ce critère et tentons d'estimer le prix de l'option en fonction du cours de l'action et du temps ? Par exemple, nous pourrions utiliser un réseau de neurones à propagation avant et l'entraîner par rétropropagation. Cette approche constitue le fondement de l'utilisation des réseaux de neurones pour la tarification des options.

Dans ce mécanisme de formation, nous minimisons l’erreur :

L = |Estimated C - Real C|:

C'est une bonne chose, et c'est l'approche de réseau neuronal la plus simple que vous puissiez mettre en œuvre. Le problème ici est que nous ignorons complètement l’équation de Black-Scholes. Alors, y a-t-il un autre moyen ? Pouvons-nous les fusionner ?

Bien sûr, nous pouvons, si nous définissons l'erreur à :

L = |Estimated C - Real C|+ PDE(C,S,t)

où EDP(C,S,t) est :

Il doit être aussi proche de 0 que possible :

Mais la question demeure. Pourquoi est-ce « meilleur » que la simple équation de Black-Scholes ? Pourquoi ne pas simplement utiliser l’équation différentielle ? Eh bien, parce que parfois, dans la vie, résoudre une équation différentielle ne vous garantit pas la « vraie » solution. La physique fait généralement des approximations, et elle le fait d’une manière qui peut créer une différence entre ce que nous attendons et ce que nous voyons. C'est pourquoi les réseaux neuronaux informés par la physique (PINN) sont un outil si étonnant et merveilleux : vous essayez de faire correspondre la physique, mais vous êtes strict sur le fait que les résultats doivent correspondre à ce que vous « voyez » dans votre ensemble de données. C’est cette intégration du modèle physique et des données expérimentales qui distingue cette approche.

Dans notre cas, il se peut que pour obtenir un portefeuille sans risque, nous constations que le modèle théorique de Black-Scholes ne corresponde pas parfaitement aux données de marché bruyantes, biaisées ou incomplètes que nous observons. Peut-être que la volatilité n’est pas constante. Peut-être que le marché n’est pas efficace. Peut-être que les hypothèses sur lesquelles repose l’équation ne tiennent pas la route. C’est là qu’une approche comme PINN peut s’avérer utile. Non seulement nous trouvons une solution qui satisfait l’équation de Black-Scholes, mais nous « faisons confiance » également à ce que nous voyons à partir des données. Cela permet de créer un modèle plus flexible et adaptable aux conditions réelles du marché.

Bon, assez de théorie. Codons. 👨‍💻

 

3. Application pratique avec Python

Vous trouverez ici le code complet, ainsi qu'un fichier README.md détaillé, un excellent classeur et un code de test très clair . Ce code est spécifiquement conçu pour résoudre l'équation de Black-Scholes à l'aide de réseaux de neurones PINN, une technique avancée dans le domaine de la modélisation financière.

Remarque : cette partie sera un peu intensive (beaucoup de code), et si vous n'êtes pas intéressé par les logiciels, n'hésitez pas à passer au chapitre suivant. Je vais montrer les résultats d'une manière plus simple :)

Merci beaucoup d'être arrivé jusqu'ici ❤️
Voyons comment nous pouvons mettre cela en œuvre. Voyons maintenant comment appliquer cette technique à la résolution des équations de Black-Scholes, en nous concentrant sur les aspects pratiques et détaillés.

3.1 Fichier Config.json

L'intégralité du code peut être exécutée à l'aide d'un fichier de configuration très simple, que j'ai nommé config.json.

Vous pouvez le placer où vous le souhaitez, comme nous le verrons plus tard.

Ce fichier est essentiel, car il définit tous les paramètres qui régissent notre simulation, la génération de données et la formation du modèle. Laissez-moi vous expliquer rapidement ce que représente chaque valeur :

  • K: Prix ​​d'exécution – Le prix auquel l’option vous donne le droit d’acheter l’action dans le futur.
  • T: Temps jusqu'à la date d'échéance, en années. autorisation T = 1.0 Cela signifie que l'option expire dans une unité (par exemple, un an) à partir de maintenant.
  • r: taux d'intérêt sans risque Utilisé pour actualiser les valeurs futures. Il s’agit du taux d’intérêt que nous spécifions dans notre simulation.
  • sigma: La volatilité Le stock, qui détermine à quel point il est difficile de prédire le prix du stock ou à quel point il est « risqué ». Encore une fois, il s’agit d’un paramètre de simulation.
  • N_data: nombre points de données synthétiques que nous souhaitons créer pour la formation. Cela déterminera également la taille du motif.
  • min_S et max_S: Fourchette de prix des actions Ce que nous souhaitons échantillonner lors de la création de données synthétiques. Notre prix minimum et maximum de l'action.
  • bias: Compensation facultative ajoutée aux prix des options, pour simuler un changement systématique dans les données. Cela est fait pour créer un contraste entre le monde réel et les données Black-Scholes.
  • noise_variance: niveau de bruit Ajouté aux prix des options pour simuler la mesure ou le bruit du marché. Ce paramètre est ajouté pour la même raison que précédemment.
  • epochs: nombre répétitions sur lequel le modèle sera formé.
  • lr: taux d'apprentissage Pour le bienfaiteur. Cela contrôle la rapidité avec laquelle le modèle est mis à jour pendant la formation.
  • log_interval:Le nombre de fois (en termes d'âge) que nous voulons Imprimer les enregistrements Pour suivre les progrès de la formation.

Chacun de ces paramètres joue un rôle spécifique, certains façonnant le monde financier que nous simulons, tandis que d’autres contrôlent la manière dont notre réseau neuronal interagit avec ce monde. De petites modifications ici peuvent entraîner un comportement complètement différent, rendant ce fichier à la fois puissant et sensible. Changer les valeurs de ce fichier JSON changera radicalement la sortie de votre code.

3.2 main.py (fichier main.py)

Voyons maintenant comment le reste du code utilise cette configuration dans la pratique.

La partie principale de notre code provient de main.py , pour entraîner votre réseau PINN à l'aide de Torch, et de black_scholes.py.

Ceci est le fichier main.py :

Donc, ce que vous pouvez faire est :

  1. Créez votre propre fichier config.json
  2. Exécutez la commande python main.py --config config.json

Le fichier main.py est utilisé par de nombreux autres fichiers.

3.3 black_scholes.py et ses assistants

L'application du modèle Black-Scholes se trouve dans le fichier black_scholes.py :

Ce fichier peut être utilisé pour créer, former, exporter et prédire le modèle.
La fonction utilise également certains fichiers d'aide, tels que data.py, loss.py et model.py.
Il y a un modèle de torche à l'intérieur du fichier. modèle.py:

Le constructeur de données (considérez le fichier de configuration) se trouve dans le fichier data.py :

La fonction de perte intégrée qui inclut la valeur d'asymétrie est loss.py. Cette fonction est essentielle pour améliorer la précision du modèle.

4. Résultats

Eh bien, lorsque nous exécutons main.py, notre réseau neuronal à propagation directe (FFNN) est formé et nous obtenons ce qui suit :

Comme vous pouvez le voir, l’erreur du modèle n’est pas exactement de 0, mais l’équation EDP du modèle est beaucoup plus petite que les données. Cela signifie que le modèle force (naturellement) fortement nos prédictions à satisfaire les équations différentielles. C’est exactement ce que nous avons dit auparavant : nous améliorons les performances en fonction des données dont nous disposons et en fonction du modèle Black-Scholes.

Nous pouvons observer, qualitativement, une forte correspondance entre l'ensemble de données du monde réel bruyant + biaisé (assez réaliste) et le réseau PINN.

Voici les résultats lorsque t = 0 et que le prix de l'action change avec l'option d'achat à une valeur fixe de t. Plutôt cool, n'est-ce pas ? Mais ce n’est pas encore fini ! Vous pouvez explorer les résultats en utilisant le code ci-dessus de deux manières :

  1. Jouer avec plusieurs paramètres situé dans config.json
  2. Voir les prévisions sur t> 0

J'écoute ! :)

5. Conclusions

Merci beaucoup d'être venu ici. Vraiment, c'était un long voyage 😅
Voici ce que nous avons abordé dans cet article :

  1. Nous avons commencé par la physique., et comment ses lois, écrites sous forme d’équations différentielles, sont justes, belles et (généralement) prévisibles.
  2. Nous sommes passés à la financeEt nous avons rencontré le modèle Black-Scholes, une équation différentielle qui vise à évaluer le prix des options de manière sans risque.
  3. Nous avons exploré les réseaux neuronaux informés par la physique (PINN)., un type de réseau neuronal qui ne se contente pas d'ajuster les données mais respecte l'équation différentielle sous-jacente. Les PINN sont un outil puissant pour modéliser des systèmes complexes.
  4. Nous avons tout fait en Python.Utilisation de PyTorch et d'une base de données de référence propre qui vous permet de modifier les paramètres, de générer des données synthétiques et de former vos propres PINN pour résoudre l'équation de Black-Scholes.
  5. Nous avons photographié les résultats. Nous avons vu comment le réseau a appris à faire correspondre non seulement les données bruyantes mais également le comportement attendu de l’équation de Black-Scholes.

Je sais qu'assimiler tout cela d'un coup n'est pas chose facile. Dans certains domaines, j'ai forcément été bref, peut-être même plus que nécessaire. Toutefois, pour une compréhension plus approfondie, je vous invite à consulter le dossier GitHub. Même si le logiciel ne vous intéresse pas, vous y trouverez un fichier README.md clair et un exemple simple, example/BlackScholesModel.ipynb , qui explique le projet étape par étape.

 

Les commentaires sont fermés.