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.
لاء مسؤوليةCeci n’est pas un conseil financier. J'ai un doctorat en génie aérospatial avec une forte spécialisation en apprentissage automatique : je Je ne suis pas Conseiller financier. Cet article vise uniquement à démontrer la puissance des réseaux neuronaux basés sur la 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 équitable.
Je n'ai jamais fait d'erreur dans un exercice parce que la vitesse de la lumière a changé du jour au lendemain, ou parce que soudainement elle pourrait êtrex Négatif Chaque fois que je lis un article de physique et que je pense, « Cela n'a pas de sens » Il s'avère que C'est moi qui n'ai pas compris.
Donc, la physique est toujours juste, et c'est pourquoi elle est toujours Parfait. La physique démontre cette perfection et cette justice à travers son ensemble de règles, connues sous le nom de équations différentielles.

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

Très simple : on commence ici, x0=0, à l'instant t=0, alors nous nous déplaçons à une vitesse constante de 5 m/s. Cela signifie qu'après 5 seconde, nous sommes à 10 mètres (ou miles, si vous préférez) de l'origine ; Après 43128 secondes, nous sommes à XNUMX mètres de l'origine ; Après XNUMX XNUMX secondes... Je pense que vous avez compris.
Comme on dit, c'est écrit dans la pierre : parfait, parfait et incontestable. Mais imaginez cela dans la vraie vie. Imaginez que vous êtes en promenade ou en voiture. Même si vous faites de votre mieux pour atteindre une vitesse cible, vous ne parviendrez jamais à la maintenir constante. Votre esprit s'emballera dans certaines parties ; Vous pourriez être distrait, vous pourriez vous arrêter aux feux rouges et très probablement une combinaison de ces facteurs. Il se peut donc que l’équation différentielle simple que nous avons mentionnée plus tôt ne soit pas suffisante. Ce que nous pouvons faire, c'est essayer de prédire votre position à partir de l'équation différentielle, ولكن Avec de l'aide L'intelligence artificielle. Ce concept est très important dans la modélisation de systèmes complexes.
Cette idée est appliquée dans Réseaux de neurones basés sur la physique (PINN). Nous le décrirons en détail plus tard, mais l'idée est que nous essayons de faire correspondre ل من Les données et ce que nous savons de l’équation différentielle qui décrit le phénomène. Cela signifie que nous forçons notre solution à satisfaire généralement ce que nous attendons de la physique. Je sais que cela ressemble à de la magie noire, je vous promets que cela deviendra plus clair tout au long 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 ?
Eh bien, 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, mais elles peuvent également être utiles dans النماذج المالية. Par exemple, le modèle utilise Noir-Scholes Une équation différentielle pour déterminer le prix d'une option d'achat, avec certaines hypothèses strictes, pour obtenir 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 :
- Nous discuterons modèle Black-Scholes, ses hypothèses et son équation différentielle
- Nous parlerons de Réseaux neuronaux basés sur la physique (PINN), d'où il vient et pourquoi il est utile
- Nous développerons notre propre algorithme qui entraîne PINN sur Black-Scholes en utilisant Python et Torche et POO.
- 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 de recherche original sur le modèle Black-Scholes, vous pouvez le trouver ici. ici. Ça vaut vraiment la peine d'être lu :)
Bon, maintenant il faut comprendre le monde. التمويل Où nous sommes, quelles sont les variables et quelles sont les lois qui le régissent. Il est essentiel de comprendre les bases de la finance et leur relation avec Black-Scholes.
Tout d’abord, en finance, il existe un outil puissant appelé Option Option d'achat. Une option d'achat vous donne le droit (mais pas l'obligation) d'acheter une action à un certain prix dans un avenir spécifié (disons dans un an), appelé prix d'exercice. prix).
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.
Alors, maintenant que nous y pensons, l’idée est acheter une action et vente d'option Regarde Entièrement intégré. Ce que je veux dire, c'est que le caractère aléatoire du prix d'une action (le fait qu'il monte et descend) peut en fait le soulager En gardant le bon nombre d'options. C'est ce qu'on appelle Couverture delta. C'est une stratégie fondamentale dans la gestion des risques.
Sur la base d’un ensemble d’hypothèses, nous pouvons déduire prix d'option équitable Pour obtenir un portefeuille Sans risque. Ce concept est fondamental pour le modèle 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:
Cest le prix de l'option à l'instant tsigmaC'est la volatilité de l'action.rC'est le taux sans risque.test le temps (avec t=0 maintenant et T à la date de fin)Sest 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. Cours de l'action (x) Vs 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 vous êtes intéressé par les réseaux de neurones informés par la physique (PINN), vous pouvez consulter l'article original. ici. Encore une fois, ça vaut la peine d'être lu. :)
Maintenant, l'équation ci-dessus AnalytiqueMais encore une fois, c’est l’équation d’un prix juste dans un scénario idéal. Que se passe-t-il si nous ignorons cela pendant un moment et essayons de deviner le prix de l'option en fonction du cours de l'action et du temps ? Par exemple, nous pouvons utiliser un réseau neuronal Feed Forward et l’entraîner par rétropropagation. Cette approche constitue la base de l’utilisation des réseaux neuronaux dans 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 pouvez trouver le code complet, ainsi qu'un excellent fichier README.md, un excellent bloc-notes et un code standard très clair. ici. Ce code est spécifiquement conçu pour résoudre l'équation de Black-Scholes à l'aide de réseaux neuronaux PINN, une méthode 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'ensemble du code peut être exécuté à 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. autorisationT = 1.0Cela 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_Setmax_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.pyPour former votre réseau PINN à l'aide de Torch, black_scholespy.
Ceci est le fichier main.py :
Donc, ce que vous pouvez faire est :
- Créez votre propre fichier config.json
- 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 générateur de données (en termes de fichier de configuration) se trouve à l'intérieur du fichier. données.py:
La fonction de perte intégrée qui inclut la valeur de biais est perte.py. Cette fonction est nécessaire 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 :
- Jouer avec plusieurs paramètres situé dans config.json
- 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 :
- 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.
- 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.
- 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.
- 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.
- 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 que ce n’est pas facile d’assimiler tout cela d’un coup. Dans certains domaines, j’ai été forcément bref, peut-être plus court que nécessaire. Cependant, si vous voulez voir les choses de manière plus claire, jetez à nouveau un œil à : Dossier GitHub. Même si vous n'êtes pas intéressé par les logiciels, il existe un fichier README.md clair et un modèle simple. exemple/BlackScholesModel.ipynb Le projet est expliqué étape par étape.
Les commentaires sont fermés.