Wenn Physik auf Finanzen trifft: KI zur Lösung der Black-Scholes-Gleichung

So verwenden Sie physikbasierte neuronale Netzwerke zum Lösen von Finanzmodellen mit Python.

HaftungsausschlussDies ist keine Finanzberatung. Ich habe einen Doktortitel in Luft- und Raumfahrttechnik mit einem starken Schwerpunkt auf maschinellem Lernen: Ich Ich bin nicht Finanzberater. Dieser Artikel soll ausschließlich die Leistungsfähigkeit physikbasierter neuronaler Netzwerke (PINNs) im Finanzkontext demonstrieren.

Mit 16 habe ich mich in die Physik verliebt. Der Grund war einfach, aber überzeugend: Ich glaubte, dass die Physik Messe.

Ich habe noch nie einen Fehler in einer Übung gemacht, weil sich die Lichtgeschwindigkeit über Nacht geändert hat oder weil plötzlich e sein könntex Negativ Jedes Mal, wenn ich eine Physikarbeit lese und denke: „Das ergibt keinen Sinn“, Es stellt sich heraus, dass Ich war derjenige, der es nicht verstand.

Die Physik ist also immer fair, und deshalb ist sie immer مثالية. Die Physik zeigt diese Perfektion und Gerechtigkeit durch ihre Regeln, bekannt als Differentialgleichungen.

Die einfachste mir bekannte Differentialgleichung ist diese:

Ganz einfach: wir fangen hier an, x0=0, zum Zeitpunkt t=0, dann bewegen wir uns mit einer konstanten Geschwindigkeit von 5 m/s. Das bedeutet, dass wir nach 5 Sekunde 10 Meter (oder Meilen, wenn Sie es vorziehen) vom Ursprung entfernt sind; Nach 43128 Sekunden sind wir XNUMX Meter vom Ursprung entfernt; Nach XNUMX Sekunden ... ich denke, Sie haben es verstanden.

Wie wir sagen, es ist in Stein gemeißelt: perfekt, vollkommen und unbestreitbar. Stellen Sie sich dies jedoch im wirklichen Leben vor. Stellen Sie sich vor, Sie sind spazieren oder fahren Auto. Auch wenn Sie Ihr Bestes geben, um eine Zielgeschwindigkeit zu erreichen, werden Sie nie in der Lage sein, diese konstant zu halten. Ihre Gedanken werden in bestimmten Teilen rasen; Sie könnten abgelenkt sein, an einer roten Ampel anhalten oder höchstwahrscheinlich eine Kombination der oben genannten Dinge. Daher reicht die einfache Differentialgleichung, die wir zuvor erwähnt haben, möglicherweise nicht aus. Was wir tun können, ist zu versuchen, Ihre Position aus der Differentialgleichung vorherzusagen. Aber mit Hilfe Künstliche Intelligenz. Dieses Konzept ist bei der Modellierung komplexer Systeme sehr wichtig.

Diese Idee wird angewendet in Physikalisch fundierte neuronale Netzwerke (PINN). Wir werden es später im Detail beschreiben, aber die Idee ist, dass wir versuchen, Wer auch immer Die Daten und was wir aus der Differentialgleichung wissen, die das Phänomen beschreibt. Dies bedeutet, dass wir unsere Lösung dazu zwingen, im Allgemeinen unseren physikalischen Erwartungen zu entsprechen. Ich weiß, das klingt nach schwarzer Magie, aber ich verspreche, dass es im Laufe dieses Artikels klarer wird.

Nun die große Frage:

 

Was hat Finanzen mit Physik und physikbasierten neuronalen Netzwerken zu tun?

Nun, es stellt sich heraus, dass Differentialgleichungen nicht nur für diejenigen nützlich sind, die sich für die Gesetze des natürlichen Universums interessieren, sondern sie können auch nützlich sein in Finanzmodelle. Das Modell verwendet beispielsweise Schwarz-Scholes Eine Differentialgleichung zur Bestimmung des Preises einer Call-Option, mit bestimmten strengen Annahmen, um zu erhalten Risikofreies Portfolio.

Diese sehr komplexe Einführung hatte zwei Ziele:

  • Verwirre dich ein wenig, damit du weiterlesen kannst :)
  • Seien Sie neugierig genug, um zu sehen, wohin das alles führt.

Ich hoffe, es ist mir gelungen 😁. Wenn Sie dies tun, folgt der Rest des Artikels diesen Schritten:

  1. Wir werden diskutieren Black-Scholes-Modell, seine Annahmen und seine Differentialgleichung
  2. Wir sprechen über Physikbasierte neuronale Netzwerke (PINNs), woher es kommt und warum es nützlich ist
  3. Wir werden unseren eigenen Algorithmus entwickeln, der PINN auf Black-Scholes trainiert, indem wir Python Und Laterne Und OOP.
  4. Wir zeigen die Ergebnisse unseres Algorithmus.

Ich bin begeistert! Ab ins Labor! 🧪

1. Das Black-Scholes-Modell: Ein genauerer Blick

 

Wenn Sie die Original-Forschungsarbeit zum Black-Scholes-Modell lesen möchten, finden Sie sie hier. hier. Auf jeden Fall lesenswert :)

Okay, jetzt müssen wir die Welt verstehen. التمويل Wo wir sind, welche Variablen es gibt und welche Gesetze dies bestimmen. Es ist von entscheidender Bedeutung, die Grundlagen der Finanzwelt und ihre Beziehung zu Black-Scholes zu verstehen.

Erstens gibt es im Finanzwesen ein mächtiges Werkzeug namens Gurke Anrufoption. Eine Kaufoption gibt Ihnen das Recht (aber nicht die Verpflichtung), eine Aktie zu einem bestimmten Preis in der angegebenen Zukunft (sagen wir in einem Jahr) zu kaufen, der als Ausübungspreis bezeichnet wird. Preis ).

Lassen Sie uns nun einen Moment darüber nachdenken, einverstanden? Angenommen, der Aktienkurs beträgt heute 100 $. Nehmen wir außerdem an, wir besitzen eine Kaufoption mit einem Ausübungspreis von 100 $. Nehmen wir nun an, dass der Aktienkurs innerhalb eines Jahres auf 150 $ steigt. Das ist großartig! Mit dieser Call-Option können wir die Aktie kaufen und anschließend sofort wieder verkaufen! Wir haben gerade einen Gewinn von 150 $ - 100 $ = 50 $ gemacht. Wenn der Aktienkurs hingegen innerhalb eines Jahres auf 80 US-Dollar fällt, können wir das nicht tun. Eigentlich ist es für uns besser, unser Kaufrecht gar nicht erst auszuüben, um kein Geld zu verlieren.

Wenn wir jetzt darüber nachdenken, ist die Idee folgende: eine Aktie kaufen Und Optionsverkauf aussehen Vollständig integriert. Was ich meine ist, dass die Zufälligkeit eines Aktienkurses (die Tatsache, dass er steigt und fällt) tatsächlich erleichtern Indem Sie die richtige Anzahl an Optionen beibehalten. Das nennt man Delta-Hedging. Es handelt sich um eine grundlegende Strategie im Risikomanagement.

Basierend auf einer Reihe von Annahmen können wir ableiten fairer Optionspreis Um eine Brieftasche zu bekommen Risikofrei. Dieses Konzept ist grundlegend für das Black-Scholes-Modell.

Ich möchte Sie nicht mit allen Einzelheiten der Herleitung langweilen (ehrlich gesagt ist es im Originalpapier nicht schwer, ihr zu folgen), aber die Differentialgleichung für das risikofreie Portfolio lautet wie folgt:

Wo:

  • C ist der Optionspreis zum Zeitpunkt t
  • sigma Es ist die Volatilität der Aktie.
  • r Es handelt sich um den risikofreien Zinssatz.
  • t ist die Zeit (mit t=0 jetzt und T am Enddatum)
  • S ist der aktuelle Aktienkurs

Aus dieser Gleichung können wir den fairen Preis einer Call-Option für ein risikofreies Portfolio ableiten. Die Gleichung ist geschlossen und analytisch und sieht folgendermaßen aus:

mit:

wobei N(x) die kumulative Verteilungsfunktion (CDF) der Standardnormalverteilung, K der Ausübungspreis und T das Verfallsdatum ist.

Dies ist beispielsweise ein Diagramm. Aktienkurs (x) مقابل Kaufoption (y), gemäß dem Black-Scholes-Modell.

Das klingt ja alles großartig, aber was hat das mit Physik und PINN zu tun? Die Gleichung scheint analytisch zu sein, warum also PINN? Warum künstliche Intelligenz? Warum lese ich das überhaupt? Die Antwort finden Sie weiter unten 👇:

 

2. Physikalisch fundierte neuronale Netzwerke

 

Wenn Sie sich für Physikalisch informierte neuronale Netzwerke (PINNs) interessieren, können Sie sich das Originalpapier ansehen. hier. Auch hier wieder lesenswert. :)

Nun die obige Gleichung AnalytischAber nochmals: Dies ist die Gleichung für einen fairen Preis im Idealfall. Was passiert, wenn wir dies für einen Moment ignorieren und versuchen, den Optionspreis basierend auf dem Aktienkurs und der Zeit zu erraten? Beispielsweise können wir ein Feedforward-Neuralnetzwerk verwenden und es durch Backpropagation trainieren. Dieser Ansatz bildet die Grundlage für die Verwendung neuronaler Netzwerke bei der Optionspreisgestaltung.

In diesem Trainingsmechanismus minimieren wir den Fehler:

L = |Estimated C - Real C|:

Das ist gut und der einfachste Ansatz mit neuronalen Netzwerken, den Sie verfolgen können. Das Problem hierbei ist, dass wir die Black-Scholes-Gleichung völlig ignorieren. Gibt es also eine andere Möglichkeit? Können wir sie zusammenführen?

Natürlich können wir das, wenn wir den Fehler folgendermaßen festlegen:

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

wobei PDE(C,S,t) ist:

Es sollte so nahe wie möglich bei 0 liegen:

Aber die Frage bleibt weiterhin bestehen. Warum ist dies „besser“ als die einfache Black-Scholes-Gleichung? Warum verwenden wir nicht einfach die Differentialgleichung? Nun, weil es im Leben manchmal vorkommt, dass das Lösen einer Differentialgleichung nicht garantiert, dass Sie die „wahre“ Lösung erhalten. Die Physik nähert sich den Dingen normalerweise an, und zwar auf eine Art und Weise, die zu einem Unterschied zwischen dem, was wir erwarten, und dem, was wir sehen, führen kann. Aus diesem Grund sind physikbasierte neuronale Netzwerke (PINNs) ein so erstaunliches und wunderbares Werkzeug: Sie versuchen, die Physik nachzubilden, achten aber strikt darauf, dass die Ergebnisse mit dem übereinstimmen müssen, was Sie in Ihrem Datensatz „sehen“. Diese Integration des physikalischen Modells und der experimentellen Daten ist das Besondere an diesem Ansatz.

In unserem Fall kann es sein, dass wir, um ein risikofreies Portfolio zu erhalten, feststellen, dass das theoretische Black-Scholes-Modell nicht perfekt mit den verrauschten, verzerrten oder unvollständigen Marktdaten übereinstimmt, die wir beobachten. Vielleicht ist die Volatilität nicht konstant. Vielleicht ist der Markt nicht effizient. Vielleicht sind die Annahmen hinter der Gleichung nicht haltbar. Hier kann ein Ansatz wie PINN nützlich sein. Wir finden nicht nur eine Lösung, die die Black-Scholes-Gleichung erfüllt, sondern wir „vertrauen“ auch dem, was wir aus den Daten erkennen. Dies ermöglicht ein flexibleres Modell, das sich besser an die tatsächlichen Marktbedingungen anpassen lässt.

Okay, genug Theorie. Lass uns programmieren. 👨‍💻

 

3. Praktische Anwendung mit Python

Sie finden den vollständigen Code zusammen mit einer großartigen README.md-Datei, einem hervorragenden Notizbuch und superklarem Boilerplate-Code. hier. Dieser Code ist speziell für die Lösung der Black-Scholes-Gleichung mithilfe von PINN-Neuralnetzen konzipiert, einer fortschrittlichen Methode im Bereich der Finanzmodellierung.

Hinweis: Dieser Teil wird etwas intensiver (viel Code), und wenn Sie sich nicht für Software interessieren, können Sie gerne zum nächsten Kapitel springen. Ich werde die Ergebnisse auf einfachere Weise zeigen :)

Vielen Dank, dass du es bis hierher geschafft hast ❤️
Mal sehen, wie wir das umsetzen können. Sehen wir uns nun an, wie diese Technik zum Lösen von Black-Scholes-Gleichungen angewendet wird, wobei wir uns auf die praktischen und detaillierten Aspekte konzentrieren.

3.1 Config.json-Datei

Der gesamte Code kann mit einer sehr einfachen Konfigurationsdatei ausgeführt werden, die ich genannt habe config.json.

Sie können es platzieren, wo immer Sie möchten, wie wir später sehen werden.

Diese Datei ist wichtig, da sie alle Parameter definiert, die unsere Simulation, Datengenerierung und Modellschulung steuern. Lassen Sie mich kurz erklären, was jeder Wert darstellt:

  • K: Ausführungspreis – Der Preis, zu dem die Option Ihnen das Recht gibt, die Aktie in der Zukunft zu kaufen.
  • T: Zeit bis zum Fälligkeitsdatum, in Jahren. Erlaubnis T = 1.0 Dies bedeutet, dass die Option in einer Einheit (z. B. einem Jahr) abläuft.
  • r: risikofreier Zinssatz Wird verwendet, um zukünftige Werte abzuzinsen. Dies ist der Zinssatz, den wir in unserer Simulation angeben.
  • sigma: Fluktuation Der Bestand, der bestimmt, wie schwierig es ist, den Aktienkurs vorherzusagen oder wie „riskant“ er ist. Auch hier handelt es sich um einen Simulationsparameter.
  • N_data: Nummer synthetische Datenpunkte Die wir für das Training erstellen möchten. Dadurch wird auch die Größe des Musters bestimmt.
  • min_S Und max_S: Aktienkursspanne Welche wir beim Erstellen synthetischer Daten abtasten möchten. Unser minimaler und maximaler Aktienkurs.
  • bias: Optionaler Ausgleich zu Optionspreisen hinzugefügt, um eine systematische Verschiebung der Daten zu simulieren. Dies geschieht, um einen Kontrast zwischen der realen Welt und den Black-Scholes-Daten zu schaffen.
  • noise_variance: Geräuschpegel Wird zu Optionspreisen hinzugefügt, um Messungen oder Marktrauschen zu simulieren. Dieser Parameter wird aus demselben Grund wie zuvor hinzugefügt.
  • epochs: Nummer Wiederholungen mit denen das Modell trainiert wird.
  • lr: Lernrate Für den Wohltäter. Dadurch wird gesteuert, wie schnell das Modell während des Trainings aktualisiert wird.
  • log_interval:Die Anzahl der Male (in Bezug auf das Alter), die wir wollen Datensätze drucken Zur Überwachung des Trainingsfortschritts.

Jeder dieser Parameter spielt eine bestimmte Rolle. Einige prägen die von uns simulierte Finanzwelt, während andere steuern, wie unser neuronales Netzwerk mit dieser Welt interagiert. Kleine Änderungen können hier zu einem völlig anderen Verhalten führen und diese Datei sowohl leistungsstark als auch sensibel machen. Das Ändern der Werte dieser JSON-Datei wird die Ausgabe Ihres Codes radikal verändern.

3.2 main.py (main.py-Datei)

Sehen wir uns nun an, wie der restliche Code diese Konfiguration in der Praxis verwendet.

Der Hauptteil unseres Codes stammt aus main.pyUm Ihr PINN-Netzwerk mit Torch zu trainieren, black_scholes.py.

Dies ist die Datei main.py:

Sie können also Folgendes tun:

  1. Erstellen Sie Ihre eigene config.json-Datei
  2. Führen Sie den Befehl aus python main.py --config config.json

Die Datei main.py wird von vielen anderen Dateien verwendet.

3.3 black_scholes.py und seine Helfer

Die Anwendung des Black-Scholes-Modells befindet sich in der Datei. black_scholes.py:

Diese Datei kann zum Erstellen, Trainieren, Exportieren und Vorhersagen des Modells verwendet werden.
Die Funktion verwendet auch einige Hilfsdateien wie data.py, loss.py und model.py.
In der Datei befindet sich eine Torch-Vorlage. model.py:

Der Datengenerator (im Sinne der Konfigurationsdatei) befindet sich innerhalb der Datei. data.py:

Die integrierte Verlustfunktion, die den Schiefwert enthält, ist Verlust.py. Diese Funktion ist notwendig, um die Genauigkeit des Modells zu verbessern.

4. Ergebnisse

Wenn wir main.py ausführen, wird unser Feedforward-Neuralnetzwerk (FFNN) trainiert und wir erhalten Folgendes:

Wie Sie sehen, beträgt der Modellfehler nicht genau 0, aber die PDE-Gleichung des Modells ist viel kleiner als die Daten. Dies bedeutet, dass das Modell (natürlich) unsere Vorhersagen stark dazu zwingt, die Differentialgleichungen zu erfüllen. Dies ist genau das, was wir zuvor gesagt haben: Wir verbessern die Leistung im Hinblick auf die uns zur Verfügung stehenden Daten und im Hinblick auf das Black-Scholes-Modell.

Wir können qualitativ eine hohe Übereinstimmung zwischen dem verrauschten + verzerrten (ziemlich realistischen) realen Datensatz und dem PINN-Netzwerk beobachten.

Dies sind die Ergebnisse, wenn t = 0 ist und sich der Aktienkurs mit der Call-Option bei einem festen Wert von t ändert. Ziemlich cool, nicht wahr? Aber es ist noch nicht vorbei! Sie können die Ergebnisse mit dem obigen Code auf zwei Arten untersuchen:

  1. Spielen mit vielen Parameter befindet sich in config.json
  2. Vorhersagen ansehen unter t> 0

Ich höre zu! :)

5. Schlussfolgerungen

Vielen Dank, dass Sie hierher gekommen sind. Wirklich, das war eine lange Reise 😅
Folgendes haben wir in diesem Artikel behandelt:

  1. Wir haben mit Physik angefangen., und wie seine Gesetze, geschrieben als Differentialgleichungen, fair, schön und (normalerweise) vorhersehbar sind.
  2. Wir sind in den Finanzbereich gewechseltUnd wir haben das Black-Scholes-Modell kennengelernt – eine Differentialgleichung, die darauf abzielt, Optionen risikofrei zu bewerten.
  3. Wir haben physikbasierte neuronale Netzwerke (PINNs) untersucht., eine Art neuronales Netzwerk, das nicht nur Daten anpasst, sondern auch die zugrunde liegende Differentialgleichung berücksichtigt. PINNs sind ein leistungsfähiges Werkzeug zur Modellierung komplexer Systeme.
  4. Wir haben alles in Python gemacht.Verwenden Sie PyTorch und eine saubere Benchmark-Datenbank, mit der Sie Parameter optimieren, synthetische Daten generieren und Ihre eigenen PINNs trainieren können, um die Black-Scholes-Gleichung zu lösen.
  5. Wir haben die Ergebnisse fotografiert. Wir haben gesehen, wie das Netzwerk gelernt hat, nicht nur die verrauschten Daten, sondern auch das von der Black-Scholes-Gleichung erwartete Verhalten zuzuordnen.

Ich weiß, dass es nicht leicht ist, das alles auf einmal zu begreifen. In manchen Bereichen war ich gezwungen, mich kurz zu fassen, vielleicht sogar kürzer als nötig. Wenn Sie die Dinge jedoch klarer sehen möchten, schauen Sie sich noch einmal Folgendes an: GitHub-Ordner. Auch wenn Sie sich nicht für Software interessieren, gibt es eine übersichtliche README.md-Datei und eine einfache Vorlage. Beispiel/BlackScholesModel.ipynb Das Projekt wird Schritt für Schritt erklärt.

 

Kommentarfunktion ist geschlossen.