Quando la fisica incontra la finanza: usare l'intelligenza artificiale per risolvere l'equazione di Black-Scholes

Ecco come utilizzare le reti neurali basate sulla fisica per risolvere modelli finanziari utilizzando Python.

Disclaimer : Questo non è un consiglio finanziario. Ho un dottorato di ricerca in ingegneria aerospaziale con una forte specializzazione in apprendimento automatico; non sono un consulente finanziario. Questo articolo ha il solo scopo di dimostrare la potenza delle reti neurali basate sulla fisica (PINN) in un contesto finanziario.

Quando avevo sedici anni, mi sono innamorato della fisica. Il motivo era semplice ma potente: credevo che la fisica fosse giusta.

Non ho mai commesso un errore in un esercizio perché la velocità della luce è cambiata da un giorno all'altro, o perché e x poteva improvvisamente diventare negativo. Ogni volta che leggevo un articolo di fisica e pensavo: "Questo non mi sembra avere senso", si scopriva che ero io a non aver capito.

Pertanto, la fisica è sempre equa e, per questo motivo, è sempre perfetta . La fisica dimostra questa perfezione ed equità attraverso il suo insieme di regole, note come equazioni differenziali.

L'equazione differenziale più semplice che conosco è questa:

È molto semplice: partiamo da qui, x₀ = 0, al tempo t=0, e poi ci muoviamo a una velocità costante di 5 m/s. Questo significa che dopo un secondo siamo a 5 metri (o miglia, se preferite) dal punto di partenza; dopo due secondi siamo a 10 metri dal punto di partenza; dopo 43128 secondi... credo che abbiate capito.

Come dicevamo, è scolpito nella pietra: perfetto, perfetto e indiscutibile. Tuttavia, immaginate questo nella vita reale. Immaginate di fare una passeggiata o di guidare un'auto. Anche se fate del vostro meglio per raggiungere una velocità prefissata, non sarete mai in grado di mantenerla costantemente. La vostra mente correrà a mille a tratti; potreste distrarvi, potreste fermarvi ai semafori rossi, e molto probabilmente una combinazione di questi fattori. Pertanto, la semplice equazione differenziale di cui abbiamo parlato prima potrebbe non essere sufficiente. Quello che possiamo fare è provare a prevedere la vostra posizione nell'equazione differenziale, ma con l'aiuto dell'intelligenza artificiale . Questo concetto è fondamentale nella modellazione di sistemi complessi.

Questa idea viene applicata nelle reti neurali informate dalla fisica (PINN). Le descriveremo più dettagliatamente in seguito, ma il concetto di base è che cerchiamo di far corrispondere i dati con ciò che sappiamo dall'equazione differenziale che descrive il fenomeno. Questo significa che forziamo la nostra soluzione a soddisfare, in generale, ciò che ci aspettiamo dalla fisica. So che può sembrare magia nera, ma vi prometto che diventerà molto più chiaro nel corso di questo articolo.

Ora, la grande domanda:

 

Cosa c'entra la finanza con la fisica e le reti neurali basate sulla fisica?

Ebbene, si scopre che le equazioni differenziali non sono utili solo per chi è interessato alle leggi dell'universo naturale; possono essere utili anche nei modelli finanziari . Ad esempio, il modello di Black-Scholes utilizza un'equazione differenziale per determinare il prezzo di un'opzione call, con determinate ipotesi rigorose, al fine di ottenere un portafoglio privo di rischio.

Lo scopo di questa introduzione molto complessa era duplice:

  • Confondetevi un po', così potrete continuare a leggere :)
  • Siate abbastanza curiosi da scoprire dove sta andando tutto questo.

Spero di esserci riuscito 😁. In tal caso, il resto dell'articolo seguirà questi passaggi:

  1. Ne discuteremo Modello Black-Scholes, le sue ipotesi e la sua equazione differenziale
  2. Ne parleremo Reti neurali basate sulla fisica (PINN), da dove viene e perché è utile
  3. Svilupperemo il nostro algoritmo che addestra PINN su Black-Scholes utilizzando Python e Torcia e OOP.
  4. Mostreremo i risultati del nostro algoritmo.

Sono emozionato! Al laboratorio! 🧪

1. Modello Black-Scholes: uno sguardo approfondito

 

Se siete interessati a leggere il documento originale sul modello Black-Scholes, potete trovarlo qui . Vale sicuramente la pena leggerlo 🙂

Bene, ora dobbiamo capire il mondo della finanza in cui ci troviamo, quali sono le variabili e quali sono le regole che lo governano. Comprendere i fondamenti della finanza e la sua relazione con il modello Black-Scholes è fondamentale.

Innanzitutto, nel campo della finanza esiste un potente strumento chiamato opzione call . Un'opzione call ti dà il diritto (ma non l'obbligo) di acquistare un'azione a un prezzo specifico in futuro (diciamo tra un anno), che viene chiamato prezzo di esercizio.

Ora, pensiamoci un attimo, va bene? Supponiamo che oggi il prezzo delle azioni sia di 100 $. Supponiamo anche di possedere un'opzione call con prezzo di esercizio di 100 $. Supponiamo ora che entro un anno il prezzo delle azioni salga a 150 dollari. È incredibile! Possiamo usare questa opzione call per acquistare le azioni e poi rivenderle immediatamente! Abbiamo appena realizzato un profitto di $ 150 - $ 100 = $ 50. D'altro canto, se il prezzo delle azioni scende a 80 dollari entro un anno, non potremo farlo. In realtà, è meglio non esercitare affatto il nostro diritto di acquisto, per non perdere soldi.

Quindi, a pensarci bene, l'idea di comprare un'azione e vendere un'opzione sembra perfettamente bilanciata . Voglio dire che la casualità del prezzo di un'azione (il fatto che salga e scenda) può essere effettivamente mitigata detenendo il giusto numero di opzioni. Questa operazione si chiama delta hedging ed è una strategia fondamentale di gestione del rischio.

Sulla base di una serie di ipotesi, possiamo ricavare un prezzo equo per le opzioni al fine di ottenere un portafoglio privo di rischio . Questo concetto è fondamentale per il modello di Black-Scholes.

Non voglio annoiarvi con tutti i dettagli della derivazione (francamente, non è difficile da seguire nel documento originale), ma l'equazione differenziale per il portafoglio privo di rischio è questa:

Dove:

  • C è il prezzo dell'opzione al tempo t
  • sigma È la volatilità del titolo.
  • r È il tasso privo di rischi.
  • t è il tempo (con t=0 adesso e T alla data di fine)
  • S è il prezzo attuale delle azioni

Da questa equazione possiamo ricavare il prezzo equo di un'opzione call per un portafoglio privo di rischi. L'equazione è chiusa e analitica e si presenta così:

con:

dove N(x) è la funzione di distribuzione cumulativa (CDF) della distribuzione normale standard, K è il prezzo di esercizio e T è la data di scadenza.

Ad esempio, questo è un grafico del prezzo delle azioni (x) rispetto all'opzione call (y) , secondo il modello Black-Scholes.

Tutto ciò sembra fantastico, ma cosa c'entra con la fisica e la PINN? L'equazione sembra essere analitica, quindi perché PINN? Perché l'intelligenza artificiale? Perché sto leggendo questo? La risposta è qui sotto 👇:

 

2. Reti neurali basate sulla fisica

 

Se siete interessati alle reti neurali basate sulla fisica (PINN), potete consultare l'articolo originale qui . Vale la pena leggerlo. 🙂

L'equazione sopra riportata è analitica , ma rappresenta comunque un prezzo equo in uno scenario ideale. Cosa succederebbe se per un attimo ignorassimo questo aspetto e provassimo a stimare il prezzo dell'opzione basandoci sul prezzo del titolo e sul tempo? Ad esempio, potremmo utilizzare una rete neurale feedforward e addestrarla tramite la retropropagazione. Questo approccio costituisce la base per l'utilizzo delle reti neurali nella valutazione delle opzioni.

In questo meccanismo di addestramento, minimizziamo l'errore:

L = |Estimated C - Real C|:

Questo è un buon metodo ed è l'approccio più semplice che si possa adottare con le reti neurali. Il problema qui è che ignoriamo completamente l'equazione di Black-Scholes. Quindi, esiste un altro modo? Possiamo unirli?

Certamente, possiamo farlo se impostiamo l'errore come segue:

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

dove PDE(C,S,t) è:

Dovrebbe essere il più vicino possibile a 0:

Ma la domanda rimane. Perché questa è “migliore” della semplice equazione Black-Scholes? Perché non utilizziamo semplicemente l'equazione differenziale? Beh, perché a volte nella vita risolvere un'equazione differenziale non garantisce di trovare la soluzione "vera". Di solito la fisica approssima le cose, e lo fa in un modo che può creare una differenza tra ciò che ci aspettiamo e ciò che vediamo. Ecco perché le reti neurali basate sulla fisica (PINN) sono uno strumento così straordinario e meraviglioso: si cerca di far corrispondere la fisica, ma si è rigorosi sul fatto che i risultati debbano corrispondere a ciò che si "vede" dal proprio set di dati. Ciò che contraddistingue questo approccio è l'integrazione tra modello fisico e dati sperimentali.

Nel nostro caso, potrebbe essere che per ottenere un portafoglio privo di rischi, scopriamo che il modello teorico di Black-Scholes non corrisponde perfettamente ai dati di mercato rumorosi, distorti o incompleti che osserviamo. Forse la volatilità non è costante. Forse il mercato non è efficiente. Forse i presupposti su cui si basa l'equazione non reggono. È qui che un approccio come PINN può rivelarsi utile. Non solo troviamo una soluzione che soddisfa l'equazione Black-Scholes, ma ci "fidiamo" anche di ciò che vediamo dai dati. Ciò consente di avere un modello più flessibile e adattabile alle reali condizioni di mercato.

Ok, basta con la teoria. Cominciamo a programmare. 👨‍💻

 

3. Applicazione pratica utilizzando Python

Il codice completo, insieme a un ottimo file README.md, un eccellente foglio di calcolo e un codice di benchmark molto chiaro, è disponibile qui . Questo codice è specificamente progettato per risolvere l'equazione di Black-Scholes utilizzando reti neurali PINN, una tecnica avanzata nel campo della modellazione finanziaria.

Nota: questa parte sarà un po' impegnativa (molto codice) e se non siete interessati al software potete passare direttamente al capitolo successivo. Vi mostrerò i risultati in modo più semplice :)

Grazie mille per essere arrivato fin qui ❤️
Vediamo come possiamo implementarlo. Vediamo ora come applicare questa tecnica alla risoluzione delle equazioni di Black-Scholes, concentrandoci sugli aspetti pratici e dettagliati.

3.1 File Config.json

L'intero codice può essere eseguito utilizzando un file di configurazione molto semplice, che ho chiamato config.json.

Puoi posizionarlo dove vuoi, come vedremo più avanti.

Questo file è essenziale perché definisce tutti i parametri che regolano la simulazione, la generazione dei dati e l'addestramento del modello. Lasciatemi spiegare brevemente cosa rappresenta ogni valore:

  • K: Prezzo di esecuzione – Il prezzo al quale l’opzione ti dà il diritto di acquistare l’azione in futuro.
  • T: Tempo fino alla data di scadenza, in anni. permesso T = 1.0 Ciò significa che l'opzione scade tra un'unità (ad esempio, un anno) da adesso.
  • r: tasso di interesse privo di rischio Utilizzato per attualizzare i valori futuri. Questo è il tasso di interesse che specifichiamo nella nostra simulazione.
  • sigma: لب Il titolo azionario, che determina quanto è difficile prevederne il prezzo o quanto è "rischioso". Anche questo è un parametro di simulazione.
  • N_data: numero punti dati sintetici che vogliamo creare per la formazione. Questo determinerà anche la dimensione del modello.
  • min_S e max_S: intervallo di prezzo delle azioni Che vogliamo campionare quando creiamo dati sintetici. Il nostro prezzo minimo e massimo delle azioni.
  • bias: Offset opzionale aggiunto ai prezzi delle opzioni, per simulare uno spostamento sistematico nei dati. Ciò viene fatto per creare un contrasto tra il mondo reale e i dati Black-Scholes.
  • noise_variance: livello di rumore Aggiunto ai prezzi delle opzioni per simulare la misurazione o il rumore di mercato. Questo parametro è stato aggiunto per lo stesso motivo di prima.
  • epochs: numero ripetizioni su cui verrà addestrato il modello.
  • lr: tasso di apprendimento Per il benefattore. Controlla la velocità con cui il modello viene aggiornato durante l'addestramento.
  • log_interval:Il numero di volte (in termini di età) che vogliamo Stampa i record Per monitorare i progressi dell'allenamento.

Ciascuno di questi parametri gioca un ruolo specifico: alcuni modellano il mondo finanziario che simuliamo, mentre altri controllano il modo in cui la nostra rete neurale interagisce con quel mondo. Piccole modifiche possono dare origine a comportamenti completamente diversi, rendendo questo file tanto potente quanto sensibile. La modifica dei valori di questo file JSON cambierà radicalmente l'output del codice.

3.2 main.py (file main.py)

Vediamo ora come il resto del codice utilizza questa configurazione nella pratica.

La parte principale del nostro codice proviene da main.py , per addestrare la rete PINN utilizzando Torch, e da black_scholes.py.

Questo è il file main.py:

Quindi, quello che puoi fare è:

  1. Crea il tuo file config.json
  2. eseguire il comando python main.py --config config.json

Il file main.py è utilizzato da molti altri file.

3.3 black_scholes.py e i suoi helper

L'applicazione del modello Black-Scholes si trova all'interno del file black_scholes.py :

Questo file può essere utilizzato per creare, addestrare, esportare e prevedere il modello.
La funzione utilizza anche alcuni file di supporto, quali data.py, loss.py e model.py.
All'interno del file è presente un modello Torch. modello.py:

Il costruttore dei dati (si consideri il file di configurazione) si trova all'interno del file data.py :

La funzione di perdita integrata che include il valore di asimmetria è loss.py. Questa funzione è essenziale per migliorare la precisione del modello.

4. Risultati

Bene, quando eseguiamo main.py, la nostra rete neurale feedforward (FFNN) viene addestrata e otteniamo quanto segue:

Come si può vedere, l'errore del modello non è esattamente 0, ma l'equazione PDE del modello è molto più piccola dei dati. Ciò significa che il modello (naturalmente) forza fortemente le nostre previsioni per soddisfare le equazioni differenziali. È esattamente quello che abbiamo detto prima: miglioriamo le prestazioni in termini di dati in nostro possesso e in termini del modello Black-Scholes.

Possiamo osservare, qualitativamente, un'elevata corrispondenza tra il set di dati reale rumoroso e distorto (abbastanza realistico) e la rete PINN.

Questi sono i risultati quando t = 0 e il prezzo delle azioni cambia con l'opzione call a un valore fisso di t. Davvero interessante, non è vero? Ma non è ancora finita! È possibile esplorare i risultati utilizzando il codice sopra riportato in due modi:

  1. Giocando con molti parametri situato in config.json
  2. Visualizza le previsioni su t> 0

Ti ascolto! :)

5. Conclusioni

Grazie mille per essere venuto qui. Davvero, è stato un lungo viaggio 😅
Ecco cosa abbiamo trattato in questo articolo:

  1. Abbiamo iniziato con la fisica.e come le sue leggi, scritte come equazioni differenziali, siano giuste, belle e (solitamente) prevedibili.
  2. Siamo passati alla finanzaE abbiamo incontrato il modello Black-Scholes, un'equazione differenziale che mira a determinare il prezzo delle opzioni in modo privo di rischi.
  3. Abbiamo esplorato le reti neurali basate sulla fisica (PINN)., un tipo di rete neurale che non si limita ad adattare i dati, ma rispetta anche l'equazione differenziale sottostante. Le PINN sono uno strumento potente per la modellazione di sistemi complessi.
  4. Abbiamo fatto tutto in Python.Utilizzando PyTorch e un database di benchmark pulito, è possibile modificare i parametri, generare dati sintetici e addestrare i propri PINN per risolvere l'equazione di Black-Scholes.
  5. Abbiamo fotografato i risultati. Abbiamo visto come la rete ha imparato ad adattare non solo i dati rumorosi, ma anche il comportamento previsto dall'equazione di Black-Scholes.

So che assimilare tutto questo in una volta non è facile. In alcuni punti, sono stato necessariamente conciso, forse anche più del necessario. Tuttavia, se desiderate una comprensione più chiara, vi consiglio di dare un'occhiata alla cartella GitHub. Anche se non siete interessati al software, troverete un file README.md chiaro e un semplice esempio (example/BlackScholesModel.ipynb) che spiega il progetto passo dopo passo.

 

I commenti sono chiusi.