Wanneer natuurkunde en financiën elkaar ontmoeten: AI gebruiken om de Black-Scholes-vergelijking op te lossen
Hier leest u hoe u met behulp van natuurkunde-gestuurde neurale netwerken financiële modellen kunt oplossen met behulp van Python.
VrijwaringDit is geen financieel advies. Ik heb een doctoraat in de lucht- en ruimtevaarttechniek met een sterke focus op machinaal leren: ik ik ben niet Financieel adviseur. Dit artikel is uitsluitend bedoeld om de kracht van op natuurkunde gebaseerde neurale netwerken (PINN's) in een financiële context te demonstreren.
Toen ik 16 was, werd ik verliefd op natuurkunde. De reden was simpel maar krachtig: ik geloofde dat de natuurkunde eerlijk.
Ik heb nog nooit een fout gemaakt bij een oefening omdat de lichtsnelheid 's nachts veranderde, of omdat er plotseling iets fout kon gaan.x Negatief Elke keer dat ik een natuurkundeartikel las en dacht: "Dit slaat nergens op," Het blijkt dat Ik was degene die het niet begreep.
Dus, de natuurkunde is altijd eerlijk, en daarom is het altijd eerlijk. مثالية. De natuurkunde toont deze perfectie en rechtvaardigheid door middel van haar reeks regels, bekend als differentiaalvergelijkingen.

De eenvoudigste differentiaalvergelijking die ik ken is deze:

Heel eenvoudig: we beginnen hier, x0=0, op tijdstip t=0, dan bewegen we met een constante snelheid van 5 m/s. Dit betekent dat we na 5 seconde 10 meter (of mijl, als u dat liever heeft) van de oorsprong verwijderd zijn; Na 43128 seconden zijn we XNUMX meter verwijderd van de oorsprong; Na XNUMX seconden... denk ik dat je het snapt.
Zoals wij zeggen, het staat in steen gebeiteld: perfect, volmaakt en boven alle twijfel verheven. Maar stel je dit eens voor in het echte leven. Stel je voor dat je aan het wandelen of rijden bent. Ook al doe je je best om een bepaalde snelheid te bereiken, je zult die nooit constant kunnen houden. Op bepaalde punten zal je geest racen; Het kan zijn dat u afgeleid raakt, dat u voor een rood stoplicht moet stoppen, of dat er sprake is van een combinatie van bovenstaande. Het kan dus zijn dat de eenvoudige differentiaalvergelijking die we eerder noemden, niet voldoende is. Wat we kunnen doen is proberen uw positie te voorspellen op basis van de differentiaalvergelijking, Maar met hulp Kunstmatige intelligentie. Dit concept is erg belangrijk bij het modelleren van complexe systemen.
Dit idee wordt toegepast in Fysica-geïnformeerde neurale netwerken (PIN). We zullen het later in detail beschrijven, maar het idee is dat we proberen من De gegevens en wat we weten uit de differentiaalvergelijking die het fenomeen beschrijft. Dit betekent dat we onze oplossing zodanig afdwingen dat deze in grote lijnen voldoet aan wat we vanuit de natuurkunde verwachten. Ik weet dat dit als zwarte magie klinkt, maar ik beloof dat het in de loop van dit artikel duidelijker wordt.
En nu de grote vraag:
Wat hebben financiën te maken met natuurkunde en op natuurkunde gebaseerde neurale netwerken?
Het blijkt dat differentiaalvergelijkingen niet alleen nuttig zijn voor degenen die geïnteresseerd zijn in de wetten van het natuurlijke universum, maar dat ze ook nuttig kunnen zijn in Financiële modellen. Het model gebruikt bijvoorbeeld Zwart-Scholes Een differentiaalvergelijking voor het bepalen van de prijs van een calloptie, met bepaalde strikte aannames, om Risicovrije portefeuille.
Het doel van deze zeer complexe inleiding was tweeledig:
- Ik verwar je een beetje, zodat je verder kunt lezen :)
- Wees nieuwsgierig genoeg om te zien waar dit allemaal naartoe gaat.
Ik hoop dat het gelukt is 😁. Als u dat doet, zal de rest van het artikel als volgt verlopen:
- Wij zullen bespreken Black-Scholes-model, de aannames ervan en de differentiaalvergelijking
- We zullen het hebben over Op natuurkunde gebaseerde neurale netwerken (PINN's), waar het vandaan komt en waarom het nuttig is
- We zullen ons eigen algoritme ontwikkelen dat PINN traint op Black-Scholes met behulp van Python و Fakkel و OOP.
- We laten de resultaten van ons algoritme zien.
Ik ben opgewonden! Naar het lab! 🧪
1. Het Black-Scholes-model: een diepgaande blik
Als u geïnteresseerd bent in het lezen van het originele onderzoeksartikel over het Black-Scholes-model, kunt u het hier vinden. hier. Zeker de moeite waard om te lezen :)
Oké, nu moeten we de wereld begrijpen. التمويل Waar we zijn, wat zijn de variabelen en welke wetten bepalen dit? Het is van cruciaal belang om de basisbeginselen van financiën en hun relatie met de Black-Scholes-theorie te begrijpen.
Ten eerste is er in de financiële wereld een krachtig instrument genaamd Een optie Call-optie. Met een calloptie hebt u het recht (maar bent u niet verplicht) om in de toekomst (bijvoorbeeld over een jaar) een aandeel te kopen tegen een bepaalde prijs. Deze prijs wordt de uitoefenprijs genoemd. prijs).
Laten we daar eens even over nadenken. Stel dat de aandelenkoers vandaag $ 100 bedraagt. Laten we er ook vanuit gaan dat we een calloptie bezitten met een uitoefenprijs van $100. Stel je nu voor dat de aandelenkoers binnen een jaar stijgt naar $ 150. Dat is geweldig! We kunnen deze calloptie gebruiken om de aandelen te kopen en ze vervolgens onmiddellijk weer te verkopen! We hebben zojuist een winst gemaakt van $150 - $100 = $50. Als de aandelenkoers daarentegen binnen een jaar daalt tot $ 80,-, dan kunnen we dat niet doen. Eigenlijk is het beter om helemaal geen gebruik te maken van ons recht op aankoop, om geen geld te verliezen.
Dus nu we erover nadenken, is het idee: een aandeel kopen و optieverkoop kijk Volledig geïntegreerd. Wat ik bedoel is dat de willekeur van een aandelenkoers (het feit dat deze omhoog en omlaag gaat) feitelijk het verlichten Door het juiste aantal opties te behouden. Dit is wat men noemt Delta-afdekking. Het is een fundamentele strategie in risicomanagement.
Op basis van een reeks aannames kunnen we afleiden eerlijke optieprijs Om een portemonnee te krijgen Risicoloos. Dit concept is fundamenteel voor het Black-Scholes-model.
Ik wil u niet vervelen met alle details van de afleiding (het is eerlijk gezegd niet moeilijk om het originele artikel te volgen), maar de differentiaalvergelijking voor de risicoloze portefeuille ziet er als volgt uit:

waar:
Cis de optieprijs op tijdstip tsigmaHet is de volatiliteit van het aandeel.rHet is het risicoloze tarief.tis tijd (met t=0 nu en T op de einddatum)Sis de huidige aandelenkoers
Uit deze vergelijking kunnen we de reële prijs van een calloptie voor een risicoloze portefeuille afleiden. De vergelijking is gesloten en analytisch en ziet er als volgt uit:

met:

waarbij N(x) de cumulatieve verdelingsfunctie (CDF) is van de standaardnormale verdeling, K de uitoefenprijs en T de vervaldatum.
Dit is bijvoorbeeld een grafiek. Aandelenkoers (x) Tegenover Calloptie (y), volgens het Black-Scholes-model.

Dat klinkt allemaal geweldig, maar wat heeft dit met natuurkunde en PINN te maken? De vergelijking lijkt analytisch, dus waarom PINN? Waarom kunstmatige intelligentie? Waarom lees ik dit eigenlijk? Het antwoord staat hieronder 👇:
2. Fysica-geïnformeerde neurale netwerken
Als u geïnteresseerd bent in Physics Informed Neural Networks (PINNs), kunt u het originele artikel bekijken. hier. Opnieuw de moeite waard om te lezen. :)
Nu, de bovenstaande vergelijking AnalytischMaar nogmaals, dit is de vergelijking voor een eerlijke prijs in een ideaal scenario. Wat gebeurt er als we dit even negeren en proberen de optieprijs te raden op basis van de aandelenkoers en de tijd? We kunnen bijvoorbeeld een Feed Forward Neural Network gebruiken en dit trainen via backpropagation. Deze aanpak vormt de basis voor het gebruik van neurale netwerken bij de prijsbepaling van opties.
Met dit trainingsmechanisme minimaliseren we de fout:
L = |Estimated C - Real C|:

Dat is goed en het is de eenvoudigste aanpak die je met een neuraal netwerk kunt gebruiken. Het probleem hier is dat we de Black-Scholes-vergelijking volledig negeren. Is er dan een andere manier? Kunnen we ze samenvoegen?
Dat kan natuurlijk wel, als we de fout instellen op:
L = |Estimated C - Real C|+ PDE(C,S,t)
waarbij PDE(C,S,t) is:

Deze waarde moet zo dicht mogelijk bij 0 liggen:

Maar de vraag blijft. Waarom is dit ‘beter’ dan de eenvoudige Black-Scholes-vergelijking? Waarom gebruiken we niet gewoon de differentiaalvergelijking? Omdat het oplossen van een differentiaalvergelijking soms niet garandeert dat je de "ware" oplossing krijgt. De natuurkunde benadert zaken doorgaans, en doet dat op een manier die een verschil kan creëren tussen wat we verwachten en wat we zien. Dit is de reden waarom natuurkunde-geïnformeerde neurale netwerken (PINN's) zo'n verbazingwekkend en geweldig hulpmiddel zijn: je probeert de natuurkunde te evenaren, maar je bent strikt in het feit dat de resultaten moeten overeenkomen met wat je 'ziet' in je dataset. Deze integratie van het fysieke model en experimentele gegevens is wat deze aanpak uniek maakt.
In ons geval kan het zo zijn dat we, om een risicoloze portefeuille te verkrijgen, tot de conclusie komen dat het theoretische Black-Scholesmodel niet perfect aansluit bij de rommelige, bevooroordeelde of onvolledige marktgegevens die we waarnemen. Misschien is volatiliteit niet constant. Misschien is de markt niet efficiënt. Misschien kloppen de aannames achter de vergelijking niet. Hierbij kan een aanpak als PINN van pas komen. We vinden niet alleen een oplossing die voldoet aan de Black-Scholes-vergelijking, maar we ‘vertrouwen’ ook wat we uit de data zien. Dit zorgt voor een model dat flexibeler is en beter kan worden aangepast aan de werkelijke marktomstandigheden.
Oké, genoeg theorie. Laten we programmeren. 👨💻
3. Praktische toepassing met Python
U kunt de volledige code vinden, samen met een geweldig README.md-bestand, een uitstekend notitieboekje en superduidelijke boilerplate-code. hier. Deze code is speciaal ontworpen om de Black-Scholes-vergelijking op te lossen met behulp van PINN-neurale netwerken, een geavanceerde methode op het gebied van financiële modellering.
Let op: dit onderdeel is vrij intensief (veel code). Als u niet geïnteresseerd bent in software, kunt u gerust doorgaan naar het volgende hoofdstuk. Ik zal de resultaten op een eenvoudigere manier laten zien :)
Heel erg bedankt dat je het tot hier hebt gehaald ❤️
Laten we eens kijken hoe we dit kunnen implementeren. Laten we nu eens kijken hoe we deze techniek kunnen toepassen op het oplossen van Black-Scholes-vergelijkingen, waarbij we ons richten op de praktische en gedetailleerde aspecten.
3.1 Config.json-bestand
De volledige code kan worden uitgevoerd met behulp van een heel eenvoudig configuratiebestand, dat ik heb genoemd config.json.
U kunt het plaatsen waar u maar wilt, zoals we later zullen zien.
Dit bestand is essentieel omdat het alle parameters definieert die onze simulatie, datageneratie en modeltraining bepalen. Ik zal kort uitleggen wat elke waarde vertegenwoordigt:
K: Uitvoeringsprijs – De prijs waartegen de optie u het recht geeft om de aandelen in de toekomst te kopen.T: Tijd tot de vervaldatum, in jaren. toestemmingT = 1.0Dit betekent dat de optie over één eenheid (bijvoorbeeld één jaar) afloopt.r: risicoloze rente Wordt gebruikt om toekomstige waarden te disconteren. Dit is de rentevoet die we in onze simulatie specificeren.sigma: fluctuatie Het aandeel, dat bepaalt hoe moeilijk het is om de koers van het aandeel te voorspellen of hoe "risicovol" het is. Nogmaals, dit is een simulatieparameter.N_data: nummer synthetische datapunten die we willen creëren voor training. Dit bepaalt ook de grootte van het patroon.min_Sوmax_S: Aandelenkoersbereik Welke we willen bemonsteren bij het maken van synthetische data. Onze minimale en maximale aandelenprijs.bias: Optionele compensatie toegevoegd aan optieprijzen, om een systematische verschuiving in de gegevens te simuleren. Dit wordt gedaan om een contrast te creëren tussen de echte wereld en de Black-Scholes-gegevens.noise_variance: geluidsniveau Toegevoegd aan optieprijzen om metingen of marktruis te simuleren. Deze parameter is om dezelfde reden toegevoegd als hiervoor.epochs: nummer herhalingen waarop het model wordt getraind.lr: leertempo Voor de weldoener. Hiermee bepaalt u hoe snel het model tijdens de training wordt bijgewerkt.log_interval:Het aantal keren (in termen van leeftijden) dat we willen Afdrukken van records Om de voortgang van de training te monitoren.
Elk van deze parameters vervult een specifieke rol. Sommige parameters bepalen de financiële wereld die we simuleren, terwijl andere bepalen hoe ons neurale netwerk met die wereld samenwerkt. Kleine aanpassingen kunnen hier tot een compleet ander gedrag leiden, waardoor dit bestand zowel krachtig als gevoelig wordt. Wanneer u de waarden van dit JSON-bestand wijzigt, zal de uitvoer van uw code radicaal veranderen.
3.2 main.py (main.py-bestand)
Laten we nu eens kijken hoe de rest van de code deze configuratie in de praktijk gebruikt.
Het grootste deel van onze code komt van hoofd.pyOm uw PINN-netwerk te trainen met Torch, zwarte_scholespy.
Dit is het main.py-bestand:
Wat u dus kunt doen, is:
- Maak uw eigen config.json-bestand
- opdracht uitvoeren
python main.py --config config.json
Het bestand main.py wordt door veel andere bestanden gebruikt.
3.3 black_scholes.py en zijn plug-ins
De Black-Scholes-modeltoepassing bevindt zich in het bestand. zwarte_scholes.py:
Dit bestand kan worden gebruikt om het model te bouwen, trainen, exporteren en voorspellen.
De functie maakt ook gebruik van een aantal hulpbestanden, zoals data.py, loss.py en model.py.
Er staat een Torch-sjabloon in het bestand. model.py:
De gegevensgenerator (in termen van het configuratiebestand) bevindt zich in het bestand. gegevens.py:
De geïntegreerde verliesfunctie die de scheefheidswaarde omvat is verlies.py. Deze functie is nodig om de nauwkeurigheid van het model te verbeteren.
4. Resultaten
Wanneer we main.py uitvoeren, wordt ons feedforward neurale netwerk (FFNN) getraind en krijgen we het volgende:

Zoals u kunt zien, is de modelfout niet precies 0, maar de PDE-vergelijking van het model is veel kleiner dan de data. Dit betekent dat het model onze voorspellingen (op natuurlijke wijze) sterk dwingt om te voldoen aan de differentiaalvergelijkingen. Dat is precies wat we al eerder zeiden: we verbeteren de prestaties op basis van de gegevens die we hebben en op basis van het Black-Scholes-model.
Kwalitatief kunnen we een hoge match waarnemen tussen de ruisige en bevooroordeelde (redelijk realistische) dataset uit de echte wereld en het PINN-netwerk.

Dit zijn de resultaten als t = 0 en de aandelenkoers verandert met de calloptie op een vaste waarde van t. Best wel gaaf, toch? Maar het is nog niet voorbij! U kunt de resultaten met behulp van de bovenstaande code op twee manieren bekijken:
- Spelen met velen parameters bevindt zich in config.json
- Bekijk voorspellingen op t> 0
Ik luister! :)
5. Conclusies
Hartelijk dank dat u hier bent gekomen. Echt, dit was een lange reis 😅
Dit is wat we in dit artikel hebben behandeld:
- We begonnen met natuurkunde.en hoe de wetten ervan, opgeschreven als differentiaalvergelijkingen, eerlijk, mooi en (meestal) voorspelbaar zijn.
- We zijn overgestapt naar financiënEn we ontmoetten het Black-Scholesmodel: een differentiaalvergelijking die erop gericht is opties op een risicoloze manier te prijzen.
- We onderzochten natuurkunde-geïnformeerde neurale netwerken (PINN's)., een type neuraal netwerk dat niet alleen gegevens aanpast, maar ook de onderliggende differentiaalvergelijking respecteert. PINN's zijn een krachtig hulpmiddel voor het modelleren van complexe systemen.
- We hebben alles in Python gedaan.Met behulp van PyTorch en een schone benchmarkdatabase kunt u parameters aanpassen, synthetische gegevens genereren en uw eigen PINN's trainen om de Black-Scholes-vergelijking op te lossen.
- Wij hebben de resultaten gefotografeerd. We zagen hoe het netwerk leerde om niet alleen de ruis in de data te verwerken, maar ook het gedrag dat verwacht werd op basis van de Black-Scholes-vergelijking.
Ik weet dat het niet gemakkelijk is om dit allemaal in één keer te verwerken. Op sommige gebieden was ik noodgedwongen kortaf, misschien wel korter dan nodig was. Als u de zaken echter wat duidelijker wilt bekijken, kijk dan nog eens naar: GitHub-map. Zelfs als u niet geïnteresseerd bent in software, is er een duidelijk README.md-bestand en een eenvoudige sjabloon. voorbeeld/BlackScholesModel.ipynb Het project wordt stap voor stap uitgelegd.
Reacties zijn gesloten.