POLITECNICO DI MILANO SCUOLA DI INGEGNERIA INDUSTRIALE E DELL’INFORMAZIONE CORSO DI LAUREA MAGISTRALE IN INGEGNERIA MATEMATICA
LA TRASFORMATA DI LAPLACE: UN METODO RAPIDO ED EFFICIENTE PER IL PRICING DI OPZIONI TESI DI LAUREA MAGISTRALE
Relatore: Prof. Daniele MARAZZINA
Candidato: Davide ALITI Matricola 770158
ANNO ACCADEMICO 2012-2013
Indice 1
Introduzione ..................................................................................... 1
2
Modelli finanziari .............................................................................. 6 1.1
Preliminari................................................................................................ 6
1.2
Processi di Lévy ..................................................................................... 14
1.3
Martingale, tempi di arresto e misure aleatorie ..................................... 18
1.4
Teoria dell’arbitraggio e completezza dei mercati .................................. 25
1.5
Processi di tipo Lévy esponenziale: teoria ed esempi ............................. 34 1.5.1 Modello di Black&Scholes ............................................................. 36 1.5.1 Modelli di tipo jump diffusion ....................................................... 37
3
La trasformata di Laplace............................................................... 41 2.1
Definizioni e proprietà della trasformata di Laplace ..................... 41
2.2
Inversione numerica della trasformata di Laplace ......................... 45
iii
Indice
2.3
Algoritmi unidimensionali per l’inversione della trasformata di Laplace ................................................................................................... 46 2.3.1 Algoritmo di Gaver-Stehfest .......................................................... 47 2.3.2 Algoritmo di Eulero ....................................................................... 48 2.3.2 Algoritmo di Talbot....................................................................... 50
4
Pricing di opzioni tramite trasformata di Laplace ......................... 51 3.1
Opzioni barriera ..................................................................................... 52 3.1.1 Preliminari ..................................................................................... 52 3.1.2 Un modello ibrido per il pricing delle opzioni barriera .................. 54 3.1.3 Pricing analitico di un’opzione barriera doppia con modello jump diffusion esponenziale doppio ............................................... 59
3.2
Opzioni americane .................................................................................. 65 3.2.1 Preliminari ..................................................................................... 66 3.2.2 Calcolo della curva di esercizio anticipato con la trasformata di Laplace................................................................... 68 3.2.3 Un metodo di randomizzazione per il calcolo del valore di un’opzione americana .................................................................... 78 3.2.4 Il metodo di randomizzazione “a pinza” per il calcolo del valore di un’opzione americana ..................................................... 91
3.3
Opzioni fractional lookback .................................................................... 93 3.3.1 Preliminari ..................................................................................... 93
iv
Indice
3.3.2 Calcolo del valore per un’opzione fractional lookback europea ed americana nel caso Black&Scholes .............................. 95 3.3.3 Pricing di un’opzione fractional lookback con sottostante jump diffusion .............................................................................. 109 5
Risultati numerici con algoritmi sequenziali ................................ 114 4.1
Opzioni barriera ................................................................................... 115 4.1.1 Pricing nel caso di modello di Black&Scholes ............................. 115 4.1.2 Pricing nel caso di modello di Kou .............................................. 118
4.2
Opzioni americane ................................................................................ 121 4.2.1 Pricing con algoritmo di randomizzazione ................................... 121 4.2.2 Pricing con algoritmo di randomizzazione “a pinza” ................... 123
4.3
Opzioni fractional lookback .................................................................. 125 4.3.1 Pricing di opzioni fractional lookback europee ed americane con sottostante Black&Scholes .................................................... 125 4.3.2 Pricing di opzioni fractional lookback europee con sottostante Kou ........................................................................... 129
6
Simulazioni numeriche parallele ................................................... 132 5.1
Introduzione al calcolo parallelo ........................................................... 133 5.1.1 Preliminari ................................................................................... 133 5.1.2 Disegno di algoritmi paralleli....................................................... 134 5.1.3 Introduzione all’architettura CUDA ............................................ 138 5.1.4 Matlab e il calcolo parallelo ......................................................... 139 v
Indice
5.2
Risultati delle simulazioni parallele ...................................................... 141 5.2.1 Parallelizzazione dell’algoritmo ibrido per il calcolo del prezzo delle opzioni barriera ........................................................ 141 5.2.1 Confronto dei risultati per gli altri algoritmi implementati ........ 144
7
Conclusioni ................................................................................... 146
A Codici Matlab sequenziali ............................................................. 148 A.1 Metodi basati sulla trasformata di Laplace .......................................... 148 A.1.1 Metodo ibrido per le opzioni barriera con sottostante che evolve con modello di Black&Scholes .......................................... 148 A.1.2
Metodo
analitico
per
opzioni
barriera
doppia
con
sottostante che evolve con modello doppio esponenziale di Kou .............................................................................................. 155 A.1.3 Metodo di randomizzazione per il calcolo del prezzo di opzioni americane con sottostante Black&Scholes ...................... 157 A.1.4 Metodo basato sulla trasformata di Laplace per il calcolo del valore di opzioni fractional lookback europee ed americane ..................................................................................... 160 A.1.5 Metodo basato sulla trasformata di Laplace per il calcolo del prezzo di opzioni fractional lookback europee con sottostante Kou ........................................................................... 166 A.2 Metodi alternativi................................................................................. 169 A.2.1 Metodi alternativi per le opzioni barriera ................................... 169 A.2.2 Metodi alternativi per le opzioni americane ............................... 178 vi
Indice
A.2.3 Metodi alternativi per le opzioni fractional lookback ................. 181 B Codici Matlab paralleli ................................................................. 186 B.1 Opzioni barriera ................................................................................... 186 B.1.1 Codice parallelo per CPU ........................................................... 186 B.1.2 Codice parallelo per GPU ........................................................... 188 B.1.3 Codice parallelo per CPU nel caso di sottostante Kou ............... 190 B.2 Opzioni fractional lookback .................................................................. 192 B.2.1 Codice parallelo per CPU per opzioni fractional lookback europee con sottostante B&S....................................................... 192 B.2.2 Codice parallelo per CPU per opzioni fractional lookback americane con sottostante B&S ................................................... 193 B.2.3 Codice parallelo per CPU per opzioni fractional lookback europee con sottostante Kou ....................................................... 195 8
Bibliografia ................................................................................... 197
9
Ringraziamenti ............................................................................. 203
vii
Indice delle figure Figura 3.1: Metodo Ibrido vs Metodo tradizionale alle Differenze Finite ................ 55 Figura
3.2: Funzione Densità di Probabilità della Distribuzione
Erlangiana per
=1,
n=1, 2, 4, 8, 16, 32................................................................... 79
Figura 3.3: Funzione Densità di Probabilità di
X (n 1)
.............................................. 88
Figura 4.1: Prezzo dei due tipi di opzione barriera al variare di S0 ....................... 118 Figura 4.2: Curva di esercizio anticipato (K = 100, T = 1, rf = 0.05) ................. 121 Figura 4.3: Grafici di un’opzione put americana per tre diversi valori di volatilità ................................................................................................................... 123 Figura 4.4: Curve di esercizio anticipato per un'opzione americana fractional lookback, caso call (a) e put (b), al variare del dividendo....................... 128 Figura 4.5: Confronto grafici di opzioni fractional lookback europee ed americane, per diversi valori di e ...................................................................... 129 Figura 5.1: Grafico dello speedup di un algoritmo al variare della quantità di codice parallelizzato p ........................................................................... 137 Figura 5.2: Tempi di calcolo al variare del numero dei nodi spaziali per l'algoritmo ibrido ...................................................................................................... 144
viii
Indice delle tabelle Tabella 3.1: Valori del termine non omogeneo F(S) nelle tre diverse regioni............ 71 Tabella 4.1: Confronto dei risultati ottenuti nel caso di opzioni barriera singola D&O con il metodo ibrido e altri metodi ....................................................... 115 Tabella 4.2: Confronto dei dei tempi di calcolo ottenuti con il metodo ibrido e con i metodi alternativi nel caso di opzioni barriera singola ........................ 117 Tabella 4.3: Confronto dei risultati ottenuti nel caso di opzioni doppia barriera knock-out con il metodo ibrido e altri metodi .............................................. 117 Tabella 4.4: Confronto dei dei tempi di calcolo ottenuti con il metodo ibrido e con i metodi alternativi nel caso di opzioni barriera doppia ......................... 118 Tabella 4.5: Confronto risultati nel caso di opzione call doppia barriera con sottostante Kou ................................................................................................... 119 Tabella 4.6: Confronto dei risultati e dei tempi di calcolo ottenuti con il metodo basato sulla trasformata di Laplace e con i metodi alternativi nel caso di opzioni barriera doppia (S0 = 100, K = 100, BL = 80, BU = 120, T = 1, rf = 0.05, d=0, = 0.2, 0.1, q+ = 0.5, =3) ..................................... 120 Tabella 4.7: Confronto dei prezzi ottenuti per un'opzione put americana con diversi metodi, con differenti S0 ........................................................................... 122 Tabella 4.8: Confronto dei risultati e dei tempi di calcolo ottenuti con il metodo basato sulla trasformata di Laplace e con i metodi alternativi nel caso di opzioni put americane .................................................................................... 123 ix
Indice delle tabelle
Tabella
4.9:
Confronto
dei
prezzi
ottenuti
con
l’algoritmo
di
randomizzazione nel caso moda e media, e con l’algoritmo a pinza nel caso media aritmetica e media geometrica, con errore rispetto al valore reale .................. 124 Tabella 4.10: Confronto tra i valori esatti e i valori calcolati con l'algoritmo che utilizza la trasformata di Laplace nel caso di opzioni fractional lookback europee di tipo call...................................................................... 126 Tabella 4.11: Confronto tra i valori esatti e i valori calcolati con l'algoritmo che utilizza la trasformata di Laplace nel caso di opzioni fractional lookback europee di tipo put...................................................................... 126 Tabella 4.12: Confronto dei risultati e dei tempi di calcolo ottenuti con il metodo basato sulla trasformata di Laplace e con il metodo Montecarlo per le opzioni call fractional lookback europee........................................................... 127 Tabella 4.13: Confronto dei risultati e dei tempi di calcolo ottenuti con il metodo basato sulla trasformata di Laplace e con il metodo Montecarlo per le opzioni put fractional lookback europee........................................................... 128 Tabella 4.14: Confronto risultati per opzioni fractional lookback con sottostante Kou, nel caso di algoritmo con trasformata di Laplace e metodo Montecarlo..................................................................................................... 130 Tabella 4.15: Confronto dei risultati e dei tempi di calcolo ottenuti con il metodo basato sulla trasformata di Laplace e con i metodi alternativi nel caso di opzioni put americane .................................................................................... 131 Tabella 5.1: Confronto dei tempi ottenuti dall’algoritmo ibrido per il calcolo del prezzo di opzioni barriera, nel caso di implementazione sequenziale e implementazione parallela su CPU e GPU........................................... 143 Tabella 5.2: Confronto dei tempi per gli algoritmi implementati nel Capitolo 4 in modo sequenziale e parallelo ................................................................ 145
x
Sommario La trasformata di Laplace è uno strumento molto potente, utilizzato spesso in fisica e ingegneria per lo studio dei segnali e la risoluzione di equazioni differenziali. Obiettivo del nostro lavoro è l’utilizzo della trasformata di Laplace nel pricing di opzioni. Con l’uso di metodi diversi che sfruttano questo strumento, calcoleremo il prezzo di opzioni barriera singola e doppia. opzioni americane e opzioni fractional lookback europee ed americane nello spazio della trasformata, e useremo quindi un algoritmo di inversione numerica per ricavare il prezzo nello spazio di partenza. Concentreremo la nostra attenzione su due modelli, il modello di Black&Scholes e il modello di Kou. Confronteremo poi i risultati ottenuti con quelli di altri metodi di pricing più diffusi, il metodo Montecarlo e il metodo alle differenze finite classico, in termini di accuratezza ed efficienza. Infine, grazie all’indipendenza delle soluzioni dai nodi di inversione, svilupperemo i codici anche per il calcolo parallelo, aumentando ulteriormente l’efficienza di questi metodi.
xi
Abstract Laplace transform is a very powerful tool, frequently used in physics ans engineering to study signals and to solve differtial equations. The aim of this work to use Laplace transform in option pricing. By adopting different methods, we will obtain the price of single and double barrier options, American options and American and European fractional lookback options in transform space, and we will use a numeric inversion algorithm to find the solution in the original space. We will focus on two different models, Black&Scholes model and Kou model. We will compare our results with those obtained with more popular pricing methods, Montecarlo method and classic finite difference method, studying accuracy and efficiency. Thanks to independene of solutions from inversion nodes, we will develop our sequential algorithms to operate in parallel, increasing the efficiency of these methods.
xii
Introduzione
Il mercato delle opzioni è molto cambiato da quando, nel 1973, Black e Scholes [8], e successivamente Merton [40], pubblicarono gli articoli che modificarono in modo radicale la visione della finanza e che tuttora influenzano in modo consistente ogni ricerca in questo campo. Al giorno d’oggi viene scambiata un’enorme quantità di opzioni: basti pensare che il Chicago Board Options Exchange (CBOE), ha raggiuto e superato per il quinto anno di seguito il miliardo di contratti scambiati 1 . Parallelamente all’esplosione del volume di questo mercato, sono stati creati strumenti finanziari sempre più complessi e variegati: dalle classiche opzioni europee, si è passati alle opzioni americane che permettono l’esercizio anticipato, alle opzioni path dependant come le opzioni barriera o lookback, alle opzioni scritte su più sottostanti e molte altre. I metodi matematici per il pricing di tali contratti si sono quindi evoluti, sia dal punto di vista dell’accuratezza, sia dal punto di vista dell’efficienza: gli algoritmi utilizzati non devono più essere solamente precisi, ma anche competitivi per poter fornire un valido vantaggio nell’ormai enorme mondo dello scambio di opzioni.
1
Fonte: CBOE (www.cboe.com)
1
Introduzione
Al giorno d’oggi esistono molte tecniche per il pricing: i metodi basati sulla simulazione Montecarlo [21], i metodi numerici basati sulla risoluzioni di equazioni differenziali o integro-differenziali [17], o quelli basati sulla trasformata di Fourier [15]. Obiettivo di questo lavoro di tesi è lo studio del pricing di opzioni di diverso tipo tramite lo strumento della trasformata di Laplace. Partiamo dalla formula di pricing neutrale al rischio t er (T t )EQ H|Ft dove H rappresenta il payoff dell’opzione che sarà pagato all’istante T, t (H ) il suo prezzo al tempo t ( 0 t T ), Q è la misura di probabilità neutrale al rischio e Ft è l’informazione disponibile fino al tempo t. Possiamo quindi usare la trasformata di Laplace per effettuare il pricing dell’opzione; l’utilizzo di questo strumento può infatti portare numerosi vantaggi: ad esempioesso permette di eliminare la discretizzazione temporale riconducendo il calcolo della soluzione ad una serie di ODE indipendenti. Per calcolare il prezzo nello spazio di partenza sarà infine necessario invertire numericamente i valori ottenuti nello spazio della trasformata. Per quanto riguarda il modello finanziario utilizzato, abbiamo deciso di sviluppare la ricerca sui modelli di tipo Lévy esponenziale. Il primo modello considerato è stato quello di Black&Scholes [8], che utilizza un moto Browniano geometrico per descrivere la dinamica del processo di prezzo rispetto alla misura di probabilità neutrale al rischio Q . Questo modello presenta tuttavia alcune limitazioni: per quanto sia un modello di
mercato completo, non riesce a riprodurre la distribuzione leptocurtica dei rendimenti e lo smile di volatilità, due elementi che si riscontrano nella realtà. Per questo motivo, il passaggio successivo è stato quello di considerare i modelli di tipo jump diffusion [17], che riescono in parte a catturare queste caratteristiche osservate empiricamente. Nel caso dei jump diffusion, l’evoluzione dei prezzi è data da un processo di diffusione che 2
Introduzione
presenta, ad intervalli casuali, salti positivi e negativi; la dinamica del logaritmo del processo di prezzo è modellizzata tramite un processo di Lévy esponenziale costituito da una parte gaussiana non nulla e da una parte di salto data da un processo di Poisson composto con numero di salti finito in ogni intervallo. Ci siamo concentrati sul modello di Kou [34], che utilizza una distribuzione esponenziale doppia asimmetrica per l’ampiezza dei salti. Un ulteriore aspetto che merita attenzione è il problema numerico dell’inversione della trasformata di Laplace. Tra i vari algoritmi a nostra disposizione, la scelta è ricaduta principalmente su due algoritmi. Il primo di essi è l’algoritmo di inversione di Eulero [1], che sfrutta le serie di Fourier con un’aggiunta della somma di Eulero per accelerare la convergenza della serie infinita finale. Questo algoritmo, infatti, presenta alcuni vantaggi in accuratezza e efficienza rispetto ad altri metodi di inversione: ha un’alta velocità di convergenza, genera errori limitati e non richiede un’elevata accuratezza numerica in termini di precisione del calcolatore (numero di cifre decimali significative). In alcuni casi abbiamo tuttavia preferito utilizzare l’algoritmo di inversione di Gaver-Stehfest [50], in quanto si basa su un’integrale nel dominio reale, evitando così alcuni problemi che si sarebbero presentati con l’uso dell’algoritmo di Eulero che richiede invece un dominio complesso. Per quanto riguarda la struttura della ricerca, useremo la trasformata di Laplace per lo studio di diversi tipi di opzioni. Inizieremo con un particolare tipo di opzioni path dependant, le opzioni barriera, per poi passare alle opzioni di tipo americane e per concludere alle opzioni fractional lookback europee ed americane. Utilizzeremo quindi i tipi di modello finanziario elencati precedentemente e grazie ai risultati disponibili in [3], [30] e [51] ed altri, implementeremo il calcolo della trasformata di Laplace del prezzo
di
ciascuna
di
queste
opzioni,
su
sottostante
di
Black&Scholes
e
successivamente di Kou. Implementeremo inoltre il metodo basato sulle simulazioni Montecarlo e il classico metodo alle differenze finite, per confrontare l’accuratezza dei risultati ottenuti e l’efficienza del calcolo. Le simulazioni numeriche effettuate 3
Introduzione
mostrano che il metodo di pricing basato sull’inversione della trasformata di Laplace è accurato quanto gli altri metodi considerati, e fornisce ottimi risultati in tempi significativamente inferiori. Per concludere, considereremo la possibilità di parallelizzare il calcolo della trasformata di Laplace e della sua inversa. Cercheremo di sviluppare i codici in modo compatibile con il calcolo multicore e con CUDA, una architettura hardware per l’elaborazione parallela creata da NVDIA®; all’interno dell’ambiente di sviluppo per CUDA sono presenti le estensioni dei linguaggi più diffusi, tra cui Matlab, e che permettono di scrivere applicazioni capaci di eseguire calcoli in parallelo sulle GPU delle schede grafiche NVIDIA®. Useremo quindi il calcolo parallelo per aumentare ulteriormente l’efficienza dei codici e ridurre i tempi di calcolo. La struttura della trattazione è quindi la seguente: ● Capitolo 1: Modelli finanziari. Presentiamo in questo primo capitolo i principali
risultati teorici che saranno alla base della ricerca. Ci occuperemo di teoria della misura e probabilità, di processi di Lévy, di teoria dell’arbitraggio e completezza dei mercati. Introdurremo i modelli di Black&Scholes e di Kou che useremo poi per il pricing delle opzioni ● Capitolo 2: La trasformata di Laplace. In questo capitolo descriviamo lo
strumento che useremo nei capitoli successivi per prezzare le opzioni: la trasformata di Laplace. Ne daremo la definizione e ne dimostreremo le principali proprietà, e concluderemo descrivendo i principali risultati inerenti ai metodi numerici per invertirla. ● Capitolo 3: Pricing di opzioni tramite trasformata di Laplace. Nel terzo capitolo
affrontiamo il tema centrale della tesi, il pricing di opzioni utilizzando la trasformata di Laplace e la sua inversa. Studieremo opzioni barriera, americane e americane lookback; mostreremo i principali risultati presenti in letteratura, 4
Introduzione
opportunamente dimostrati, inerenti al calcolo analitico della trasformata di Laplace dei prezzi delle opzioni. ● Capitolo 4: Risultati numerici con algoritmi sequenziali. In questo capitolo
riportiamo i risultati ottenuti dalle simulazioni numeriche effettuate su Matlab in modo seriale, cioè senza sfruttare la possibilità di operare parallelamente. Confronteremo questo metodo con altre due tecniche di pricing più diffuse, quella basata sulle simulazioni Montecarlo e quella basata sulle differenze finite classiche. Il metodo dell’inversione della trasformata di Laplace risulta accurato e estremamente rapido, e risulta quindi un’alternativa molto interessante e valida ai metodi più ampiamente diffusi. ● Capitolo 5: Simulazioni numeriche parallele. Riportiamo in questo ultimo
capitolo una breve presentazione delle caratteristiche peculiari del calcolo parallelo su più processori e su scheda grafica, che permette un’ulteriore riduzione dei tempi di calcolo se applicato agli algoritmi descritti nel Capitolo 4. Riportiamo quindi i risultati ottenuti con queste simulazioni numeriche parallele, mostrando con l’accuratezza del metodo non cambi, e l’efficienza sia decisamente migliorata. Vista la notevole diffusione dell’utilizzo di ambienti di calcolo parallelo, il metodo della trasformata di Laplace assume un interesse ancora maggiore come tecnica di pricing alternativa ● Appendice A: Codice Matlab sequenziale. Riportiamo in questa appendice
alcuni dei codici Matlab sequenziali utilizzati, con opportuni commenti ● Appendice B: Codice Matlab parallelo. Riportiamo in questa appendice alcuni
dei codici modificati per il calcolo parallelo in Matlab, opportunamente commentati.
5
Capitolo 1
Modelli finanziari In questo primo capitolo forniamo un’introduzione teorica al lavoro di tesi. Sono presentati i risultati principali che serviranno nel secondo capitolo: nello specifico, esibiremo risultati fondamentali di teoria della misura, di probabilità, di calcolo stocastico e processi stocastici, di teoria dell’arbitraggio e di completezza dei mercati. Per concludere introdurremo i principali modelli finanziari che utilizzeremo per il pricing.
1.1 Preliminari In questa sezione presentiamo i risultati fondamentali di teoria della misura, di probabilità e di calcolo stocastico che saranno largamente utilizzati in seguito. Per ulteriori approfondimenti si faccia riferimento a [17], [4] e [23]. Definizione 1.1. Uno spazio di probabilità è una terna (W, F , P) , dove:
6
1.1 Preliminari
●
è un insieme, definito insieme degli scenari, che rappresenta le diverse situazioni in cui può evolvere il mercato; ogni scenario è definito dal cammino del processo di prezzo studiato;
●
F è una -algebra definita su ;
●
P è una misura positiva su F .
Un insieme misurabile A F si dice evento; esso è composto da un certo numero di scenari, a cui è possibile associare una probabilità; P si dirà quindi misura di probabilità. Definizione 1.2. Una coppia (,G ) con insieme e G -algebra su si dice spazio misurabile. Definizione 1.3. Siano (, F , P) uno spazio di probabilità e (,G ) uno spazio misurabile. Una variabile aleatoria è una funzione X : misurabile, cioè tale che
X 1(A) F ,
A G
(1.1)
Una variabile aleatoria si dice reale se e G B() ( -algebra di Borel). Definizione 1.4. Sia X una variabile aleatoria a valori nello spazio misurabile (,G ) . Definiamo legge di X la funzione definita su G da
X (A) P[X 1(A)],
A G
(1.2)
Definizione 1.5. Sia X una variabile aleatoria a valori nello spazio misurabile (,G ) e con legge X . Si dice densità di X rispetto alla misura su (,G ) la derivata di Radon-Nikodym: f
d X d
(1.3)
cioè f è una qualunque funzione misurabile che rispetti la seguente proprietà: Pr[X A]
7
A fd
(1.4)
Capitolo 1. Modelli Finanziari
Limitiamo ora il nostro studio alle variabili aleatorie reali. In questo modo possiamo introdurre il concetto di integrale e di conseguenza definire il valore atteso di una variabile aleatoria. Definizione 1.6. Sia X una variabile aleatoria reale su (, F , P) . Definiamo valore atteso di X la quantità E[X ]
X ()dP[] x X (dx )
(1.5)
Definizione 1.7. Siano X una variabile aleatoria reale semi-integrabile inferiormente 2 e D una sotto -algebra di F . Si dice valore atteso condizionato di X rispetto a D , e si indica con E[X | D ] , la classe di equivalenza delle variabili aleatorie reali Z, D -misurabili e semi-integrabili inferiormente, tali che B D
B ZdP =B XdP
(1.6)
La formula (1.6) equivale alla seguente scrittura: E[ZW ] E[XW ] , W variabile aleatoria D misurabile, positiva e limitata (1.7)
Definizione 1.8. Sia X una variabile aleatoria su (, F , P) a valori in d con legge
X . La sua funzione caratteristica X : d C è definita come: X (u ): E[ei (u ,X ) ]
i (u ,X ( ))
i (u ,x )
e P[d ] e
X (dx ),
u d
(1.8)
e principali proprietà della funzione caratteristica sono: 1) X (u ) 1 ; 2) X (u ) X (u ) , dove con indichiamo il complesso coniugato di ; 3) Se X=( X1 ,..., Xd ) e E[| X jn |] per qualche 1 j d e n , allora E[X jn ] i n
2
n u nj
Ogni variabile aleatoria X può essere decomposta come X X
positiva e X
(1.9)
X (u )|u 0
X
, dove X rappresenta la parte
la parte negativa. X si dice semi-integrabile inferiormente se X è integrabile.
8
1.1 Preliminari
Definiamo inoltre una proprietà molto importante per i processi che studieremo, l’infinita divisibilità, perché ci permetterà in seguito di definire il concetto di tripletta di una variabile aleatoria, largamente utilizzato nello studio dei processi di pricing. Definizione 1.9. Sia X una variabile aleatoria su d con legge X . X si dice infinitamente divisibile se n esistono n variabile aleatorie indipendenti e identicamente distribuite (i.i.d) X1 ,..., Xn tali che
X X1 ... Xn
(1.10)
Vediamo quindi alcuni esempi di variabili aleatorie che godono nella proprietà di infinita divisibilità: ● Variabili aleatorie gaussiane : una variabile aleatoria X con legge X si dice
gaussiana di media m E[X ] e varianza 2 E[(X m)2 ] , con m e 0 , se ha densità: f (x )
1 2 2
(x m )2 2 e 2
(1.11)
e scriveremo X N (m, 2 ) . La funziona caratteristica di una variabile aleatoria gaussiana è:
X
1 ium 2u 2 2 (u ) e
(1.12)
Si può inoltre dimostrare che una variabile gaussiana è infinitamente divisibile m 2 con X j N , , j 1,..., n . n n ● Variabili aleatorie di Poisson: una variabile aleatoria X a valori in si dice di
Poisson se esiste 0 tale che P[X n ]
e scriveremo X Pois() .
9
n e n!
(1.13)
Capitolo 1. Modelli Finanziari
La funzione caratteristica in questo caso è X (u ) exp
n (e
iu
(1.14)
1)
Anche in questo caso si può dimostrare che una variabile di Poisson è infinitamente divisibile, con X j Pois , j 1,..., n . n ● Variabili aleatorie con distribuzione composta di Poisson: consideriamo le
variabili aleatorie Zn , n iid a valori reali con legge Z e sia N una variabile aleatoria tale che N Pois() , indipendente dalle Zn . La variabile aleatoria X, definita come N
Zn
X
(1.15)
n 1
ha distribuzione composta di Poisson, e scriveremo X CP , Z . La funzione caratteristica è X (u ) exp
eiuz 1Z dz
(1.16)
e si può dimostrare che anche una variabile aleatoria con distribuzione di Poisson composta è infinitamente divisibile con X j CP , Z , j 1,..., n Definizione 1.10. Sia ν una misura di Borel definita su . Si dice che è una misura di Lévy se 2 | x | 1 (dx )
e
(1.17)
({0}) 0
Grazie a quest’ultima definizione è possibile dimostrare il seguente teorema: Teorema 1.1.1. (Formula di Lévy-Khintchine) X è una variabile aleatoria infinitamente divisibile se esistono , 0, misura di Lévy tali che u ,
1 X (u ) exp iu 2u 2 2
e
iux
1 iux1{|x|1} (dx )
(1.18)
Inoltre ogni funzione in forma (1.18) è funzione caratteristica di una variabile aleatoria infinitamente divisibile su . 10
1.1 Preliminari
Per la dimostrazione si veda [46]. La tripletta (, 2 , ) è detta tripletta caratteristica della variabile aleatoria X. Riscrivendo la formula (1.18) come X (u ) e(u ) , la funzione (u ): è detta esponente caratteristico di X. Riprendendo le tre distribuzione presentate come esempio, si ottiene quindi: ● Nel caso di variabile aleatoria gaussiana X N (m, s 2 ) , confrontando la (1.12)
con la (1.18) si ricava m, 2 s 2 , 0 . ● Nel caso di variabile aleatoria di Poisson X Pois() , dal confronto tra la (1.14)
e la (1.18) si ricava 0, 2 0, 1 , dove 1 è la misura di Dirac concentrata su {1}. ● Nel
caso di variabile aleatoria con distribuzione composta di Poisson
X CP , Z
,
|z|1 z Z (dz ),
dal 2
confronto
tra
(1.16)
e
(1.18)
si
ricava
0, Z .
Il fenomeno che andiamo a studiare, ossia la variazione del prezzo dell’asset nel corso del tempo, avrà bisogno di una variabile temporale t che permetta di tenere in conto la sua natura intrinsecamente dinamica. Inoltre è importante considerare il fatto che alcune quantità che al tempo t=0 risultano sconosciute, potrebbero essere invece disponibili ad un qualche t>0. È necessario quindi arricchire lo spazio di probabilità con una o più componenti che dipendono la tempo. Iniziamo introducendo il concetto di filtrazione: Definizione
1.11
Sia F
una -algebra su .
Una
famiglia (Ft )t0
di
sotto- -algebre di F si dice filtrazione se:
Fs Ft
quando s t
(1.19)
Uno spazio di probabilità (W, F , P) , dotato di una filtrazione (Ft )t0 si dice essere filtrato, e viene indicato con (, F ,(Ft )t0 , P) . 11
Capitolo 1. Modelli Finanziari
A volte la filtrazione non sarà specificata; in questo caso si considera la filtrazione naturale Ft (Xs ,0 s t ) . La filtrazione Ft rappresenta l’informazione disponibile al tempo t. Qual è il vantaggio di definire una filtrazione? Dal momento che la probabilità del verificarsi di un evento cambia nel tempo, a seconda di ciò che è accaduto fino ad ora, la filtrazione ci permette di modellizzare l’impatto delle nuove informazioni condizionando X rispetto a Ft , senza modificare la probabilità P . Tutti gli eventi appartenenti ad Ft sono quelli per i quali al tempo t l’osservatore è in grado di dire se si siano verificati o meno; allo stesso modo una variabile aleatoria Ft -misurabile sarà una variabile aleatoria il cui valore al tempo t è noto. Le seguenti condizioni sono introdotte per evitare difficoltà tecniche lavorando con le filtrazioni: ●
La filtrazione (Ft )t0 deve essere continua a destra, cioè Ft Ft per ogni t, dove Ft
●
0 Ft
F0 deve contenere tutti gli insiemi di probabilità nulla.
Introduciamo ora la definizione di processo stocastico: Definizione 1.12. Si dice processo stocastico una famiglia di variabili aleatorie (Xt )t 0 definite su uno spazio di probabilità (, F , P) a valori in uno spazio misurabile (,G ) .
Definizione 1.13. Un processo stocastico definito sullo spazio di probabilità filtrato (, F ,(Ft )t0 , P) è Ft -adattato se Xt è Ft -misurabile, t 0 . Inoltre ogni processo è
adattato alla sua filtrazione naturale. Osserviamo che la traiettoria X (): t Xt () definisce una funzione del tempo: possiamo quindi vedere i processi stocastici come funzioni aleatorie, ossia variabili aleatorie a valori in spazi di funzioni.
12
1.1 Preliminari
I processi possono essere di vario tipo: ci sono quelli con traiettorie continue, che possono essere costruiti come variabili aleatorie definite sullo spazio delle funzioni continue; tuttavia nel nostro lavoro useremo inoltre processi con traiettorie discontinue, ed è quindi necessario definire una particolare classe di funzioni che ci permetta di gestire queste discontinuità. Definizione 1.14 Una funzione f :[0,T ] d si dice cadlag se è continua a destra con limite a sinistra; ciò significa che t [0,T ] esistono i limiti
f (t ) lim f (s ) s t
e
f (t ) lim f (s ) s t
e che f (t ) f (t ) . Da questa definizione deduciamo che ogni funzione continua è cadlag, ma una funzione cadlag può essere discontinua; nel caso in cui t sia un punto di discontinuità, indichiamo con
f (t ) f (t ) f (t )
(1.20)
il salto di f in t. Una funzione cadlag ha un numero finito di grandi salti e un numero finito o al più numerabile di piccoli salti. Definizione 1.15. Un processo stocastico (Xt )t 0 si dice cadlag se per quasi ogni le sue traiettorie sono funzioni cadlag. Il suo limite sinistro sarà indicato come
Xt lim Xs e con Xt Xt Xt l’ampiezza del salto al tempo t. s t
13
Capitolo 1. Modelli finanziari
1.2 Processi di Lévy Introduciamo ora i processi stocastici a tempo continuo che useremo all’interno della nostra trattazione, i processi di Lévy. Per approfondimenti si faccia riferimento a [4] e [17]. Definizione 1.16. Un processo stocastico cadlag (Xt )t 0 sullo spazio di probabilità (, F , P) a valori in d tale che X 0 0 si dice processo di Lévy se soddisfa le
seguenti proprietà: i) Incrementi indipendenti: per ogni sequenza crescente di tempi t0 t1 ... tn le variabili aleatorie Xt0 , Xt1t0 ,..., Xtn tn1 sono indipendenti. ii) Incrementi stazionari: la legge di Xt h Xt non dipende da t. iii) Continuità stocastica: 0, limh 0P[ Xt h Xt ] 0 . Osserviamo che la terza condizione serve per escludere processi con salti in istanti fissi non aleatori. Infatti essa può essere tradotta con la seguente definizione: per ogni t fissato la probabilità di vedere un salto in t è nulla; quindi le discontinuità si verificano in istanti casuali. Riprendiamo il concetto di infinita divisibilità introdotto nel capitolo precedente e diamo la seguente proposizione: Proposizione 1.2.1. Sia (Xt )t 0 un processo di Lévy. Allora la variabile aleatoria Xt è infinitamente divisibile, t 0 . Per la dimostrazione si faccia riferimento a [46]. Vale inoltre il seguente risultato, che permette di definire la funzione caratteristica di un processo di Lévy: Teorema 1.2.2. Sia (Xt )t 0 un processo di Lévy. Allora
Xt (u ) et (u ),
u d , t 0 , 14
(1.21)
1.2 Processi di Lèvy
dove (u ) è l’esponente caratteristico di X1 . Per la dimostrazione si veda nuovamente [46]. Possiamo quindi introdurre la formula di Lévy-Khintchine per i processi di Lévy. Teorema 1.2.3. Sia (Xt )t 0 un processo di Lévy su d e sia (, A, ) la tripletta caratteristica di X1 . Allora
E[ei (u ,Xt ) ] et (u ),
t 0, u d
(1.22)
i (u ,x )
(1.23)
con
1 (u ) (u, Au ) i(, u ) 2
(e d
1 i(u, x )1{|x|1} )(dx )
Da questo momento, quindi, potremo definire le caratteristiche del processo (Xt )t 0 facendo riferimento solamente alle caratteristiche della variabile X1 . Vediamo ora i principali processi di Lévy, che useremo nelle prossime sezioni.
Moto Browniano Definizione 1.17. Un processo stocastico (Bt )t 0 a valori reali è un moto Browniano standard se: i) B0 0 q.c.; ii) 0 s t , la variabile aleatoria Bt Bs è indipendente da Fs ; iii) 0 s t , la variabile aleatoria Bt Bs ha legge N (0, t s ) . La funzione caratteristica di un moto Browniano è data da:
1 Bt (u ) exp tu 2 , 2
15
t 0, u
(1.24)
Capitolo 1. Modelli Finanziari
A partire dalla definizione (1.17) possiamo costruire il moto Browniano con drift nel seguente modo: prendiamo b e 0 , e poniamo
Xt bt Bt
(1.25)
In questo caso la funzione caratteristica è:
1 Xt (u ) exp t ibu 2u 2 , 2
t 0, u
(1.26)
Elenchiamo ora alcune proprietà del moto Browniano: i) il moto browniano è localmente continuo e -holderiano, 0, 1 ; ciò 2
significa che T 0, esiste K K (T , ) tale che
Bt () Bs () K t s
0 s t T ;
(1.27)
ii) le traiettorie del moto Browniano t Bt () sono quasi certamente non differenziabili. iii) le traiettorie del moto Browniano non sono a variazione finita su alcun intervallo di tempo q.c.; iv) tn n successione in con tn si ha
liminf Btn q.c.
e
n
limsup Btn q.c. n
(1.28)
v) vale la legge del logaritmo iterato:
Bt 1 P lim sup 1 1 t 0 2t ln ln 1t 2
(1.29)
Processo di Poisson Definizione 1.18.
Sia i i 1 una successione di variabili aleatorie esponenziali di
parametro indipendenti e sia Tn
n
i 1 i . Il processo Nt t0 definito come 16
1.2 Processi di Lèvy
Nt
1{T t} n1
(1.30)
n
si dice processo di Poisson di intensità . Questo tipo di processi è detto counting process: esso conta infatti il numero di tempi aleatori Tn (istanti di salto) che si verificano tra 0 e t, quando gli interarrival times Ti Ti 1 i 1 i i 1 sono variabili aleatorie esponenziali indipendenti. Nel caso di processo di Poisson, la funzione caratteristica è: Nt (u ) exp t(eiu 1) ,
t 0, u
(1.31)
Elenchiamo anche in questo caso le principali proprietà di questi processi: i) per ogni , le traiettorie del moto Browniano t Nt () sono costanti a tratti con discontinuità (salti) di ampiezza 1 in corrispondenza dei tempi aleatori Tn n ; ii) per ogni t>0, Nt ha distribuzione di Poisson di parametro t , che equivale alla seguente scrittura: n ,
P[Nt n ] et
(t )n n!
(1.32)
A partire dal processo di Poisson, possiamo definire il processo di Poisson compensato N t t 0 nel modo seguente:
N t : Nt t,
t 0
(1.33)
Grazie alla differenza di t , risulta che il processo N t segue distribuzione di Poisson centrata. La funzione caratteristica in questo caso è: N t (u ) exp t(eiu 1 iu ) ,
17
t 0, u
(1.34)
Capitolo 1. Modelli Finanziari
Processo di Poisson composto Definizione 1.19. Siano Zn , n variabili aleatorie i.i.d. a valori reali con legge comune Z e sia Nt t 0 un processo di Poisson di parametro indipendente da
Zn n1 . Un processo di Poisson composto di intensità e distribuzione dei salti Z è un processo stocastico Xt definito come:
Xt
Nt
Zn
(1.35)
n 1
La funzione caratteristica di un processo di Poisson composto è definita come:
Xt (u ) exp t
(eiuz 1)Z (dz ) ,
t 0, u
(1.36)
1.3 Martingale, tempi di arresto e misure aleatorie In questa sezione presentiamo i concetti di martingala, tempo di arresto e misura aleatoria. Enunciamo la proprietà di Markov forte per i processi di Lévy e concludiamo con quello che è forse il risultato più importante del calcolo stocastico e che useremo ampiamente nei prossimi capitoli: la decomposizione di Lévy-Itô. Facciamo riferimento a [4] e [17]. Definizione 1.20. Sia Xt t 0 un processo adattato definito su uno spazio di probabilità filtrato (, F ,(Ft )t0 , P) . Supponiamo che il processo soddisfi la condizione di integrabilità seguente:
E[|Xt |] ,
t 0
(1.37)
Diremo che il processo Xt t 0 è una martingala se
E[Xt | Fs ] Xs q.c., 18
0 s t
(1.38)
1.3 Martingale e tempi d’arresto
Definizione 1.20. Sia Xt t 0 un processo adattato definito su uno spazio di probabilità filtrato (, F ,(Ft )t0 , P) per cui vale la condizione (1.37) e inoltre
E[Xt | Fs ] Xs q.c.,
0 s t
(1.39)
è detto submartingala. Analogamente un processo adattato Xt t 0 definito su uno spazio di probabilità filtrato (, F ,(Ft )t0 , P) per cui vale la condizione (1.37) e inoltre
E[Xt | Fs ] Xs q.c.,
0 s t
(1.40)
è detto supermartingala. Forniamo ora alcuni esempi di processi che sono anche martingale: i) Bt t 0 con Bt Wt , con Wt t 0 moto Browniano standard e 0 ;
ii) M t t 0 con M t exp uBt 1 2u 2t , con u ; 2 iii) N t t 0 processo di Poisson compensato con intensità ; iv) M t t 0 con M t N t2 t , dove N t t 0 processo di Poisson compensato con intensità . Introduciamo ora il concetto di tempo di arresto. Definizione 1.22. Sia (Ft )t0 una filtrazione. Un tempo di arresto è una variabile aleatoria : [0, ] per cui l’evento
t Ft , t 0
(1.41)
F {A F , A { t } Ft t 0}
(1.42)
Si pone inoltre
dove F
t Ft
è la più piccola -algebra di parti di contenente
Proposizione 1.3.1. Siano 1 e 2 tempi di arresto. Allora: ●
1 è F 1 -misurabile; 19
t Ft .
Capitolo 1. Modelli Finanziari
●
1 2 max{1 , 2 } e 1 2 min{1 , 2 } sono tempi di arresto;
●
se 1 2 , allora F1 F2 ;
●
F1 2 F1 F2 .
Per la dimostrazione si faccia riferimento a [4]. Per comprendere meglio il concetto appena espresso, forniamo due esempi. Definizione 1.23. Sia Xt t 0 un processo stocastico cadlag Ft -adattato e sia A B() . Il tempo di primo passaggio nell’insieme A è definito come il primo istante
in cui il processo raggiunge l’insieme A:
A inf{t 0 : Xt A}
(1.43)
Si adotta la seguente convenzione: inf{} , quindi A se Xt A t 0. Si può dimostrare che A è un tempo di arresto se A è aperto o chiuso. Prendiamo invece il primo istante in cui un processo (Xt )t 0 raggiunge il suo massimo,
max inf{t [0,T ]: Xt sup Xs } s [0,T ]
(1.44)
non è un tempo d’arresto; concettualmente ciò può essere suggerito dal fatto che per conoscere il valore massimo è necessario aspettare fino a T: se siamo in possesso solo dell’informazione contenuta in Ft , cioè fino all’istante t
E[X 2 | F1 ] X 1 ,
t 0.
Enunciamo quindi la proprietà di Markov forte per i processi di Lévy: 20
(1.45)
1.3 Martingale e tempi d’arresto
Teorema 1.3.3. Se (Xt )t 0 è un processo di Lévy e è un tempo di arresto allora sull’insieme { } : i) (Xt )t 0 è un processo di Lévy indipendente da F ; ii) t 0, Xt ha la stessa legge di Xt ; iii) (Xt )t 0 ha traiettorie cadlag ed è Ft -adattato . Consideriamo ora il processo di salto (Xt )t 0 associato al processo di Levy (Xt )t 0 . Definiamo il processo di salto nel modo seguente:
Xt : Xt Xt ,
t 0
(1.46)
Questo è un processo adattato, ma non è necessariamente un processo di Lévy; anzi molto spesso risulta un processo molto complicato da studiare. Al posto di studiare direttamente il processo, lo caratterizzeremo tramite il conteggio dei salti di ampiezza definita. Iniziamo fornendo alcune definizioni. Definizione 1.24. Sia E d . Una misura di Radon su (E ,B(E )) è una misura tale che per ogni insieme compatto misurabile A B(E ) si ha (A) . Definizione 1.25. Sia (, F , P) uno spazio di probabilità. Una misura aleatoria su (E ,E ) è una mappa M : E tale che
i)
A E la mappa M (, A) è una variabile aleatoria;
ii) q.c. A M (, A) è una misura su E . Definizione 1.26.
Sia (, F , P) uno spazio di probabilità, sia E d e sia una
misura di Radon positiva su (E ,B(E )) . Una misura aleatoria di Poisson su E con intensità è una misura aleatoria a valori interi M : B(E ) , (, A) M (, A) tale che:
21
Capitolo 1. Modelli Finanziari
i) per q.o. , M (,) è una misura di Radon a valori interi su E: ciò significa che A E , A misurabile e limitato, si ha che M (A) è una variabile aleatoria a valori interi; ii) A E , A misurabile, M (, A) M (A) è una variabile aleatoria di Poisson di parametro (A) :
k ,
P(M (A) k ) e(A)
((A))k ; k!
(1.47)
iii) per A1 ,..., An B(E ) insiemi misurabili t.c. Ai Aj , i j , le variabili aleatorie M (A1 ),..., M (An ) sono indipendenti. Possiamo a questo punto caratterizzare il processo di salto contando il numero di salti di ampiezza definita. Osserviamo infatti che ad ogni processo cadlag è possibile associare una misura aleatoria su che descrive i salti di tale processo. Per ogni insieme misurabile E , sia
J X (E ) # {(t , Xt ) E }.
(1.48)
Abbiamo che per ogni insieme misurabile E , J X (E ) ([t1 , t2 ] A) conta il numero di istanti di salto del processo (Xt )t 0 nell’intervallo [t1 , t2 ] la cui ampiezza appartiene ad A. Caratterizziamo la J X (E ) appena definita: Proposizione 1.3.4. Sia (Xt )t 0 un processo di Poisson composto con intensità e distribuzione di ampiezza dei salti f. La sua misura di salto J X è una misura aleatoria di Poisson su con intensità (dt dx ) (dx )dt f (dx )dt.
(1.49)
Per la dimostrazione si veda [17]. Possiamo allora caratterizzare in modo più specifico la definizione (1.10) di misura di Lévy. 22
1.3 Martingale e tempi d’arresto
Definizione 1.27. Sia (Xt )t 0 un processo di Lévy su d . La misura su d definita come: (A): E[ # {t [0,1]: Xt A}],
A B(d )
(1.50)
è detta misura di Lévy del processo (Xt )t 0 ; (A) è il numero medio di salti, per unità di tempo, la cui ampiezza appartiene ad A. Questa definizione rispetta le proprietà dei processi cadlag: per ogni insieme compatto A t.c. 0 A il processo (Xt )t 0 ha un numero finito di salti di ampiezza finita; tuttavia, (Xt )t 0 potrebbe avere un numero infinito di piccoli salti in [0,T]. Quindi definisce una misura di Radon su d \ {0}. Presentiamo ora quello che è certamente un risultato fondamentale del calcolo stocastico: la decomposizione di Lévy-Itô. Proposizione 1.3.6. Sia (Xt )t 0 un processo di Lévy con tripletta (, 2 , ). Allora: i) è una misura di Radon su \ {0} e verifica: 2
|x|1| x |
(dx )
e
|x|1 (dx ) ;
(1.51)
ii) la misura di salto di (Xt )t 0 , J X , è una misura aleatoria di Poisson su con intensità (dx )dt ; iii) esiste un moto Browniano (Bt )t 0 di varianza 2 tale che
Xt t Bt Xtl lim X t , 0
(1.52)
dove
Xtl
|x|1,s[0,t ] xJX (ds dx ) X t x {J X (ds dx ) (dx )ds}. |x |1,s [0,t ] I termini dell’equazione (1.52) sono indipendenti e la convergenza dell’ultimo termine è quasi certa e uniforme in t. 23
Capitolo 1. Modelli Finanziari
Per la dimostrazione si veda [17]. L’equazione (1.52) può essere divisa in due parti: ●
La prima parte, t Bt , è un processo di Lévy gaussiano continuo, e ogni processo di Lévy gaussiano continuo può essere scritto in questa forma; di conseguenza per descrivere questo processo è sufficiente conoscere il drift e la varianza 2 .
●
La seconda parte, composta dai due termini integrali, rappresenta la parte discontinua del processo. Xtl raccoglie i salti con ampiezza in modulo maggiore di 1: grazie alla prima delle due condizioni (1.51), il processo ha un numero finito di grandi salti, quindi la somma X tl 0s s t X s ha q.c. un |X |1
numero finito di termini e Xtl è un processo di Poisson composto. Xt raccoglie invece i piccoli salti; anche X t 0s t s X s è un processo di |X |1
Poisson composto, tuttavia poiché può avere singolarità in 0, possono esserci infiniti piccoli salti e la loro somma potrebbe non convergere. Per ottenere questa convergenza è necessario sostituire l’integrale con la sua versione compensata X t . Infine, dalla formula (1.52) si può osservare che ogni processo di Lévy è combinazione di un moto Browniano con drift e una somma, eventualmente infinita, di processi di Poisson composti indipendenti: è quindi possibile approssimare con precisione arbitraria un processo di Lévy con un processo jump-diffusion, cioè con la somma di un moto Browniano con drift e di un processo di Poisson composto.
24
1.4 Teoria dell’arbitraggio e completezza dei mercati
1.4 Teoria dell’arbitraggio e completezza dei mercati In questa sezione affrontiamo i cambi di misura equivalenti, che permetterà di costruire la misura di martingala equivalente ed eseguire quindi il pricing delle ozpioni. Da questi risultati passeremo quindi ai principali concetti di teoria dell’arbitraggio e di completezza dei mercati. Applicheremo infine i concetti presentati al caso dei modelli di Lévy, e introdurremo i modelli di tipo Lévy esponenziale che costituiranno la base del successivo lavoro di pricing. Durante la trattazione di questi argomenti faremo riferimento a [17]. Forniamo alcune definizioni. Definizione 1.28. Definiamo contingent claim con scadenza T una variabile aleatoria non negativa Ft -misurabile . Possiamo rappresentare un contingent claim con scadenza T specificando il suo payoff 3 H () in ogni scenario: poiché il valore di H è noto solo in T, la funzione
H : è FT -misurabile . Definizione 1.29. Consideriamo un mercato con d asset i cui prezzi sono modellizzati tramite un processo stocastico St (St1 ,..., Std ) che supponiamo essere cadlag. Un portafoglio è un vettore (1 ,..., d ) che descrive la quantità di ogni asset posseduta dall’investitore. Il valore di tale portafoglio al tempo t è dato da
Vt ()
d
kStk
(1.53)
k 1
Una strategia di trading consiste nel mantenere il portafoglio dinamico t acquistando e vendendo assets in istanti temporali differenti. Indichiamo con 0 T0 T1 ... Tn Tn 1 T gli istanti temporali in cui si verificano queste transazioni causate dalla compravendita degli assets; tra due istanti
Per payoff si intende il pagamento realizzato dal possessore dell’opzione alla scadenza T, a seconda dello scenario che si verifica in T.
3
25
Capitolo 1. Modelli Finanziari
Ti e Ti 1 assumiamo che il portafoglio resti invariato e indichiamo con i la sua
composizione nell’intervallo di tempo (Ti ,Ti 1 ] . Possiamo esprimere il portafoglio t nel modo seguente:
t 01{t 0}
n
i 1(T ,T i
i 0
(t )
(1.54)
i 1 ]
Il portafoglio è quindi un processo predicibile semplice, infatti: Definizione 1.30. Un processo stocastico t [0,T ] si dice processo predicibile se può essere scritto nella forma (1.54), dove 0 T0 T1 ... Tn Tn 1 T sono tempi aleatori adattati e ogni i è una variabile aleatoria limitata FTi -misurabile , cioè il cui valore è noto in Ti . Ogni strategia di trading dovrebbe essere un processo predicibile semplice, o al massimo dovrebbe essere approssimabile da strategie della forma (1.54) per evitare che si generino opportunità di arbitraggio. Definizione 1.31. Il processo stocastico definito da (Gt ())t [0,T ] definito da
Gt () 0S 0
j 1
i (ST i 0
i 1
STi ) j (St STj )
per Tj t Tj 1
(1.55)
si dice processo di guadagno della strategia . Possiamo riscrivere il processo di prezzo come
Gt () 0S 0
n
i (ST
i 1 t
i 0
STi t )
(1.56)
Il processo definito in (1.56) è detto integrale stocastico del processo predicibile rispetto a S e scriviamo n
t
i (ST 0 udSu : 0S0 i 0
i 1 t
L’integrale stocastico
STi t )
(1.57)
t
0 udSu rappresenta il capitale accumulato tra 0 e t seguendo
la strategia . La differenza tra il valore del portafoglio Vt () t St e il valore del processo di guadagno rappresenta il costo della strategia fino al tempo t: 26
1.4 Teoria dell’arbitraggio e completezza dei mercati
Vt () Gt () t St
t
0 udSu .
(1.58)
Definizione 1.32. Una strategia t [0,T ] si dice autofinanziante se il suo costo è q.c. uguale a 0. Nel caso di strategia autofinanziante, il valore del portafoglio è dato dalla somma del valore iniziale e del capitale guadagnato: Vt ()
t
0
udSu 0S 0
t
0
udSu
(1.59)
Questa scrittura significa che le variazioni del valore del portafoglio sono dovute solamente a variazioni nel valore degli assets e non all’aggiunta o al ritiro di capitale. Il processo di guadagno associato alla strategia possiede la seguente proprietà: Proposizione 1.4.1. Se (St )t [0,T ] è una martingala, allora per ogni processo predicibile semplice il processo di guadagno (Gt ())t [0,T ] è a sua volta una martingala. Si faccia riferimento a [17] per la dimostrazione. Dalla proposizione appena enunciata deduciamo che, nel caso di strategia autofinanziante, in cui Vt () Gt () , se (St )t [0,T ] è una martingala allora il valore della strategia Vt () è una martingala. Consideriamo quindi un mercato descritto dallo spazio di probabilità (, F , P) e dalla filtrazione (Ft )t [0,T ] . Descriviamo gli assets attraverso un processo cadlag adattato S : [0,T ] d 1 , (, t ) (St0 (), St1(),..., Std ()), dove Sti () rappresenta il valore dell’asset i al tempo t e St0 è un numerario 4 , che utilizziamo per il processo di sconto. Per ogni portafoglio di valore Vt , il valore scontato è definito nel modo seguente:
Per numerario si intende un bene presente sul mercato il cui valore è assunto come unità di misura per esprimere poi in funzione di esso i valori degli altri beni. 4
27
Capitolo 1. Modelli Finanziari
V Vˆt t St0
(1.60)
e B(t ,T ) St0 / ST0 è chiamato fattore di sconto. Considerando come numerario
St0 ert , il fattore di sconto sarà allora dato da B(t ,T ) er (T t ) . Fatte queste premesse teoriche, cerchiamo ora di risolvere il problema centrale di questa sezione: definire una regola di pricing. Ciò significa attribuire un valore ad ogni contingent claim H H , dove H è la sottoclasse dei contingent claim selezionati. Definizione 1.33. Definiamo regola di pricing una procedura che attribuisce ad ogni contingent claim H H un valore t (H ) ad ogni istante temporale. Una regola di pricing deve soddisfare queste tre proprietà: i)
t (H ) deve essere un processo adattato, infatti è necessario riuscire a calcolare il valore di t (H ) solo grazie alle informazioni note in t;
ii) un contingent claim con payoff positivo deve avere valore positivo:
, H () 0 t [0,T ], t (H ) 0;
(1.61)
iii) il valore di un portafoglio deve essere uguale alla somma dei valori delle sue
componenti: J t H j j 1
J
t (H j ).
(1.62)
j 1
Consideriamo ora un caso semplice: lo zero-coupon bond 5. Per ogni evento A F , la variabile aleatoria 1{A} rappresenta il payoff di un contingent claim che paga 1 in T se l’evento A si verifica e 0 altrimenti. Assumiamo 1{A} H , e in particolare abbiamo che 1{} 1 è uno zero-coupon bond che paga 1 in T. Il suo valore t (1) rappresenta
Uno zero-coupon bond (ZCB) è un’obbligazione scambiata ad un valore minore del suo valore nominale; il valore nominale viene poi pagato alla maturity T. Non ha pagamenti di interessi periodici (coupon), da qui il nome “zero-coupon”. In Italia un esempio tipico di ZCB è il Buono Ordinario del Tesoro (BOT). 5
28
1.4 Teoria dell’arbitraggio e completezza dei mercati
il valore in t di un’unità di capitale pagabile in T, cioè il fattore di sconto
Ht (1) er (T t ) . Definiamo ora Q : F nel modo seguente: Q[A]
0 (1{A} ) 0 (1)
erT 0 (1{A} )
(1.63)
che rappresenta il valore di una scommessa di valore nominale erT sull’accadere dell’evento A. Dalle proprietà di precendentemente elencate, derivano le seguenti proprietà su Q : ●
0 Q[A] 1, infatti 0 1{A} 1 ;
●
Q[A B ] Q[A] Q[B ], con A e B insiemi disgiunti; infatti 1{AB } 1{A} 1{B }
Se estendiamo la proprietà (1.62) alle somme finite, Q definisce una misura di probabilità sullo spazio misurabile (, F ) . Quindi partendo da una regola di pricing abbiamo costruito la misura di probabilità Q . Allo stesso modo possiamo procedere in senso opposto e ottenere una regola di pricing da Q : se H soddisfa la proprietà di continuità, cioè se vale il teorema di convergenza dominata su H , allora abbiamo che per ogni payoff H H , 0 (H ) 0 rT
e
ci 1{A } ci erT Q[Ai ] i
i
i rT
ci Q[Ai ] e
EQ[H ].
i
La relazione
0 (H ) erT EQ[H ]
(1.64)
si dice formula di pricing neutrale al rischio; questa scrittura significa che il valore di un payoff aleatorio è dato dal suo valore atteso scontato rispetto alla misura di probabilità Q . È importante notare che Q non è la probabilità reale: per come è stato definito in (1.63), Q[A] non è da interpretare come la probabilità che si verifichi l’evento A nel mondo reale, ma come il valore di una scommessa su A. Q viene definita misura neutrale al rischio. 29
Capitolo 1. Modelli Finanziari
Allo stesso modo, A erT t (1{A} ) definisce una misura di probabilità Qt su
(, Ft ) . Se richiediamo inoltre che il valore attuale (in 0) del payoff H in T sia pari al valore attuale del payoff t (H ) in t, la misura di probabilità Qt sarà data dalla restrizione di Q su Ft e t (H ) sarà dato dal valore atteso scontato rispetto a Q :
t (H ) er (T t )EQ[H | Ft ]
(1.65)
Introduciamo quindi il concetto di arbitraggio: Definizione
1.34.
Definiamo
opportunità
di
arbitraggio
una
strategia
autofinanziante che permetta di ottenere un guadagno positivo senza possibilità di perdite intermedie:
P(t [0,T ],Vt () 0) 1,
P(VT () V0 ()) 0.
Dobbiamo quindi valutare quali condizioni deve soddisfare Q affinché non ci sia arbitraggio; l’assenza di arbitraggio è infatti un requisito fondamentale di qualunque regola di pricing. Consideriamo un mercato i cui prezzi sono dati dalla regola di pricing (1.65), un evento A tale che P[A] 0 e un’opzione che paga 1 se l’evento A si verifica. Tale opzione è priva di valore per l’investitore, perché dal momento che A non si verificherà mai l’investitore non otterrà mai il pagamento. La regola di pricing definita da Q , tuttavia, attribuisce all’opzione un valore in t=0 pari a:
0 (1{A} ) erT EQ[1{A} ] erT Q[A] Da questa formula deduciamo che la regola di pricing è coerente con il punto di vista dell’investitore (che come abbiamo detto ritiene nullo in valore dell’opzione) se Q[A] 0 . Viceversa se Q[A] 0 l’opzione con payoff 1{A} è considerata priva di valore
e se P[A] 0 , l’acquisto a prezzo nullo di tale opzione porterebbe ad un arbitraggio.
30
1.4 Teoria dell’arbitraggio e completezza dei mercati
Quindi affinché ci sia compatibilità tra la regola di pricing definita da Q e il modello stocastico descritto da P , è necessario che P e Q siano misure di probabilità equivalenti: si deve avere cioè che A F ,
Q[A] 0 P[A] 0
(1.66)
e si indica con P Q . Una conseguenza dell’assenza di arbitraggio è la legge del prezzo unico: essa afferma che due strategie autofinanzianti con lo stesso payoff devono avere lo stesso valore in ogni istante t, perché in caso contrario la differenza di valore genererebbe un arbitraggio. Consideriamo un asset con prezzo St , abbiamo due possibili scelte come investitori: ●
tenere l’asset fino al tempo T, ottenendo ST ;
●
venderlo al suo prezzo St e investire questa somma ad un tasso di interesse r, ottenendo er (T t )St .
Entrambe queste strategie sono autofinanzianti ed hanno lo stesso payoff, perciò, alla luce delle considerazioni precendenti, per la legge del prezzo unico devono avere lo stesso valore in t:
EQ[ST | Ft ] EQ[er (T t )St | Ft ] er (T t )St .
(1.67)
Dividendo per ST0 erT otteniamo quindi:
S S EQ T | Ft t , 0 0 ST St
(1.68)
EQ SˆT | Ft Sˆt .
(1.69)
cioè
Quindi l’assenza di arbitraggio impone che il valore scontato Sˆt er (T t )St dell’asset sia una martingala rispetto alla misura di probabilità Q . Una misura di probabilità 31
Capitolo 1. Modelli Finanziari
che soddisfa le condizioni (1.66) e (1.68) si dice misura di martingala equivalente. Quindi ogni regola di pricing che non genera opportunità di arbitraggio è data da una misura di martingala equivalente. Viceversa ogni misura di martingala equivalente Q definisce una regola di pricing che non genera opportunità di arbitraggio, grazie alla (1.65). Consideriamo ora una strategia autofinanziante (t )t [0,T ] ; essendo Q una misura di martingala, Sˆt è una martingala sotto Q . Quindi per la Proposizione 1.4.1 il valore del portafoglio Vt () V0 ()
t
0 dS
è una martingala e in particolare
EQ
t
0 dS 0.
(1.70)
Per avere valore atteso nullo, la variabile aleatoria
t
0 dS
deve quindi assumere
valori sia positivi che negativi, quindi possiamo dedurre che Q VT () V0 () 0 Q
T
0
tdSt 0 1
Dal momento che P Q , abbiamo quindi che P strategia non genera arbitraggio.
T
0
(1.71)
tdSt 0 1 , quindi la
Abbiamo quindi dimostrato la seguente proposizione: Proposizione 1.4.2. In un mercato descritto da una misura di probabilità P ogni regola di pricing lineare che non genera opportunità di arbitraggio può essere scritta nel modo seguente:
t (H ) er (T t )EQ[H | Ft ]
(1.72)
con Q P misura di martingala equivalente. Fino ad ora non abbiamo considerato un dettaglio piuttosto importante: pur avendo dato la definizione della regola di pricing e della misura di martingala equivalente, non abbiamo valutato l’esistenza e l’unicità di tali oggetti. Andiamo quindi ad enunciare il primo teorema fondamentale dell’asset pricing. 32
1.4 Teoria dell’arbitraggio e completezza dei mercati
Teorema 1.4.3. Un modello di mercato definito dallo spazio di probabilità filtrato (, F ,(Ft )t0 , P) e dal processo di prezzi (St )t [0,T ] è privo di arbitraggio se e solo se
esiste una misura di probabilità Q P tale che il processo scontato (Sˆt )t [0,T ] è una martingala rispetto a Q . Per la dimostrazione si faccia riferimento a [49]. Per quanto riguarda l’unicità di Q , introduciamo alcune definizioni per andare poi a enunciare il secondo teorema fondamentale dell’asset pricing. Definizione 1.35. Una strategia autofinanziante (t0 , t ) si dice strategia replicante per un contingent claim con pay-off H se H V0
T
0
tdSt
T
0
t0dSt0
(1.73)
P-q.c.
Quindi per l’assenza di arbitraggio, se esiste una strategia replicante allora V0 è unico. Definizione 1.36. Un mercato si dice completo se ogni contingent claim ammette un portafoglio replicante, cioè H H , esiste una strategia autofinanziante (t0 , t ) tale che l’equazione (1.73) valga con probabilità uguale a 1 sotto P . La Definizione (1.36) ha la seguente implicazione: se l’equazione (1.73) vale con probabilità uguale a 1 sotto P , allora varrà con probabilità 1 anche sotto ogni misura di martingala equivalente Q P . I valori scontati verificano allora Hˆ V0
T
0
tdSˆt
(1.74)
Q-q.c.
Assumiamo quindi che la strategia soddisfi qualche condizione per cui
t
0 dS sia
una martingala. Prendendo i valori attesi otteniamo allora che
EQ[Hˆ ] V0 .
(1.75)
Poiché questa relazione vale per ogni misura di martingala equivalente Q , possiamo concludere che in un mercato completo il valore di ogni contingent claim è dato in 33
Capitolo 1. Modelli Finanziari
modo univoco dal capitale iniziale necessario per avere un perfetta copertura per H. Dal fatto che ogni misura di martingala equivalente fornisce la stessa regola di pricing, segue l’unicità. Enunciamo quindi il risultato già citato, il secondo teorema fondamentale dell’asset pricing: Teorema 1.4.4. Un mercato definito da (, F ,(Ft )t [0,T ], P) e dal processo di prezzi
(St )t [0,T ] è completo sse esiste un’unica misura di martingala Q equivalente a P . Per una traccia della dimostrazione si faccia riferimento a [49].
1.5 Processi di tipo Lévy esponenziale: teoria ed esempi Presentiamo in questa sezione i modelli di Lévy di tipo esponenziale. Questa classe di modelli sarà quella usata nei prossimi capitoli per il pricing di opzioni. Inizieremo con una piccola introduzione teorica, per passare poi ai modelli usati concretamente per il pricing: il modello di Black&Scholes e i modelli di tipo jump diffusion. Per ulteriori approfondimenti si vedano [8], [34] e [41]. Forniamo in primo luogo una breve introduzione teorica ai modelli di tipo Lévy esponenziale. Definizione 1.37. Un modello di mercato si dice di tipo Lévy esponenziale se
St S 0 ert Xt , dove (Xt )t 0 è un processo di Lévy.
34
t 0
(1.76)
1.5 Processi di Lévy esponenziali: teoria ed esempi
Usando uno specifico cambio di misura, chiamato trasformazione di Esscher6, i modelli di tipo Lévy esponenziale sono privi di arbitraggio, cioè esiste una misura di martingala equivalente. Vale infatti il seguente teorema: Teorema 1.5.1. Sia (Xt )t ≥0 un processo di Lévy. Se le traiettorie del processo non sono né q.c. crescenti né q.c. decrescenti, allora il modello di tipo Lévy esponenziale dato da (1.76) è privo di arbitraggio, cioè esiste una misura di martingala Q equivalente a P . Questo significa che il modello di Lévy esponenziale è privo di arbitraggio nei seguenti casi:
(Xt )t ≥0 ha componente gaussiana non nulla: 0;
i)
ii) (Xt )t ≥0 ha variazione infinita:
1
1| x | (dx ) ;
iii) (Xt )t ≥0 ha salti positivi e negativi; iv) (Xt )t ≥0 ha salti positivi e drift negativo o salti negativi e drift positivo
Si noti che i casi precedenti non sono mutuamente esclusivi. Per la dimostrazione si faccia riferimento a [17]. Tuttavia, nel caso di modelli di tipo Lévy esponenziali, si ha una piccola complicazione: la misura di martingala equivalente non è unica, in quanto si tratta di modelli di mercato incompleti. È quindi necessario scegliere una misura di martingala equivalente Q . Scegliamo Q in modo che il processo scontato (ert St )t 0 sia una martingala. Questo equivale a chiedere che il processo (Yt )t 0 (eXt )t 0 sia una martingala; enunciamo quindi il seguente teorema: Teorema 1.5.2. Sia (Xt )t ≥0 un processo di Lévy con tripletta (, 2 , ) tale che
6
Data la funzione densità di probabilità f(x), la trasformata di Esscher è definita come hx
f ( x ; h ) e f (x ) /
hx
e f (x )dx
; per ulteriori dettagli si consulti [17]. 35
Capitolo 1. Modelli Finanziari y
|y|1 e (dy) . Allora il processo (Yt )t ≥0 = (eXt )t ≥0 è una martingala se e solo se X (i )
2 2
e
z
1 z1{|z|1} (dz ) 0.
(1.77)
Per la dimostrazione si veda [17]. Introduciamo ora i modelli di tipo Lévy esponenziale più importanti.
1.5.1 Modello di Black&Scholes In questo modello la dinamica del prezzo rispetto alla misura di probabilità neutrale al rischio Q è data da un moto Browniano geometrico: dSt rdt dWt , St
(1.78)
con (Wt )t 0 moto Browniano. Introduciamo inoltre le seguenti ipotesi aggiuntive, valide per tutti i modelli di tipo Lévy esponenziale: ●
il tasso di interesse risk-free r e la volatilità sono costanti nel tempo;
●
l’asset sottostante non paga dividendi;
●
non ci sono costi di transazione;
●
è consentita la vendita allo scoperto.
Se risolviamo l’equazione differenziale stocastica (EDS) (1.78) otteniamo che il processo Xt ln St è dato da S0
2 Xt r t Wt , 2
X0 0
(1.79)
La funzione generatrice dei momenti del processo Xt è data da
E[exXt ] eG (x )t , 36
(1.80)
1.5 Processi di Lévy esponenziali: teoria ed esempi
con G(x ) dato da
G(x )
2 2 2 x r x . 2 2
(1.81)
L’equazione G(x ) ha due soluzioni 1 e 2 tali che 1
con v
2r
2
1 e =
v v 2 2 0, 2
4
2
2
v v 2 2 0, 2
(1.82)
.
Osserviamo che possiamo vedere il modello di Black&Scholes come un modello di tipo Lévy esponenziale degenere, in cui (dx ) =0. Questo modello costituisce un esempio di modello di mercato completo.
1.5.1 Modelli di tipo jum p diffusion In questo secondo caso, l’evoluzione dei prezzi è data da un processo diffusivo intramezzato da salti ad intervalli casuali. Modellizziamo quindi il logaritmo del prezzo come un processo di Lévy con una componente gaussiana non nulla e una parte di salto data da un processo di Poisson composto con un numero finito di salti in ogni intervallo. I due principali esempi di questo tipo di modelli sono: ●
il modello di Merton, in cui i salti seguono una distribuzione gaussiana;
●
il modello di Kou, in cui i salti seguono una distribuzione esponenziale (diversa per salti positivi e negativi).
I modelli di tipo jump diffusion risultano essere un’interessante alternativa al modello di Black&Scholes, in quanto grazie ad essi siamo in grado di superare alcuni limiti di tale modello che non sono rispecchiati dalla realtà. In particolare, i modelli
37
Capitolo 1. Modelli Finanziari
jump diffusion sono in grado di riprodurre la distribuzione leptocurtica dei rendimenti 7 e lo smile di volatilità 8 che si osserva nel prezzo delle opzioni. Diversi test empirici hanno dimostrato che il modello di Kou riproduce l’andamento di un titolo nel mercato in modo migliore rispetto al modello di Merton, ma entrambi si comportano in generale meglio del moto Browniano geometrico utilizzato nel modello di Black&Scholes. Presentiamo ora nel dettaglio i due modelli jump diffusion appena elencati.
Modello di Merton Il modello di Merton assume che le ampiezze dei salti siano distribuite con distribuzione normale di parametri (, 2 ) . La dinamica del prezzo St rispetto alla misura di probabilità neutrale al rischio Q è data da:
Nt dSt (Vi 1) , rdt dWt d i 1 St
(1.83)
dove r è il tasso di interesse risk-free, è la volatilità, (Nt )t 0 è un processo di Poisson con parametro , (Wt )t 0 è un moto Browniano standard, e {Vi }i 1,2,... è una sequenza di variabili aleatorie i.i.d. non negative, tali che le variabili aleatorie
Yi ln(Vi ) hanno distribuzione normale, con densità fYi (y )
(x )2 exp 2 2 2 2 1
(1.84)
cioè Yi N (, 2 ) . Inoltre il modello assume che tutte le fonti di aleatorietà, ossia i processi (Nt )t 0 , (Wt )t 0 e (Yt )t 0 siano indipendenti.
Data una distribuzione simmetrica, essa può essere più o meno “appuntita” o “appiattita” rispetto alla distribuzione normale. Se la curva è più appuntita (quindi la mediana è più alta e le code sono più pesanti, cioè più basse di quelle di una distribuzione normale, la curva si dice leptocurtica o ipernormale; viceversa, se la curva è più appiattita, essa si dice platicurtica o iponormale. 8 Il modello di Black&Scholes è basato sull’ipotesi che la distribuzione dei rendimenti del titolo sottostante sia normale; questo implica che tutte le opzioni dello stesso tipo, scritte sullo stesso sottostante, con stessa scadenza , debbano avere lo stesso livello di volatilità implicita. Nella pratica, tuttavia, si osserva che se si confrontano opzioni con strike diversi, i livelli di volatilità implicita sono diversi a seconda dei diversi strike: questo fenomeno viene definito smile di volatilità. 7
38
1.5 Processi di Lévy esponenziali: teoria ed esempi
Modello di Kou Il modello di Kou, che viene anche indicato come modello DEM (Double Exponential Model) assume che le ampiezze dei salti siano distribuite con una distribuzione esponenziale doppia asimmetrica. La dinamica del prezzo St rispetto alla misura di probabilità neutrale al rischio Q è data da:
Nt dSt rdt dWt d (Vi 1) , i 1 St
(1.85)
dove r è il tasso di interesse risk-free, è la volatilità, (Nt )t 0 è un processo di Poisson con parametro , (Wt )t 0 è un moto Browniano standard, e {Vi }i 1,2,... è una sequenza di variabili aleatorie i.i.d. non negative, tali che le variabili aleatorie
Yi ln(Vi ) hanno distribuzione esponenziale doppia asimmetrica con densità: fYi (y ) p 1e1y 1{y0} q 2e2y 1{y0} ,
(1.86)
dove 1 1, 2 0, p 0, q 0 e p q 1. La condizione 1 1 serve a garantire che il prezzo St abbia valore atteso finito. Le distribuzioni dei salti positivi e dei salti negativi sono due distribuzioni esponenziali di parametri 1 e 2 rispettivamente. Inoltre il modello assume che tutte le fonti di aleatorietà, ossia i processi (Nt )t 0 , (Wt )t 0 e (Yt )t 0 siano indipendenti.
Se risolviamo l’equazione differenziale stocastica (1.85) otteniamo che il processo Xt ln St è dato da S0
2 Xt r t Wt 2 con
Nt
Yi , i 1
X0 0
(1.87)
p 1 q 2 1 . E eY1 1 1 1 2 1
La funzione generatrice dei momenti del processo Xt è data da
E[exXt ] eG (x )t , 39
(1.88)
Capitolo 1. Modelli Finanziari
con G(x ) dato da
G(x )
p 1 q 2 2 2 2 x r x 1 . 1 x 2 x 2 2
(1.89)
Come detto in precedenza, i modelli di tipo Lévy esponenziale costituiscono un’evoluzione del modello di Black&Scholes in quanto riescono a riprodurre la distribuzione leptocurtica dei rendimenti e lo smile di volatilità. Tuttavia non riescono a catturare gli effetti del volatility clustering9; questo effetto è invece ben descritto dai modelli a volatilità stocastica, in cui la volatilità del sottostante è descritta a sua volta da un processo stocastico: i modelli più noti di questo tipo sono il modello di Heston, che assume dinamica continua per il sottostante, e il modello di Bates, che estende il modello di Heston aggiungendo salti lognormali. Questi processi esulano tuttavia da questo lavoro di ricerca; per ulteriori approfondimenti, si consultino [22] e [6].
Per volatility clustering si intende l’effetto, osservato sui mercati, per il quale “grandi cambiamenti tendono ad essere seguiti da grandi cambiamenti, di entrambi i segni, e piccoli cambiamenti tendono ad essere seguiti da piccoli cambiamenti” (Mandelbrot, 1963); in pratica, ciò indica la successione di periodi caratterizzati da elevata varianza dei rendimenti seguiti da periodi con bassa varianza. 9
40
Capitolo 2
La trasformata di Laplace
Studiamo in questo secondo capitolo lo strumento che utilizzeremo in seguito per il pricing delle opzioni: la trasformata di Laplace. Introdurremo la definizione e le principali proprietà. Passeremo poi a illustrare alcuni algoritmi di inversione presenti in letteratura: in particolare prima presenteremo una formula di inversione generale, per poi passare agli algoritmi di Gaver-Stehfest, di Eulero e di Talbot. Per ulteriori approfondimenti si rimanda a [1], [9] e [16].
2.1
Definizioni e proprietà della trasformata di Laplace
Iniziamo questo capitolo presentando la definizione e le principali proprietà relative alla trasformata di Laplace. Per ulteriori approfondimenti si rimanda a [9].
41
Capitolo 2. La trasformata di Laplace
Definizione 2.1. La trasformata di Laplace di una funzione f(t) è la funzione F (s ) L{ f (t )} definita nel modo seguente:
F (s ) L{ f (t )} :
0
est f (t )dt
(2.1)
dove s e f(t) è una funzione tale per cui per qualche valore di s l’integrale in (2.1) sia finito. F è quindi una funzione definita su e a valori in . Si ha che esiste un certo numero s0 (che può anche assumere valore ) tale per cui l’integrale in (2.1) converge per ogni s tale che Re(s ) s0 e diverge per ogni
s tale che Re(s ) s0 ; tale numero s0 è detto ascissa di convergenza. Le principali proprietà di cui gode la trasformata di Laplace sono le seguenti: i) linearità: L{af (t ) bg(t )} a L{ f (t )} b L{g(t )};
ii) derivazione: L{ f '(t )} s L{ f (t )} f (0 ); L{ f ''(t )} s 2 L{ f (t )} sf (0 ) f '(0 ); L{ f (n )(t )} s n L{ f (t )} s n1 f (0 ) ... f (n1)(0 ) n
s n L{ f (t )} s nk k 1
d k 1 f (0) dt k 1
iii) integrazione:
L L
t
1
0 f ()d s L f (t); t
0
f ( )g(t )d L f (t ) L g(t ) ;
iv) traslazione complessa: L{eat f (t )} L{ f (t )}(s a ); L1 {L{ f (t )}(s a )} eat f (t );
42
2.1 Definizioni e proprietà della trasformata di Laplace
v) traslazione nel tempo: L{ f (t a )(t a )} eas L{ f (t )}(s ); L1 {eas L{ f (t )}(s )} f (t a )(t a );
dove (t ) è la funzione gradino di Heaviside 10; vi) moltiplicazione per t all’n-esima potenza: (1)n L{t n f (t )}
dn ds n
[ L{ f (t )}(s)]
vii) funzione periodica di periodo p: L{ f (t )} viii)
p
1 ps
1 e
0
est f (t )dt
passaggio al limite;
L limt f (t ) lims 0 s L f (t ) (s ); L limt 0 f (t ) lims s L f (t ) (s );
Una proprietà importante, che merita di essere citata a parte, è quella dell’unicità della rappresentazione (2.1): una funzione F(s) non può essere la trasformata di Laplace di più di una funzione continua f(t). Teorema 2.1.1. Se l’equazione (2.1) è soddisfatta da una funzione continua f(t), allora non esiste un’altra funzione continua che soddisfa tale equazione. Per la dimostrazione si faccia riferimento a [16]. Osserviamo che non tutte le funzioni hanno trasformata di Laplace: in alcuni casi infatti l’integrale della formula (2.1) potrebbe non convergere; due possibili esempi sono le funzioni exp(t 2 ) e tan(t ).
La funzione gradino di Heaviside, chiamata anche funzione gradino unitaria, è una funzione discontinua che ha valore 0 per argomenti negativi e 1 per argomenti positivi: 10
0, x<0 (t ) 1, x>0
43
Capitolo 2. La trasformata di Laplace
Un’ampia classe di funzioni che possiedono sempre la trasformata di Laplace è la classe delle funzioni di ordine esponenziale: Definizione 2.2. Una funzione f si dice essere di ordine esponenziale se esistono delle costanti M e k tali che | f (t)| Mekt , t 0. In questo caso esiste la trasformata di Laplace nel caso in cui k coincida con l’ascissa di convergenza, cioè Re(s ) k . Se la trasformata di Laplace è nota, possiamo ricavare la funzione originale con uno dei seguenti due metodi: la formula di inversione di Bromwich (o integrale di Bromwich) o la formula di Post-Widder. Valgono infatti i seguenti risultati: Teorema 2.1.2. Se la trasformata di Laplace di f(t) esiste ed ha ascissa di convergenza con parte reale s0 , allora per t>0 1 R 2i
f (t ) L1 {F (s )} lim
a iR
aiR
F (s )etsds,
(2.2)
con a numero reale tale che a s0 , scelto in modo tale che tutte le singolarità di F(s) si trovino a sinistra della retta s s0 . Teorema 2.1.3. Se l’integrale F (s ) 0 est f (t )dt converge per s s0 , allora
(1)n f (t ) lim n n !
n 1
n t
n F (n ) t
(2.3)
per ogni punto t 0 di continuità per f(t). Per la dimostrazione di entrambi i teoremi si veda [16]. Il vantaggio della formula (2.3), che come abbiamo già accennato è detta formula di Post-Widder, sta nel fatto che f è espressa in termini di F e delle sue derivate sull’asse reale; tuttavia la convergenza di questa formula ad f(t) è estremamente lenta. Valutiamo ora i diversi metodi di inversione numerica della trasformata di Laplace.
44
2.2 Inversione numerica della trasformata di Laplace
2.2
Inversione numerica della trasformata di Laplace
Il problema dell’inversione numerica della trasformata di Laplace è un problema mal condizionato: ciò è dovuto alla presenza, all’interno del termine integrale di (2.1), di una componente esponenziale. I primi metodi proposti tentavano erroneamente di risolvere il problema attraverso un sistema lineare mal condizionato: consideriamo infatti la formula di quadratura per l’integrale nella definizione della trasformata di Laplace (2.1): F (s )
n
wi est f (ti )
(2.4)
i
i 1
con s reale. Scrivendo questa equazione per n valori diversi di s otteniamo un sistema lineare
in
dimensione n n
da
risolvere
rispetto
alle
n
incognite
Sfortunatamente, il termine esponenziale citato prima “appiattisce”
f (ti ) .
la funzione
originale, impedendo la ricostruzione di f(t) dai valori di F(s). Per questo motivo, quando si utilizzano algoritmi che tentano di ottenere l’inversione calcolando la trasformata di Laplace solo per valori reali di s, la soluzione cambia bruscamente a fronte di piccole variazioni di F (s ) . Quando invece la trasformata è nota in forma chiusa come una funzione complessa, questo problema non si pone. Per affrontare questo problema, noi seguiremo l’approccio di [1], dove viene proposta una formula generale per la costruzione di algoritmi di inversione: data la trasformata di Laplace F di una funzione f : , è possibile rappresentare la funzione f nel modo seguente
f (t ) fn (t ):
n 1 wk F k , t t k 0
t 0,
(2.5)
dove i nodi k e i pesi wk sono numeri complessi che dipendono solamente da n. Assumiamo inoltre che F in (2.1) sia ben definita e analitica per Re{s} 0 . Il fatto che i nodi k e i pesi wk siano indipendenti da F e da t permette di applicare la procedura a molte trasformate e in molti istanti temporali. Per quanto questi due parametri siano indipendenti da F e da t, l’accuratezza dell’approssimazione dipenderà da queste ultime 45
Capitolo 2. La trasformata di Laplace
variabili: per t molto piccoli o molto grandi, ad esempio, sarà più indicato usare risultati asintotici per t 0 o t . In [1] sono presentate due derivazioni di questa formula di inversione: una basata sull’integrale di Bromwich e una basata sull’approssimazione di una funzione delta tramite una combinazione lineare finita di funzioni esponenziali. Nelle applicazioni oggetto del nostro studio, la f sarà una funzione da a , quindi sarà approssimata con la sua parte reale: n 1 Re{ f (t )} Re{ fn (t )} : Re wk F k t t k 0
1 Re w Re F Im w Im F . t t t
n
k 0
k
k
k
k
Presentiamo ora i tre algoritmi principali usati nell’inversione della trasformata di Laplace: l’algoritmo di Gaver-Stehfest, l’algoritmo di Eulero e l’algoritmo di Talbot.
2.3 Algoritmi
unidimensionali
per
l’inversione
della
trasformata di Laplace Ognuno degli algoritmi elencati alla fine della sezione precedente utilizza una diversa formula per l’approssimazione presente in (2.5), portando quindi a risultati diversi per quanto riguarda l’efficienza dell’algoritmo, in termini di precisione richiesta e di cifre significative prodotte. Analizziamo quindi nel dettaglio ciascuno dei tre, per poter poi valutare quale utilizzare nel pricing delle opzioni.
46
2.3 Algoritmi unidimensionali per l’inversione della trasformata di Laplace
2.3.1 Algoritmo di Gaver-Stehfest Dei tre algoritmi presentati, l’algoritmo di Gaver-Stehfest è l’unico ad utilizzare sia pesi che nodi reali. Nell’algoritmo proposto da Gaver [20] nel 1966, la sequenza di approssimazioni usate è la seguente:
fn (t ):
n n (n k )ln(2) n ln(2) 2n . (1)k F k t n k 0 t
(2.6)
Notiamo che tali approssimazioni sono già nella forma (2.5), e possono essere calcolate tramite il seguente algoritmo ricorsivo: k ln(2) k ln(2) F 1 k 2n; , t t k k G (j k ) 1 G (j k)1 G (j k1 1), 1 j n, j k 2n j; j j G0(k )
fn (t ) Gn(n ). Usando questo algoritmo ricorsivo, tuttavia, risulta evidente un difetto: la convergenza di fn (t ) a f (t ) per n è molto lenta, e risulta quindi necessaria un’accelerazione. Questo è esattamente ciò che fece Stehfest [50] nel 1970, proponendo di migliorare l’algoritmo tramite lo schema lineare di Salzer 11; essendo uno schema lineare l’algoritmo rimane in forma (2.5). La formula che otteniamo è la seguente, detta formula di inversione di Gaver-Stehfest:
fg (t , M )
M
n m M (1)M fn (t ), M ! n n 1
t 0, M 0,
(2.7)
dove gli fn (t ) sono quelli calcolati in (2.6). Sostituendo quindi gli fn (t ) di (2.6) nell’equazione (2.7) otteniamo
fg (t , M )
11
2M k ln(2) ln(2) k F , t t n1
Per approfondimenti su questo metodo si veda [45].
47
(2.8)
Capitolo 2. La trasformata di Laplace
dove gli k sono definiti come M k
k (1)
min(k ,M )
j (k 1)/2
2 j j j M 1 M . M ! j j k j
Osserviamo che la (2.8) è della forma (2.5), con n 2M , wk k ln(2); inoltre
2M
k 0,
(2.9)
k k ln(2) e
M 1.
k 0
L’algoritmo di Gaver-Stefhest possiede alcune interessanti proprietà: come detto prima, richiede solo valori reali di s per definire F(s); le approssimazioni fg (t , M ) sono lineari nei valori di F(s); i coefficienti k e di conseguenza i wk sono calcolabili facilmente;
l’approssimazione
è
esatta
per
funzioni
costanti.
Inoltre,
grazie
all’accelerazione di Salzer, la velocità di convergenza è sufficientemente elevata. Per avere una buona accuratezza, tuttavia, è necessario che il sistema su cui lavoriamo abbia una precisione alta, cioè è richiesto un elevato numero di cifre significative per avere risultati precisi; in particolare, come mostrato in [37] è richiesta una precisione di 2.2M; in output vengono prodotte circa 0.9M cifre significative per f(t), a patto che la trasformata sia buona 12 (in caso contrario il numero di cifre significative potrebbe essere minore). Per ulteriori approfondimenti su questo metodo, si consulti [37].
2.3.2 Algoritmo di Eulero Nell’algoritmo di Eulero, a differenza del precedente, l’approssimazione avviene tramite il metodo delle serie di Fourier 13, in cui per accelerare la convergenza della serie infinita finale viene usata la somma di Eulero. Il metodo delle serie di Fourier può essere derivato dall’integrale di Bromwich (2.2), come la formula (2.5); inoltre, la
Diciamo che la trasformata di Laplace è buona se ha tutte le singolarità sull’asse reale negativo e se la funzione f è infinitamente differenziabile per ogni t>0. 13 Per approfondimenti su questo metodo, si veda [2]. 12
48
2.3 Algoritmi unidimensionali per l’inversione della trasformata di Laplace
somma di Eulero è un algoritmo di accelerazione lineare. Da queste due considerazioni, risulta che l’algoritmo di Eulero è in forma (2.5). Data una f a valori reali, la formula di inversione di Eulero per calcolare f (t ) è data da:
fe (t , M )
10M /3 t
2M
k Re F tk ,
(2.10)
k 0
con M ln(10) ik , 3 1 1 0 , 2M , 2 2M
k (1)k k ,
k
k 1, k [1, M ]
M 2M k 2M k 1 2M , k (0, M ) k La formula di inversione (2.10) è nella forma (2.5), con n 2M , k k e wk 10M /3 k . A differenza dell’algoritmo di Gaver-Stehfest, i nodi sono complessi, quindi quando f è a valori reali useremo
Re k F k k Re F k ; t t i pesi sono invece reali come nell’algoritmo precedente, con n
k 0,
n 2, n pari.
k 0
In generale l’algoritmo di Eulero è più efficiente dell’algoritmo di Gaver-Stehfest: infatti a fronte di una precisione richiesta per il sistema di M (contro 2.2M per GaverStehfest), le cifre significative prodotte sono 0.6M (contro 0.9 nel caso di GaverStehfest). Per ulteriori approfondimenti sull’uso dell’algoritmo di Eulero nell’inversione della trasformata di Laplace, si consulti [44].
49
Capitolo 2. La trasformata di Laplace
2.3.2 Algoritmo di Talbot Come nei due casi precedenti, anche l’algoritmo di Talbot è nella forma (2.5), essendo ricavabile dall’integrale di Bromwich. In questo caso, la formula per calcolare f (t ) numericamente, per f a valori reali, è:
2 fta (t , M ) 5t
M 1
Re k F tk ,
(2.11)
k 0
con
0
2M , 5
1 0 e0 , 2
2k k cot i , k (0, M ), 5 M 2 k k k ek , k (0, M ). cot k 1 i 1 cot i M M M
k
La formula di inversione (2.11) è nella forma (2.5), con n M ,
k k e
wk 2 k . In questo caso sia i nodi che i pesi sono complessi, con 5
M 1 k 100.6M . Re k 0
L’efficienza dell’algoritmo di Talbot è la stessa dell’algoritmo di Eulero: a fronte di una precisione del sistema di M, fornisce 0.6M cifre significative. Per ulteriori approfondimenti sull’algoritmo di Talbot si consulti [42]. Nel pricing delle opzioni utilizzeremo questi algoritmi per l’inversione della trasformata all’interno del nostro processo di pricing; in particolare implementeremo all’interno delle nostre funzioni di Matlab i primi due algoritmi presentati. In alcuni casi i nodi dovranno essere reali, e sarà quindi necessario utilizzare l’algoritmo di Gaver-Stehfest. In altri casi questa condizione non sarà un vincolo e potremo quindi usare l’algoritmo di Eulero che richiede dominio complesso; esso, infatti, pur producendo un numero di cifre significative leggermente inferiore a quello di GaverStehfest, richiede una precisione decisamente minore ed è quindi più adatto all’implementazione in Matlab, poiché fornisce una migliore approssimazione del risultato 50
Capitolo 3
Pricing di opzioni tramite trasformata di Laplace
Affrontiamo in questo capitolo quello che è il tema centrale di questa ricerca, cioè il pricing di opzioni utilizzando lo strumento presentato nel capitolo precedente, la trasformata di Laplace. Il primo tipo di opzione che tratteremo è l’opzione barriera, un tipo di opzione path-dependant; passeremo poi alle opzioni americane, che permettono l’esercizio anticipato, ed infine alle opzioni fractional lookback, il cui prezzo dipende dal massimo o minimo valore assunto dal sottostante. In particolare presenteremo alcuni metodi che permettono di ottenere il prezzo di questi tipi di opzioni nello spazio della trasformata, e useremo poi gli algortmi di inversione presentati nel Capitolo precedente per ricavare il prezzo nello spazio di partenza. La trasformata di Laplace si rivelerà essere uno strumento molto potente, in quanto grazie ad essa potremo ad esempio eliminare la dipendenza dal tempo o trovare formule analitiche, e in generale ricavare dei metodo che permetteranno il calcolo del prezzo dell’opzione in modo rapido ed accurato.
51
Capitolo 3. Pricing di opzioni tramite trasformata di Laplace
3.1 Opzioni barriera Iniziamo fornendo una breve descrizione ed alcuni preliminari teorici riguardo alle opzioni barriera, per passare poi a descrivere il metodo di pricing associato a questo genere di opzioni.
3.1.1 Preliminari Con il termine opzione barriera si definisce un’opzione di tipo esotico 14 ; la particolarità di queste opzioni è, appunto, la presenza di una (o più) barriere, ossia di un valore fissato della quotazione del sottostante. A seconda del tipo di opzione barriera considerato, quando il sottostante attraversa, in salita o in discesa, questo limite, l’opzione cessa di avere validità o inizia ad avere validità. In particolare i principali tipi di opzione barriera sono: •
Up-and-out: il prezzo iniziale del sottostante si trova al di sotto della barriera; quando la barriera viene superata (dal basso), l’opzione cessa di avere valore. Il payoff di un’opzione call barriera di questo tipo è: (ST K ) CUO (K ) 0
•
se sup{St , 0 t T } B , altrimenti
(3.1)
Down-and-out: il prezzo iniziale si trova al di sopra della barriera, e nel caso scenda al di sotto di essa l’opzione assume valore nullo. Il payoff di una call down-and-out ad esempio è dato da: (ST K ) CDO (K ) 0
se inf{St , 0 t T } B , altrimenti
(3.2)
Per opzione esotica si intende uno strumento derivato più “complesso” delle opzioni più comunemente scambiate (definite opzioni vanilla); questa complessità maggiore può derivare da metodi più elaborati per definire il payoff o da un tipo di sottostante non standard, sviluppato per un particolare cliente o un particolare mercato. 14
52
3.1 Opzioni barriera
•
Up-and-in: il prezzo iniziale è al di sotto della barriera e deve superarla almeno una volta affinchè l’opzione inizi ad avere valore. Il payoff di una call up-and-in ad esempio è: (S K ) CUI (K ) T 0
•
se sup{St , 0 t T } B , altrimenti
(3.3)
Down-and-in: il prezzo iniziale è al di sopra della barriera, e quando arriva ad essere inferiore della barriera, l’opzione inizia ad avere valore. Il payoff di una call in questo caso sarà: (ST K ) CDI (K ) 0
•
se inf{St , 0 t T } B , altrimenti
(3.4)
Knock-out: sono presenti due barriere, l’opzione è valida fintanto che il prezzo è compreso tra queste due barriere (il prezzo iniziale si trova ovviamente compreso tra le barriere). Il payoff di una call knock-out è:
(S K ) CKO (K ) T 0 •
se {inf{St , 0 t T } Binf sup{St , 0 t T } Bsup }, (3.5) altrimenti
Knock-in: sono presenti due barriere, il prezzo iniziale è esterno a queste barriere e l’opzione inizia ad avere validità solo quando il prezzo entra nell’intervallo compreso tra le due barriere. Il payoff di una call knock-in è:
(ST K ) CKI (K ) 0
se {inf{St , 0 t T } Binf sup{St , 0 t T } Bsup }, (3.6) altrimenti
Precisiamo inoltre che una volta attraversata la barriera, essa perde la sua validità e non influisce più sul valore dell’opzione. Ciò significa in particolare che per quanto riguarda le opzioni out, che una volta superata la barriera l’opzione continuerà ad avere valore nullo anche nel caso in cui il prezzo dovesse tornare nel range di validità; allo stesso modo per le opzioni in, una volta superata la barriera l’opzione acquisterà valore, e lo manterrà anche nel caso in cui dovesse tornare al di sopra o al di sotto della barriera.
53
Capitolo 3. Pricing di opzioni tramite trasformata di Laplace
Un importante elemento per lo studio delle opzioni barriera è l’istante di primo passaggio B ; esso è definito come: B inf{t 0 : St B },
o
B inf{t 0 : St B},
B 0,
(3.7)
a seconda che si tratti di primo passaggio da sotto o da sopra; con S B indichiamo il valore del sottostante all’istante B , sull’insieme {B } . Esso indica l’istante in cui il prezzo del sottostante tocca per la prima volta il valore di barriera (dal basso o dall’alto).
3.1.2 Un modello ibrido per il pricing delle opzioni barriera Per il pricing delle opzioni barriera, sfrutteremo un modello ibrido, seguendo l’approccio di [51]. L’approccio ibrido sfrutta una combinazione della trasformata di Laplace e del metodo alle differenze finite. Grazie alla trasformata di Laplace, la dipendenza dal tempo può essere eliminata: questo permette di passare dalla risoluzione di una PDE in due dimensioni (prezzo del sottostante e tempo) a quella di una serie di ODE indipendenti e in una dimensione (prezzo). In Figura 3.1
riportiamo una
schematizzazione dei due mteodi, quello basato sulla trasformata di Laplace e il metodo alle differenze finite classico. Grazie a questo metodo possiamo quindi ottenere una soluzione rapida ed accurata: esso, infatti, non necessita di una griglia temporale per il calcolo del prezzo ad ogni istante temporale; la rimozione della dipendenza dal tempo permette di calcolare direttamente il prezzo finale a cui siamo interessati in quanto l’inversione può essere applicata direttamente per t T , ed evita diversi problemi numerici che interessano invece gli altri metodi, nei quali il rapporto tra la dimensione della griglia temporale e quella spaziale possono portare ad instabilità. Dopo aver eliminato la dipendenza temporale, usiamo il metodo alle differenze finite per discretizzare l’equazione 54
3.1 Opzioni barriera
risultante; infine, i valori calcolati nei nodi nello spazio della trasformata di Laplace sono riportati alle quantità reali tramite uno degli algoritmi di inversione citati nel Capitolo 2.
Figura 3.1: Metodo Ibrido vs Metodo tradizionale alle Differenze Finite
Consideriamo il caso in cui il sottostante evolva secondo il modello di Black&Scholes e studiamo un’opzione call con singola barriera di tipo down-and-out. Supponiamo che la traiettoria del sottostante segua la seguente equazione differenziale:
dS dt dWt S
(3.8)
dove identifica il termine di drift, rappresenta il termine di diffusione e dWt rappresenta l’incremento del processo di Weiner di media 0 e varianza dt. L’equazione differenziale per risolvere il problema di pricing dell’opzione è: 1 2 2 s Css rf (sCs C ) C 2
(3.9)
dove C indica il valore dell’opzione, rappresenta la volatilità dello stock, rf è il tasso di sconto risk-free, T t rappresenta il time to maturity 15, s rappresenta un nodo della griglia dei prezzi, Cs è la derivata prima parziale di C rispetto al prezzo
Con il termine time to maturity o equivalentemente time to expiration si intende il tempo rimanente prima della scadenza del contratto 15
55
Capitolo 3. Pricing di opzioni tramite trasformata di Laplace
dello stock S, Css è la derivata seconda parziale di C rispetto al prezzo dello stock S e
C è la derivata prima parziale di C rispetto a . Le condizioni al bordo in questo caso sono le seguenti:
C (B , ) fL (t )
e in questo caso C (B, ) 0;
C (S max , ) fU (t ) e in questo caso C (S max , ) S max k ert ; C (s,0) (s k )(s k )
(3.10)
dove B è il valore della barriera, fL (t ) e fU (t ) sono rispettivamente i valori dell’opzione nell’istante in cui viene toccata la barriera inferiore e superiore o quando vengono toccati il valore iniziale o finale della griglia dei nodi, come in questo caso, (x ) è la funzione di Heaviside e k è lo strike price. Applichiamo la trasformata di Laplace rispetto a alle equazioni (3.9) e (3.10) per rimuovere la dipendenza da . Otteniamo così: 1 2 2 s Css rf (sCs C ) pC (s k )(s k ) 2
(3.11)
C (B , ) fL (t )
(3.12)
C (S max , ) fU (t )
(3.13)
dove C è la trasformata di Laplace di C, e il parametro p è una variabile complessa nella forma p v iw , con v e w a valori reali, e . Il termine a destra dell’uguale nella (3.11) deriva dalla proprietà ii) della trasformata di Laplace (Capitolo 2, Sezione 1), ossia la trasformata di una derivata della funzione C: L{C ( )} p L{C ( )} C ( )| 0 ; Applichiamo a questo punto il metodo centrato alle differenze finite all’equazione (3.11), e otteniamo la seguente:
C Ci 1 1 2 2 Ci 1 2Ci Ci 1 si rf (si i 1 Ci ) pCi (si k )(si k ) (3.14) 2 2 2 s (s ) per i = 2,3,…,n-1, dove n è il numero dei nodi della griglia spaziale. 56
3.1 Opzioni barriera
Per le condizioni al bordo, l’approssimazione alle differenze finite è la seguente: C1 fL ,
(3.15)
Cn fU ,
(3.16)
con fL e fU sono le trasformate di Laplace delle condizioni al bordo fL e fU ; nel nostro caso avremo fL 0 e fU (Smax / p) (K / (rf p)). Sostituendo queste ultime due equazioni nella (3.14) otteniamo l’equazione valida per i 2 e i n 1 : b2C2 c2C3 I 2 fL (s2 k )(s2 k ) I 2
(3.17)
an1Cn2 bn1Cn1 I n1 fU (sn1 k )(sn1 k ) I n1
(3.18)
dove b2 ,c2 , I 2 , an1 ,bn1 e I n1 sono definiti come: 2s22 rf p b2 (s )2 2 2 s2 rf s2 c2 2 2s 2(s ) 2s22 rf s2 I 2 2(s )2 2s
2sn21 rf sn1 an1 2(s )2 2 s 2sn21 rf p bn1 (s )2 2 2 sn1 rf sn1 I n1 2(s )2 2 s
Per gli indici i 3,..., n 2 otteniamo invece l’equazione:
aiCi 1 biCi ciCi 1 I i dove
57
(3.19)
Capitolo 3. Pricing di opzioni tramite trasformata di Laplace
2si2 rf si ai (s )2 2s 2si2 rf p bi (s )2 2 2 si rf si ci 2(s )2 2s
I i (si k )(si k ).
Usando quindi le equazioni (3.17)-(3.19), possiamo definire un sistema, descritto dalla seguente equazione matriciale:
K C F ,
(3.20)
b2 c2 0 a3 b3 c3 a4 b4 c4 K an2 bn2 cn2 0 an1 bn1
(3.21)
dove
e
C2 C3 [C ] C n2 C n1
I2 I3 [F ] ; I n2 I n1
(3.22)
K è una matrice (n 2)(n 2) , [C ] è un vettore (n 2)1 che rappresenta i valori non noti nei nodi spaziali nello spazio della trasformata, e [F ] è un vettore (n 2)1 che rappresenta il termine forzante. A questo punto possiamo risolvere il sistema, ad esempio utilizzando l’algoritmo di eliminazione di Gauss, e ottenere così il valore dei C j . Dopo aver ottenuto questo risultato, usiamo la trasformata inversa di Laplace, utilizzando uno dei metodi 58
3.1 Opzioni barriera
numerici a disposizione, per trovare i prezzi C j del problema originale. In questo specifico caso abbiamo utilizzato il metodo di Eulero: dopo aver calcolato i pesi k e i nodi k abbiamo usato la (2.10) per invertire i risultati ottenuti e trovare il valore dell’opzione barriera nello spazio di partenza.
3.1.3 Pricing analitico di un’opzione barriera doppia con modello
jum p diffusion esponenziale doppio Come accennato nel capitolo introduttivo, l’assuzione del modello di Black&Scholes che la volatilità del sottostante sia costante non permette di rappresentare alla perfezione ciò che accade nel mercato reale. Nella pratica, infatti, il mercato delle opzioni mostra la presenza di uno smile di volatilità: ciò sta ad indicare che opzioni con diversa maturity e diverso strike hanno anche volatilità implicite differenti. In questo paragrafo assumeremo quindi che il prezzo del sottostante segua un modello jump diffusion esponenziale doppio, in particolare il modello di Kou (Sezione 1, Paragrafo 5.1). Normalmente in questi casi quella che si va a risolvere è un’equazione integro-differenziale parziale (PIDE - Partial Integral Differential Equation) tramite un metodo alle differenze finite o agli elementi finiti; utilizzando la trasformata di Laplace, mostreremo come il problema può essere semplificato e risolto in modo più rapido ed accurato, trovando una formula analitica per il valore dell’opzione nello spazio della trasformata ed invertendola poi con uno degli algoritmi presentati nella Sezione 1. Per la trattazione seguiremo [47]. Assumiamo che l’equazione differenziale stocastica (SDE) che governa il prezzo del sottostante sotto la misura di probabilità neutrale al rischio Q sia data da dSt (rf )Stdt (eJ 1)StdNt StdWt ,
S (0) S 0
(3.23)
dove rf è il tasso di interesse risk-free, è il dividendo e è la volatilità. Nt è un processo di Poisson con intensità , J è l’ampiezza del salto casuale, con funzione 59
Capitolo 3. Pricing di opzioni tramite trasformata di Laplace
densità di probabilità fJ . Per fare in modo che il processo scontato sia una martingala, poniamo E[eJ 1] . Come accennato, in questa trattazione useremo il modello di Kou [34] quindi la funzione fJ avrà la seguente forma, già introdotta nel Capitolo 1, Paragrafo 5.1: fJ fJ fJ q dove
0 1 e 0
sono
1
1
y
e 1{J 0} q
rispettivamente
1
la
e
1
y
(3.24)
1{J 0} ,
media
della
distribuzione
dell’ampiezza dei salti positivi e di quella dei salti negativi; le costanti q e q rappresentano rispettivamente la probabilità di un salto positivo e di uno negativo e sono entrambe positive e tali che q q 1 . La richiesta di 1 è necessaria affinchè E[eJ ] e E[S ] . Notiamo che E[e
J
]
e
J
fJ dJ
q 1
q
1
(3.25)
per qualunque 1 / ,1 / . Ricaviamo quindi che E[eJ 1]
q 1
q 1
1.
(3.26)
Il valore V (S , t ) di un’opzione europea soddisfa la seguente equazione, definita PIDE generalizzata di Black&Scholes: Vt 12 2S 2VSS (rf )SVS rfV
J V Se V (S )fJdJ 0
(3.27)
con condizione finale F (S ,T ) max S K ,0
(3.28)
dove T è la maturity, K è lo strike price e la variabile binaria prende il valore +1 nel caso di un’opzione call e 1 nel caso di opzione put. In un’opzione doppia barriera knock-out, come definito nel paragrafo 3.1.1, il contratto perde valore nel caso una delle due barriere sia raggiunta prima della data di 60
3.1 Opzioni barriera
scadenza. Se nessuna delle due barriere viene toccata, l’opzione knock-out call (put) avrà un payoff pari a max S K ,0 ( max K S ,0 ) alla scadenza. Siano Bu e Bd rispettivamente la barriera superiore e la barriera inferiore; il valore di un’opzione knock-out, indicato con V KO (S , t ) soddisfa la PIDE (3.27) per
Bd S Bu , con le seguenti condizioni al bordo per 0 t T : V KO (S ,T t ) u*(T t ),
S Su ,
(3.29)
V KO (S ,T t ) d*(T t ),
S Sd ;
(3.30)
dove u* (t ) e d* (t ) sono le funzioni che determinano il payoff in corrispondenza rispettivamente della barriera superiore e inferiore; come nel caso esaminato nel paragrafo precedente, considereremo opzioni barriera classiche senza rebate, ossia che non pagano nulla quando viene toccata la barriera, quindi avremo di nuovo u* (t ) d* (t ) 0 . Introduciamo i seguenti cambi di variabile:
t T t , S x ln KS , Su ,d xu ,d ln
Su ,d K
, u ,d (t ) ln
u*,d (t ) K
e riscriviamo la PIDE (3.27) con questo nuovo cambio di variabili per U KO (x , ) K1 V KO (S , t ) come KO U KO 12 2U xx U xKO rfU KO
U
KO
x J U KO (x )fJ dJ 0 (3.31)
per xd x xu , con condizione iniziale U KO (x ,0) max ex 1 ,0 ,
(3.32)
e U KO (x , ) u ( ), x xu e U KO (x , ) d ( ), x xd , con rf 12 2 . Definiamo quindi la trasformata di Laplace di U KO (x , ) rispetto a come U (x , p) L U KO x ,
0
61
epU KO x , d ,
(3.33)
Capitolo 3. Pricing di opzioni tramite trasformata di Laplace
dove p è la variabile di trasformazione che ha parte reale positiva; in particolare in questa sezione considereremo p . Grazie alla trasformata di Laplace, possiamo ricondurre il nostro problema ad uno nuovo che possiamo risolvere analiticamente, e ciò è possibile nello spazio delle trasformate. Una volta ottenuta la soluzione nello spazio delle trasformate, possiamo tornare alla soluzione nello spazio originale applicando uno dei metodi di inversione definiti nel paragrafo 2.2. Prima di presentare la Proposizione che ci permetterà di calcolare analiticamente il prezzo dell’opzione, enunciamo un Lemma e una Proposizione che ci saranno utili nella dimostrazione. Per la dimostrazione di entrambi si veda [47]. Lemma 3.1.1. L’equazione q 1 2 2 q (rf p ) 0 1 1 2
(3.34)
ha esattamente quattro radici reali i , i 0,1,2,3 tali che 3
1
2 0 1
1
(3.35)
0
Applicando la trasformata di Laplace alla PIDE delle opzioni vanilla scambiando l’ordine degli integrali, otteniamo la seguente equazione integro-differenziale ordinaria (OIDE - Ordinary Integro-Differential Equation): 1 2
2Uxx Ux (rf p )U
U x J fJdJ max e
x
1 ,0
(3.36)
definita per x , . La soluzione dell’equazione (3.36) è specificata dalla seguente proposizione: Proposizione 3.1.2. Nello spazio della trasformata di Laplace, il valore di un’opzione vanilla con sottostante che segue il modello di Kou è pari a
62
3.1 Opzioni barriera x 1 e 0x 1x C C e e 0 1 2 p rf U (x , p) x 1 e 2x 3x C C e e 2 3 2 p rf
1 , x 0 p 1 , x 0 p
(3.37)
dove i , i 0,1,2,3 sono le radici reali dell’equazione (3.33) e le costanti Ci , i 0,1,2,3 sono le soluzioni del sistema
1 0 1 0 1 1 1 0
1 1
1 1 1 1 1 1
1 2
1 2 1 1 2 1
1 1 p rf p C 0 1 p C1 1 1 1 r p 3 1 C 2 p 1 f 1 C 3 1 1 3 1 p 1 rf p
1 3
(3.38)
Nel caso delle opzioni knock-out doppia barriera, la OIDE ottenuta applicando la trasformata di Laplace alla PIDE (3.31) è 1 2
KO 2Uxx UxKO (rf p )U KO
U
KO
x J fJ dJ max ex 1 ,0 , xd x xu
U KO (x , p) d , x xd U KO (x , p) u , x xu
(3.39)
Possiamo quindi provare la seguente Proposizione Proposizione 3.1.3. Nello spazio della trasformata di Laplace, il valore di un’opzione doppia barriera knock-out con sottostante che segue il modello di Kou è pari a
ex 1 x x x x e e e e C C C C C C 0 4 1 5 6 7 2 p rf KO U (x , p ) x C C e x C C e x C e x C e x 1 e 6 3 7 4 5 2 2 p rf 0
1
2
3
2
3
0
1
, x 0 p (3.40) 1 , x 0 p 1
dove i , i 0,1,2,3 sono le radici reali dell’equazione (3.33), le costanti Ci , i 0,1,2,3 sono quelle definite nella Proposizione 3.1.2 e le costanti Ci ,
i 4,5,6,7 sono le soluzioni del sistema
63
Capitolo 3. Pricing di opzioni tramite trasformata di Laplace
e 1 e x e x e 1 0 xd
0
e
e
2 1
e
2 xd
e
2 x u
0 d
e
1xd
0 u
e
1x u
e
2 xd
1 1
0 xu
0
1 xd
1 xu
e
1 1
2 xu
2 1
1 e C0 e C1 1 d e 2 r p p 1 1 1 1 C 4 1 x x e 1 x e C e C d 0 1 C 5 e p r p 2 (3.41) x 1 x x e 1 C 6 e u e C 2 e C 3 p r p 2 C 7 e 1 e e e 1 1 2 p 1 r p u 1 C 2 1 C 3 e 3
3 xd
xd
f
1
0 d
1 d
2 u
3 u
f
xu
3 u
2 xu
2
0
xd
3 d
1 xd
0 xd
f
xu
f
3 xu
2 xu
2
3
Notiamo che nel caso di opzione doppia barriera knock-out classica, i valori di d e u sono pari a 0. Per la dimostrazione della Proposizione 3.1.3 seguiamo il
procedimento utilizzato in [47]. Dimostrazione. Il valore di un’opzione doppia barriera knock-out può essere vista come la somma della soluzione dell’opzione senza barriere U u (x , p) (quindi di una plain vanilla con gli stessi parametri), fornita dalla Proposizione (3.1.2), e dalla soluzione che considera le barriere U b (x , p) :
U KO (x , p) U u (x , p) U b (x , p)
(3.42)
dove
d U d (x , p), 7 x U b (x , p) i 4 Ci e i 4 , u u U (x , p),
x xd
xd x xu .
(3.43)
x xu
Determiniamo i coefficienti Ci , i 4,5,6,7 in modo che le condizioni al bordo siano rispettate e U b (x , p) rispetti la OIDE (3.39). Consideriamo in primo luogo l’integrale
U b (x J , p)fJ dJ
xd x
xu x
0
0
U b (x J , p)fJdJ
u d U (x J , p) fJ dJ 7
i 4 Ci e
i 4 (x J )
fJdJ
0
7
0
x x i 4 Ci e d
x x u U u
64
u
U b (x J , p)fJdJ
i 4 (x J ) fJ dJ
(x J , p) fJdJ .
3.2 Opzioni americane
Dato che conosciamo la funzione fJ , definita nella (3.24), possiamo calcolare questi integrali. Notiamo inoltre che i valori di U u (x , p) per x xd sono dati dai valori dell’opzione vanilla calcolati con la (3.37) per x 0 e i valori di U u (x , p) per x xd sono dati dai valori dell’opzione vanilla calcolati con la (3.37) per x 0 . L’espressione finale ottenuta risolvendo gli integrali contiene termini con exp 1 / (xd x ) e exp 1 / (xu x ) , che annulliamo sommando i rispettivi coefficienti a 0. Come risultato di questa operazione, otteniamo la prima e la quarta equazione del sistema (3.41). Consideriamo quindi l’operatore (U ): 12 2U xx U x (rf p )U , applicato a
U b : la somma di (U b ) con i rimanenti termini degli integrali definiti sopra permette di eliminare i rimanenti termini moltiplicati per Ci , i 4,5,6,7 . La seconda e la terza equazione del sistema sono infine ottenute rispettivamente dalle condizioni al bordo della barriera inferiore e superiore. La rappresentazione (3.42) è quindi valida e otteniamo il sistema (3.41) dal calcolo delle costanti Ci , i 4,5,6,7 . Questo approccio purtroppo non è utilizzabile per risolvere l’opzione nel caso in cui il sottostante evolva con modello di Black&Scholes, cioè quanto 0 : in questo caso infatti non è possibile risolvere accuratamente i sistemi per ricavare i coefficienti Ci , i 1,...,7 in quanto le matrici dei coefficienti risultano singolari.
3.2 Opzioni americane In questa sezione tratteremo il pricing di opzioni americane con il metodo della trasformata di Laplace. Saranno prima introdotte la definizione ed alcune proprietà delle opzioni americane. Passeremo poi a prezzare queste opzioni con due diversi metodi: con il primo, calcoleremo la curva di esercizio anticipato dell’opzione (questo concetto verrà definito nel prossimo paragrafo); con il secondo, useremo due diversi 65
Capitolo 3. Pricing di opzioni tramite trasformata di Laplace
metodi di randomizzazione per il calcolo del valore dell’opzione e della curva di esercizio anticipato.
3.2.1 Preliminari Un’opzione americana si differenzia da un’opzione europea per il fatto che un possessore di tale opzione può decidere di esercitarla in qualunque data compresa tra 0 e T, data di scadenza di tale opzione (un’opzione europea può invece essere esercitata solo alla scadenza T). Una conseguenza di questa possibilità di esercizio anticipato è che un’opzione americana ha sempre un valore maggiore o uguale a quello di un’opzione europea. In particolare, l’unico caso in cui un’opzione americana ha lo stesso valore di un’opzione europea è il caso di una call che non distribuisce dividendi; in tutti gli altri casi, la differenza, dovuta al premio di esercizio anticipato¸ può essere notevole. Una seconda conseguenza della possibilità di esercizio anticipato è che il valore dell’opzione americana non può essere mai minore del payoff che si otterrebbe con l’esercizio immediato in t=0; questo valore è definito valore intrinseco dell’opzione. Un’opzione europea può avere valore minore del payoff; questo non può accadere invece per l’opzione americana in quanto in caso contrario si avrebbe opportunità di arbitraggio. Prendiamo ad esempio una put americana: se fosse valida la relazione
VPAm (K S ) , potrei acquistare l’opzione put, esercitarla al tempo 0 e realizzare così un guadagno con probabilità uguale ad 1; lo stesso vale nel caso della call, se fosse valida la relazione VCAm (S K ) . Definiamo ora il concetto di curva di esercizio anticipato. Osservando le condizioni al bordo delle opzioni americane, possiamo notare che esse non si comportano come le opzioni europee. Prendiamo ad esempio il caso di un’opzione put americana: per
S , il valore di un’opzione si avvicina sempre di più a quello di un’opzione put europea. Per S 0 , tuttavia, deve comunque essere valida la condizione per cui il 66
3.2 Opzioni americane
valore di un’opzione americana è sempre maggiore del payoff: risulta quindi che per S sufficientemente piccoli, VPAm K S . Bisogna quindi risolvere il problema di determinare il comportamento per i valori di S intermedi. Immaginiamo di avvicinarsi a S=0 partendo dal lato destro, dove VPAm (S , t ) (K S ) : per la continuità e monotonia di VPAm , la curva VPAm incontrerà la retta (K S ) in un punto, che chiameremo S f , tale che 0 S f K . Questo punto di contatto S f è definito dalle seguenti relazioni: VPAm (S , t ) (K S )
per S S f (t )
VPAm (S , t ) K S
per S S f (t )
(3.44)
Questa condizione appena enunciata vale t T , e il punto di contatto S f dipende da t. Considerando tutti i t compresi tra 0 e T, i punti di contatto S f (t ) formano una curva, che separa l’area dove il valore V è maggiore del payoff da quella dove il V è uguale al payoff. Dato che la posizione del punto S f non è nota a priori, questa curva è “libera” e per questo motivo il calcolo del valore di un’opzione americana è detto problema a frontiera libera. La curva formata dagli S f (t ) nello spazio (S,t) è detta curva di esercizio anticipato, e l’istante ts in cui il processo di prezzo St raggiunge questa curva è un tempo di arresto ottimale, cioè l’istante ottimo in cui si dovrebbe esercitare l’opzione. Per
S S f , infatti, l’esercizio anticipato causerebbe una perdita immediata, in quanto dalle condizioni (3.44) ricaviamo V K S : ricevere lo strike K non compenserebbe dalla perdita di V e S; quindi il possessore dell’opzione non la esercita in questa regione, che è per questo motivo chiamata continuation region. Quando invece S S f , si può creare un profitto esercitando l’opzione e investendo il ricavato K al tasso privo r (T t )
di rischio per il restante tempo T t , con un profitto risultante pari a Ke f
K .
Per massimizzare questa quantità, il possessore dell’opzione dovrà massimizzare T t , e quindi esercitare non appena V K S ; per questo la regione S S f è chiamata stopping region. 67
Capitolo 3. Pricing di opzioni tramite trasformata di Laplace
3.2.2 Calcolo della curva di esercizio anticipato con la trasformata di Laplace Consideriamo il modello di Black&Scholes, nel quale la volatilità , il tasso di interesse r e il dividendo sono considerati costanti. Il valore di un’opzione call C (S , t ) in questo modello segue l’equazione differenziale parziale
Ct 1 2S 2CSS (rf )SCS rf C 0, 2
(3.45)
con S prezzo del sottostante, t T istante di tempo considerato e T maturity, ovvero istante nel quale il possessore dell’opzione call riceverà il payoff max(S K ,0) , con K strike price dell’opzione. Per semplificare i calcoli, lavoreremo in termini di vita rimanente dell’opzione, definita come T t , e quindi la (3.45) sarà sostituita da
C 1 2S 2CSS (rf )SCS rf C . 2
(3.46)
Per le opzioni europee, la (3.46) è valida per qualunque 0 . Per le opzioni americane, invece, per le quali è concesso l’esercizio anticipato, la (3.46) è valida solo nella continuation region, dove è ottimale non esercitare l’opzione: l’equazione deve quindi essere risolta insieme alle opportune condizioni della curva di esercizio anticipato. Indicheremo la posizione della curva di esercizio anticipato con S S f ( ) ; possiamo invertire questa relazione per ottenere f (S ) , cioè l’istante in cui è ottimale esercitare l’opzione. Le proprietà della curva di esercizio anticipato e del valore dell’opzione che useremo in questo paragrafo sono le seguenti:
68
3.2 Opzioni americane
i) Il prezzo di un’opzione call americana è dato da una funzione valore; dove è ottimale tenere l’azione, cioè nella continuation region, la funzione valore è liscia 16 con V (S , ) max(S K ,0) e 0 VS 1 . ii) Esiste sempre una strategia di esercizio ottimale per un’opzione americana e un tempo di esercizio ottimale. iii) Alla barriera libera, il valore dell’opzione è uguale al pay-off risultante dall’esercizio immediato: Vf (S , t ) S K . iv) Alla barriera libera, il delta dell’opzione, ossia la derivata della funzione valore rispetto al prezzo del sottostante, vale 1: (Vf )S 1 . Questa condizione, detta condizione di smooth pasting o condizione di value matching, si dimostra essere condizione sia necessaria che sufficiente per l’ottimalità della barriera. v) Alla scadenza, si ha che Krf / K S f (0) S 0 K
r r
che può essere scritto anche come f (0) 0. vi) Per , ossia nel caso di call americana perpetua 17 , si ha che
S f ( ) S1 K / ( 1) , dove 2 ( 2 / 2) (rf ) rf ( 2 / 2) 2 2 / 2 .
16
Una funzione f è detta liscia in un punto del suo dominio se è differenziabile infinite volte in quel
punto; se f è liscia su tutti i punti di un insieme A si dice che essa è di classe C
su A, e si scrive
f C (A) . Un’opzione americana si dice perpetua se può essere esercitata per qualunque t>0, senza vincoli di scadenza. 17
69
Capitolo 3. Pricing di opzioni tramite trasformata di Laplace
Possiamo riscrivere questa relazione come f (S ) 0 quando S S1 . Quando
0 si ha che S1 , quindi una opzione call americana perpetua che non paga dividendi ha lo stesso valore dello stock vii) La curva di esercizio anticipato è una funzione strettamente crescente in , e questo ci permette di definire l’inversa f (S ) menzionata in precedenza. La curva di esercizio ottimale si muoverà crescerà all’allontanarsi dalla data di scadenza, quindi al crescere di ,
e sarà contenuta tra i due limiti
S 0 S f ( ) S1 ; l’esercizio è ottimale se S S f ( ) , tenere l’opzione è ottimale se 0 S S f ( ) . viii) La curva di esercizio anticipato è una funzione continua e differenziabile in , e questo ci permette di calcolare le derivate di f (S ) .
Fornite queste premesse, cerchiamo di risolvere il problema usando la trasformata di Laplace rispetto al tempo. Dal momento che S 0 è diverso quando abbiamo r o r , considereremo questi due casi separatamente. Dal momento che l’equazione (3.46) vale solo quando è ottimale mantenere l’opzione, modificheremo l’usuale trasformata di Laplace L{ f ( )}(s ): 0
es f ( )d , ma useremo una trasformata di
Laplace parziale per S S1 : V (S , p)
p
(S ) e
V (S , )d ,
(3.47)
f
con il limite inferiore dell’integrale in f (S ) e non in 0 . Questa definizione della trasformata di Laplace è ovviamente uguale a porre V (S , ) 0 nella regione in cui è ottimo esercitare l’opzione; grazie ad essa, il valore dell’opzione V (S , ) seguirà la (3.46) in qualunque punto integreremo. Per avere la convergenza dell’integrale (3.47), dobbiamo inoltre imporre che la parte reale di p sia positiva; in aggiunta, sappiamo che per definizione V (S , p) 0 per S S1. Possiamo inoltre definire la trasformata inversa come fatto nel capitolo precendente:
V (S , )
1 2i
i
i
70
ep V (S , p)dp,
(3.48)
3.2 Opzioni americane
che ovviamente ha senso solo dove è ottimale non esercitare l’opzione. Dalle definizioni precedenti e dalle proprietà della trasformata di Laplace enunciate nel capitolo precedente, possiamo derivare abbastanza semplicemente le seguenti trasformate: p f (S )
L V pV e
Vf (S , f (S )),
(3.49)
L VS VS ep f (S ) f (S )Vf (S , f (S )),
(3.50)
p f (S )
L VSS L VSS S e
f (S )(Vf (S , f (S )))S ,
(3.51)
Nelle equazioni appena scritte, abbiamo adottato la convenzione che f (S ) la posizione della barriera libera per S 0 S S1 , mentre per S S 0 imponiamo f (S ) 0 dal momento che ottimale mantenere l’opzione e non esercitarla fino a scadenza. Applicando la trasformata di Laplace parziale all’equazione (3.46) arriviamo alla seguente ODE (di Eulero e non omogenea) per la trasformata del prezzo dell’opzione: 1 2 2 S VSS (rf )S VS (p rf )V F (S ) 0 2
(3.52)
dove il termine non omogeneo F(S) prende valori diversi a seconda delle varie regioni, mostrati nella seguente tabella:
Tabella 3.1: Valori del termine non omogeneo F (S ) nelle tre diverse regioni
Regione
V (S f ( ), )
(V (S f ( ), ))S
f (S )
F(S)
(a)
0 S K
0
0
0
0
(b)
K S S0
S K
1
0
S K
(c)
S 0 S S1
S K
1
>0
71
p f (S )
e
F0 (S ) (p p0 )F1(S )
Capitolo 3. Pricing di opzioni tramite trasformata di Laplace 2 2
I termini che compaiono nella tabella sono F0 (1 (rf )S f (S ) S ( f(S ) 2
p0 f2 (S ))(S K ) 2S 2 f (S ) ,
2 2
F1 S (S - K ) f2 (S ) e p0 2
2
(rf ) 2
2
2
r . Le 2
8
tre regioni (a), (b) e (c) esistono tutte nel caso di 0 rf ; nel caso di rf , la posizione della curva di esercizio ottimo a scadenza è S f (0) S 0 K , quindi la regione (b) sparisce e rimaniamo solo con le regioni (a) e (c), con il termine non omogeneo F(S) che rimane invariato in queste due regioni. Ci concentriamo ora sull’analisi per 0 rf , e successivamente adatteremo i risultati per rf .
Caso 0 rf La soluzione generale di (3.52) è
2 V S C1(p) rf ( p ) 1 2 2 S C 2 (p) rf ( p )
1 2
S
S
rf ( p )
2
F (S )dS (p) 3
rf ( p ) 2
2
(3.53)
F (S )dS , (p) 3
2
dove (p) 2[ p p0 ]1/2 e C1 e C 2 sono le costanti di integrazione, che dipendono dalla variabile della trasformata p. Dal momento che rf , e sono tutte assunte positive, e che inoltre il parametro p della trasformata di Laplace ha parte reale positiva, allora la parte reale del primo esponente ( rf (p)) / 2 positiva, mentre la parte reale del secondo esponente ( rf (p)) / 2
1 2 1 2
è assunta è assunta
negativa. Applicando la soluzione (3.53) alle tre diverse regioni individuate nella tabella, otteniamo che nella regione (a) dobbiamo scartare la seconda soluzione per poter soddisfare la condizione al bordo per S 0 , cioè che V (0, t ) 0 , e il corollario che afferma che V (0, p) 0, per p . In questa regione abbiamo quindi 72
3.2 Opzioni americane
V
S C1(a )(p)
K
rf ( p ) 2
1
2
(3.54)
.
Nella regione (b) troviamo invece che S S K V C1(b )(p) K p p rf
rf ( p ) 2
1
2
S C 2(b )(p) K
rf ( p ) 2
1
2
,
(3.55)
e infine nella regione (c) abbiamo 2 C (c )(p) V S 1 rf ( p ) 1 2 2 C (c )(p) S 2 rf ( p )
1 2
rf ( p )
F (S )dS S0 (p) rf ( p ) 3 2 S S 2 F (S )dS . S0 (p) S
S
2
3
2
(3.56)
Applicando la condizione per cui V (S , p) 0, per S S1 , otteniamo che C1(c )(p)
1 (p)
C 2(c )(p)
S1
S
1 (p)
S
rf ( p ) 2
3
2
F (S )dS
(3.57)
0
S1
S
S
rf ( p ) 2
3
2
F (S )dS
(3.58)
0
e la soluzione nella regione (c) diventa
V
S1 S
S
0
S
rf 2
3
2
( p ) (2p ) S 2 F (S )dS S . S (p)S S
(3.59)
Dobbiamo ora mettere insieme le tre soluzioni di queste regioni. Per fare ciò, richiediamo che la funzione V e la sua derivata prima rispetto a S, VS , siano continue nei punti S K e S S 0 . Dall’unione dei risultati delle regioni (b) e (c) in
S S 0 possiamo riscrivere C1(b )(p) e C 2(b )(p) in termini di C1(c )(p) e C 2(c)(p) definiti dalle (3.57) e (3.58), nel seguente modo:
73
Capitolo 3. Pricing di opzioni tramite trasformata di Laplace
C1(b )(p) C1(c )(p)K
C 2(b )(p) C 2(c )(p)K
rf ( p ) 2
rf ( p ) 2
1
2
1 K 2(p) S 0
1
1 K 2 2(p) S 0
rf ( p ) 2
rf ( p ) 2
2 1 rf (p )S0 2 2 p
2 1 rf (p )S0 2 2 p
2 r (p )K f 2 p rf
2 rf 2 (p )K . p rf
(3.60)
(3.61)
Allo stesso modo possiamo unire i risultati delle regioni (a) e (b) in S K , scrivendo quindi C1(a )(p) in termini di C1(b )(p) e C 2(b )(p) nel seguente modo:
1 1 C1(b )(p) K p p rf
C1(b )(p) C 2(b )(p) ;
(3.62)
possiamo inoltre trovare una nuova espressione per C 2(b )(p) , riscrivendolo come r 2 (p ) r 2 (p ) f K f 2 2 C 2(b )(p) p r p f 2(p)
(3.63)
e da questa ricavare anche una nuova espressione di C 2(c)(p) :
C 2(c )(p)
1 S0 2(p)
rf ( p )
1 K 2(p)
2
2 1 rf 2 (p )S0 2
rf ( p ) 2
1 2
p
2 rf 2 (p )K p rf
r 2 (p ) r 2 (p ) f f 2 2 . p rf p
(3.64)
Unendo la (3.43) con la (3.37) otteniamo infine la seguente equazione: S1
S
S
0
rf ( p ) 2
3
2
1 F (S )dS S 0 2
1 K 2
rf ( p )
2
2 1 rf 2 (p )K 2 p rf
rf ( p ) 2
2 2 (p ) rf (p ) 2 2 . p p rf
1 rf 2
2 r (p )S 0 f 2 p
(3.65)
Caso rf L’analisi di questo caso è molto simile a quella del caso precedente, quindi ci limiteremo ad evidenziare le differenze e fornire i risultati principali. Come già 74
3.2 Opzioni americane
accennato, nel caso di rf la posizione della barriera libera alla scadenza è S f (0) S 0 K . Per questo motivo al posto delle tre regioni (a), (b) e (c) descritte sopra, la regione intermedia (b) svanisce e rimaniamo solo con le due regioni (a) e (c), il cui termine non omogeneo F(S) non cambia rispetto a quanto indicato nella tabella. Anche le soluzioni generali in queste due regioni sono le stesse indicate nella sezione precedente, cioè nella regione (a) vale la (3.54) e nella regione (c) la (3.59). Tuttavia otteniamo risultati diversi dal processo di unione dei risultati nelle due regioni; in questo caso dobbiamo infatti imporre che la funzione V e VS siano continue solo dove S K . Questo porta ai seguenti risultati: C1(a )(p) C1(c )(p)K
rf ( p ) 2
1
2
C 2(c )(p) 0
(3.66) (3.67)
e dalla (3.67) otteniamo la forma dell’equazione (3.65) nel caso di rf : S1
S
S
rf ( p ) 2
3
2
F (S )dS 0.
(3.68)
0
Risoluzione dell’equazione integrale Le equazioni (3.65) e (3.68) sono equazione integrali nello spazio della trasformata di Laplace che permettono di individuare la posizione della curva di esercizio ottima
f (S ) , che compare nelle equazioni tramite il termine non omogeneo F(S). Per essere più specifici, le due equazioni sono equazioni integrali non lineari di Fredholm, nel dettaglio equazioni di Uryshon. Nel caso di rf , le due equazioni coincidono. Ciascuna di queste equazioni è la trasformata di Laplace di un’equazione integrodifferenziale nello spazio fisico; possiamo ottenere quest’ultima equazione applicando l’inversione della trasformata di Laplace (3.48) a (3.65) e (3.68). Prima di applicare la trasformata inversa, dividiamo prima per la quantità 75
Capitolo 3. Pricing di opzioni tramite trasformata di Laplace
3/2
(p p0 )
rf
S0
2
rf
3
(p ) 2
(S f (t ))
riscrivendo quindi la (3.65) come 2(p p0 ) S f ( ) S 2 2 exp ln S0 S S 0 2(p p0 ) S f ( ) K S0 exp ln p p0 S 0 p rf
S1
2 S 0 rf 2 p p p0 2 1 rf 2 p p p0
p f (S )
F0 (S ) F1(S ) dS p p0 p p0 r 2 f 2 2 p p 0
e
r
f 1 2 2 2 2(p p0 ) S f ( ) S K 0 2 exp ln S p p K 2( ) 0 0 2 1 rf 2 2 . 2 2p rf p p0
(3.69)
Usiamo quindi le seguenti formule, che derivano dalle proprietà della trasformata di Laplace: i) L 1 eap F (p) ( a )f ( a ) , ii) L 1 F (p p0 ) ep0 f ( ) , iii) L 1 F1(p)F2 (p)
iv) L
1
0
f1( z )f2 (z )dz , a2
p1/2eap1/2 1 e 4 ,
1/2 a v) L 1 p1eap erfc , 2
vi) L
1
a2
p3/2eap1/2 2 e 4 a erfc a , 2
con (t ) funzione gradino di Heaviside. Grazie alle proprietà appena elencate, applicando l’antitrasformata alla (3.69) otteniamo: 76
3.2 Opzioni americane S f (S ) S0
rf
3
1 F1(S ) 2F0 (S ) S0 f (S ) (ln(S f ( )/ S ))2 F0 (S ) 2 ln(S f ( )/ S ) ln(S f ( )/ S ) dS exp erfc 2( f (S )) 2 2 ( f (S )) ( f (S ))
S f ( )
2
2
p0 ( f (S ))
e
K r 2 erf ( z ) S r 2 e( z ) ep0z f f 0 2 2 0 z (ln(S f (z )/ S 0 ))2 ln(S f (z )/ S 0 ) ln(S f ( )/ S 0 ) exp erfc dz 2 2 2z 2 z S0
rf
1
K 2 2 2 2 r ( z ) p0z rf 2 e( z ) rf 2 e f S 02 e S0 0 z (ln(S f (z )/ K ))2 ln(S f (z )/ K ) ln(S f ( )/ K ) exp erfc dz 2 2z 2 2z ln(S f ( )/ S 0 ) S r ( z ) Ke f 0 S 0 e( z ) ep0z erfc dz 2 0 2z
S 02
K 2 S0
rf 2
1
2
0 e
( z )
rf ( z )
e
e
p0z
ln(S f ( )/ K ) erfc dz . 2z
(3.70)
L’equazione (3.70) appena scritta è l’equazione integro-differenziale nello spazio fisico che permette di trovare la locazione della frontiera libera per un’opzione call americana quando 0 rf , ed è l’inversa dell’equazione (3.65). L’equazione per il caso rf si ottiene ponendo uguale a 0 il termine destro della (3.70): S f (S ) S0
rf
3
1 F1(S ) 2F0 (S ) S0 f (S ) (3.71) (ln(S f ( )/ S ))2 F0 (S ) 2 ln(S f ( )/ S ) ln(S f ( )/ S ) dS 0; exp erfc 2 2( f (S )) 2 ( f (S )) ( f (S ))
S f ( )
2
2
p0 ( f (S ))
e
questa appena scritta è l’equazione integro-differenziale nello spazio fisico che permette di trovare la locazione della frontiera libera per un’opzione call americana quando rf , ed è l’inversa dell’equazione (3.68).
77
Capitolo 3. Pricing di opzioni tramite trasformata di Laplace
3.2.3 Un metodo di randomizzazione per il calcolo del valore di un’opzione americana In questa sezione presentiamo un algoritmo di randomizzazione rapido ed efficiente per il calcolo del valore di un’opzione americana scritta su un sottostante che paga dividendi. Con lo stesso algoritmo è possibile inoltre calcolare la frontiera libera di cui abbiamo discusso nel precedente paragrafo. Per la struttura del paragrafo seguiremo [29]: inizieremo con una breve introduzione sull’algoritmo di randomizzazione di Carr, seguito da una breve introduzione del modello; passeremo poi al pricing delle opzioni canadesi e infine ricaveremo i risultati per le opzioni americane partendo da quest’ultime.
Il metodo di Carr Questo metodo di pricing per opzioni americane si basa sul metodo introdotto da Carr in [14], dove il valore di un’opzione americana è basato sul calcolo del valore di un’opzione di questo tipo con maturity aleatoria, e per questo motivo è stato definito metodo di randomizzazione. L’approccio di Carr consiste nei tre punti seguenti: i) Randomizzare la maturity date T con una variabile casuale esponenziale T con media E[T ] 1 T per effettuare il pricing di un’opzione europea con maturity aleatoria, che Carr chiama opzionie canadese. ii) Estendere il risultato al caso in cui T abbia distribuzione di Erlang 18 di n parametri n, , che abbia quindi la stessa media T. T
18
La distribuzione di Erlang E (k , ) è un particolare caso della distribuzione Gamma, in cui il
parametro k, detto parametro di forma, è un numero naturale. La sua funzione densità di probabilità è della forma: f (x )
k k 1 x
x
e (k )
per x , 0
78
3.2 Opzioni americane
iii) Far tendere il valore di n a per ottenere il valore della Put Americana con scadenza T.
Figura
3.2: Funzione Densità di Probabilità della
Distribuzione Erlangiana per
=1, n =1, 2, 4, 8, 16, 32
Per comprendere il significato matematico del punto iii) del metodo di Carr, osserviamo che una distribuzione Erlangiana per n tende alla funzione delta di Dirac concentrata nel valore della media. In Figura 3.2 è rappresentata la funzione densità di probabilità della distribuzione Erlangiana: si nota come all’aumentare di n le code si appiattiscano e il massimo della funzione si alzi, fino a tendere alla delta di Dirac per n . Il concetto di randomizzazione, tuttavia, non è stato introdotto da Carr: già nella teoria della trasformazione integrale, questo concetto era stato espresso dalla formula di inversione di Post-Widder: per una funzione continua f (t ), t 0 viene definita fn* (T )
0
(nt /T )n1 n nt /T e f (t ) dt ; (n 1)! T
(3.72)
abbiamo così che
lim fn* (T ) f (T )
n
(3.73)
che è il concetto alla base del metodo di randomizzazione di Carr. Per ulteriori approfondimenti sull’inversione di Post-Widdler si consulti [53].
dove (k ) è la funzione Gamma valutata in k. La media di una variabile aleatoria con distribuzione Erlangiana è k / .
79
Capitolo 3. Pricing di opzioni tramite trasformata di Laplace
Osservando la formula (3.72) possiamo notare come a prima vista il calcolo della nesima approssimazione fn*(T ) sembri piuttosto complicato. La formula di Carr, infatti, per il calcolo dell’n-esima approssimazione del valore di una Put Americana fa uso di una ricorsione di tre somme complesse, e questa complessità influisce negativamente sull’efficienza e sulla velocità dell’algoritmo. Scopo di questa sezione è presentare un metodo di randomizzazione migliore di quello di Carr, con un algoritmo più rapido ed efficiente per il calcolo del valore delle opzioni americane, introdotto da T. Kimura in [29].
Il modello Consideriamo il mercato ben definito e che segua le ipotesi di mercato efficiente; sia
(St )t 0 lo stock price che evolve secondo un processo di diffusione definito della forma dS (rf )dt dWt , S
(3.74)
t 0
dove rf è il tasso di interesse risk-free, 0 è un dividendo continuo, 0 è la volatilità dell’asset return, e (Wt )t 0 è un processo di Wiener standard definito sullo spazio filtrato (, F ,(Ft )t0 , P) dove (Ft )t0 è la filtrazione naturale di W e la probabilità P è scelta in modo che lo stock abbia return rate rf . Consideriamo la put americana scritta su (St )t 0 , che abbia scadenza T 0 e strike price pari a K; sia inoltre P P (t , St ) P (t , St ; K , r , ), 0 t T il suo valore. Possiamo limitarci a considerare il caso della put, in quanto tra una put e una call americana con gli stessi parametri intercorre la relazione C (t , S ; K , r , ) P (t , K ;S, , r )
Come detto nel paragrafo precedente, il prezzo di un’opzione americana è calcolato risolvendo un problema di tempo di arresto ottimale: P (t , St ) ess sup E er (ut )(K Su ) | Ft , u [t ,T ]
80
t [0,T ]
(3.75)
3.2 Opzioni americane
con u tempo di arresto della filtrazione (Ft )t0 , e dove il valore atteso condizionato è calcolato sotto la misura di probabilità neutrale al rischio Q . Risolvere questo i punti (t , St ) tali per cui l’esercizio anticipato è
problema è equivalente a trovare
ottimale, cioè individuare la curva di esercizio anticipato S f (t ) definita come:
S f (t ) sup x : P (t , x ) (K x ) ,
t [0,T ]
(3.76)
È stato mostrato che il valore P della put americana e la curva di esercizio anticipato S f (t ) possono essere unite risolvendo il problema a frontiera libera specificato dalla seguente equazione, condizioni al bordo e condizione finale: 1 2 2 S PSS (rf )SPS rf P Pt 0, 2
S S f (t )
(3.77)
lim P (t , S ) 0
(3.78)
lim P (t , S ) K S f (t )
(3.79)
lim PS (t , S ) 1
(3.80)
P (T , S ) (K S )
(3.81)
S
S S f (t )
S S f (t )
La (3.79) è spesso chiamata condizione di value matching. Dato che successivamente lavoreremo considerando le equazioni in cui il tempo t è sostituito dal time to expiry T t , riportiamo la forma delle equazioni (3.77)(3.81) in questo caso, con Pˆ( , Sˆ ) P (T t , ST t ) : 1 2 ˆ2 ˆ ˆ ˆ r Pˆ Pˆ 0, S PSS (rf )SP S f 2
Sˆ Sˆf ( )
(3.82)
lim Pˆ( , S ) 0
(3.83)
lim Pˆ( , S ) K Sˆf ( )
(3.84)
S S Sˆf ( )
ˆ
lim PS ( , S ) 1 S Sˆf ( ) con la condizione finale che diventa condizione iniziale: 81
(3.85)
Capitolo 3. Pricing di opzioni tramite trasformata di Laplace
Pˆ(0, S ) (K S )
(3.86)
Come nel primo passaggio della randomizzazione proposta dal Carr, anche in questo caso inizieremo analizzando le classiche opzioni europee e la loro variante canadese con maturity T distribuita come un’esponenziale, per passare ad effettuare il pricing delle opzioni americane.
Pricing di opzioni europee ed europee canadesi Consideriamo un’opzione europea scritta sul sottostante (St )t 0 con maturity costante T e strike K. Sia p p(t , St ) il valore dell’opzione put all’istante t [0,T ] e indichiamo con pˆ( , Sˆ ) p(T t , ST t ) il valore della put per il processo inverso. pˆ può essere ottenuto risolvendo l’equazione: 1 2 2ˆ S pSS (rf )SpˆS rf pˆ pˆ 0, 2
S 0,
(3.87)
con le condizioni al bordo lim pˆ( , S ) Ker ,
(3.88)
lim pˆ( , S ) 0 ,
(3.89)
pˆ(0, S ) (K S ) .
(3.90)
S 0
S
e la condizione iniziale
Per ottenere il valore della variante Canadese di questa opzione europea, supponiamo che la maturity T si casuale e distribuita come un’esponenziale con media
E[T ] 1 T , cioè P T x 1 ex ,
x 0
(3.91)
Definiamo inoltre T t il tempo restante per arrivare fino alla maturity T ; grazie alla proprietà di assenza di memoria della variabile esponenziale, abbiamo che: 82
3.2 Opzioni americane
P{ x |T t } 1 ex ,
(3.92)
x 0
Per 0 e St S , sia p * p * (, S ) il valore della put europea-canadese all’istante
t [0,T ] . Notiamo che p *(, S ) non dipende da t grazie alla proprietà di assenza di memoria (3.92). Possiamo quindi ricavare il valore della put europea-canadese dalla formula del valore neutrale al rischio: p * (, S ) E er (T t )(K ST ) | St S E E er (T t )(K ST ) | St S ,T T E E er (K Sˆ0 ) | Sˆ S , E pˆ(, S )
0
(3.93)
e pˆ( , S )d ,
che è la trasformata di Laplace-Carlson 19 (LCT) di pˆ( , S ) . Riprendendo le equazioni (3.87)-(3.90), otteniamo che p * (, S ) soddisfa l’equazione differenziale ordinaria (ODE) 1 2 2 * S pSS (rf )SpS* ( rf )p * (K S ) 0, 2
S 0
(3.94)
con le condizioni al bordo lim p * (, S ) S 0
K rf
(3.95)
lim p * (, S ) 0
(3.96)
S
Vale quindi la seguente: Proposizione 3.2.1. Il valore di un’opzione put europea-canadese è dato da:
(S ) K S, rf p (, S ) (S ), *
19
S K
(3.97)
S K,
La trasformata di Laplace-Carlson di una funzione f(t) è definita come: F (s ) LCT { f (t )} : s
0
e
st
f (t )dt
La differenza con la trasformata di Laplace classica è il termine s all’esterno dell’integrale: si ha infatti LCT { f (t )}(s ) s LC { f (t )}(s )
83
Capitolo 3. Pricing di opzioni tramite trasformata di Laplace
dove
rf S 1 (S ) K , 1 rf K
S K,
(3.98)
rf S 1 (S ) K , 1 rf K
S K,
(3.99)
e i parametri sono le soluzioni dell’equazione di secondo grado 1 2 2 2
(rf 1 2 ) ( r ) 0, 2
cioè
1
2
(r
f
1 2 ) (rf 1 2 )2 2 2 ( rf ) . 2
2
(3.100)
Procedendo nello stesso modo possiamo ricavare le espressioni corrispondenti per una call europea-canadese. Vale infatti la seguente proposizione: Proposizione 3.2.2. Il valore di un’opzione call europea-canadese è dato da:
(S ), c (, S ) (S ) K S, rf *
S K (3.101)
S K.
Passiamo ora a considerare le opzioni americane e la loro modifica canadese.
Pricing di opzioni americane canadesi e americane Consideriamo di nuovo una maturity aleatoria T , per 0 sia P * P * (, S )
0
e Pˆ( , S )d
(3.102)
la LCT di Pˆ( , S ) . Allora riprendendo le equazioni (3.87)-(3.90), abbiamo che P * (, S ) soddisfa la ODE 1 2 2 * S PSS (rf )SPS* ( rf )P * (K S ) 0, 2
84
S L*
(3.103)
3.2 Opzioni americane
con le seguenti condizioni al bordo lim P * (, S ) K L* ,
(3.104)
lim P * (, S ) 0,
(3.105)
lim PS* (, S ) 1.
(3.106)
S L*
S
S L*
La curva di esercizio anticipato L* L* () è ricavata applicando la trasformata di Laplace-Carlson a Sˆf ( ) , cioè L* ()
0
e Sˆf ( )d
(3.107)
che risulta costante nello spazio delle trasformate di Laplace grazie alla proprietà di assenza di memoria della distribuzione esponenziale. Abbiamo quindi il seguente risultato: Proposizione 3.2.3. Per L* K , il valore di una put americana-canadese è dato da K S , P * (, S ) p * (, S ) e * (, S ),
S L* S L* ,
(3.108)
dove
1 (L* ) e (, S ) L* *
S , L*
S L*.
(3.109)
Consideriamo il risultato provato da Kim in [28], che mostra che il valore di una opzione americana vanilla può essere decomposto nella forma
P (t , St ) p(t , St ) e(t , St )
(3.110)
dove e(t , St ) è definito premio di esercizio anticipato e può essere espresso tramite la rappresentazione integrale e(t , St )
T
r (u t ) (d2 (t , u )) St e(ut )(d1(t , u )) du, t rf Ke f
85
(3.111)
Capitolo 3. Pricing di opzioni tramite trasformata di Laplace
con () funzione cumulativa di una variabile aleatoria normale standard, e parametri
d1 e d2 pari a: d1(t , u )
log(St / S f (u )) (rf 1 2 )(u t ) 2
u t
;
(3.112)
possiamo quindi vedere la funzione e * (, S ) calcolata nella (3.61) come LCT del premio di esercizio anticipato e(t , St ) . Applicando la condizione di value matching (3.56) alla (3.60) otteniamo il seguente risultato, che specifica la curva di esercizio anticipato L* : Proposizione 3.2.4. i) La curva di esercizio anticipato L* dell’opzione put americana-canadese soddisfa l’equazione
L* L* rf ( 1) . K K
(3.113)
ii) Se 0 , abbiamo: 0
rf ( 1) L (0) lim Sˆf ( ) K K, 0 0 1 *
0
(3.114)
dove 0 lim . In particolare nel caso 0 si ha 0
L* (0) lim Sˆf ( )
K 2 1 2rf
.
(3.115)
iii) Se , abbiamo:
rf lim L* () Sˆf (0) S f (T ) min ,1 K .
(3.116)
L’unico caso in cui la (3.113) può essere risolta esplicitamente è il caso in cui lo stock non paghi dividendi, cioè 0 ; in questo caso si ha 86
3.2 Opzioni americane 1
rf ( 1) L () K ; *
(3.117)
negli altri casi avremo bisogno di un metodo numerico per risolvere l’equazione non lineare. Come
accennato
all’inizio
del
paragrafo,
ricaviamo
ora
un
algoritmo
di
randomizzazione più rapido di quello adottato da Carr nel suo lavoro. Introduciamo quindi una sequenza di variabili aleatorie diversa da quella di variabili Erlangiane utilizzate da Carr, che abbia tuttavia la stessa proprietà di convergere alla delta di Dirac concentrata alla maturity per n . Utilizziamo la sequenza di variabili aleatorie utilizzate da Gaver in [20] per invertire la trasformata di Laplace. Siano X1 ,..., Xn m variabili aleatorie i.i.d. con distribuzione esponenziale di parametro ( 0) , e indichiamo con X(i ) la i-esima più piccola di queste variabili aleatorie, per i 1,..., n m . Si ricava che la funzione densità di probabilità di X(n1) è: f (t )
(n m)! (1 et )n emt , n !(m 1)!
t 0.
(3.118)
La media, la varianza e la moda di X(n1) sono date da
1 E[X(n1) ] Var[X(n1) ]
1
2
n
1
m i ,
(3.119)
i 0 n
i 0
1
M[X(n1) ] arg max f (t ) t
2
m i
,
1 n m log . n
(3.120)
(3.121)
Se poniamo il valore atteso o la moda pari a T, la variabile X(n1) così definita è un’altra buona candidata per modellizzare la maturity casuale T , dal momento che
limm ,n Var[X(n1) ] 0 . Osservando la figura che rappresenta la media e la moda al 87
Capitolo 3. Pricing di opzioni tramite trasformata di Laplace
crescere di n, notiamo che per n sufficientemente grande non vi è differenza tra le due, e quindi possiamo porre uguale a T una a nostra scelta di queste due quantità; per il momento scegliamo quindi di porre M[X(n1) ] T per semplicità di calcolo.
(b) Caso mode-matching:
(a) Caso mean-matching:
Figura 3.3: Funzione Densità di Probabilità di X (n 1)
Possiamo determinare a questo punto il nostro parametro , che sarà uguale a:
1 n m . log T m
(3.122)
Per una funzione continua g(t ), t 0, definiamo gn*,m gn*,m (T ) come gn*,m (T )
(n m)! n !(m 1)!
0
g(t )(1 et )n emtdt ,
(3.123)
con definito dalla (3.122). Abbiamo allora che lim gn*,m (T ) g(T ).
(3.124)
m ,n
Confrontando la (3.123) con la (3.72) e la (3.124) con la (3.73) osserviamo che la (3.118) è un’altra distribuzione appropriata per modellizzare la maturity casuale; a differenza della formula proposta da Carr, inoltre, la sequenza (gn*,m )n ,m1 è calcolabile con una formula ricorsiva piuttosto semplice. Vale infatti la seguente proposizione: Proposizione 3.2.5. La sequenza (gn*,m )n ,m1 soddisfa la ricorsione * g memt g(t )dt 0,m 0 n m * m gn*,m gn1,m gn*1,m1 , n n
88
(3.125) n 1
3.2 Opzioni americane
Questa ricorsione è la chiave per realizzare il nostro algoritmo che calcoli il prezzo dell’opzione in modo più efficiente rispetto a quello di Carr. Iniziamo ponendo n m , in modo da ottenere
1 log 2 . T
(3.126)
Forniamo ora un algoritmo che ci permetta di calcolare la curva di esercizio anticipato (S f (t ))t [0,T ] . Sia L* (m) una soluzione dell’equazione (3.113), con m ; come abbiamo accennato prima, questa soluzione può essere calcolata grazie ad un qualsiasi algoritmo per la risoluzione di equazioni non lineari, come ad esempio l’algoritmo
di
Newton.
Sia
quindi
gN* ,N N S f (t ), (N 1),
l’
N-esima
approssimazione ottenuta con il metodo di randomizzazione; essa può essere ottenuta tramite il seguente algoritmo, chiamato algoritmo OS-Random (L* ()) : log 2 T t for m N to 2N
g0,* m L*(m) end for n 1 to N for m N to 2N n n m * m gn*,m gn1,m gn*1,m1 n n end end return gN* ,N
Con una piccola modifica, lo stesso algoritmo può essere utilizzato per calcolare il prezzo dell’opzione put americana. Come prima, avremo bisogno della soluzione L* (m) dell’equazione (3.113), con m , in quanto L* è necessario per calcolare il valore di e * (, S ) nella (3.109); sostituiamo quindi la terza linea dell’algoritmo con la seguente: g0,* m P * (m, S ) . A questo punto l’algoritmo creato, che chiameremo OSRandom (P * (, S )) , genererà come nel caso precendente la N-esima approssimazione
89
Capitolo 3. Pricing di opzioni tramite trasformata di Laplace
gN* ,N ; in questo caso tuttavia avremo gN* ,N N P (t , S ), N 1 , cioè il valore della put americana da noi cercato.
Un problema dell’algoritmo appena enunciato, risultante dalle applicazioni numeriche, è che l’accuratezza dei valori della curva di esercizio anticipato calcolati sono abbastanza dipendenti dalla precisione numerica utilizzata nel calcolo della radice L* . Se la precisione numerica del calcolatore è troppo bassa, infatti, può accadere che
si formino delle instabilità nei valori della curva, specialmente all’avvicinarsi della maturity. Sono necessari quindi calcoli ad alta precisione per ottenere risultati molto accurati. Inoltre, se utilizzato per il calcolo di P * (, S ) , l’algoritmo mostra un problema intrinseco: la sequenza dei (gn*,m )n ,m1 generata dall’algoritmo a volte non soddisfa la condizione (3.79), a seconda della sequenza delle radici (L* (m))m1 . Vediamo nello specifico cosa accade. Sia Lm L* (m) con m 1 , e scriviamo gn*,m (S ) gn*,m (n 1) , dove g0,* m (S ) P * (m, S ) . Dalla (3.104) e dalla (3.125), la
condizione di value matching vale per g0,* m (S ) in S Lm , cioè lim g0,* m (S ) K Lm ,
S Lm
m 1.
(3.127)
Supponiamo ora che la condizione limS Lm gn*1,m (S ) K Lm valga per n, m 1 . Allora per la (3.125) e per il fatto che 0 lim gn*1,m 1(S ) (K Lm ) S Lm 0
se Lm Lm 1 se Lm Lm 1
(3.128)
abbiamo che
lim gn*,m (S ) K Lm
S Lm
m n ,m 1{Lm Lm 1 } K Lm , n
(3.129)
dove n ,m gn*1,m 1(Lm ) (K Lm ) 0.
90
(3.130)
3.2 Opzioni americane
Da quest’ultima relazione vediamo quindi che la sequenza (gn*,m )n ,m1 potrebbe sovrastimare il valore dell’opzione. Passiamo quindi a mostrare un altro metodo di randomizzazione, descritto in [33], e definito “algoritmo a pinza” perché cerca di eliminare questo problema di non soddisfacimento della condizione di value matching, cercando di approssimare il valore dell’opzione mediando tra un limite inferiore e un limite superiore.
3.2.4 Il metodo di randomizzazione “a pinza” per il calcolo del valore di un’opzione americana Come mostrato alla fine del paragrafo precedente, l’algoritmo di randomizzazione OS-Random mostra due problemi principali: il fatto che l’algoritmo è piuttosto sensibile alla precisione della radice L* , e che a volte la (n,m)-sima approssimazione gn*,m potrebbe non soddisfare la condizione di value matching.
Proponiamo in questo paragrafo un metodo più raffinato che permetta di eliminare queste due difficoltà, basandoci su un due limiti, uno inferiore e uno superiore che delimitano il valore reale dell’opzione. Questo metodo “a pinza” si basa sulla proprietà della Theta di un’opzione, per la quale nel caso di una put americana si ha che il valore dell’opzione è sempre minore all’avvicinarsi al time to expiration T, e su alcuni risultati empirici. Per la discussione seguiremo [33]. Come già accennato nel paragrafo precedente, dalle equazioni (3.119) e (3.121) vediamo che per la sequenza di variabili aleatorie dell’algoritmo OS-Random, per n sufficientemente grande non vi è differenza porre uguale a T la media o la moda, in quanto entrambe tendono, per n sufficientemente grande, alla delta di Dirac concentrata nel valore della media. Per valori di n e m più piccoli, invece, il comportamento dell’algoritmo cambia nel caso si scelga di utilizzare la media o la moda. 91
Capitolo 3. Pricing di opzioni tramite trasformata di Laplace
Nel caso della media, osservando la figura 3.3(a) e utilizzando la proprietà della Theta dell’opzione americana, si ottiene che il valore dell’opzione calcolato con l’algoritmo sottostima sempre il valore reale quando n e m non sono sufficientemente grandi, ed otteniamo così un limite inferiore (nel caso della curva di esercizio anticipato, un limite superiore). Allo stesso modo, sempre utilizzando la proprietà della Theta e osservando la figura 3.3(b), otteniamo che nel caso della moda l’algoritmo sovrastima sempre il valore reale quando m e n sono piccoli, fornendo un limite superiore. Per calcolare il valore dell’opzione usiamo quindi i due seguenti metodi di interpolazione, che a differenza del metodo LUBA [11] non hanno natura sperimentale. Siano L(t , St ) e U (t , St ) i limiti inferiore e superiore rispettivamente, calcolati con l’algoritmo OS-Random usando i due diversi casi di matching (media e moda). Definiamo allora le seguenti quantità: •
Media aritmetica: L(t , St ) U (t , St ) 2
(3.131)
PG (t , St ) L(t , St ) U (t , St )
(3.132)
PA (t , St ) •
Media Geometrica:
Entrambe queste quantità approssimano il valore di un’opzione americana e, grazie all’uso di un limite inferiore e uno superiore, eliminano il problema di non soddisfacimento della condizione di value matching presente nell’algoritmo OS-Random classico.
92
3.3 Opzioni fractional lookback
3.3 Opzioni fractional lookback In questa sezione tratteremo il pricing di opzioni fractional lookback floating strike con il metodo della trasformata di Laplace. Saranno prima introdotte la definizione ed alcune proprietà di questo tipo di opzioni. Passeremo poi a prezzare queste opzioni nel caso di sottostante Black&Scholes, sia nel caso europeo che americano; estenderemo poi i nostri studi al caso di sottostante che evolve con modello di Kou, considerando il caso di opzioni lookback europee.
3.3.1 Preliminari Le opzioni lookback sono un tipo di opzione path-dependant il cui payoff alla scadenza (o eventualmente prima, nel caso di opzioni lookback americane) dipende dai valori estremi assunti dal sottostante durante il periodo di validità dell’opzione. In particolare, le opzioni lookback possono essere classificate in due tipi: fixed strike e floating strike. Andiamo a definire più precisamente le differenze tra questi due tipi. Sia St il valore del sottostante al tempo t 0 e siano mt e M t rispettivamente il valore minimo e massimo realizzati dal sottostante fino al tempo t. Assumiamo inoltre che il processo di prezzo sia monitorato in modo continuo. Un’opzione call (put) lookback di tipo fixed strike è definita come un’opzione ordinaria scritta sul processo
(M t )t 0 ( (mt )t 0 ) invece che sul processo (St )t 0 . Consideriamo il caso delle opzioni lookback europee, e indichiamo la maturity con T e lo strike con K: i payoff alla scadenza per una put e una call di tipo fixed strike sono da rispettivamente da
max(M t K ,0)
e
max(K mt ,0).
(3.133)
Da queste due relazioni si evince che un’opzione call (put) lookback fixed strike restituisce al possessore la differenza tra il valore più alto (più basso) realizzato dal sottostante durante la vita dell’opzione e lo strike price.
93
Capitolo 3. Pricing di opzioni tramite trasformata di Laplace
Il valore di un’opzione call (put) lookback floating strike, invece, dipende sia dal processo (St )t 0 che dal processo (mt )t 0 ( (M t )t 0 ); questo tipo di opzione dà sempre al possessore il diritto di comprare (vendere) al prezzo più basso (alto) realizzato. Nel caso di opzioni europee call e put lookback floating strike, con maturity T e strike K, il valore a scadenza è dato rispettivamente da
max(ST mT ,0) ST mT
e
max(MT ST ,0) MT ST . (3.134)
Chiaramente, le opzioni di tipo floating strike non sono “autentiche” opzioni, in quanto saranno sempre esercitate prima della scadenza, finendo sempre in-the-money 20. Ciò significa che per le opzioni standard floating strike (così le indicheremo) sono pagati premi più alti, essendo meno interessanti per gli investitori. È stato quindi introdotto da Conze e Viswanathan in [18] un tipo più generale e meno costoso di opzioni lookback, chiamate opzioni fractional lookback, o opzioni lookback parziali. In questo caso, lo strike è fissato ad una frazione superiore (nel caso della call) o inferiore (nel caso della put) del valore estremo. Nello specifico, il payoff per un’opzione call e put europea con fractional floating strike e maturity T è dato rispettivamente da
max(ST mT ,0)
e
max(MT ST ,0),
(3.135)
dove e sono costanti positive che permettono di modificare il premio delle opzioni. Per ridurre tale premio, si considera 1 e 0 1 . Si noti che per 1 e 1 si ritorna al caso di opzioni lookback standard. Lo scopo delle sezioni successive sarà quello di sviluppare un metodo numerico rapido ed efficiente per il calcolo del valore delle opzioni fractional lookback europee e americane; questo metodo sarà basato sulla trasformata di Laplace e sulla sua inversione.
Si dice che un’opzione è in-the-money quando il possessore avrebbe convenienza ad esercitarla se fosse alla scadenza. Viceversa, un’opzione è out-of-the-money quando il possessore non avrebbe convenienza ad esercitarla se fosse alla scadenza. 20
94
3.3 Opzioni fractional lookback
3.3.2 Calcolo del valore per un’opzione fractional lookback europea ed americana nel caso Black&Scholes In questa sezione studieremo la valutazione di un’opzione di tipo floating-strike fractional lookback europea ed americana, scritta su un sottostante che paga dividendi. Useremo un approccio simile ai paragrafi precedenti: partendo da una PDE, applicheremo la trasformata di Laplace, per andare poi a ricavare una equazione che ci fornisca il valore dell’opzione nello spazio della trasformata; infine, applicheremo l’algoritmo di Gaver-Stehfest per l’inversione della trasformata, ricavando così il valore dell’opzione nello spazio fisico. Inizieremo con una breve introduzione sulle opzioni lookback, per passare poi alla valutazione delle opzioni europee di questo tipo, ed infine alle opzioni americane. Per la struttura del paragrafo seguiremo [30].
Formulazione della PDE Anche in questo caso considereremo il classico modello di evoluzione del sottostante utilizzato nelle sezioni precedenti. Sia (St )t 0 il processo di diffusione neutrale al rischio descritto dalla seguente equazione differenziale stocastica:
dSt (rf )dt dWt , St
t 0
(3.136)
dove S 0 S , rf è il tasso di interesse risk-free, 0 è un dividendo continuo, 0 è la volatilità dell’asset return, e (Wt )t 0 è un processo di Weiner standard definito sullo spazio filtrato (, F ,(Ft )t0 , P) dove (Ft )t0 è la filtrazione naturale di W e la probabilità P è scelta in modo che lo stock abbia return rate rf . Per il processo di prezzo (St )t 0 e una costante m S , definiamo il processo di minimo come mt m inf Su , 0u t
95
t 0.
(3.137)
Capitolo 3. Pricing di opzioni tramite trasformata di Laplace
Dato un orizzonte di tempo finito T, sia C C (t , S , m) il valore di un’opzione call americana fractional lookback al tempo t [0,T ] . Notiamo che il valore dell’opzione call nel caso americano e europeo è lo stesso nel caso il sottostante non distribuisca dividendi, cioè nel caso 0 . In assenza di opportunità di arbitraggio, il valore C (t , S , m) è soluzione del problema di optimal stopping time rf Tt
C (t , S , m) ess sup E[e 0Tt T t
(3.138)
(STt mTt ) | F0 ],
dove Tt è un tempo di arresto ottimo della filtrazione (Ft )t0 e la probabilità condizionale è calcolata sotto la misura di probabilità neutrale al rischio Q . La variabile casuale Tt* [t ,T ] è definita tempo di arresto ottimale se rf Tt*
C (t , S , m) E[e
(ST * mT * ) | F0 ] . t
t
È evidente dalla (3.138) che C è non decrescente in S e non crescente in t, m e . Risolvere il problema di arresto ottimo (3.117) equivale a trovare i punti (t , St , mt ) tali che
l’esercizio
anticipato
prima
della
scadenza
si
ottimo.
Sia
D {(t , S , m) [0,T ][m, ) } l’intero dominio, e ER e CR rispettivamente la regione di esercizio e la regione di continuità. ER può essere definita in termini di C (t , S , m) come ER {(t , S , m)|C (t , S , m) (S m) }, per la quale l’istante di arresto
ottimo Tt*
soddisfa Tt* inf{u [0,T t ]|(t u, Su , mu ) ER} .
La
regione
di
continuazione CR è il complementare di ER in D, ed è quindi definita come
CR {(t , S , m)|C (t , S , m) (S m) } . La barriera che separa queste due regioni è detta curva di esercizio anticipato ed è definita come
S f (t , m) sup{S [m, )|(t , S , m) CR},
t [0,T ].
(3.139)
Quando ci troviamo sulla curva di esercizio anticipato (S f (t , m))t [0,T ] , l’opzione call americana fractional lookback può essere esercitata in modo ottimo. In termini di,
S f (t , m), la
regione
di
continuità
può
CR {(t , S , m); m S S f (t , m)}.
96
essere
riscritta
nel
seguente
modo:
3.3 Opzioni fractional lookback
Come detto nelle sezioni precedenti, il problema di tempo di arresto ottimo (3.117) per trovare il valore di C (t , S , m) può essere ridotto ad un problema di frontiera libera. Definiamo ora l’operatore differenziale Lt ,S come Lt ,S
1 2 2 2 S (rf ) rf . 2 t 2 S S
Allora il problema di frontiera libera può essere scritto nel seguente modo:
(Lt ,SC (t , S , m)) (C (t , S , m) (S m) ) 0 Lt ,SC (t , S , m) 0 C (t , S , m) (S m) 0 con le condizioni aggiuntive C (T , S , m) (S m) 0, C 0. lim S m m
Per la frontiera libera (S f (t , m))t [0,T ] , questo problema è equivalente a risolvere la PDE di Black-Scholes-Merton:
Lt ,SC (t , S , m) 0,
m S S f (t , m),
(3.140)
con le condizioni al bordo lim C (t , S , m) S f (t , m) m,
S S f
(3.141)
C 1, S
(3.142)
C 0, S m m
(3.143)
C (T , S , m) (S m) .
(3.144)
lim
S S f
lim
e la condizione finale
Ricordiamo che le condizioni (3.141), (3.142) e (3.143) sono dette rispettivamente condizione di value matching, condizione di smooth pasting e condizione di Neumann. 97
Capitolo 3. Pricing di opzioni tramite trasformata di Laplace
Con un procedimento analogo a quello utilizzato ora per l’opzione call, possiamo formulare il caso dell’opzione put americana fractional lookback: per il processo di prezzo (St )t 0 e una costante M S , definiamo il processo di massimo come M t M sup Su ,
t 0,
0u t
(3.145)
e sia P P (t , S , M ) il valore di un’opzione put americana fractional lookback al tempo t [0,T ] . Allora P (t , S , M ) soddisfa una PDE della stessa forma di (3.140), cioè
Lt ,S P (t , S , M ) 0,
S f (t , M ) S M ,
(3.146)
dove (S f (t , M ))t [0,T ] è la curva di esercizio anticipato per l’opzione put. Le condizioni al bordo nel caso della put sono lim P (t , S , M ) M S f (t , m),
S S f
(3.147)
lim
P 1, S
(3.148)
lim
P 0, M
(3.149)
S S f
S M
con condizione finale data da
P (T , S , M ) (M S ) .
(3.150)
Notiamo che l’espressione (3.138) dipende dal tempo solo tramite il termine T t , ossia il tempo rimanente alla scadenza. Per comodità di notazione, introduciamo
C ( , S , m) C (T , S , m) C (t , S , m) e P ( , S , m) P (T , S , m) P (t , S , m) , ossia i valori di call e put scritti con il cambio di variabile : T t . Per 0 , definiamo la trasformata di Laplace-Carlson (LCT) delle quantità espresse in reversed time come C * (, S , m) LC [C ( , S , m)]
0
eC ( , S , m)d
(3.151)
e P ( , S , m)d .
(3.152)
e P * (, S , m) LC [P ( , S , m)] 98
0
3.3 Opzioni fractional lookback
Nella discussione del problema useremo questa modifica della trasformata di Laplace in quanto la LCT genera formule più semplici della classica LT nel caso dei problemi di pricing di opzioni: nel caso della LCT i valori costanti sono infatti invariati dopo aver effettuato la trasformazione. Iniziamo ora studiando il pricing di opzioni fractional lookback europee; i risultati ricavati in questa fase saranno poi utilizzati nel calcolo del prezzo delle opzioni fractional lookback americane: anche nel caso di opzioni lookback vale infatti la formula di decomposizione del prezzo di un’americana nel valore della corrispondente opzione europea, a cui va sommato un premio per l’esercizio anticipato.
Opzioni europee fractional lookback Iniziamo considerando il caso delle opzioni europee. Sia c(t , S , m) il valore di un’opzione call europea fractional lookback al tempo t [0,T ] . Come la sua controparte americana, c(t , S , m) soddisfa la PDE di Black-Scholes-Merton
Lt ,S c(t , S , m) 0,
S m,
(3.153)
con le condizioni al bordo
c , S S c lim 0, S m m lim
(3.154) (3.155)
e la condizione finale c(T , S , m) (S m) .
(3.156)
La soluzione di questa equazione può essere trovata ad esempio in [54] o in [38] ed è data da
99
Capitolo 3. Pricing di opzioni tramite trasformata di Laplace r (T t )
(d1 ) c(t , S , m) Se(T t )(d1 ) me f S rf (T t ) m (d2 ) e(T t ) (d2 ) , e S Serf (T t ) T t d2(d2 ) (d2 ) ,
rf
(3.157)
rf
dove () e () denotano rispettivamente la funzione di ripartizione e la funzione di densità di una variabile aleatoria normale, 2(rf )/ 2 e
d1
S log r m T t
1 2
2 (T t ) ,
d2
m log r S T t
1 2
2 (T t ) .
1
f
1
f
Notiamo che i primi due termini del lato destro di (3.157) rappresentano il valore di un’opzione call europea vanilla con strike price K m. Per il valore in reversed time c( , S , m) c(T , S , m) ( 0) possiamo definire la LCT come c * (, S , m) LC [c( , S , m)] ; nonostante sia già stato definita la soluzione per le opzioni lookback nella (3.157), il valore di c * (, S , m) ci servirà successivamente per il calcolo del prezzo delle opzioni fractional lookback americane. Avremo quindi: Teorema 3.3.1.
1(, S , m), c (, S , m) S m 2 (, S , m) , rf *
m S m S m
dove 1 1 S 1 1(, S , m) 1 2 1 rf
100
m 2 m 1 2 1 2 , 1 S S
(3.158)
3.3 Opzioni fractional lookback
b1 b1(1 , 2 )
2 1 2 rf 2 1 2 rf
a2 0,
2 1 1 2 1 1 rf 1 1 1 a4 1 2 1 rf a3
,
2 1 , .
e i parametri 1 1 e 2 0 sono dati da ()
2 1 rf 12 2 rf 12 2 2 2 , 2
cioè le due radici reali dell’equazione quadratica 1 2
2 2 rf 12 2 0.
(3.159)
Dimostrazione. Con il cambio di variabile x : mS e la funzione valore nello spazio della trasformata V ( , x ) c( , S , m)/ S , la dimensione della PDE può essere ridotta di uno. Usando le relazioni c V , S 2c x 2 2V , S x 2 S 2
c V , V x S x c V , m x
possiamo riscrivere la PDE (3.153) come
V 1 2 2 2V V x (rf )x V 0 2 x x 2
0 x 1
(3.160)
con la condizione iniziale
V (0, x ) (1 x ) , e le condizioni al bordo
101
(3.161)
Capitolo 3. Pricing di opzioni tramite trasformata di Laplace
(3.162)
limV ( , x ) , x 0
lim x 1
V 0. x
(3.163)
Per 0, sia V * (, x ) LC [V ( , x )] la trasformata di Laplace-Carlson di V ( , x ) . Allora dalle equazioni (3.160)-(3.163) possiamo ricavare la ODE per V * (, x ) nella forma 1 2 2 d 2V * dV * x ( rf )x ( )V * (1 x ) 0 2 2 dx dx
0 x 1 (3.164)
con le rispettive condizioni al bordo limV * (, x ) , x 0
lim x 1
(3.165)
dV * 0. dx
(3.166)
Una soluzione generale dell’ODE (3.143) ha la forma x , a1 x 1 a2 x 2 rf * V (, x ) a3 x 1 a4 x 2 ,
0x
1
1 x 1 .
(3.167)
Possiamo ricavare i coefficienti ai (i 1,...,4) dalle condizioni al bordo (3.162) e (3.163), dalla continuità di V * (, x ) e dalla sua derivata prima in x 1 / , e risulta
a1
1 2 1 1 1 2 2 1 2 rf 1 2 2 1
a2 0,
1 1 2 2 1 1 rf 1 1 1 a4 1 2 1 rf a3
1 ,
2 1 , .
Sostituendo questi valori nella (3.167) otteniamo il risultato desiderato.
102
(3.168)
3.3 Opzioni fractional lookback
Passiamo ora al caso delle opzioni put. Sia p(t , S , m) il valore di un’opzione put europea fractional lookback al tempo t [0,T ] , che soddisfa la PDE di Black&ScholesMerton
Lt ,S p(t , S , M ) 0,
0 S M,
(3.169)
rf (T t )
(3.170)
con le condizioni al bordo lim p(t , S , M ) Me S 0
lim
S M
,
p 0, M
(3.171)
e la condizione finale (3.172)
p(T , S , M ) (M S ) . Il valore p(t , S , M ) può essere scritto come r (T t )
(h1 ) Se(T t )(h1 ) p(t , S , m) Me f S r (T t ) M (h2 ) , e(T t ) (h2 ) e f S r T t ( ) f T t (h2 ) h2 (h2 ) , Se
rf
(3.173)
rf
dove come prima () e () denotano rispettivamente la funzione di ripartizione e la funzione di densità di una variabile aleatoria normale, 2(rf )/ 2 e
h1
S log r M T t
h2
M log r S T t
1
f
1
f
1 2
1 2
2 (T t ) ,
2 (T t ) .
Per il valore in reversed time p( , S , M ) p(T , S , M ) ( 0) possiamo definire la LCT come p * (, S , M ) LC [ p( , S , M )] ; avremo allora:
103
Capitolo 3. Pricing di opzioni tramite trasformata di Laplace
Teorema 3.3.2.
S M 1(, S , M ) , rf p (, S , M ) 2 (, S , M ), *
0 S M
(3.174)
M S M ,
dove
1(, S , M )
S 1 1 1 1 2 12 1 2 1 rf 2 rf
2 (, S , M )
S 2 1 2 1 2 2 rf
M 2 S ,
2 M 1 12 1 M , S S 2
con i parametri 1 e 2 definiti come nel teorema precedente. Omettiamo la dimostrazione di questo teorema in quanto analoga a quella del teorema precedente. Grazie ai risultati di questa sezione, possiamo ora calcolare il valore delle opzioni fractional lookback nel caso americano.
Opzioni americane fractional lookback Applicando lo stesso metodo risolutivo utilizzato nel Teorema 3.3.1 alla PDE (3.140) per C (t , S , m) , possiamo ricavare la rappresentazione in funzione dell’esercizio anticipato per la trasformata di Laplace-Carlson C * (t , S , m). Otteniamo infatti il seguente risultato: Teorema 3.3.3. c * (, S , m) ec* (, S , m), C (, S , m) S m, *
dove ec* (, S , m) è la LCT del premio di esercizio anticipato 104
m S S *, S S *,
(3.175)
3.3 Opzioni fractional lookback * 1
* 2 SA S (, S , m), 2 2 S S
S ec* (, S , m) SA1
(3.176)
con 2 1 2 rf m , 2 1 2 rf S *
A1 A1(1 , 2 )
A2 A2 (1 , 2 ) A1(2 , 1 ), e S * S * () è definito come S*
m *
dove * * () (0 * 1 1) soddisfa l’equazione rf
2 1 rf 2 1 1 2
*
1
*
2
r rf
f
1 2 * 11 1 1 * 12 . 2 1
(3.177)
Dimostrazione. Effettuando lo stesso cambio di variabile x : mS e ponendo
( )
m , S ( , m)
possiamo ottenere una ODE per V * (, x ) simile a (3.160), cioè 1 2 2 d 2V * dV * ( rf )x ( )V * (1 x ) 0 x 2 2 dx dx
* x 1 (3.178)
insieme alle condizioni al bordo limV * (, x ) 1 * ,
(3.179)
dV * lim . x * dx
(3.180)
x *
105
Capitolo 3. Pricing di opzioni tramite trasformata di Laplace
lim x 1
dV * 0, dx
(3.181)
dove * * () LC [( )] (0 * 1 ). Per * dato è immediato risolvere la ODE (3.178), utilizzando anche le prime due condizioni al bordo (3.179) e (3.180), la continuità di V * (, x ) e la sua derivata prima in x 1 / . Assumendo una soluzione generale nella forma 1 x , x b1 x 1 b2 x 2 , * V (, x ) r f b3 x 1 b4 x 2 ,
0 x *, 1 * x ,
(3.182)
1 x 1 ,
abbiamo che
1 2 1 2 rf m S * b1 b1(1 , 2 ) , 2 1 2 rf S * m
b2 b1( 2 , 1 ),
2 1 2 b3 b3 (1 , 2 ) b1(1 , 2 ) 2 1 2 rf
,
(3.183)
b4 b3 ( 2 , 1 ). Confrontando (3.168) e (3.183) vediamo che b3 a3 b1 a1 e b4 a4 b2 : queste relazioni ci permettono di scrivere C * (, S , m) con la decomposizione presentata in (3.175). L’equazione (3.177) per * è invece ottenuta applicando la condizione al bordo di Neumann (3.181) nella (3.182). Allo stesso modo possiamo ottenere risultati simili nel caso della put; come prima ci limiteremo ad enunciare i risultati e tralasceremo la dimostrazione, il cui procedimento è analogo a quello della call.
106
3.3 Opzioni fractional lookback
Teorema 3.3.4. M S , P (, S , M ) * p (, S , M ) ep* (, S , M ), *
S S *,
(3.184)
S* S M,
dove ep* (, S , M ) è la LCT del premio di esercizio anticipato * 1
* 2 SB S (, S , M ), 2 1 S S
S ep* (, S , M ) SB1
(3.185)
con 1 2 rf M 2 , 1 2 2 rf S *
B1 B1(1 , 2 )
B2 B2 (1 , 2 ) B1(2 , 1 ), e S * S * () è definito come
S*
M *
dove * * () ( * 1 1) soddisfa l’equazione rf
rf 2 1 2 1 1 2
*
1
*
2
r rf
f
1 2 * 11 1 1 * 12 . 2 1
(3.186)
Dalle (3.177) e (3.186) ricaviamo che * () ( (0, 1 )) e * () ( ( 1 , )) possono essere ottenuti risolvendo un’equazione nella forma
x f (x ),
(3.187)
dove f (x ) f (x , )
g()x 1 2
rf
(x 2 x 1 )
1 2 2 1 1 1 rf x x 2 1
107
,
,
(3.188)
Capitolo 3. Pricing di opzioni tramite trasformata di Laplace
con g() g(, )
rf 2 1 ( 2 1 ) , 1 2
, .
(3.189)
Notiamo che f (x ), è simmetrica rispetto a 1 e 2 . Dall’equazione funzionale (3.187) possiamo ricavare alcune proprietà asintotiche per la curva di esercizio anticipato. Teorema 3.3.5. Per le curve di esercizio anticipato (S (t , m))t [0,T ] e (S (t , M ))t [0,T ] di un’opzione fractional lookback, valgono le seguenti relazioni asintotiche:
rf lim S (t , m) max ,1 m, t T
(3.190)
rf lim S (t , M ) min ,1 M . t T
(3.191)
Dimostrazione. Consideriamo il caso dell’opzione call, quindi poniamo e x * nella (3.188). Grazie al Teorema di Abel per la trasformata di Laplace, il valore ( ) in 0 (cioè in t T ) può essere ottenuta facendo tendere a per * () . Dalle condizioni (3.179) e (3.180), osserviamo che una condizione necessaria è avere
* 1 , perché il payoff all’esercizio deve essere non negativo. Sostituendo
i () (i 1,2) con il loro valore asintotico, cioè 1() O( ) e 2 () O( ) per nella (3.187), otteniamo
* f ( * )
g()( * )1 2 {( * )2 ( * )1 } rf {( * )1 ( * )2 }
g()( * )1 2 . (3.192) rf rf {( * )1 ( * )2 }
Se / rf 1 , allora 1 2 2( rf )/ 2 1 0 , quindi il secondo termine dell’ultima relazione di (3.192) deve convergere a 0, che implica lim * () / rf . Dalla relazione asintotica g() 1 , abbiamo *
1 exp log * rf rf 108
(3.193)
3.3 Opzioni fractional lookback
Se / rf 1 , il termine sinistro è negativo, quindi l’unico modo in cui il termine destro può convergere a un limite diverso da 0 è che lim * () 1. Unendo i due risultati otteniamo quindi min ,1 , rf 0 S ( , m )
lim * () lim
m
(3.194)
che implica quindi
rf lim S (t , m) max ,1 m. t T
(3.195)
La dimostrazione nel caso dell’opzione put è analoga ed è quindi omessa.
3.3.3 Pricing di un’opzione fractional lookback con sottostante jum p
diffusion Studiamo ora il caso in cui il sottostante evolva secondo un modello jump diffusion, più precisamente il modello di Kou. Faremo riferimento a [35] per i risultati e a [7] per la dimostrazione, adattati al caso delle opzioni fractional lookback. Sotto la misura di probabilità neutrale al rischio Q , considerando il prezzo del sottostante St si ha che il processo di log-return definito come X (t ) ln(S (t )/ S (0)) soddisfa l’equazione X (t ) rf 12 2 t W (t )
N (t )
i 1 Yi ,
X (0) 0
(3.196)
dove rf è il tasso risk-free, è il dividendo, W (t ) è un moto Browniano standard, N (t ) è un processo di Poisson di intensità e le Yi sono variabili aleatorie i.i.d. con
distribuzione esponenziale doppia fYi (y ) p 1e1y 1{y0} q 2e2y 1{y0} ,
1 1, 2 0,
dove p,q 0, p q 1, 0, 1 1, 2 0 e E[eY 1]
109
(3.197)
p 1 q 2 1. 1 1 1 2
Capitolo 3. Pricing di opzioni tramite trasformata di Laplace
La funzione generatrice dei momenti di X(t) è
E[eX (t ) ] exp(G()t ),
(3.198)
dove la funzione G(x) è definita come
p 1 q 2 G(): rf 12 2 12 2 2 1 . 1 2
(3.199)
Come già affermato nel Lemma 3.1.1, si può dimostrare che l’equazione G() y ha esattamente quattro radici 1,y , 2,y , 3,y , 4,y , dove
0 1,y 1 2,y ,
0 3,y 2 4,y .
Con queste premesse possiamo ora andare a sviluppare i risultati per il caso di opzione fractional lookback con sottostante che evolve secondo il modello doppio esponenziale di Kou. Ci concentreremo in particolare sul caso di opzione fractional lookback put; lo sviluppo nel caso di opzione call è analogo. Come affermato nella sezione precedente, il prezzo di un’opzione put fractional lookback è dato da
S (t) S (0).
P FLB (T ) E erT max M , max S (t ) 0t T rT max M , max S (t ) E e 0t T
(3.200)
dove M è il massimo prefissato al tempo t 0 e [0,1] , tale che M S (0) . Vale allora il seguente teorema: Teorema 3.3.6. Per qualunque 0 , la trasformata di P FLB (T ) è data da P FLB (T )
0
eT P FLB (T )dT 1, rf 1
S (0)A S (0) C M
2, rf 1
S (0)B S (0) C
dove 110
M
S (0) M , rf
(3.201)
3.3 Opzioni fractional lookback
A B
1 1, rf 2, rf 1, rf 1
2, rf
1 1, rf
2, rf 1
, (3.202)
,
C ( rf )1 2, rf 1, rf , e 1, rf , 2, rf sono le due radici positive dell’equazione G() rf , con G() definita dalla (3.199). Prima della dimostrazione enunciamo un lemma di cui avremo bisogno: Lemma 3.3.7. Sia b istante di primo passaggio come definito dalla (3.7). Allora
0
et Q b t dt
1
0
1 etd Q b t E eb .
(3.203)
Dimostrazione Teorema 3.3.6. Per la dimostrazione ci serviremo del seguente risultato: lim ey Q M X (T ) y 0,
y
T 0
(3.204)
dove M X (T ): max 0t T X (t ) . Per la dimostrazione si veda [36]. Osserviamo che dobbiamo solamente calcolare la trasformata di Laplace di r T PˆFLB (s, , M ;T ): E e f max M , seM X (T ) , dove s S 0 .
Poniamo z : ln(M / s ) 0 , abbiamo r T PˆFLB (s, , M ;T ) sE e f max ez , eM X (T ) rf T r T M X (T ) z sE e e 1M X (T )z sez e f . e
Sfruttando l’integrazione per parti e la condizione (3.203) otteniamo
111
Capitolo 3. Pricing di opzioni tramite trasformata di Laplace
rf T
E e
eM
X (T )
r T ez 1M X (T )z e f rf T
e
z
eyd Q M X (T ) y
z e Q M X (T ) z
r T r T E e f ez 1M X (T )z e f
z
z
ey Q M X (T ) y dy
ey Q M X (T ) y dy,
quindi r T PˆFLB (s, , M ;T ) se f
z
rf T
ey Q M X (T ) y dy Me
e
0
s s
eT PˆFLB (s, , M ;T )
eT e
ey
0 z
rf T
0
z
ey Q M X (T ) y dydT
rf T
e
Q M X (T ) y dTdy
M rf
M . rf
Sfruttando ora il Lemma 3.3.7 abbiamo che
0
rf T
e
y 1, rf
Q M X (T ) y dT A1e
con
A1
2, rf 1 1 1, rf , rf 1 2, rf 1, rf
B1
1, rf 1 1, rf 1 . rf 1 2, rf 1, rf
Quindi
112
y 2, rf
B1e
(3.205)
3.3 Opzioni fractional lookback
0
s
eT PˆFLB (s, , M ;T )
z
y 1, rf
ey A1e
dy s
z
y 2, rf
ey B1e
dy
M rf
z 1, rf 1 z 2, rf 1 e e M sA1 sB1 1, rf 1 2, rf 1 rf
A
B
M rf C C B s 2, rf 1 A s 1, rf 1 M s . s rf C M C M s
z 1, rf 1
e
s
z 2, rf 1
e
Ricordando che P FLB (T ) PˆFLB (s, , M ;T ) s, la trasformata di Laplace di
P FLB (T ) risulta P FLB (T )
0
eT P FLB (T )dT
A s 1, rf 1 B s s C M C
0
eT Pˆ FLB (s, , M ;T )dT
0
eT sdT
1 s 2, rf M s M rf 1 1 A S (0) 1, rf B S (0) 2, rf S (0) M S (0) S (0) , rf C M C M
che è la tesi.
113
Capitolo 4
Risultati numerici sequenziali
con
algoritmi
Riportiamo in questo capitolo i risultati ottenuti tramite le simulazioni numeriche seriali effettuate. Confronteremo il pricing tramite trasformata di Laplace con altri due metodi alternativi implementati, il metodo Montecarlo e il metodo alle differenze finite classico, e con altri risultati presenti sui testi utilizzati come referenze nel capitolo precedente. I codici Matlab per il pricing con trasformata di Laplace sono riportati nell’Appendice A; una breve presentazione dei due metodi alternativi e gli algoritmi implementati con essi sono riportati in Appendice B. Per tutte le simulazioni è stato utilizzato un computer portatile con Matlab versione 7.12.0.635 (R2011a), processore Intel® Core i7-740QM con 4 core e 1.73GHz clock speed, memoria RAM 8GB e sistema operativo Windows 7.
114
4.1 Opzioni barriera
4.1 Opzioni barriera Confrontiamo in questa sezione i risultati ottenuti nel pricing di opzioni barriera singola e doppia, scritte su sottostanti che evolvono secondo modello di Black&Scholes e modello di Kou.
4.1.1 Pricing nel caso di modello di Black&Scholes Iniziamo mostrando i risultati ottenuti con il primo metodo presentato, il metodo ibrido, nel caso in cui il sottostante evolva con modello di Black&Scholes. Sono stati presi in considerazione i casi di opzione call barriera singola down&out e di opzione call barriera doppia knock-out. I parametri utilizzati sono i seguenti: S 0 95, K 100,
B 90, T 1, rf 0.1, 0.25 nel caso di opzione barriera singola, e S 0 95, K 100, BL 90, BU 140, T 1, rf 0.1, 0.25 nel caso di opzione barriera
doppia. Abbiamo applicato la formula di inversione della trasformata di Laplace sia nella variante di Eulero che nella variante di Gaver-Stefhest, con M=16 in entrambi i casi.
Tabella 4.1: Confronto dei risultati ottenuti nel caso di opzioni barriera singola D&O con il metodo ibrido e altri metodi Time Steps / Space Steps
T-Tree (Boyle)
T-Tree (Ritchken)
50/100
4.9887
5.9942
100/200
3.7472
5.9997
200/500
4.9850
5.9986
500/1000
5.9648
5.9974
1000/2000
5.4363
5.9972
2000/5000
5.9643
5.9971
FDM
Nsim / Time steps
MC
6.3609 [6.0605-6.6613] 6.3147 50000/2000 5.9947 [6.1801-6.4493] 6.2569 100000/2000 5.9946 [6.1622-6.3517] 6.3527 10000/5000 5.9967 [6.0495-6.6559] 6.1253 50000/5000 5.9968 [5.9917-6.2588] 6.0437 100000/5000 5.9968 [5.9480-6.1387] Soluzione analitica: 5.9968 5.9914
10000/2000
115
Space Steps
HM-E
HM- GS
50
6.0200
6.0196
100
5.9986
5.9986
200
5.9968
5.9961
500
5.9968
5.9967
1000
5.9968
5.9967
2000
5.9968
5.9967
Capitolo 4. Risultati numerici con algoritmi sequenziali
In Tabella 4.1 sono riportati i risultati ottenuti dai diversi algoritmi di calcolo implementati nel caso di opzione barriera barriera singola down&out; i risultati in grassetto indicano i metodi implementati direttamente in Matlab. Le prime tre colonne mostrano i risultati presenti in letteratura, ottenuti con algoritmi basati su alberi binomiali e trinomiali, per diverse discretizzazioni della griglia temporale e spaziale: la colonna T-Tree (Boyle) riporta i risultati ottenuti con il metodo di Boyle e Tian [10] e la colonna T-Tree (Ritchken) riporta i risultati ottenuti con il metodo di Ritchken [43]. La colonna FDM riporta i risultati ottenuti con il metodo da noi implementato alle differenze
finite,
variante
Crank-Nicholson,
con
S max 250,
per
diverse
discretizzazioni della griglia spaziale e temporale. La colonna MC riporta i risultati per il metodo Montecarlo da noi implementato, per diversi valori del numero di simulazioni e griglia temporale. Per concludere, le ultime due colonne riportano i risultati ottenuti con i metodi ibridi da noi implementati, con inversione tramite algoritmo di Eulero e algoritmo di Gaver-Stefhest, con S max 250, per diversi valori della griglia spaziale. Si nota subito che con l’algoritmo che sfrutta il metodo ibrido si ottiene una convergenza molto rapida al risultato analitico rispetto al numero di nodi della griglia, e un’elevata accuratezza del risultato; notiamo inoltre che come previsto con il metodo di Gaver-Stefhest si ottiene un risultato leggermente meno accurato che nel caso di Eulero, a causa della precisione computazionale maggiore richiesta. Nella Tabella 4.2 sono invece riportati i tempi di calcolo nel caso dell’algoritmo alle differenze finite, dell’algoritmo Montecarlo e dei due algoritmi ibridi che sfruttano la trasformata di Laplace. I risultati evidenziano come gli algoritmi ibridi non siano solo accurati e convergano rapidamente alla soluzione analitica, ma offrano inoltre prestazioni ottime in termini di tempo di calcolo.
116
4.1 Opzioni barriera Tabella 4.2: Confronto dei dei tempi di calcolo ottenuti con il metodo ibrido e con i metodi alternativi nel caso di opzioni barriera singola Time Steps / Space Steps
FDM
Tempo (sec)
Nsim / Time steps
MC
Tempo (sec)
Space Steps
HM-E
Tempo (sec)
HMGS
Tempo (sec)
50/100
5.9914
0.003156
10000/2000
6.3609
1.372871
50
6.0200
0.019982
6.0196
0.020227
100/200
5.9947
0.006844
50000/2000
6.3147
6.281688
100
5.9986
0.022473
5.9986
0.021359
200/500
5.9946
0.016289
100000/2000
6.2569
12.507747
200
5.9968
0.023068
5.9961
0.022649
500/1000
5.9967
0.048400
10000/5000
6.3527
3.526148
500
5.9968
0.042326
5.9967
0.023785
1000/2000
5.9968
0.154777
50000/5000
6.1253
18.553603
1000
5.9968
0.060683
5.9967
0.031537
2000/5000
5.9968
0.775003
100000/5000
6.0437
27.262906
2000
5.9968
0.099488
5.9967
0.041233
Ripetiamo la stessa analisi per l’opzione call doppia barriera knock-out; i risultati numerici e le performance in termini di tempo di calcolo sono riportate rispettivamente in Tabella 4.3 e 4.4. Anche in questo caso il metodo ibrido si mostra più performante rispetto agli altri metodi per l’accuratezza, per la velocità di convergenza verso il risultato analitico rispetto al numero di punti della griglia spaziale e per il tempo computazionale inferiore.
Tabella 4.3: Confronto dei risultati ottenuti nel caso di opzioni doppia barriera knock-out con il metodo ibrido e altri metodi Time Steps / Space Steps
B-Tree
T-Tree (Boyle)
T-Tree (Ritchken)
FDM
Nsim / Time steps
50/100
1.4181
1.4252
1.4238
1.4526
10000/2000
100/200
1.4414
1.4539
1.4437
1.4561
50000/2000
200/500
1.4502
1.4520
1.4495
1.4579
100000/2000
500/1000
n/a
1.4568
1.4553
1.4584
10000/5000
1000/2000
1.4568
1.4571
1.4566
1.4584
50000/5000
2000/5000
1.4576
1.4578
1.4576
1.4584
100000/5000
Soluzione analitica: 1.45839
117
MC
1.5785 [1.4739-1.6832] 1.5891 [1.5422-1.6360] 1.5815 [1.5485-1.6145] 1.5276 [1.4238-1.6314] 1.5149 [1.4685-1.5613] 1.5032 [1.4703-1.5361]
Space Steps
HM-E
HM- GS
50
1.4585
1.4585
100
1.4584
1.4585
200
1.4584
1.4584
500
1.4584
1.4582
1000
1.4584
1.4586
2000
1.4584
1.4582
Capitolo 4. Risultati numerici con algoritmi sequenziali Tabella 4.4: Confronto dei dei tempi di calcolo ottenuti con il metodo ibrido e con i metodi alternativi nel caso di opzioni barriera doppia Time Steps / Space Steps
FDM
Tempo (sec)
Nsim / Time steps
MC
Tempo (sec)
Space Steps
HM-E
Tempo (sec)
HMGS
Tempo (sec)
50/100
1.4526
0.003613
10000/2000
1.5785
1.406285
50
6.0200
0.020740
6.0196
0.017685
100/200
1.4561
0.003858
50000/2000
1.5891
6.511712
100
5.9986
0.021941
5.9986
0.018072
200/500
1.4579
0.019720
100000/2000
1.5815
12.942539
200
5.9968
0.038037
5.9961
0.023468
500/1000
1.4584
0.044432
10000/5000
1.5276
3.505483
500
5.9968
0.043688
5.9967
0.027502
1000/2000
1.4584
0.151615
50000/5000
1.5149
19.180142
1000
5.9968
0.068164
5.9967
0.037603
2000/5000
1.4584
0.768496
100000/5000
1.5032
29.623594
2000
5.9968
0.116216
5.9967
0.044395
Per concludere riportiamo i grafici relativi al calcolo del prezzo delle opzioni barriera singola e doppia ottenuti con l’algoritmo ibrido (nel caso di inversione con algoritmo di Eulero). I parametri sono gli stessi utilizzati per le precedenti simulazioni, e il numero di nodi spaziali è pari a 2000.
120
4.5 Call singola barriera down&out
Call doppia barriera 4
100
3.5 3
Prezzo
Prezzo
80
60
40
2.5 2 1.5 1
20
0.5 0 80
100
120
140 S
160
180
0 80
200
90
100
110 S
120
130
140
(b) Opzione call barriera doppia knock-out
(a) Opzione call barriera singola down&out
Figura 4.1: Prezzo dei due tipi di opzione barriera al variare di S0
4.1.2 Pricing nel caso di modello di Kou Analizziamo ora i risultati ottenuti con l’algoritmo descritto nella Sezione 3.1.3, quando il sottostante evolve con il modello doppio esponenziale descritto da Kou. Il caso preso in considerazione è quello di opzione call barriera doppia knock-out. I parametri utilizzati sono i seguenti: K 100, BL 80, BU 120, T 1, rf 0.05, 118
4.1 Opzioni barriera
d 0, =0.2, 0.1, 0.1, q 0.5 , calcolando i risultati per diversi valori di S 0 e . Abbiamo applicato la formula di inversione della trasformata di Laplace nella variante di Gaver-Stefhest, con M=16 e 500 nodi di discretizzazione spaziale. Abbiamo quindi confrontato questi risultati con quelli ottenuti utilizzando un metodo di tipo Operator Splitting per la risoluzione delle PIDE e il metodo Montecarlo; i risultati sono riportati in Tabella 4.5. Nel caso di metodo Operator Splitting, i risultati sono calcolati con una griglia temporale con 1000 nodi e una griglia dei prezzi con 1000 nodi; nel caso Montecarlo, sono state effettuate 10000 simulazioni con 4000 istanti temporali. Dal momento che non esistono formule analitiche nel caso di sottostante jump diffusion, i risultati non possono essere verificati direttamente; tuttavia essi risultano coerenti tra loro in tutti i casi. I risultati ottenuti con il metodo della trasformata di Laplace sono evidenziati in grassetto nella tabella.
Tabella 4.5: Confronto risultati nel caso di opzione call doppia barriera con sottostante Kou
S0
OS
MC
LT
3
0.4026
0.3780 [0.3409,0.4150]
0.3958
5
0.2397
0.2618 [0.2302,0.2933]
0.2312
3
0.5001
0.5262 [0.4833,0.5691]
0.4931
5
0.2994
0.2799 [0.2492,0.3106]
0.2907
3
0.3389
0.3596 [0.3234,0.3957]
0.3323
5
0.2136
0.2060 [0.1785,0.2335]
0.2048
90
100
110
Riportiamo quindi in Tabella 4.6 i risultati ottenuti con i tre metodi appena citati sotto diverse condizioni: è stato variato il numero di punti della griglia spaziale e temporale nel caso dell’Operator Splitting, il numero di simulazioni e di istanti 119
Capitolo 4. Risultati numerici con algoritmi sequenziali
temporali nel Montecarlo e il numero di punti della discretizzazione spaziale nel metodo basato sulla trasformata di Laplace. Di nuovo il metodo basato sulla trasformata di Laplace risulta molto accurato ed esibisce inoltre
una velocità di
calcolo decisamente superiore a quella degli altri due metodi (circa due ordini di grandezza inferiore quando la griglia prezzi/tempo è sufficientemente fitta e quando il numero di simulazioni è abbastanza alto)
Tabella 4.6: Confronto dei risultati e dei tempi di calcolo ottenuti con il metodo basato sulla trasformata di Laplace e con i metodi alternativi nel caso di opzioni barriera doppia (S 0 = 100, K = 100, B L = 80,
B U = 120, T = 1, r f = 0.05, d =0, = 0.2, 0.1, q + = 0.5, =3) Time Steps / Space Steps
OS
Tempo (sec)
Nsim / Time steps
MC
Tempo (sec)
Space Steps
LT
Tempo (sec)
50/100
0.6162
0.867951
10000/2000
0.5376
35.604178
50
0.4931
0.153641
100/200
0.5667
3.261181
50000/2000
0.5284
179.257400
100
0.4931
0.281857
200/500
0.5241
18.246641
100000/2000
0.5243
358.676071
200
0.4931
0.532384
500/1000
0.5067
103.930152
10000/4000
0.5158
71.375722
500
0.4931
1.297535
1000/2000
0.5001
537.953729
50000/4000
0.5159
356.077742
1000
0.4931
2.380790
2000/5000
0.4962
5054.05020
100000/4000
0.5035
784.362897
2000
0.4931
5.081710
120
4.2 Opzioni americane
4.2 Opzioni americane Confrontiamo ora i risultati ottenuti nel pricing di opzioni americane, utilizzando gli algoritmi presentati in Sezione 3.2.3 e 3.2.4. Non riporteremo i risultati relativi al metodo presentato nella Sezione 3.2.2. Per risolvere le equazioni (3.70) e (3.71) è infatti necessario utilizzare una combinazione di risoluzione numerica di integrali e ricerca di zeri di una funzione; questi due passaggi, implementati in Matlab con le funzioni built-in integral e fzero, generano instabilità numerica e risultati non coerenti a causa di problemi numerici risultanti dalla combinazione dei due (si cerca di approssimare gli zeri di una funzione risolvendo un integrale approssimato su punti interpolati della curva di esercizio ottimo).
4.2.1 Pricing con algoritmo di randomizzazione In
questa
sezione
mostriamo
i
risultati
ottenuti
tramite
l’algoritmo
di
randomizzazione presentato in Sezione 3.2.3, per il pricing di un’opzione americana put con sottostante che evolve con modello di Black&Scholes. Iniziamo presentando in Figura 4.3 i grafici della curva di esercizio anticipato calcolati per diversi valori di e . Coerentemente con la teoria, la curva di esercizio anticipato si abbassa all’aumentare di (mantenendo costante) e all’aumentare di (mantenendo costante).
(a)
(b) Figura 4.2: Curva di esercizio anticipato (K = 100, T = 1, r f = 0.05)
121
Capitolo 4. Risultati numerici con algoritmi sequenziali
Confrontiamo ora l’algoritmo di randomizzazione implementato con altri risultati presenti in letteratura; riportiamo i risultati in Tabella 4.7. Come nella Sezione precedente, i risultati riportati in grassetto sono calcolati con algoritmi implementati da noi su Matlab: in particolare i risultati OS-Random sono calcolati con l’algoritmo di randomizzazione ad 8 punti; i risultati delle differenze finite sono calcolati con l’algoritmo alle differenze finite, variante PSOR, con 200 nodi temporali e 500 nodi spaziali; gli altri risultati sono presi da [29]. I calcoli sono stati effettuati con K 100,
T 3, rf 0.06, 0.02, 0.4.
Tabella 4.7: Confronto dei prezzi ottenuti per un'opzione put americana con diversi metodi, con differenti S 0
Metodo
S 0 =80
S 0 =90
S 0 =100
S 0 =110
S 0 =120
OS-Random (Caso moda, N =8)
29.3893
24.8453
21.2885
18.2390
15.8778
Binomiale [19] (N=1000)
29.2601
24.8023
21.1294
18.0849
15.5428
Carr [14] (3 punti)
29.2323
24.7692
21.0835
18.0369
15.4873
Geske&Johnson [26] (2 punti)
31.0305
26.1543
22.1114
18.7646
15.9911
Quadratico [5]
29.4377
25.0614
21.4484
18.4418
15.9239
LBA [11]
29.2105
24.7669
21.1039
18.0635
15.5252
LUBA [11]
29.2540
24.7989
21.1306
18.0860
15.5437
Bunch&Johnson [13]
29.9382
25.1566
21.3092
18.1558
15.5755
Ho et al. [24] (2 punti)
31.2905
26.3315
22.2304
18.8438
16.0436
Huang et al. [25]
29.7147
25.0136
21.2121
18.1173
15.5729
Differenze finite (PSOR, N =200, M =500)
28.9272
24.4273
20.7291
17.6677
15.1169
Riportiamo ora i risultati riguardanti i tempi di calcolo. Abbiamo messo a confronto il metodo di randomizzazione con il metodo alle differenze finite riportato anche nella tabella precedente, e il metodo Montecarlo adattato al caso delle opzioni americane (algoritmo di Longstaff&Schwartz [39]). I calcoli sono stati effettuati con S 0 100,
K 100, T 3, rf 0.06, 0, 0.4. Ancora una volta, grazie ai risultati raccolti nelle due tabelle, possiamo osservare che il metodo di randomizzazione basato sulla trasformata di Laplace fornisce risultati accurati e con tempi di calcolo decisamente inferiori agli altri metodi.
122
4.2 Opzioni americane Tabella 4.8: Confronto dei risultati e dei tempi di calcolo ottenuti con il metodo basato sulla trasformata di Laplace e con i metodi alternativi nel caso di opzioni put americane Time Steps / Space Steps
PSOR
Tempo (sec)
Nsim / Time steps
MC (L&S)
Tempo (sec)
N
OS-R
Tempo (sec)
50/100
19.7774
1.862178
10000/2000
19.7502
4.639920
6
20.0622
0.010373
100/200
19.6986
6.757337
50000/2000
19.9501
29.543087
8
19.9240
0.012303
150/300
19.6032
18.282986
100000/2000
19.7484
64.397609
10
19.8396
0.010919
200/400
19.4814
38.938877
10000/4000
20.0095
9.583366
12
19.7827
0.016106
250/500
19.3450
71.901927
50000/4000
19.6661
65.883996
14
19.7417
0.018319
300/600
19.1919
135.077628
100000/4000
19.7609
154.644176
16
19.7163
0.020670
Per concludere mostriamo i grafici relativi ai risultati per un’opzione put americana, con K 100, T 1, rf 0.05, 0.02, N 8, al variare di S 0 , per tre diversi valori della volatilità ( 0.2, 0.3, 0.4 ). I risultati sono coerenti con la teoria, in quanto all’aumentare della volatilità, il prezzo dell’opzione aumenta.
Figura 4.3: Grafici di un’opzione put americana per tre diversi valori di volatilità
4.2.2 Pricing con algoritmo di randomizzazione “a pinza” Come riportato nella Sezione 3.2.3, il metodo di randomizzazione appena presentato tende a sovrastimare il valore “reale” dell’opzione americana, dove come valore “reale” abbiamo considerato il valore approssimato fornito al 1000-esimo step dall’algoritmo binomiale di Cox, Ross e Rubenstein [19]. Riportiamo quindi i valori ottenuti utilizzando l’algoritmo di randomizzazione a pinza presentato in Sezione 3.2.4, che 123
Capitolo 4. Risultati numerici con algoritmi sequenziali
approssima questo valore calcolando la media aritmetica o geometrica degli algoritmi di randomizzazione basati su media e moda della Sezione 3.2.3, che offrono rispettivamente un limite inferiore e superiore del valore “reale”.
Tabella 4.9: Confronto dei prezzi ottenuti con l’algoritmo di randomizzazione nel caso moda e media, e con l’algoritmo a pinza nel caso media aritmetica e media geometrica, con errore rispetto al valore reale Metodo OS-Random (Caso moda, N=8) OS-Random (Caso media, N=8) OS-Random “pinza” (Media Arit.) OS-Random “pinza” (Media Geom.) Binomiale [19] (N=1000)
S 0 =80
E. rel. (% )
S 0 =90
E. rel. (% )
S 0 =100
E. rel. (% )
S 0 =110
E. rel. (% )
S 0 =120
E. rel. (% )
29.3893
0.4426
24.8453
0.1734
21.2885
0.7530
18.2390
0.8521
15.8778
2.1553
28.9833
-0.9460
24.6274
-0.7052
21.0442
-0.4032
18.0071
-0.4357
15.3116
-1.4875
29.1863
-0.2522
24.7363
-0.2661
21.1664
0.1751
18.1230
0.2107
15.5947
0.3339
29.1856
-0.2546
24.7361
-0.2669
21.1660
0.1732
18.1227
0.2090
15.5921
0.3172
29.2601
24.8023
21.1294
18.0849
15.5428
A parte il caso S 0 90 , in tutti gli altri casi notiamo un miglioramento rispetto agli algoritmi OS-Random classici; l’errore è probabilmente dovuto alla necessità di elevata precisione nel calcolo della radice L* , come già riportato in Sezione 3.2.3. L’errore relativo è comunque sempre inferiore all’1% (tranne nel caso S 0 120 , con l’algoritmo OS-Random classico) e ciò indica che il metodo di randomizzazione, in particolare nel caso “a pinza”, fornisce risultati estremamente accurati. I tempi di calcolo, che non riportiamo, sono come negli altri casi ottimi: l’algoritmo ripete due volte il calcolo del valore con l’algoritmo OS-Random classico, una volta con usando la moda e una volta usando la media (i tempi sono praticamente uguali in entrambi i casi, e i tempi nel caso della moda sono riportati in Tabella 4.8), per poi calcolare la media aritmetica o geometrica di questi due valori, procedura con costo computazionale quasi nullo. Il risultato è che i tempi sono dell’ordine di 0.02-0.04 secondi, come prima circa quattro ordini di grandezza inferiori al caso PSOR e Montecarlo quando la griglia e il numero di simulazioni sono sufficientemente elevati. 124
4.3 Opzioni fractional lookback
4.3 Opzioni fractional lookback In questa sezione riportiamo i risultati relativi alle opzioni fractional lookback, analizzate sia per il caso di opzione europea sia per il caso di opzione americana. Riporteremo prima i risultati relativi al caso di sottostante Black&Scholes, e successivamente quelli nel caso di sottostante jump diffusion che evolve secondo il modello di Kou.
4.3.1 Pricing di opzioni fractional lookback europee ed americane con sottostante Black&Scholes Iniziamo studiando i risultati ottenuti con l’algoritmo presentato in Sezione 3.3.2. In primo luogo, per verificare l’accuratezza dell’algoritmo, abbiamo confrontato i risultati ottenuti nel caso di opzione europea con i valori esatti calcolati grazie alle Formule (3.157) nel caso dell’opzione call e (3.173) nel caso dell’opzione put. I parametri usati in input sono T 1, S m 100, rf 0.03, 0.05, 0.2 nel caso dell’opzione call e gli stessi parametri con M S 100 per l’opzione put. I valori sono stati calcolati per tre diversi valori di 1, 1.1, 1.2 per l’opzione call e tre diversi valori di 1, 1.1, 1.2 per l’opzione put; abbiamo quindi fatto variare il numero di nodi N della trasformata di Laplace per studiare la convergenza dell’algoritmo al risultato esatto. Anche con pochi nodi (generalmente per N 10 ) l’algoritmo mostra una precisione notevole; i risultati sono riportati in Tabella 4.10 e 4.11 rispettivamente per il caso di opzione call e di opzione put.
125
Capitolo 4. Risultati numerici con algoritmi sequenziali Tabella 4.10: Confronto tra i valori esatti e i valori calcolati con l'algoritmo che utilizza la trasformata di Laplace nel caso di opzioni fractional lookback europee di tipo call
V alore esatto
n
V alore calcolato
1.0
13.4618
2 4 6 8 10 12 16
1.1
7.0429
2 4 6 8 10 12 16
16.1024 13.8636 13.4846 13.4618 13.4617 13.4618 13.4618 10.1628 7.4648 7.0680 7.0431 7.0428 7.0429 7.0429
1.2
3.4198
2 4 6 8 10 12 16
6.4792 3.8057 3.4493 3.4220 3.4198 3.4197 3.4198
Tabella 4.11: Confronto tra i valori esatti e i valori calcolati con l'algoritmo che utilizza la trasformata di Laplace nel caso di opzioni fractional lookback europee di tipo put
V alore esatto
n
V alore calcolato
1.0
17.3051
23.6949 17.7670 17.3165 17.3049 17.3051 17.3051 17.3051
0.9
8.0501
2 4 6 8 10 12 16 2 4 6 8 10 12 16
0.8
2.7704
2 4 6 8 10 12 16
126
13.9722 8.4425 8.0608 8.0502 8.0501 8.0501 8.0501 7.4450 2.9974 2.7787 2.7735 2.7709 2.7703 2.7704
4.3 Opzioni fractional lookback
Procediamo come già fatto in precedenza con le opzioni barriera ed americane ed andiamo a riportare i tempi di calcolo dell’algoritmo usato. In Tabella 4.12 e 4.13 sono riportati, rispettivamente per call e put, i risultati e tempi di calcolo per l’algoritmo che sfrutta la trasformata di Laplace, al variare del numero di nodi usati nell’inversione della trasformata; i tempi sono messi a confronto con quelli del metodo Montecarlo da noi implementato, al variare del numero di simulazioni e di istanti temporali. I parametri in input in questo caso sono stati T 1, S M m 100, rf 0.03, 0, 0.2 . Come negli altri casi, il metodo basato sulla trasformata di Laplace risulta molto accurato e decisamente più rapido del metodo Montecarlo. Notiamo che usando il metodo Montecarlo, il prezzo delle opzioni call è sempre sovrastimato, e il prezzo delle opzioni put è sempre sottostimato: ciò è dovuto all’errore sistematico introdotto con il metodo Montecarlo, che ricerca il minimo (nel caso delle call) e il massimo (nel caso dell put) su una griglia temporale discreta.
Tabella 4.12: Confronto dei risultati e dei tempi di calcolo ottenuti con il metodo basato sulla trasformata di Laplace e con il metodo Montecarlo per le opzioni call fractional lookback europee
=1 N sim / Time steps
MC
=1.2
Tempo (sec)
N
LT
Tempo (sec)
N sim / Time steps
MC
Tempo (sec)
N
LT
Tempo (sec)
10000/ 2000
16.4099 [16.1357, 16.6840]
1.528470
4
16.6034
0.004197
10000/ 2000
5.1587 [4.9664, 5.3509]
1.370646
4
5.2308
0.002560
50000/ 2000
16.4272 [16.2022, 16.5522]
6.361432
6
16.3089
0.005202
50000/ 2000
5.1060 [5.0209, 5.1911]
6.627871
6
4.9783
0.003349
100000/ 2000
16.4281 [16.3404, 16.5158]
13.207134
8
16.2988
0.007315
100000/ 2000
5.1783 [5.1177, 5.2390]
13.192606
8
4.9626
0.004984
10000/ 4000
16.4372 [16.1606, 16.6138]
2.836698
10
16.2987
0.010096
10000/ 4000
5.2610 [5.0655, 5.4565]
3.022593
10
4.9598
0.006431
50000/ 4000
16.4078 [16.2833, 16.5323]
14.670049
12
16.2986
0.012923
50000/ 4000
5.1862 [5.1005, 5.2718]
14.863197
12
4.9596
0.006178
100000/ 4000
16.4168 [16.3279, 16.5057]
30.233961
16
16.2986
0.009162
100000/ 4000
5.1885 [5.1281, 5.2490]
29.810027
16
4.9597
0.009867
127
Capitolo 4. Risultati numerici con algoritmi sequenziali Tabella 4.13: Confronto dei risultati e dei tempi di calcolo ottenuti con il metodo basato sulla trasformata di Laplace e con il metodo Montecarlo per le opzioni put fractional lookback europee
=1 N sim / Time steps
MC
=0.8
Tempo (sec)
N
LT
Tempo (sec)
N sim / Time steps
MC
Tempo (sec)
N
LT
Tempo (sec)
10000/ 2000
14.8358 [14.6352, 15.0363]
1.299359
4
15.6343
0.002298
10000/ 2000
1.8146 [1.7293, 1.9000]
1.377153
4
2.0862
0.003878
50000/ 2000
15.0464 [14.9563, 15.1366]
6.607400
6
15.3264
0.00308
50000/ 2000
1.8731 [1.8341, 1.9121]
6.478478
6
1.9427
0.005468
100000/ 2000
14.9947 [14.9308, 15.0586]
13.114096
8
15.3136
0.004397
100000/ 2000
1.8642 [1.8367, 1.8918]
13.362233
8
1.9326
0.007482
10000/ 4000
15.1935 [14.9918, 15.3953]
2.894748
10
15.3135
0.006137
10000/ 4000
1.8312 [1.7437, 1.9187]
2.914321
10
1.9302
0.010300
50000/ 4000
15.1619 [15.0719, 15.2519]
14.325353
12
15.3135
0.007594
50000/ 4000
1.8873 [1.8481, 1.9265]
15.035923
12
1.9299
0.01229
100000/ 4000
15.0245 [14.9610, 15.0880]
29.222139
16
15.3135
0.010770
100000/ 4000
1.8768 [1.8491, 1.9045]
28.644577
16
1.9299
0.009284
Per concludere, riportiamo i risultati relativi alle opzioni fractional lookback americane. In Figura 4.5 sono rappresentate le curve di esercizio anticipato al variare di t, nel caso di opzione call e opzione put. Coerentemente con la teoria, nel caso dell’opzione call la curva si abbassa all’aumentare del dividendo , mentre nel caso dell’opzione put tale curva si alza all’aumentare di .
(a)
(b)
Figura 4.4: Curve di esercizio anticipato per un'opzione americana fractional lookback, caso call (a) e put (b), al variare del dividendo
128
4.3 Opzioni fractional lookback
Mostriamo infine i grafici del prezzo di due opzioni fractional lookback, una di tipo europeo e una di tipo americano, con gli stessi parametri. I parametri in input utilizzati sono T 1, S M m 100, rf 0.03, 0.05, 0.2 ; le curve sono state calcolate per diversi valori di 1, 1.1, 1.2 e 1, 0.9, 0.8 .
(a)
(b)
Figura 4.5: Confronto grafici di opzioni fractional lookback europee ed americane, per diversi valori di e
4.3.2 Pricing di opzioni fractional lookback europee con sottostante Kou Riportiamo ora i risultati ottenuti con l’algoritmo presentato in Sezione 3.3.3, per calcolare il prezzo di un’opzione fractional lookback floating strike con sottostante che evolve con modello di Kou. In Tabella 4.14 sono presentati i valori calcolati con le due varianti dell’algoritmo che sfrutta la trasformata di Laplace, in cui l’inversione è effettuata con l’algoritmo di Gaver-Stefhest e con l’algoritmo di Eulero. I parametri utilizzati sono S 0 100, rf 0.05, 0, 0.3, p 0.6, T 1, 1 e per diversi valori di 1,3,5 , M (M 105,115) e 12 (1 2 20, 40) ; entrambi i metodi sono stati implementati con 16 nodi per l’inversione della trasformata. I risultati sono confrontati con quelli ottenuti con il metodo Montecarlo da noi implementato, con gli stessi parametri in input, 50000 simulazioni e 2000 istanti temporali. Sono inoltre riportati i risultati presenti in [35], ottenuti da simulazioni Montecarlo molto più 129
Capitolo 4. Risultati numerici con algoritmi sequenziali
accurate (20000 simulazioni, 16000 istanti temporali) non riproducibili sul computer usato a causa dei tempi di simulazione troppo elevati. I risultati sono come negli altri casi molto soddisfacenti: il metodo implementato con la trasformata di Laplace si dimostra ancora una volta accurato, sia nella variante Gaver-Stefhest sia nella variante di Eulero. In Tabella 4.15 sono invece riportati i tempi di calcolo per il metodo Montecarlo e per il metodo basato sulla trasformata di Laplace, rispettivamente al variare del numero di simulazioni/istanti temporali e al variare del numero di nodi spaziali. Ancora una volta il metodo basato sulla trasformata di Laplace si dimostra estremamente più rapido della sua alternativa, fornendo risultati accurati in tempi inferiori al secondo. I risultati sono ottenuti con gli stessi parametri in input usati per la tabella precedente, con 1 , M 105 e 1 2 20 . Come prima, il metodo Montecarlo tende a sottostimare il valore dell’opzione, in quanto ricerca il massimo sul una griglia discreta.
Tabella 4.14: Confronto risultati per opzioni fractional lookback con sottostante Kou, nel caso di algoritmo con trasformata di Laplace e metodo Montecarlo M
105
115
1 2 20
1 2 40
LT-EU
LT-GS
MC [35]
MC
LT-EU
LT-GS
MC [35]
1
24.2390
24.2388
24.1695
23.9782 [23.8428, 24.1137]
23.7800
23.7798
23.7045
3
25.4818
25.4816
25.3723
24.1268
24.1266
24.0359
5
26.6945
26.6943
26.5664
24.4707
24.4705
24.38635
1
26.5473
26.5471
26.5893
26.0917
26.0915
26.1320
3
27.7714
27.7712
27.7831
26.4271
26.4269
26.4519
5
28.9653
28.9651
28.9342
26.7598
26.7595
26.7847
24.5555 [24.5113, 24.6997] 25.7130 [25.5620, 25.8641] 25.1207 [24.9751, 25.2664] 26.9541 [26.8007, 27.1076] 27.8853 [27.7239, 28.0467]
130
MC 23.7482 [23.6153, 23.8810] 23.7172 [23.5820, 23.8524] 23.8635 [23.7253, 24.0017] 25.6331 [25.4904, 25.7757] 26.1856 [26.0403, 26.3308] 26.4608 [26.3125, 26.6090]
4.3 Opzioni fractional lookback Tabella 4.15: Confronto dei risultati e dei tempi di calcolo ottenuti con il metodo basato sulla trasformata di Laplace e con i metodi alternativi nel caso di opzioni put americane
Tempo (sec)
M
LT-EU
Tempo (sec)
M
LT-GS
Tempo (sec)
31.858741
50
24.2390
0.029103
6
24.2388
0.056427
160.182573
100
24.2390
0.035083
8
24.2388
0.081580
200
24.2390
0.059864
10
24.2388
0.141666
500
24.2390
0.131406
12
24.2388
0.324394
1000
24.2390
0.253608
14
24.2388
0.688256
2000
24.2390
0.508988
16
24.2388
1.289566
Nsim / Time steps
MC (L&S)
10000/2000
24.5391
50000/2000
24.3839
100000/2000
24.4712
335.367356
10000/4000
24.5067
67.323862
50000/4000
24.7401
327.364737
100000/4000
24.6266
697.415097
131
Capitolo 5
Simulazioni numeriche parallele
Come già accennato nell’Introduzione, una delle caratteristiche più interessanti degli algoritmi che si basano sulla trasformata di Laplace è la possibilità di poter essere “parallelizzati”, ossia riscritti in modo tale che le operazioni possano essere eseguite su più unità di calcolo allo stesso tempo, in modo da ridurre ulteriormente i tempi di calcolo del prezzo delle opzioni. Riportiamo in questo capitolo i risultati relativi alla parallelizzazione degli algoritmi presentati nelle due sezioni precedenti: dopo una breve introduzione sul calcolo parallelo e sull’architettura CUDA, analizzeremo i risultati ottenuti sfruttando il pacchetto Matlab Parallel incluso in Matlab, che permette di utilizzare alcune funzioni built-in per il calcolo parallelo. Come nella sezione precedente, per le simulazioni è stato utilizzato un computer portatile con Matlab versione 7.12.0.635 (R2011a), processore Intel® Core i7-740QM con 4 core e 1.73GHz clock speed, memoria installata RAM 8GB e sistema operativo Windows 7; in particolare per l’architettura CUDA è stata utilizzata una scheda grafica NVIDIA® GeForce GT 425M, con Compute Capability 2.1. 132
5.1 Introduzione al calcolo parallelo
5.1 Introduzione al calcolo parallelo In questa sezione presentiamo le caratteristiche principali del calcolo parallelo, alcune tecniche di parallelizzazione degli algoritmi ed una breve introduzione all’architettura CUDA.
5.1.1 Preliminari Tradizionalmente, i programmi erano scritti per un modello di computazione sequenziale, come quello definito da Von Neumann 21; in particolare, essi erano scritti per essere eseguiti su un computer con singola CPU. Nella programmazione sequenziale, un problema viene spezzato in una sequenza di istruzioni che vengono eseguite una dopo l’altra; in un dato istante, una sola istruzione è in esecuzione. Con il termine calcolo parallelo si intende invece l’uso di più unità computazionali (CPU) per risolvere problemi. In questo approccio, il problema viene scomposto in parti che possono essere eseguite in maniera concorrenziale (cioè in parallelo); ogni istruzione è spezzata in sequenze da eseguire su una singola CPU. In questo modo, le istruzioni di ciascuna parte sono eseguite nello stesso momento, in modo simultaneo su CPU differenti. Questo approccio alla risoluzione di problemi è ormai di primaria importanza, in quanto permette di avere vantaggi enormi: usando il calcolo parallelo è possibile risparmiare enormi quantità di tempo di calcolo, ed è inoltre possibile risolvere problemi che non potrebbero essere trattati da una singola CPU o da una singola macchina, distribuendo l’onere dei calcoli su più unità o addirittura su più macchine connesse. Con questo approccio si è quindi passati da un modello SISD
John Von Neumann (1903-1957) è stato un matematico, fisico e informatico ungherese naturalizzato statunitense; a lui si devono fondamentali contributi in numerosi campi, come la teoria degli insiemi, l’analisi funzionale, la fisica quantistica, l’economia, l’informatica, la teoria dei giochi e la fluidodinamica. 21
133
Capitolo 5. Simulazioni numeriche parallele
(Single Instruction, Single Data), in cui un singolo calcolatore esegue in modo sequenziale i calcoli, con una (o più) CPU che gestisce un solo stream di informazioni, a un modello di tipo SIMD (Single Instruction, Multiple Data) in cui tutte le unità di calcolo eseguono la stessa istruzione nello stesso istante di tempo, in modo sincrono (come avviene ad esempio nel caso dei calcoli effettuati sulla GPU) o a modelli di tipo MIMD (Multiple Instruction, Multiple Data) in cui ogni processore esegue uno stream di istruzioni differente, su uno stream di dati differente, in modo sincrono o asincrono,
5.1.2 Disegno di algoritmi paralleli Il calcolo parallelo è ovviamente più complicato del classico approccio sequenziale: per poter tradurre un algoritmo in modo che esso operi in modo parallelo, bisogna considerare diversi aspetti. In primo luogo, è necessario comprendere il problema che si sta analizzando e l’algoritmo utilizzato per risolverlo per individuare i punti critici e i “colli di bottiglia”. Per punti critici, si intende quelle istruzioni all’interno dell’algoritmo che richiedono il maggior tempo computazionale: sono infatti questi i punti principali su cui concentrarsi per effettuare una “traduzione” in parallelo del programma. Allo stesso tempo, vanno individuati i cosiddetti “colli di bottiglia”, ossia i punti del programma in cui il calcolo parallelo deve essere bloccato per motivi vari (ad esempio perché i risultati finora calcolati in parallelo vanno raccolti per eseguire sequenzialmente delle operazioni su essi): quando possibile, queste parti dell’algoritmo vanno ristrutturate per ridurre al minimo le aree di rallentamento. Infine. è necessario valutare la presenza di strong data dependance, ossia dipendenza dei dati precendentemente calcolati che, se non eliminabile, rende impossibile l’esecuzione del calcolo in parallelo. Una volta fatto tutto ciò, è necessario capire come scomporre il problema, ossia come creare dei “blocchi di lavoro” che possano essere distribuiti sulle varie CPU. Sono possibili due metodi per partizionare la computazione: la decomposizione del dominio e 134
5.1 Introduzione al calcolo parallelo
la decomposizione funzionale. Nella decomposizione del dominio, la scomposizione del problema è associata alla distribuzione dei dati: i dati associati al problema sono divisi in più parti, ciascuna delle quali è assegnata ad un’unità di calcolo diversa; un esempio di questo approccio si ha quando si lavora ad esempio con una matrice, che viene scomposta in parti (per colonne, righe o blocchi) ciascuna delle quali è assegnata ad una diversa unità di calcolo. Nella decomposizione funzionale, invece, la scomposizione del problema è effettuata invece sulle operazione da eseguire e non sui dati. Ciascun task esegue una porzione del lavoro totale, quindi più operazioni sono eseguite contemporaneamente da più unità di calcolo. Nella computazione in parallelo è anche importante considerare il problema della comunicazione tra diversi task. La maggior parte delle applicazioni che sfruttano i calcoli in parallelo ha infatti bisogno che i diversi processi condividano i dati: ad esempio, nel problema di diffusione del calore, un task necessità di conoscere le temperature calcolate dai task che operano sui dati vicini; modificare i dati nelle vicinanze ha un effetto diretto sui dati trattati dal task stesso. Questa comunicazione tra diversi processi ha un costo: risorse altrimenti utilizzate per il calcolo sono invece usate per trassmettere dati, perdendo capacità computazionale; allo stesso tempo la comunicazione spesso richiede qualche tipo di sincronizzazione tra i task, e questo si traduce in un aumento del tempo necessario per il programma, in quanto i task “più rapidi” sono costretti ad attendere il termine dei calcoli effettuati da altri task per trasmettere il messaggio e procedere. Per questo nel calcolo parallelo si tende ad evitare troppa comunicazione tra i processi, e quando necessaria si cerca di strutturare il programma in modo che essa possa essere effettuata in modo asincrono, ossia in modo da non bloccare le operazioni di calcolo su un’unità per attendere il completamento delle operazioni sulle altre. Infine, è necessario valutare la presenza, all’interno dell’algoritmo, di dipendenza tra i dati. Si dice che esiste dipendenza tra i dati quando l’ordine di esecuzione dei comandi influisce sul risultato finale dell’algoritmo. Un esempio è dato dal caso in cui 135
Capitolo 5. Simulazioni numeriche parallele
per calcolare un valore al tempo i abbiamo bisogno dello stesso valore al tempo i 1 ; quest’ultimo valore deve essere calcolato prima di quello di indice i, quindi la parallelizzazione non è possibile. La dipendenza dai dati è uno dei principali inibitori del calcolo parallelo: quando non è possibile ristrutturare le sezioni con strong dependance, l’algoritmo non è parallelizzabile. Un ulteriore aspetto da considerare quando si utilizza il calcolo parallelo è quello dell’input/output. Le operazioni di tipo I/O sono infatti problematiche per la parallelizzazione di un programma: nel caso in cui tutti i task operino sullo stesso file space, le operazioni di scrittura possono generare sovrascritture dei file; allo stesso modo, le operazioni di lettura possono essere compromesse dalla capacità del server di gestire più richieste contemporaneamente. in questi casi è quindi consigliabile ridurre al minimo le operazioni di I/O, e se necessarie confinarle in porzioni ben determinate dell’algoritmo e sfruttare la comunicazione parallela per distribuire i dati a processi in parallelo. Andiamo ora ad analizzare i miglioramenti e i limiti determinati dal calcolo parallelo. Secondo la legge di Amdahl 22, lo speedup (accelerazione) potenziale di un programma è data dalla frazione di codice p che può essere parallelizzata, secondo la seguente formula:
speedup
1 (1 p)
In Figura 5.1 è riportato il grafico dello speedup al variare della percentuale di codice parallelizzato all’interno del programma.
Gene Myron Amdahl (1922) è un ingegnere informatico statunitense e imprenditore, noto per le sue ricerche in campo informatico, in particolare su computer architecture e calcolo parallelo. 22
136
5.1 Introduzione al calcolo parallelo
Figura 5.1: Grafico dello speedup di un algoritmo al variare della quantità di codice parallelizzato p
Introducendo il numero di processori N che svolgono il calcolo parallelo, la relazione pù essere modellizzata come speedup
1 ( Np s )
dove p è la frazione di programma in parallelo, N il numero di processori e s la frazione di programma seriale. Risulta subito evidente che esistono limiti alla scalabilità del parallelismo: oltre alla maggiore complessità degli algoritmi, tutti gli elementi citati in precedenza rendono in pratica impossibile parallelizzare completamente un codice; il costo computazionale aggiuntivo associato al set-up dell’ambiente parallelo, alla creazione e terminazione dei task e alla comunicazione tra essi può sottrarre risorse alle varie unità, diminuendo notevolmente la loro capacità di calcolo e aumentando i tempi di computazione. In generale tuttavia in problemi che utilizzano grandi quantità di dati o in cui le operazioni possono essere eseguite in qualunque ordine, l’esecuzione del codice in parallelo porta grandi vantaggi e riduce notevolmente i tempi di calcolo.
137
Capitolo 5. Simulazioni numeriche parallele
5.1.3 Introduzione all’architettura CUDA All’interno del calcolo parallelo, la computazione su scheda grafica ha avuto negli ultimi anni uno sviluppo notevole; le GPU (Graphic Processing Unit) sono infatti ormai diventate, sotto la spinta dell’industria dei videogiochi, processori flessibili e potenti, che possono essere programmati usando linguaggi ad alto livello e che supportano ormai calcoli con precisione floating-point. Le GPU sono in particolare specializzate nel calcolo intensivo altamente parallelo: essendo dedicate principalmente al rendering grafico, esse posseggono un elevato numero di core paralleli (fino a 448 sulle schede NVIDIA®) sui quali possono essere eseguite operazioni semplici; questi core sono gestiti da un thread manager che può controllare fino a 12000 thread per ciascun core. CUDA (Computer Unified Device Architecture) è un’architettura hardware per l’elaborazione parallela, creata da NVIDIA®. I linguaggi di programmazione disponibili per l’ambiente di sviluppo per CUDA sono estensioni dei linguaggi più diffusi: il principale è CUDA-C (linguaggio C con estensione NVIDIA®), ma sono inoltre presenti estensioni per Python, Java e Matlab e altri linguaggi di programmazione. Per programmare in ambiente CUDA è necessario scrivere il codice per un singolo thread e istanziarlo poi su più thread paralleli; il programma può operare su un qualunque numero di processori senza la necessità di essere ricompilato. I thread sono il livello più fine della parallelizzazione: una GPU esegue migliaia di thread, ciascuno dei quali calcola un risultato (o più risultati) con operazioni molto semplici; il livello superiore di parallelizzazione è dato dai blocchi, che contengo vettori di thread. Le porzioni parallele di un algoritmo sono definite in ambiente CUDA come kernel: viene eseguito uno solo di essi alla volta. Il kernel viene eseguito da una griglia, formata da blocchi; ciascun blocco contiene i thread, quindi in conclusione ciascun kernel è eseguito da molti thread che operano contemporaneamente. All’interno di ciascun blocco, i thread cooperano tramite una memoria condivisa: questo è uno dei 138
5.1 Introduzione al calcolo parallelo
vantaggi maggiori di CUDA, in quanto questa shared memory permette una riduzione drastica della velocità di accesso alla memoria, e permette inoltre di condividere i risultati intermedi dei vari thread. Ci sono quindi due differenze principali tra il calcolo parallelo su GPU e il classico calcolo parallelo su più CPU/macchine. In primo luogo, l’utilizzo di una memoria condivisa all’interno di un blocco permette comunicazione tra i thread all’interno di tale blocco, ma allo stesso tempo impedisce tuttavia la comunicazione tra thread contenuti in blocchi diversi; l’accesso a questa memoria condivisa risulta estremamente rapido ed efficiente; di contro, il passaggio dei dati necessari per il calcolo dalla CPU alla GPU per l’esecuzione dei calcoli, e il passaggio inverso per la raccolta dei risultati, sono spesso operazioni dispendiose in termini di tempo, soprattutto su schede grafice datate. La seconda differenza principale è data dal tipo di calcoli eseguiti: mentre nel caso della GPU i thread sono estremamente semplici, ed è quindi necessario svolgerne diverse migliaia per avere un miglioramento dell’efficienza di calcolo, nel caso delle CPU i thread utilizzati possono eseguire calcoli complessi e sono solitamente in numero limitato.
5.1.4 Matlab e il calcolo parallelo Introduciamo in questa sezione i principali strumenti per il calcolo parallelo presenti sull’applicativo Matlab, da noi utilizzato per il calcolo del prezzo delle opzioni. Nel Parallel Computing Toolbox introdotto nelle versioni più recenti di Matlab sono già presenti alcune funzioni implementate che permettono di svolgere calcoli in parallelo con sintassi molto semplice. Per quanto riguarda il calcolo parallelo su più processori, la funzione principale è il parfor: questa funzione permette di eseguire un ciclo for su più CPU o su un cluster di macchine collegate in rete. Questa funzione è molto utile nei casi in cui le iterazioni 139
Capitolo 5. Simulazioni numeriche parallele
sono indipendenti l’una dall’altra, in quanto si suppone che ciascuna iterazione del gruppo sia eseguita da una diversa CPU/macchina; non è quindi possibile usarla quando i risultati di una iterazione del ciclo dipendono da quelli dell’iterazione precedente (caso di strong data dependance); non è inoltre possibile usare questa funzione nel caso in cui le istruzioni da eseguire all’interno del ciclo dipendano dalla sequenza di iterazione. Per quanto riguarda il calcolo su GPU, come detto Matlab possiede un’estensione per CUDA, e il Parallel Computing Toolbox supporta schede video con Compute Capability maggiore di 1.3. Le funzioni principali utilizzate sono gpuArray, che permette di creare un array sulla GPU copiando i dati numerici presenti in un vettore del workspace di Matlab, e gather, che permette di raccogliere i dati trasferiti sulla GPU e di riportarli nel workspace. Utilizzando gpuArray, il vettore viene copiato sulla scheda grafica; Matlab ha implementate già diverse funzioni built-in per la GPU (come la Fast Fourier Transform fft o la divisione tra matrici mldivide), che se richiamate su un gpuArray saranno eseguite nella loro variante ottimizzata per il calcolo su scheda grafica; funzioni non presenti dovranno invece essere implementate dall’utente con il comando arrayfun.
140
5.2 Risultati delle simulazioni parallele
5.2 Risultati delle simulazioni parallele
Come già accennato nelle precedenti sezioni, i metodi basati sulla trasformata di Laplace si adattano molto bene ad una traduzione in parallelo. Nei classici metodi alle differenze e agli elementi finiti, infatti, la soluzione al tempo t dipenderà dalla soluzione all’istante t 1 o t 1 (a seconda che il problema sia in avanti o all’indietro). Grazie alla trasformata di Laplace, possiamo eliminare la dipendenza da t e risolvere il problema con un ciclo for che usa i nodi spaziali e i nodi per l’inversione della trasformata; le soluzioni associate a questi ultimi, in particolare, a differenza di quelle ottenute con i nodi della griglia temporale, sono indipendenti tra loro: è quindi possibile effettuare i calcoli in modo parallelo e non più sequenziale, in quanto è stata eliminata la strong data dependance presente nei metodi alle differenze finite e agli elementi finiti classici. In particolare in questa ultima sezione analizziamo nel dettaglio il primo degli algoritmi proposti, cioè il metodo ibrido per il calcolo del prezzo dell’opzione barriera; esso è tra tutti l’algoritmo che meglio si presta alla parallelizzazione, in quanto per ogni nodo di inversione della trasformata di Laplace viene svolta un’operazione piuttosto onerosa per l’unità di calcolo, cioè la risoluzione di un sistema lineare. Per gli altri algoritmi ci limiteremo a riportare i risultati. Gli algoritmi implementati con il Matlab Parallel Toolbox sono riportati in Appendice C.
5.2.1 Parallelizzazione dell’algoritmo ibrido per il calcolo del prezzo delle opzioni barriera Riprendiamo in questa sezione l’algoritmo presentato nel Paragrafo 3.1.2. Usando la trasformata di Laplace rispetto a abbiamo spostato il problema dalla ricerca dei valori di C (S , ) alla ricerca dei valori di C (S , p) , dove p è il parametro (eventualmente 141
Capitolo 5. Simulazioni numeriche parallele
complesso) introdotto dalla trasformata. L’algoritmo sarà quindi risolto come nel metodo classico con due cicli for, uno su S e uno su p (invece che su come nelle differenze finite classiche); il vantaggio è che mentre nel metodo classico il ciclo su contiene una strong data dependance e non può essere parallelizzato, le soluzione associate ai nodi p della trasformata di Laplace risultano indipendenti tra loro e il ciclo può quindi essere eseguito in parallelo. Nella tabella 5.1 riportiamo i risultati relativi all’algortimo appena descritto, per diversi valori del numero di nodi spaziali N, nei casi di codice seriale, codice parallelo per CPU e codice parallelo per GPU: per ricavare il tempo medio di calcolo, abbiamo eseguito il codice 1000 volte in ciascuna condizione e poi ricavato dai risultati un tempo medio. Possiamo notare che il codice parallelo per CPU ottiene tempi migliori del codice sequenziale per valori di N sufficientemente grandi; inizialmente le prestazioni sono paragonabili, ma aumentando il numero di nodi i tempi di calcolo dell’algoritmo parallelo diventano inferiori a quelli dell’algoritmo sequenziale, con miglioramenti fino quasi al 10% del tempo. Avendo lavorato su una macchina che dispone di due processori
ci
saremmo
aspettati
una
diminuzione
maggiore
dei
tempi;
ciò
probabilmente non è possibile a causa dei problemi descritti nel Paragrafo 5.1.2, in particolare l’aumento dei tempi dovuti alla comunicazione tra task; probabilmente è sempre a causa della comunicazione tra processi che i risultati con pochi nodi sono molto vicini a quelli ottenuti nel caso di simulazioni parallele. Il codice parallelo per GPU ottiene invece risultati decisamente peggiori del metodo sequenziale, anche di diversi ordini di grandezza superiori. Ciò è dovuto probabilmente ad un aumento notevole dei tempi nel passaggio dei dati dal workspace alla GPU per i calcoli e nel passaggio inverso per la raccolta dei risultati; in aggiunta, la scheda grafica usata non possiede elevata Compute Capability, non essendo molto recente, quindi anche la potenza di calcolo risulta probabilmente non sufficiente; negli ultimi due casi (N=10000 e N=15000) addirittura non è stato possibile calcolare il valore, in 142
5.2 Risultati delle simulazioni parallele
quanto è necessaria una quantità di memoria sulla GPU superiore a quella supportata. In aggiunta, segnaliamo che per una corretta valutazione dei tempi di calcolo sulla scheda grafica, è consigliato l’uso della funzione wait(gpuDevice()), che consente di aspettare la fine dei calcoli sulla GPU per valutare correttamente il tempo di calcolo: questa funzione sfortunatamente non è utilizzabile, in quanto non presente in Matlab 2011 e utilizzabile solo con sistemi che supportano CUDA 5 o superiore (mentre il sistema usato supporta fino a CUDA 3.2).
Tabella 5.1: Confronto dei tempi ottenuti dall’algoritmo ibrido per il calcolo del prezzo di opzioni barriera, nel caso di implementazione sequenziale e implementazione parallela su CPU e GPU
Algoritmo sequenziale Space steps
Tempo (sec)
100
0.0084
200
0.0114
Algoritmo parallelo CPU Tempo (sec)
Algoritmo parallelo GPU
Miglioramento percentuale
Tempo (sec)
0.0083
1.1905%
0.078332
0.0113
0.8772%
0.171950
500
0.0207
0.0205
0.9662%
0.578173
1000
0.0367
0.0351
4.3597%
1.959576
2000
0.0677
0.0647
4.4313%
10.020194
5000
0.1662
0.1534
7.7016%
112.994046
10000
0.3790
0.3481
8.1530%
n/a
15000
0.7571
0.7056
6.8023%
n/a
Riportiamo infine il grafico dei diversi tempi ottenuti con il calcolo sequenziale e il calcolo parallelo su CPU; come già osservato dalla tabella precendete, i risultati tendono ad allontanarsi all’aumentare dei nodi spaziali.
143
Capitolo 5. Simulazioni numeriche parallele
Figura 5.2: Tempi di calcolo al variare del numero dei nodi spaziali per l'algoritmo ibrido
5.2.1 Confronto dei risultati per gli altri algoritmi implementati Riportiamo in tabella 5.2 i risultati ricavati con gli algoritmi presentati nel Capitolo 4, implementati in modo sequenziale e parallelo su CPU. Sono stati calcolati i valori delle opzioni per N valori diversi di S 0 (come negli algoritmi utilizzati per il plot delle figure del Capitolo 4). I dati di input sono gli stessi utilizzati nelle rispettive sezioni, e il numero di nodi spaziali utilizzati è specificato nella tabella. Nel caso delle opzioni americane non è stato possibile implementare l’algoritmo in parallelo: ci troviamo infatti nel caso di strong data dependance, in quanto i prezzi sono stati ricavati con un algoritmo ricorsivo. Non abbiamo riportato i risultati relativi al calcolo parallelo su GPU in quanto presentavano gli stessi problemi di cui abbiamo discusso nella sezione precedente. La modalità di simulazione è la stessa del paragrafo precedente: i tempi sono stati calcolati eseguendo l’algoritmo 1000 volte ed è poi stata fatta una media sui tempi ottenuti.
144
5.2 Risultati delle simulazioni parallele Tabella 5.2: Confronto dei tempi per gli algoritmi implementati nel Capitolo 4 in modo sequenziale e parallelo
Algoritmo sequenziale Algoritmo Algoritmo ibrido per opzioni barriera (N=1000) Algoritmo con trasformata di Laplace per opzioni barriera con sottostante Kou (N=1000) Algoritmo con trasformata di Laplace per opzioni europee fractional lookback con sottostante B&S (N=1000) Algoritmo con trasformata di Laplace per opzioni americane fractional lookback con sottostante B&S (N=1000) Algoritmo con trasformata di Laplace per opzioni europee fractional lookback con sottostante Kou (N=1000)
Algoritmo parallelo CPU
Tempo (sec)
Tempo (sec)
Miglioramento percentuale
0.0367
0.0351
4.3597%
2.276965
1.731084
23.9741%
7.057568
6.534334
7.4138%
64.830871
57.665958
11.0517%
0.314375
0.260883
17.0153%
Come in precedenza i risultati sono in linea con le aspettative: gli algoritmi basati sulla trasformata di Laplace, già veloci nella loro versione sequenziale, forniscono i risultati in tempi ancora minori (addirittura quasi il 25% più velocemente) se implementati in parallelo; ciò li rende ancora più interessanti in quanto l’accuratezza unita ad una velocità notevole li rendono estremamente competitivi, e decisamente migliori di altri metodi quali il metodo Montecarlo o i classici metodi alle differenze e agli elementi finiti.
145
Conclusioni
L’obiettivo del nostro lavoro era lo studio del pricing di opzioni tramite la trasformata di Laplace e la sua inversione. In particolare, il nostro studio si è basato principalmente su due modelli finanziari: il modello diffusivo di Black&Scholes, che nonostante presenti alcuni limiti rimane un valido strumento per il pricing di opzioni e un passaggio iniziale importante per lo studio successivo di altri modelli, e il modello doppio esponenziale di Kou, che permette di riprodurre la distribuzione leptocurtica dei rendimenti e lo smile di volatilità grazie all’aggiunta di una componente di salto che rende più realistica la dinamica del processo. Segnaliamo che l’estensione di quanto visto in questo lavoro a modelli più complessi, come quelli a volatilità stocastica, potrebbe essere un argomento di ricerca per sviluppi futuri. Nello specifico ci siamo concentrati su tre tipi di opzioni: le opzioni barriera, nella loro variante a barriera singola e barriera doppia, le opzioni americane e le opzioni fractional lookback europee ed americane. Per ciascun tipo di opzione abbiamo sviluppato dei procedimenti specifici che permettessero di risolvere il problema nel modo più efficiente possibile utilizzando la trasformata di Laplace e gli algoritmi 146
Conclusioni
numerici di inversione: nel caso delle opzioni barriera abbiamo sviluppato un algoritmo ibrido, nel caso delle opzioni americane abbiamo utilizzato due diversi metodi di randomizzazione e nel caso delle opzioni fractional lookback abbiamo calcolato analiticamente la trasformata di Laplace del prezzo dell’opzione per poi ricavare il prezzo originale applicando un algoritmo di inversione. Per
quanto
riguarda
l’inversione
della
trasformata,
abbiamo
utilizzato
principalmente due algoritmi: l’algoritmo di Eulero, che ha il vantaggio di fornire risultati più accurati e necessitare di una minore precisione numerica ma necessita di calcoli in campo complesso, e l’algoritmo di Gaver-Stefhest, usato nei casi in cui i calcoli con numeri complessi avrebbero creato problemi numerici nel ricavare la soluzione. Abbiamo quindi verificato l’accuratezza dei nostri algoritmi, confrontandoli con i risultati presenti in letteratura e con altri due metodi alternativi di pricing implementati, il metodo Montecarlo e il metodo classico alle differenze finite. I risultati ottenuti hanno evidenziato come il pricing tramite inversione della trasformata di Laplace rappresenti una valida alternativa a quelli più ampiamente diffusi e utilizzati: esso infatti permette di ottenere risultati molto precisi ed è significativamente più veloce degli altri metodi utilizzati per il confronto, quindi si dimostra accurato ed efficiente. Infine abbiamo sfruttato una delle caratteristiche peculiari di questi metodi basati sulla trasformata di Laplace, l’indipendenza delle soluzioni ottenute per i nodi di inversione, per parallelizzare il codice e distribuire le operazioni per ottenere il prezzo su più unità di calcolo: questa operazione ha permesso di ridurre ulteriormente la durata dell’esecuzione, rendendo questo metodo, già molto efficiente, ancora più competitivo ed estremamente interessante nei casi in cui il tempo di calcolo è una variabile importante da considerare.
147
Appendice A
Codici Matlab sequenziali Presentiamo in questa sezione i codici Matlab utilizzati per il pricing di opzioni, suddivisi tra metodi basati sulla trasformata di Laplace e metodi alternativi utilizzati per il confronto.
A.1 Metodi basati sulla trasformata di Laplace Iniziamo presentando i metodi basati sulla trasformata di Laplace analizzati nelle precedenti sezioni.
A.1.1 Metodo ibrido per le opzioni barriera con sottostante che evolve con modello di Black&Scholes Presentiamo in questa sezione gli algoritmi utilizzati per il calcolo del prezzo di un’opzione barriera singola e barriera doppia tramite algoritmo ibrido; il codice è 148
A.1 Metodi basati sulla trasformata di Laplace
riportato nel caso di inversione con metodo di Eulero e nel caso di inversione con metodo di Gaver-Stefhest.
Opzioni barriera singola Gli algoritmi prendono come input il valore di S 0 , lo strike K, la maturity T, il tasso risk-free rf , la volatilità , il valore finale della griglia dei nodi Smax , il numero di nodi della griglia dei prezzi N e il valore della barriera inferiore Binf e restituiscono come output il prezzo dell’opzione call barriera singola down&out. Il primo algoritmo inverte la trasformata con il metodo di Eulero, il secondo con il metodo di GaverStefhest.
function [Call]=Hybrid_SingleBarrier_Euler(S0,K,T,r,sigma,Smax,N,Binf) %-------------------------------------------------------------------------% Metodo ibrido per il calcolo del prezzo di un'opzione call barriera % singola down&out con sottostante Black&Scholes % Algoritmo di inversione: Eulero %-------------------------------------------------------------------------tic
% Definizione griglia spaziale dS=(Smax-Binf)/N; S=linspace(Binf,Smax,N+1); nodes=S(2:N)';
% Definizione di pesi e nodi dell'algoritmo di inversione M=16; csi=ones(2*M+1,1); csi(1)=1/2; csi(2*M+1)=1/(2^M); for k=1:M-1 csi(2*M-k+1)=csi(2*M-k+2)+2^(-M)*factorial(M)/... (factorial(k)*factorial(M-k)); end eta=ones(2*M+1,1); for j=1:2*M+1 eta(j)=((-1)^(j-1))*csi(j); end
149
Appendice A. Codici Matlab sequenziali g=0:2*M; beta=M*log(10)/3+pi*1i*g;
% Risoluzione sistema di ODE C=zeros(N+1,2*M+1); C(:,1)=0; for p=1:(2*M+1) C(N+1,p)=Smax/beta(p)-K/(r+beta(p)); end for p=1:(2*M+1) Dd=sigma^2/(2*dS^2).*nodes.^2-r/(2*dS).*nodes; Dd=[Dd(2:end);0]; Dc=-(sigma^2/(dS^2).*nodes.^2+r+beta(p)); Du=sigma^2/(2*dS^2).*nodes.^2+r/(2*dS).*nodes; Du=[0;Du(1:end-1)]; tridiag=[Dd,Dc,Du]; matrK=spdiags(tridiag,-1:1,N-1,N-1); Bc=-max((nodes-K),0); Bc(1)=(-sigma^2/(2*dS^2)*nodes(1)^2+r/(2*dS)*nodes(1))*... C(1,p)-max((nodes(1)-K),0); Bc(end)=-(sigma^2/(2*dS^2)*nodes(end)^2+r*(2*dS)*nodes(end))*... C(N+1,p)-max((nodes(end)-K),0); C(2:N,p)=(matrK\Bc)'; end
% Inversione della trasformata di Laplace somma = zeros(N+1,1); CallPrice=zeros(N+1,1); for k=1:N+1 for j=1:2*M+1 somma(k)= somma(k)+eta(j)*real(C(k,j)/T); end CallPrice(k)= somma(k)*(10^(M/3))/T; end
% Calcolo del prezzo Call=interp1(S(1:end),CallPrice(1:end),S0,'spline'); toc end
function [Call]=Hybrid_SingleBarrier_Gaver(S0,K,T,r,sigma,Smax,N,Binf) %-------------------------------------------------------------------------% Metodo ibrido per il calcolo del prezzo di un'opzione call barriera % singola down&out con sottostante Black&Scholes % Algoritmo di inversione: Gaver-Stefhest %--------------------------------------------------------------------------
150
A.1 Metodi basati sulla trasformata di Laplace tic
% Definizione griglia spaziale dS=(Smax-Binf)/N; S=linspace(Binf,Smax,N+1); nodes=S(2:N)'; % Definizione di pesi e nodi dell'algoritmo di inversione M=16; csi=ones(M,1); for i=1:M somma1=0; for k=(floor((i+1)/2)):(min(i,M/2)) somma1=somma1+(k^((M)/2)*factorial(2*k))/(factorial(M/2-k)* ... factorial(k)*factorial(k-1)*factorial(i-k)*factorial(2*k-i)); end csi(i)=(-1)^(M/2+i)*somma1; end
% Risoluzione sistema di ODE C=zeros(N+1,M); C(:,1)=0; for p=1:M C(N+1,p)=Smax/(p*log(2))-K/(r+p*log(2)); end for p=1:M Dd=sigma^2/(2*dS^2).*nodes.^2-r/(2*dS).*nodes; Dd=[Dd(2:end);0]; Dc=-(sigma^2/(dS^2).*nodes.^2+r+p*log(2)); Du=sigma^2/(2*dS^2).*nodes.^2+r/(2*dS).*nodes; Du=[0;Du(1:end-1)]; tridiag=[Dd,Dc,Du]; matrK=spdiags(tridiag,-1:1,N-1,N-1); Bc=-max((nodes-K),0); Bc(1)=(-sigma^2/(2*dS^2)*nodes(1)^2+r/(2*dS)*nodes(1))*... C(1,p)-max((nodes(1)-K),0); Bc(end)=-(sigma^2/(2*dS^2)*nodes(end)^2+r*(2*dS)*nodes(end))*... C(N+1,p)-max((nodes(end)-K),0); C(2:N,p)=(matrK\Bc)'; end
% Inversione della trasformata di Laplace somma = zeros(N+1,1); CallPrice=zeros(N+1,1); for k=1:N+1 for j=1:M somma(k)= somma(k)+csi(j)*(C(k,j)/T); end CallPrice(k)= somma(k)*log(2)/T; end
151
Appendice A. Codici Matlab sequenziali
% Calcolo del prezzo Call=interp1(S(1:end),CallPrice(1:end),S0,'spline'); toc end
Opzioni barriera doppia Gli algoritmi prendono come input il valore di S 0 , lo strike K, la maturity T, il tasso risk-free rf , la volatilità , il numero di nodi della griglia dei prezzi N e il valore delle barriere inferiore e superiore Binf e Bsup e restituiscono come output il prezzo dell’opzione call doppia knock-out. Il primo algoritmo inverte la trasformata con il metodo di Eulero, il secondo con il metodo di Gaver-Stefhest.
function [Call]=Hybrid_DoubleBarrier _Euler(S0,K,T,r,sigma,N,Binf,Bsup) %-------------------------------------------------------------------------% Metodo ibrido per il calcolo del prezzo di un'opzione call barriera % doppia knock-out con sottostante Black&Scholes % Algoritmo di inversione: Eulero %-------------------------------------------------------------------------tic
% Definizione griglia spaziale dS=(Bsup-Binf)/N; S=linspace(Binf,Bsup,N+1); nodes=S(2:N)';
% Definizione di pesi e nodi dell'algoritmo di inversione M=16; csi=ones(2*M+1,1); csi(1)=1/2; csi(2*M+1)=1/(2^M); for k=1:M-1 csi(2*M-k+1)=csi(2*M-k+2)+2^(M)*factorial(M)/(factorial(k)*factorial(M-k)); end eta=ones(2*M+1,1); for j=1:2*M+1 eta(j)=((-1)^(j-1))*csi(j); end g=0:2*M;
152
A.1 Metodi basati sulla trasformata di Laplace beta=M*log(10)/3+pi*1i*g;
%Risoluzione sistema di ODE C=zeros(N+1,2*M+1); for p=1:(2*M+1) Dd=sigma^2/(2*dS^2).*nodes.^2-r/(2*dS).*nodes; Dd=[Dd(2:end);0]; Dc=-(sigma^2/(dS^2).*nodes.^2+r+beta(p)); Du=sigma^2/(2*dS^2).*nodes.^2+r/(2*dS).*nodes; Du=[0;Du(1:end-1)]; tridiag=[Dd,Dc,Du]; matrK=spdiags(tridiag,-1:1,N-1,N-1); Bc=-max((nodes-K),0); Bc(1)=(-sigma^2/(2*dS^2)*nodes(1)^2+r/(2*dS)*nodes(1))*... C(1,p)-max((nodes(1)-K),0); Bc(end)=-(sigma^2/(2*dS^2)*nodes(end)^2+r*(2*dS)*nodes(end))*... C(N+1,p)-max((nodes(end)-K),0); C(2:N,p)=(matrK\Bc)'; end
% Inversione della trasformata di Laplace somma = zeros(N+1,1); CallPrice=zeros(N+1,1); for k=1:N+1 for j=1:2*M+1 somma(k)= somma(k)+eta(j)*real(C(k,j)/T); end CallPrice(k)= somma(k)*(10^(M/3))/T; end
% Calcolo del prezzo Call=interp1(S(1:end),CallPrice(1:end),S0,'spline'); toc end
function [Call]=Hybrid_DoubleBarrier_Gaver(S0,K,T,r,sigma,N,Binf,Bsup) %-------------------------------------------------------------------------% Metodo ibrido per il calcolo del prezzo di un'opzione call barriera % doppia knock-out con sottostante Black&Scholes % Algoritmo di inversione: Gaver-Stefhest %-------------------------------------------------------------------------tic % Definizione griglia spaziale dS=(Bsup-Binf)/N; S=linspace(Binf,Bsup,N+1); nodes=S(2:N)';
153
Appendice A. Codici Matlab sequenziali
% Definizione di pesi e nodi dell'algoritmo di inversione M=16; csi=ones(M,1); for i=1:M somma1=0; for k=(floor((i+1)/2)):(min(i,M/2)) somma1=somma1+(k^((M)/2)*factorial(2*k))/(factorial(M/2-k)*... factorial(k)*factorial(k-1)*factorial(i-k)*factorial(2*k-i)); end csi(i)=(-1)^(M/2+i)*somma1; end
%Risoluzione sistema di ODE C=zeros(N+1,M); for p=1:M Dd=sigma^2/(2*dS^2).*nodes.^2-r/(2*dS).*nodes; Dd=[Dd(2:end);0]; Dc=-(sigma^2/(dS^2).*nodes.^2+r+p*log(2)); Du=sigma^2/(2*dS^2).*nodes.^2+r/(2*dS).*nodes; Du=[0;Du(1:end-1)]; tridiag=[Dd,Dc,Du]; matrK=spdiags(tridiag,-1:1,N-1,N-1); Bc=-max((nodes-K),0); Bc(1)=(-sigma^2/(2*dS^2)*nodes(1)^2+r/(2*dS)*nodes(1))*... C(1,p)-max((nodes(1)-K),0); Bc(end)=-(sigma^2/(2*dS^2)*nodes(end)^2+r*(2*dS)*nodes(end))*... C(N+1,p)-max((nodes(end)-K),0); C(2:N,p)=(matrK\Bc)'; end
% Inversione della trasformata di Laplace somma = zeros(N+1,1); CallPrice=zeros(N+1,1); for k=1:N+1 for j=1:M somma(k)= somma(k)+csi(j)*(C(k,j)/T); end CallPrice(k)= somma(k)*log(2)/T; end
% Calcolo del prezzo Call=interp1(S(1:end),CallPrice(1:end),S0,'spline'); toc end
154
A.1 Metodi basati sulla trasformata di Laplace
A.1.2 Metodo analitico per opzioni barriera doppia con sottostante che evolve con modello doppio esponenziale di Kou Presentiamo in questa sezione l’algoritmo utilizzato per il calcolo di un’opzione barriera doppia con il metodo analitico basato sulla trasformata di Laplace nel caso di sottostante Kou; il metodo di inversione usato è quello di Gaver-Stefhest. L’algoritmo prende come input il valore di S 0 , lo strike K, la maturity T, il valore delle barriere inferiore e superiore Binf e Bsup , il tasso risk-free rf , la volatilità , il dividendo d, i parametri del modello di Kou 1 , 2 , q e e il numero di nodi della griglia dei prezzi M e restituisce come output il prezzo dell’opzione call doppia barriera knockout.
function [DBCall]=Laplace_Double_Barrier_Kou(S0,K,T,Binf,Bsup,sigma,r,d,... eta1,eta2,qm,lambda,M) %-------------------------------------------------------------------------% Metodo analitico per il calcolo del prezzo di un'opzione call barriera % doppia knock-out con sottostante Kou % Algoritmo di inversione: Gaver-Stefhest %-------------------------------------------------------------------------tic
% Definizione griglia spaziale dS=(Bsup-Binf)/M; S=Binf:dS:Bsup; x=log(S./K); xu=x(end); xd=x(1);
% Definizione delle costanti usate phi=1; etam=1/eta1; etap=1/eta2; qp=1-qm; alpha=qp/(1-etap)+qm/(1+etam)-1; mu=r-d-lambda*alpha-1/2*sigma^2; N=16;
% Definizione delle funzioni analitiche del prezzo nello spazio della % trasformata funm=@(x,p,csi0,csi1,csi2,csi3,C0,C1,C4,C5,C6,C7) (C0+C4)*exp(csi0*x)+(C1+C5)*exp(csi1*x)+C6*exp(csi2*x)+C7*exp(csi3*x)+(phi1)/2*(exp(x)/(d+p)-1/(r+p));
155
Appendice A. Codici Matlab sequenziali funp=@(x,p,csi0,csi1,csi2,csi3,C2,C3,C4,C5,C6,C7) (C2+C6)*exp(csi2*x)+(C3+C7)*exp(csi3*x)+C4*exp(csi0*x)+C5*exp(csi1*x)+(phi+ 1)/2*(exp(x)/(d+p)-1/(r+p));
% Definizione dei pesi dell'algoritmo di inversione csi=ones(N,1); for i=1:N somma1=0; for k=(floor((i+1)/2)):(min(i,N/2)) somma1=somma1+(k^((N)/2)*factorial(2*k))/(factorial(N/2-k)*... factorial(k)*factorial(k-1)*factorial(i-k)*factorial(2*k-i)); end csi(i)=(-1)^(N/2+i)*somma1; end
% Inversione della trasformata di Laplace DBCallPrice=zeros(length(S),1); for j=2:M somma=0; for k=1:N p=k*log(2)/T; % Trovo le radici dell'equazione (3.33) per ogni nodo di inversione c=[(1/2*sigma^2*etam*etap), (mu*etam*etap-1/2*sigma^2*(etam-... etap)), -(1/2*sigma^2+mu*(etam-etap)+(r+p+lambda)*etam*... etap), (-mu+(r+p+lambda)*(etam-etap)-lambda*(qp*etam-qm*... etap)), (r+p)]; radici=roots(c); radici=sort(radici,'descend'); % Calcolo i coefficienti C0,...,C7 A1=[1,1,-1,-1;radici(1),radici(2),-radici(3),radici(4);1/(radici(1)*etam+1),1/(radici(2)*etam+1),-1/(radici(3)*etam+1),1/(radici(4)*etam+1);1/(radici(1)*etap-1),1/(radici(2)*etap-1),1/(radici(3)*etap-1),-1/(radici(4)*etap-1)]; B1=[1/(d+p)-1/(r+p);1/(d+p);1/((d+p)*(etam+1))-1/(r+p);1/((d+p)*... (etap-1))+1/(r+p)]; C=A1\B1; A2=[exp(radici(1)*xd)/(radici(1)*etam+1),exp(radici(2)*xd)/... (radici(2)*etam+1),exp(radici(3)*xd)/(radici(3)*etam+1),... exp(radici(4)*xd)/(radici(4)*etam+1);exp(radici(1)*xd),... exp(radici(2)*xd),exp(radici(3)*xd),exp(radici(4)*xd);... exp(radici(1)*xu),exp(radici(2)*xu),exp(radici(3)*xu),... exp(radici(4)*xu);exp(radici(1)*xu)/(radici(1)*etap-1),... exp(radici(2)*xu)/(radici(2)*etap-1),exp(radici(3)*xu)/... (radici(3)*etap-1),exp(radici(4)*xu)/(radici(4)*etap-1)]; B2=[-(phi-1)/2*(exp(xd)/((d+p)*(etam+1))-1/(r+p))-exp(radici(1)... *xd)/(radici(1)*etam+1)*C(1)-exp(radici(2)*xd)/(radici(2)*... etam+1)*C(2);-(phi-1)/2*(exp(xd)/(d+p)-1/(r+p))-... exp(radici(1)*xd)*C(1)-exp(radici(2)*xd)*C(2);-(phi+1)/2*... (exp(xu)/(d+p)-1/(r+p))-exp(radici(3)*xu)*C(3)-exp... (radici(4)*xu)*C(4);-(phi+1)/2*(exp(xu)/((d+p)*(etap-1))+... 1/(r+p))-exp(radici(3)*xu)/(radici(3)*etap-1)*C(3)-... exp(radici(4)*xu)/(radici(4)*etap-1)*C(4)]; D=A2\B2;
156
A.1 Metodi basati sulla trasformata di Laplace
if x(j)<0 somma=somma+csi(k)*funm(x(j),p,radici(1),radici(2),... radici(3),radici(4),C(1),C(2),D(1),D(2),D(3),D(4)); else somma=somma+csi(k)*funp(x(j),p,radici(1),radici(2),... radici(3),radici(4),C(3),C(4),D(1),D(2),D(3),D(4)); end end DBCallPrice(j)=somma*log(2)/T; end
% Calcolo del prezzo DBCallPriceS=DBCallPrice'*K; DBCall=interp1(S,DBCallPriceS,S0,'spline'); toc end
A.1.3 Metodo di randomizzazione per il calcolo del prezzo di opzioni americane con sottostante Black&Scholes Presentiamo in questa sezione gli algoritmi di randomizzazione utilizzati per il calcolo del valore di un’opzione put americana con sottostante che evolve con modello di Black&Scholes. La differenza tra i due algoritmi è determinata dalla scelta di porre la moda o il valore atteso pari alla maturity T. Gli algoritmi prendono come input il valore di S 0 , lo strike K, la maturity T, il tasso risk-free rf , la volatilità , il dividendo , e il numero di nodi N su cui sviluppare l’algoritmo ricorsivo (che corrispondono ai nodi su cui si effettua l’inversione della trasformata di Laplace) e restituisce come output il prezzo dell’opzione put americana. Non riportiamo l’algoritmo del metodo “a pinza” in quanto esso si limita ad eseguire i due codici presentati e calcolare la media (aritmetica o geometrica) dei risultati ottenuti.
function [Put]=Randomization_American_Mode(S0,K,T,r,sigma,delta,N) %------------------------------------------------------------------------% Metodo di randomizzazione per il calcolo del valore di un'opzione put % americana con sottostante Black&Scholes
157
Appendice A. Codici Matlab sequenziali
% La moda della variabile aleatoria X viene posta uguale a T %------------------------------------------------------------------------tic
% Inizializzazione delle matrici usate nel codice ricorsivo gnm = zeros(3*N+1,3*N+1); g0m= zeros(3*N,1);
% Calcolo della prima riga della matrice g(0,i), i=N:2N for m=N:2*N alpha=log(2)/T; lambda=m*alpha; thetap=1/sigma^2*(-(r-delta-1/2*sigma^2)+sqrt((r-delta-1/2*... sigma^2)^2+2*sigma^2*(lambda+r))); thetam=1/sigma^2*(-(r-delta-1/2*sigma^2)-sqrt((r-delta-1/2*... sigma^2)^2+2*sigma^2*(lambda+r)));
f=@(x) lambda*(x/K)^(thetap)-r*(thetap-1)+delta*thetap*x/K; L0 = fzero(f,50); csi=@(S) 1/(thetap-thetam)*lambda/(lambda+delta)*(1-(r-delta)*... thetam/(lambda+r))*K*(S/K)^thetap; eta=@(S) 1/(thetap-thetam)*lambda/(lambda+delta)*(1-(r-delta)* ... theta/(lambda+r))*K*(S/K)^thetam; if (S0
% Algoritmo ricorsivo per il calcolo di g(N,N) for n=1:N for m=N:(2*N-n) if (n==1) gnm(n,m)=(n+m)/n * g0m(m)- m/n * g0m(m+1); else gnm(n,m) = (n+m)/n * gnm(n-1,m)- m/n * gnm(n-1,m+1); end end
158
A.1 Metodi basati sulla trasformata di Laplace end
% Calcolo del prezzo Put=gnm(N,N); toc end
function [Put]=Randomization_American_Mean(S0,r,sigma,delta,K,T,N) %------------------------------------------------------------------------% Metodo di randomizzazione per il calcolo del valore di un'opzione put % americana con sottostante Black&Scholes % La media della variabile aleatoria X viene posta uguale a T %------------------------------------------------------------------------tic
% Inizializzazione delle matrici usate nel codice ricorsivo gnm = zeros(3*N+1,3*N+1); g0m= zeros(3*N,1);
% Calcolo di alpha m=30; sum =0; for i = 0:m sum = sum+1/(m+i); end alpha=sum/T;
% Calcolo della prima riga della matrice g(0,i), i=N:2N for m=N:2*N lambda=m*alpha; thetap=1/sigma^2*(-(r-delta-1/2*sigma^2)+sqrt((r-delta-1/2*... sigma^2)^2+2*sigma^2*(lambda+r))); thetam=1/sigma^2*(-(r-delta-1/2*sigma^2)-sqrt((r-delta-1/2*... sigma^2)^2+2*sigma^2*(lambda+r)));
f=@(x) lambda*(x/K)^(thetap)-r*(thetap-1)+delta*thetap*x/K; L0 = fzero(f,50); csi=@(S) 1/(thetap-thetam)*lambda/(lambda+delta)*(1-(r-delta)*... thetam/(lambda+r))*K*(S/K)^thetap; eta=@(S) 1/(thetap-thetam)*lambda/(lambda+delta)*(1-(r-delta)*... thetap/(lambda+r))*K*(S/K)^thetam; if (S0
159
Appendice A. Codici Matlab sequenziali pps=csi(S0)+lambda/(lambda+r)*K-lambda/(lambda+delta)*S0; else pps=eta(S0); end if (S0<=L0) Ps = K-S0; else es=-1/thetam*(thetap*csi(L0)+delta/(lambda+delta)*L0)*... (S0/L0)^thetam; Ps = pps+es; end g0m(m)=Ps; end
% Algoritmo ricorsivo per il calcolo di g(N,N) for n=1:N for m=N:(2*N-n) if (n==1) gnm(n,m)=(n+m)/n * g0m(m)- m/n * g0m(m+1); else gnm(n,m) = (n+m)/n * gnm(n-1,m)- m/n * gnm(n-1,m+1); end end end
% Calcolo del prezzo Put=gnm(N,N); toc end
A.1.4 Metodo basato sulla trasformata di Laplace per il calcolo del valore di opzioni fractional lookback europee ed americane Presentiamo in questa sezione gli algoritmi basati sulla trasformata di Laplace con cui sono stati calcolati i prezzi delle opzioni call e put fractional lookback di tipo europeo ed americano. Gli algoritmi prendono come input il valore di S 0 , il valore di minimo m o massimo M e di o (a seconda che si tratti di un’opzione call o put rispettivamente) lo strike K, la maturity T, il tasso risk-free rf , la volatilità , il dividendo , e il numero di nodi di inversione N, e restituiscono in output il valore dell’opzione relativa. 160
A.1 Metodi basati sulla trasformata di Laplace
function [LBCallPrice]=FractionalLookback_Call_Gaver(S0,m,T,r,sigma,delta,alpha,N) %-------------------------------------------------------------------------% Codice basato sull'inversione della trasformata di Laplace per il calcolo % del prezzo di un'opzione fractional lookback call europea % Algoritmo di inversione: Gaver-Stefhest %-------------------------------------------------------------------------tic
% Definizione delle funzioni necessarie per il calcolo del prezzo v1=@(lambda) (1/sigma^2)*(-(delta-r-0.5*sigma^2)+sqrt((delta-r-0.5*... sigma^2)^2+2*sigma^2*(lambda+delta))); v2=@(lambda) (1/sigma^2)*(-(delta-r-0.5*sigma^2)-sqrt((delta-r-0.5*... sigma^2)^2+2*sigma^2*(lambda+delta))); phi_1=@(lambda) (S0*v1(lambda))/(v1(lambda)-v2(lambda))*(lambda/... (lambda+delta)+(1-v1(lambda))/v1(lambda)*lambda/(lambda+r))*... ((alpha*m/S0)^v2(lambda)-alpha^(v2(lambda)-v1(lambda))*v2(lambda)/... v1(lambda)*(alpha*m/S0)^v1(lambda)); phi_2=@(lambda) (S0*v2(lambda))/(v1(lambda)-v2(lambda))*(lambda/... (lambda+delta)+(1-v2(lambda))/v2(lambda)*lambda/(lambda+r)-... alpha^(v2(lambda)-v1(lambda))*(lambda/(lambda+delta)+(1-... v1(lambda))/v1(lambda)*lambda/(lambda+r)))*((alpha*m/S0)^v1(lambda)); if (S0
% Definizione di pesi e nodi dell'algoritmo di inversione csi=ones(N,1); for i=1:N somma1=0; for k=(floor((i+1)/2)):(min(i,N/2)) somma1=somma1+(k^((N)/2)*factorial(2*k))/(factorial(N/2k)*factorial(k)*factorial(k-1)*factorial(i-k)*factorial(2*k-i)); end csi(i)=(-1)^(N/2+i)*somma1; end
% Inversione della trasformata di Laplace e calcolo del prezzo somma = 0; for k=1:N somma=somma+csi(k)*cstar(k*log(2)/T); end LBCallPrice=somma*log(2)/T; toc end
161
Appendice A. Codici Matlab sequenziali
function [LBPutPrice]=FractionalLookback_Put_Gaver(S0,M,T,r,sigma,delta,beta,N) %-------------------------------------------------------------------------% Codice basato sull'inversione della trasformata di Laplace per il calcolo % del prezzo di un'opzione fractional lookback put europea % Algoritmo di inversione: Gaver-Stefhest %-------------------------------------------------------------------------tic
% Definizione delle funzioni necessarie per il calcolo del prezzo v1=@(lambda) (1/sigma^2)*(-(delta-r-0.5*sigma^2)+sqrt((delta-r-0.5*... sigma^2)^2+2*sigma^2*(lambda+delta))); v2=@(lambda) (1/sigma^2)*(-(delta-r-0.5*sigma^2)-sqrt((delta-r-0.5*... sigma^2)^2+2*sigma^2*(lambda+delta))); phi_2=@(lambda) (S0*v2(lambda))/(v1(lambda)-v2(lambda))*(lambda/... (lambda+delta)+(1-v2(lambda))/v2(lambda)*lambda/(lambda+r))*... ((beta*M/S0)^v1(lambda)-beta^(v1(lambda)-v2(lambda))*v1(lambda)/... v2(lambda)*(beta*M/S0)^v2(lambda)); phi_1=@(lambda) (S0*v1(lambda))/(v1(lambda)-v2(lambda))*(lambda/... (lambda+delta)+(1-v1(lambda))/v1(lambda)*lambda/(lambda+r)-... beta^(v1(lambda)-v2(lambda))*(lambda/(lambda+delta)+(1-... v2(lambda))/v2(lambda)*lambda/(lambda+r)))*((beta*M/S0)^v2(lambda)); if (S0
% Definizione di pesi e nodi dell'algoritmo di inversione csi=ones(N,1); for i=1:N somma1=0; for k=(floor((i+1)/2)):(min(i,N/2)) somma1=somma1+(k^((N)/2)*factorial(2*k))/(factorial(N/2k)*factorial(k)*factorial(k-1)*factorial(i-k)*factorial(2*k-i)); end csi(i)=(-1)^(N/2+i)*somma1; end
% Inversione della trasformata di Laplace e calcolo del prezzo somma = 0; for k=1:N somma=somma+csi(k)*pstar(k*log(2)/T); end LBPutPrice=somma*log(2)/T; toc end
162
A.1 Metodi basati sulla trasformata di Laplace function [LBCallPriceAm]=AmFractionalLookback_Call_Gaver(S0,m,T,r,sigma,... delta,alpha,N) %-------------------------------------------------------------------------% Codice basato sull'inversione della trasformata di Laplace per il calcolo % del prezzo di un'opzione fractional lookback call americana % Algoritmo di inversione: Gaver-Stefhest %-------------------------------------------------------------------------tic
% Definizione delle funzioni per il calcolo di c*, necessaria per % il calcolo del prezzo della variante americana v1=@(lambda) (1/sigma^2)*(-(delta-r-0.5*sigma^2)+sqrt((delta-r-0.5*... sigma^2)^2+2*sigma^2*(lambda+delta))); v2=@(lambda) (1/sigma^2)*(-(delta-r-0.5*sigma^2)-sqrt((delta-r-0.5*... sigma^2)^2+2*sigma^2*(lambda+delta))); phi_1=@(lambda) (S0*v1(lambda))/(v1(lambda)-v2(lambda))*(lambda/... (lambda+delta)+(1-v1(lambda))/v1(lambda)*lambda/(lambda+r))*... ((alpha*m/S0)^v2(lambda)-alpha^(v2(lambda)-v1(lambda))*v2(lambda)/... v1(lambda)*(alpha*m/S0)^v1(lambda)); phi_2=@(lambda) (S0*v2(lambda))/(v1(lambda)-v2(lambda))*(lambda/... (lambda+delta)+(1-v2(lambda))/v2(lambda)*lambda/(lambda+r)-... alpha^(v2(lambda)-v1(lambda))*(lambda/(lambda+delta)+(1-... v1(lambda))/v1(lambda)*lambda/(lambda+r)))*((alpha*m/S0)^v1(lambda)); if (S0
% Definizione delle funzioni necessarie per il calcolo del prezzo % dell'opzione americana fractional lookback fun = @(lambda) (S0-alpha*m)/lambda; f=@(lambda,eps1) lambda/(lambda+r)*(alpha^v2(lambda)/v1(lambda)-... alpha^v1(lambda)/v2(lambda)+(alpha^v2(lambda)-alpha^v1(lambda))*... (r-delta)/(lambda+delta))-delta/(lambda+delta)*(eps1^(-v1(lambda))-... eps1^(-v2(lambda)))-alpha*r/(lambda+r)*((1-v2(lambda))/v2(lambda)*... eps1^(1-v1(lambda))-(1-v1(lambda))/v1(lambda)*eps1^(1-v2(lambda))); Sstar=@(eps1) m/eps1; A1=@(lambda,eps1) v2(lambda)/(v2(lambda)-v1(lambda))*(delta/(lambda+... delta)+(1-v2(lambda))/v2(lambda)*r/(lambda+r)*(alpha*m)/Sstar(eps1)); A2=@(lambda,eps1) v1(lambda)/(v1(lambda)-v2(lambda))*(delta/(lambda+... delta)+(1-v1(lambda))/v1(lambda)*r/(lambda+r)*(alpha*m)/Sstar(eps1)); estar=@(lambda,eps1) (S0*A1(lambda,eps1)*(Sstar(eps1)/S0)^(v1(lambda))+... S0*A2(lambda,eps1)*(Sstar(eps1)/S0)^(v2(lambda))-phi_2(lambda))/lambda;
% Definizione di pesi e nodi dell'algoritmo di inversione csi=ones(N,1); for i=1:N somma1=0; for k=(floor((i+1)/2)):(min(i,N/2)) somma1=somma1+(k^((N)/2)*factorial(2*k))/(factorial(N/2-k)*... factorial(k)*factorial(k-1)*factorial(i-k)*factorial(2*k-i));
163
Appendice A. Codici Matlab sequenziali end csi(i)=(-1)^(N/2+i)*somma1; end
% Inversione della trasformata di Laplace e calcolo del prezzo somma = 0; for k=1:N p=k*log(2)/T; x=fzero(@(eps1) f(p,eps1) , 1/alpha); if S0 < Sstar(x) a=cstar(p); b=estar(p,x); else a=fun(p); b=0; end somma=somma+csi(k)*(a+b); end LBCallPriceAm=somma*log(2)/T; toc end
function [LBPutPriceAm]=AmFractionalLookback_Put_Gaver(S0,M,T,r,sigma,... delta,beta,N) %-------------------------------------------------------------------------% Codice basato sull'inversione della trasformata di Laplace per il calcolo % del prezzo di un'opzione fractional lookback put americana % Algoritmo di inversione: Gaver-Stefhest %-------------------------------------------------------------------------tic
% Definizione delle funzioni per il calcolo di p*, necessaria per % il calcolo del prezzo della variante americana v1=@(lambda) (1/sigma^2)*(-(delta-r-0.5*sigma^2)+sqrt((delta-r-0.5*... sigma^2)^2+2*sigma^2*(lambda+delta))); v2=@(lambda) (1/sigma^2)*(-(delta-r-0.5*sigma^2)-sqrt((delta-r-0.5*... sigma^2)^2+2*sigma^2*(lambda+delta))); phi_2=@(lambda) (S0*v2(lambda))/(v1(lambda)-v2(lambda))*(lambda/... (lambda+delta)+(1-v2(lambda))/v2(lambda)*lambda/(lambda+r))*... ((beta*M/S0)^v1(lambda)-beta^(v1(lambda)-v2(lambda))*v1(lambda)/... v2(lambda)*(beta*M/S0)^v2(lambda)); phi_1=@(lambda) (S0*v1(lambda))/(v1(lambda)-v2(lambda))*(lambda/... (lambda+delta)+(1-v1(lambda))/v1(lambda)*lambda/(lambda+r)-... beta^(v1(lambda)-v2(lambda))*(lambda/(lambda+delta)+(1-... v2(lambda))/v2(lambda)*lambda/(lambda+r)))*((beta*M/S0)^v2(lambda)); if (S0
164
A.1 Metodi basati sulla trasformata di Laplace pstar=@(lambda) phi_2(lambda)/lambda; end
% Definizione delle funzioni necessarie per il calcolo del prezzo % dell'opzione americana fractional lookback fun = @(lambda) (beta*M-S0)/lambda; f=@(lambda,eta1) lambda/(lambda+r)*(beta^v2(lambda)/v1(lambda)-... beta^v1(lambda)/v2(lambda)+(beta^v2(lambda)-beta^v1(lambda))*... (r-delta)/(lambda+delta))-delta/(lambda+delta)*(eta1^(v1(lambda))-... eta1^(v2(lambda)))-beta*r/(lambda+r)*((1-v2(lambda))/v2(lambda)*... eta1^(-1+v1(lambda))-(1-v1(lambda))/v1(lambda)*eta1^(-1+v2(lambda))); Sstar=@(eta1) M/eta1; B1=@(lambda,eta1) v2(lambda)/(v1(lambda)-v2(lambda))*(delta/(lambda+... delta)+(1-v2(lambda))/v2(lambda)*r/(lambda+r)*(beta*M)/Sstar(eta1)); B2=@(lambda,eta1) v1(lambda)/(v2(lambda)-v1(lambda))*(delta/(lambda+... delta)+(1-v1(lambda))/v1(lambda)*r/(lambda+r)*(beta*M)/Sstar(eta1)); estar=@(lambda,eta1) (S0*B1(lambda,eta1)*(Sstar(eta1)/S0)^(v1(lambda))+... S0*B2(lambda,eta1)*(Sstar(eta1)/S0)^(v2(lambda))-phi_1(lambda))/lambda;
% Definizione di pesi e nodi dell'algoritmo di inversione csi=ones(N,1); for i=1:N somma1=0; for k=(floor((i+1)/2)):(min(i,N/2)) somma1=somma1+(k^((N)/2)*factorial(2*k))/(factorial(N/2-k)*... factorial(k)*factorial(k-1)*factorial(i-k)*factorial(2*k-i)); end csi(i)=(-1)^(N/2+i)*somma1; end
% Inversione della trasformata di Laplace e calcolo del prezzo somma = 0; for k=1:N p=k*log(2)/T; x=1/(fzero(@(eta1) f(p,eta1) , beta*r/delta)); if S0 > Sstar(x(k)) a=pstar(p); b=estar(p,x); else a=fun(p); b=0; end somma=somma+csi(k)*(a+b); end LBPutPriceAm=somma*log(2)/T; toc end
165
Appendice A. Codici Matlab sequenziali
A.1.5 Metodo basato sulla trasformata di Laplace per il calcolo del prezzo di opzioni fractional lookback europee con sottostante Kou Riportiamo in questa sezione l’algoritmo utilizzato per il calcolo del valore di un’opzione put europea fractional lookback quando il sottostante evolve con modello doppio esponenziale di Kou. L’algoritmo prende come input il valore di S 0 , il valore di massimo prefissato M e di , la maturity T, il tasso risk-free rf , la volatilità , il dividendo , i parametri del modello di Kou 1 , 2 , p e e il numero di nodi della griglia dei prezzi M, e restituisce come output il prezzo dell’opzione put fractional floating lookback europea. Sono riportati il codice che usa l’algoritmo di Eulero per l’inversione della trasformata, e quello che usa invece l’algoritmo di Gaver-Stefhest.
function [LBPutKou]=Laplace_PutFLB_Kou_Euler(S,MAX,BETA,T,sigma,r,d,... eta1,eta2,pp,lambda,N) %-------------------------------------------------------------------------% Codice basato sull'inversione della trasformata di Laplace per il pricing % di un'opzione fractional lookback put europea con sottostante Kou % Algoritmo di inversione: Eulero %-------------------------------------------------------------------------tic
% Definizione delle costanti e delle funzioni necessarie per il calcolo del % prezzo qq=1-pp; alpha=pp*eta1/(eta1-1)+qq*eta2/(eta2+1)-1; mu=r-d-lambda*alpha-1/2*sigma^2; A=@(b1,b2) (eta1-b1)*b2/(b1-1); B=@(b1,b2) (b2-eta1)*b1/(b2-1); C=@(p,b1,b2) (p+r)*eta1*(b2-b1); fun=@(S,p,A,B,C,b1,b2) S*A/C*(S/(BETA*MAX))^(b1-1)+S*B/C*(S/(BETA*... MAX))^(b2-1)+(BETA*MAX)/(p+r)-S/p;
% Definizione di pesi e nodi dell'algoritmo di inversione csi=ones(2*N+1,1); csi(1)=1/2; csi(2*N+1)=1/(2^N); for k=1:N-1 csi(2*N-k+1)=csi(2*N-k+2)+2^(-N)*factorial(N)/(factorial(k)*... factorial(N-k));
166
A.1 Metodi basati sulla trasformata di Laplace end eta=ones(2*N+1,1); for j=1:2*N+1 eta(j)=((-1)^(j-1))*csi(j); end g=0:2*N; beta=N*log(10)/3+pi*1i*g;
% Inversione della trasformata di Laplace e calcolo del prezzo somma=0; for k=0:2*N p=beta(k+1)/T; a=sigma^2; b=2*mu-sigma^2*(eta1-eta2); c=-sigma^2*eta1*eta2-2*mu*(eta1-eta2)-2*lambda-2*(p+r); d=-2*mu*eta1*eta2-2*lambda*pp*(eta1+eta2)+2*lambda*eta1+2*(p+r)*... (eta1-eta2); e=2*(p+r)*eta1*eta2; B0=c^2-3*b*d+12*a*e; B1=2*c^3-9*b*c*d+27*a*d^2+27*b^2*e-72*a*c*e; B2=sqrt(B1^2-4*B0^3); B3=b^2/(4*a^2)-2*c/(3*a); B4=b^2/(2*a^2)-4*c/(3*a); B5=4*b*c/a^2-8*d/a-(b/a)^3; Bt=(B1+B2)^(1/3); C0=2^(1/3)*B0/(3*a*Bt); C1=Bt/(3*2^(1/3)*a); p1=sqrt(B3+C0+C1); pt2=sqrt(B4-C0-C1+B5/(4*p1)); b1=-b/(4*a)+(p1-pt2)/2; b2=-b/(4*a)+(p1+pt2)/2; somma=somma+eta(k+1)*real(fun(S,p,A(b1,b2),B(b1,b2),C(p,b1,b2),b1,b2)); end LBPutKou=somma*(10^(N/3))/T; toc end
function [LBPutKou]=Laplace_PutFLB_Kou_Gaver(S,MAX,BETA,T,sigma,r,d,... eta1,eta2,pp,lambda,N) %-------------------------------------------------------------------------% Codice basato sull'inversione della trasformata di Laplace per il pricing % di un'opzione fractional lookback put europea con sottostante Kou % Algoritmo di inversione: Gaver-Stefhest %-------------------------------------------------------------------------tic
% Definizione delle costanti e delle funzioni necessarie per il calcolo del
167
Appendice A. Codici Matlab sequenziali % prezzo qq=1-pp; alpha=pp*eta1/(eta1-1)+qq*eta2/(eta2+1)-1; mu=r-d-lambda*alpha-1/2*sigma^2; A=@(b1,b2) (eta1-b1)*b2/(b1-1); B=@(b1,b2) (b2-eta1)*b1/(b2-1); C=@(p,b1,b2) (p+r)*eta1*(b2-b1); fun=@(S,p,A,B,C,b1,b2) S*A/C*(S/(BETA*MAX))^(b1-1)+S*B/C*(S/(BETA... *MAX))^(b2-1)+(BETA*MAX)/(p+r)-BETA*S/p;
% Definizione di pesi e nodi dell'algoritmo di inversione csi=ones(N,1); for i=1:N somma1=0; for k=(floor((i+1)/2)):(min(i,N/2)) somma1=somma1+(k^((N)/2)*factorial(2*k))/(factorial(N/2-k)*... factorial(k)*factorial(k-1)*factorial(i-k)*factorial(2*k-i)); end csi(i)=(-1)^(N/2+i)*somma1; end
% Inversione della trasformata di Laplace e calcolo del prezzo somma=0; for k=1:N p=k*log(2)/T; a=sigma^2; b=2*mu-sigma^2*(eta1-eta2); c=-sigma^2*eta1*eta2-2*mu*(eta1-eta2)-2*lambda-2*(p+r); d=-2*mu*eta1*eta2-2*lambda*pp*(eta1+eta2)+2*lambda*eta1+2*(p+r)*... (eta1-eta2); e=2*(p+r)*eta1*eta2; B0=c^2-3*b*d+12*a*e; B1=2*c^3-9*b*c*d+27*a*d^2+27*b^2*e-72*a*c*e; B2=sqrt(B1^2-4*B0^3); B3=b^2/(4*a^2)-2*c/(3*a); B4=b^2/(2*a^2)-4*c/(3*a); B5=4*b*c/a^2-8*d/a-(b/a)^3; Bt=(B1+B2)^(1/3); C0=2^(1/3)*B0/(3*a*Bt); C1=Bt/(3*2^(1/3)*a); p1=sqrt(B3+C0+C1); pt2=sqrt(B4-C0-C1+B5/(4*p1)); b1=real(-b/(4*a)+(p1-pt2)/2); b2=real(-b/(4*a)+(p1+pt2)/2); somma=somma+csi(k)*fun(S,p,A(b1,b2),B(b1,b2),C(p,b1,b2),b1,b2); end LBPutKou=somma*log(2)/T; toc end
168
A.2 Metodi alternativi
A.2 Metodi alternativi Presentiamo ora i metodi alternativi utilizzati per il calcolo dei prezzi e dei tempi di esecuizione messi poi a confronto con i metodi basati sulla trasformata di Laplace, per valutare l’accuratezza e l’efficienza di questi ultimi metodi. Per approfondimenti teorici su questi metodi si consulti ad esempio [48]
A.2.1 Metodi alternativi per le opzioni barriera Presentiamo in questa sezione gli algoritmi utilizzati per il calcolo del prezzo di un’opzione barriera singola e barriera doppia tramite gli algoritmi alternativi implementati; in particolare sono riportati i codici per il metodo Montecarlo e per il metodo alle differenze finite classico nel caso di sottostante Black&Scholes, per opzioni barriera singola e barriera doppia, e il metodo Montecarlo e Operator Splitting nel caso di sottostante Kou, solo nel caso di opzioni doppia barriera.
Opzioni barriera singola L’algoritmo per il metodo Montecarlo prende in input il valore di S 0 , lo strike K, la maturity T, il tasso risk-free rf , la volatilità , il valore della barriera inferiore H, il numero di simulazioni N sim e il numero di istanti temporali Ndates e restituisce come output il prezzo dell’opzione call barriera singola down&out. Il metodo alle differenze finite prende come input il valore di S 0 , lo strike K, la maturity T, il tasso risk-free rf , la volatilità , il valore della barriera inferiore H, il numero di nodi della griglia temporale M, il numero di nodi della griglia dei prezzi N e il il valore finale della griglia dei prezzi Smax e restituisce come output il prezzo dell’opzione call barriera singola down&out.
function [Prezzo, IC]=SingleBarDO_Montecarlo(S0,K,T,r,sigma,H,Nsim,Ndates)
169
Appendice A. Codici Matlab sequenziali %-------------------------------------------------------------------------% Codice per il calcolo del prezzo di un'opzione call barriera singola % down&out tramite metodo Montecarlo con sottostante Black&Scholes %-------------------------------------------------------------------------tic
% Simulazione del sottostante Path=Esplicito(r,sigma,Nsim,T,Ndates,S0);
% Calcolo del payoff scontato barriera_attr=(min(Path,[],1)>H); %1 barriera non è stata toccata Discpayoff=exp(-r*T)*max(Path(end,:)-K,0).*barriera_attr;
% Calcolo del prezzo e dell'intervallo di confidenza [Prezzo, ~, IC]=normfit(Discpayoff); toc end
%-------------------------------------------------------------------------% Funzione per la simulazione del sottostante che evolve con modello % Black&Scholes %-------------------------------------------------------------------------function [X]=Esplicito(r,sigma,nsim,T,N,X0) % Definizione della griglia temporale e inizializzazione della matrice % delle simulazioni dt=T/N; X=zeros(N+1,nsim); X(1,:)=X0;
%Simulazione mediante formula esplicita temp1=randn(N,nsim); for i=1:N W=sqrt(dt)*temp1(i,:); X(i+1,:)=X(i,:).*exp((r-sigma^2/2)*dt+sigma*W); end end
function [Prezzo]=CallDO_DF_difftrasp_CN(S0,K,T,r,sigma,H,M,N,Smax) %-------------------------------------------------------------------------% Codice per il metodo alle differenze finite con equazione di tipo % diffusione-trasporto e variante Crank-Nicholson per il calcolo del prezzo % di un'opzione barriera singola down&out con sottostante Black&Scholes %-------------------------------------------------------------------------tic
% Definizione della griglia spaziale e temporale
170
A.2 Metodi alternativi dt=T/M; dS=(Smax-H)/N; S=linspace(H,Smax,N+1);
% Definizione delle matrici del sistema da risolvere e della soluzione % iniziale nodi=S(2:end-1)'; a=-r*nodi/(2*dS)+sigma^2*nodi.^2/(2*dS^2); a=[a(2:end);0]; b=sigma^2*nodi.^2/(dS^2)+r; c=r*nodi/(2*dS)+sigma^2*nodi.^2/(2*dS^2); c=[0;c(1:end-1)]; tridiagA=[-0.5*dt*a 1+0.5*dt*b -0.5*dt*c]; A=spdiags(tridiagA,-1:1,N-1,N-1); tridiagB=[0.5*dt*a 1-0.5*dt*b 0.5*dt*c]; B=spdiags(tridiagB,-1:1,N-1,N-1); BCc=c(end); V=max(nodi-K,0);
% Ciclo temporale BC=zeros(N-1,1); for j=M-1:-1:0 V_0=Smax-K*exp(-r*(T-j*dt)); V_01=Smax-K*exp(-r*(T-(j+1)*dt)); BC(end)=0.5*dt*BCc*V_0+0.5*dt*BCc*V_01; V=A\(B*V+BC); end
% Calcolo del prezzo Prezzo=interp1(nodi,V,S0); toc end
Opzioni barriera doppia con sottostante Black&Scholes L’algoritmo per il metodo Montecarlo prende in input il valore di S 0 , lo strike K, la maturity T, il tasso risk-free rf , la volatilità , il valore della barriera inferiore e superiore H inf e H sup , il numero di simulazioni N sim e il numero di istanti temporali Ndates e restituisce come output il prezzo dell’opzione call barriera doppia knock-out. Il
metodo alle differenze finite prende come input il valore di S 0 , lo strike K, la maturity T, il tasso risk-free rf , la volatilità , il valore della barriera inferiore e superiore 171
Appendice A. Codici Matlab sequenziali
H inf e H sup , il numero di nodi della griglia temporale M e il numero di nodi della griglia dei prezzi N e restituisce come output il prezzo dell’opzione call barriera doppia knock-out. function [Prezzo, IC]=DoubleBarKO_Montecarlo(S0,K,T,r,sigma,Hinf,Hsup,... Nsim,Ndates) %-------------------------------------------------------------------------% Codice per il calcolo del prezzo di un'opzione call barriera doppia % knock-out tramite metodo Montecarlo con sottostante Black&Scholes %-------------------------------------------------------------------------tic
% Simulazione del sottostante Path=Esplicito(r,sigma,Nsim,T,Ndates,S0);
% Calcolo del payoff scontato barriera_attr=(max(Path,[],1)Hinf); Discpayoff=exp(-r*T)*max(Path(end,:)-K,0).*barriera_attr;
% Calcolo del prezzo e dell'intervallo di confidenza [Prezzo, ~, IC]=normfit(Discpayoff); toc end
%-------------------------------------------------------------------------% Funzione per la simulazione del sottostante che evolve con modello % Black&Scholes %-------------------------------------------------------------------------function [X]=Esplicito(r,sigma,nsim,T,N,X0) % Definizione della temporale e inizializzazione della matrice delle % simulazioni dt=T/N; X=zeros(N+1,nsim); X(1,:)=X0;
%Simulazione mediante formula esplicita temp1=randn(N,nsim); for i=1:N W=sqrt(dt)*temp1(i,:); X(i+1,:)=X(i,:).*exp((r-sigma^2/2)*dt+sigma*W); end end
172
A.2 Metodi alternativi function [Prezzo]=CallKO_DF_difftrasp_CN(S0,K,T,r,sigma,Hinf,Hsup,M,N) %-------------------------------------------------------------------------% Codice per il metodo alle differenze finite con equazione di tipo % diffusione-trasporto e variante Crank-Nicholson per il calcolo del prezzo % di un'opzione barriera doppia knock-out con sottostante Black&Scholes %-------------------------------------------------------------------------tic
% Definizione della griglia spaziale e temporale dt=T/M; dS=(Hsup-Hinf)/N; S=linspace(Hinf,Hsup,N+1);
% Definizione delle matrici del sistema da risolvere e della soluzione % iniziale nodi=S(2:end-1)'; a=-r*nodi/(2*dS)+sigma^2*nodi.^2/(2*dS^2); a=[a(2:end);0]; b=sigma^2*nodi.^2/(dS^2)+r; c=r*nodi/(2*dS)+sigma^2*nodi.^2/(2*dS^2); c=[0;c(1:end-1)]; tridiagA=[-0.5*dt*a 1+0.5*dt*b -0.5*dt*c]; A=spdiags(tridiagA,-1:1,N-1,N-1); tridiagB=[0.5*dt*a 1-0.5*dt*b 0.5*dt*c]; B=spdiags(tridiagB,-1:1,N-1,N-1); V=max(nodi-K,0);
% Ciclo temporale BC=zeros(N-1,1); for j=M-1:-1:0 V=A\(B*V+BC); end
% Calcolo del prezzo Prezzo=interp1(nodi,V,S0); toc end
Opzioni barriera doppia con sottostante Kou L’algoritmo per il metodo Montecarlo prende in input il valore di S 0 , lo strike K, la maturity T, il tasso risk-free rf , la volatilità , il valore della barriera inferiore e superiore H inf e H sup , il numero di simulazioni N sim , il numero di istanti temporali 173
Appendice A. Codici Matlab sequenziali
Ndates e i parametri del modello di Kou , p, e , e restituisce come output il prezzo dell’opzione call barriera doppia knock-out. Il metodo alle differenze finite prende come input il valore di S 0 , lo strike K, la maturity T, il tasso risk-free rf , la volatilità , il valore della barriera inferiore e superiore H inf e H sup , i parametri del modello di Kou , p, e , il numero di nodi della griglia temporale M, il numero di nodi della griglia dei prezzi N e restituisce come output il prezzo dell’opzione call barriera doppia knock-out.
function [Prezzo, IC]=DoubleBarKO_Montecarlo_Kou(S0,K,T,r,sigma,Hinf,... Hsup,Nsim,Ndates,lambda,p,lambdap,lambdam) %-------------------------------------------------------------------------% Codice per il calcolo del prezzo di un'opzione call barriera doppia % knock-out tramite metodo Montecarlo con sottostante Kou %-------------------------------------------------------------------------tic
% Simulazione del sottostante Path=Kou_Model_Nsim(Ndates,S0,T,sigma,lambda,lambdap,lambdam,p,r,Nsim);
% Calcolo del payoff scontato barriera_attr=(max(Path,[],1)Hinf); Discpayoff=exp(-r*T)*max(Path(end,:)-K,0).*barriera_attr;
% Calcolo del prezzo e dell'intervallo di confidenza [Prezzo, ~, IC]=normfit(Discpayoff); toc end
%-------------------------------------------------------------------------% Funzione per la simulazione del sottostante che evolve con modello Kou %-------------------------------------------------------------------------function [X]=Kou_Model_Nsim(N,x0,T,sigma,lambda,lambdap,lambdam,p,r,Nsim) % Definizione della griglia spaziale e temporale e dei valori necessari % alla simulazione dt=T/N; t=[dt:dt:T]; X=zeros(N+1,Nsim); W=randn(N,Nsim); b=r-(sigma^2/2)-lambda*(p/(lambdap-1)-(1-p)/(lambdam+1));
174
A.2 Metodi alternativi % Determinazione degli istanti di salto usando cd_simulation for k=1:Nsim [NT,tau]=cd_simulation(lambda,T); if NT>0 for i=1:NT temp=abs(t-tau(i)); minimum=min(temp); ik(i)=find(temp==minimum); end taustar=t(ik); end
% Simulazione del processo X % Parte continua X(1,k)=x0; for i=1:N X(i+1,k)=X(i,k)*exp(b*dt+sigma*sqrt(dt)*W(i,k)); % Aggiunta dei salti if NT>0 for j=1:NT if taustar(j)==t(i) U=rand; if U>=p Y=exprnd(1/lambdap); elseif U
%-------------------------------------------------------------------------% Funzione per la determinazione degli istanti di salto %-------------------------------------------------------------------------function [NT,tau]=cd_simulation(lambda,T) tau(1)=0; i=0; while (tau(i+1)<=T) i=i+1; tau(i+1)=tau(i)-log(rand)/lambda; end tau=tau(2:end-1); NT=i-1; end
175
Appendice A. Codici Matlab sequenziali
function [Prezzo]=CallKO_Operator_Splitting_Kou(S0,K,T,Hinf,Hsup,r,sigma,C,... p,lambdap,lambdam,M,N) %-------------------------------------------------------------------------% Codice per il metodo alle differenze finite (variante Operator Splitting) % per il calcolo del prezzo di un'opzione barriera doppia knock-out con % sottostante Kou %-------------------------------------------------------------------------tic
% Definizione della griglia spaziale e temporale dt=T/M; Smin=Hinf; Smax=Hsup; xmin=log(Smin/S0); xmax=log(Smax/S0); dx=(xmax-xmin)/N; x=linspace(xmin,xmax,N+1); nodi=x(2:end-1)';
% Calcolo di alpha e lambda usati nel calcolo del termine integrale k = @(y) (p*C*lambdap*exp(-lambdap*y)).*(y>=0)+((1-p)*C*lambdam*... exp(-lambdam*abs(y))).*(y<0); [alpha,lambda,Tmin,Tmax]=int_Levy(k,xmin,xmax,N);
% Definizione delle matrici del sistema da risolvere trasp=+r-0.5*sigma^2-alpha; a=(trasp>=0); Dd=0.5*sigma^2/dx^2-a*trasp/dx; Dm=-sigma^2/dx^2+(2*a-1)*trasp/dx-lambda; Du=+0.5*sigma^2/dx^2+(1-a)*trasp/dx; e=ones(N-1,1); tridiagD=[Dd*e Dm*e Du*e]; D=spdiags(tridiagD,-1:1,N-1,N-1); A=speye(N-1)-dt*D; clear D;
% Definizione della soluzione iniziale e delle condizioni al bordo u=max(exp(nodi)-K/S0,0); b=zeros(N-1,1);
% Ciclo temporale for j=1:M if C==0 J=0; else J=Levy(k,Tmin,Tmax,N,x,[0;u;exp(xmax)-K*exp(-r*(j-1)*... dt)/S0]); end u=A\(u+dt*(J+b));
176
A.2 Metodi alternativi end
% Calcolo del prezzo S=S0*exp(nodi); C=S0*u*exp(-r*T); Prezzo=interp1(S,C,S0,'spline'); toc end %-------------------------------------------------------------------------% Funzioni ausiliarie per il calcolo del termine integrale %-------------------------------------------------------------------------function [alpha,lambda,Tmin,Tmax]=int_Levy(k,xmin,xmax,N) tol=1e-8; Tmin=xmin; while (k(Tmin)>tol) Tmin=Tmin-1; end Tmax=xmax; while (k(Tmax)>tol) Tmax=Tmax+1; end
% Calcolo dell'integrale con formula dei trapezi con N nodi y=linspace(Tmin,Tmax,N); w=ones(1,N)*(y(2)-y(1)); w(1)=0.5*w(1); w(end)=0.5*w(end); alpha=sum(w.*k(y).*(exp(y)-1)); lambda=sum(w.*k(y)); end
function J=Levy(k,Tmin,Tmax,N,x,u) % Calcolo dell'integrale con formula dei trapezi con N nodi y=linspace(Tmin,Tmax,N); w=ones(1,N)*(y(2)-y(1)); w(1)=0.5*w(1); w(end)=0.5*w(end); J=zeros(N-1,1); w=w.*k(y); for i=1:N-1 J(i)=sum(w.*fu(x(i+1)+y,x,u)); end end
function f=fu(z,x,u) f=zeros(size(z)); index=find( (z>=x(1)).*(z<=x(end)) ); f(index)=interp1(x,u,z(index)); end
177
Appendice A. Codici Matlab sequenziali
A.2.2 Metodi alternativi per le opzioni americane Presentiamo in questa sezione gli algoritmi utilizzati per il calcolo del prezzo di un’opzione americana tramite gli algoritmi alternativi implementati; in particolare sono riportati i codici per il metodo Montecarlo adattato per le opzioni americane e il metodo alle differenze finite adattato per le opzioni americane. L’algoritmo per il metodo Montecarlo prende in input il valore di S 0 , lo strike K, la maturity T, il tasso risk-free rf , la volatilità , il numero di simulazioni N sim e il numero di istanti temporali Ndates e restituisce come output il prezzo dell’opzione put americana. L’algoritmo per le differenze finite prende in input il valore di S 0 , lo strike K, la maturity T, il tasso risk-free rf , il dividendo d, la volatilità , gli estremi della griglia dei prezzi Smin e Smax , il numero di nodi M della griglia dei prezzi e il numero di nodi N della griglia temporale e restituisce come output il prezzo dell’opzione put americana.
function [Prezzo]=PutAmerican_Montecarlo(S0,K,T,r,sigma,Nsim,Ndates) %-------------------------------------------------------------------------% Codice per il calcolo del prezzo di un'opzione put americana tramite % metodo Montecarlo con sottostante Black&Scholes %-------------------------------------------------------------------------tic
% Simulazione del sottostante S=Esplicito(r,sigma,Nsim,T,Ndates,S0); S=S(2:end,:); dt=T/Ndates;
% Inizializzazione delle matrici Istanti_esercizio=(Ndates*ones(Nsim,1)); Put=max(0,K-S(end,:));
% Procedura backward for j=Ndates-1:-1:1 Inmoney=find(S(j,:)
178
A.2 Metodi alternativi % Continuation Value % Regressione Lineare A=[ones(1,length(S_I)); S_I; S_I.^2]; b=Put(Inmoney)'.*exp(-r*dt*(Istanti_esercizio(Inmoney)-j)); alpha=A'\b; % Valore di continuazione CV=A'*alpha; % Verifico se l'istante j è di esercizio anticipato Index=find(IV'>CV); Esercizio_Anticipato=Inmoney(Index); % Update Put(Esercizio_Anticipato)=IV(Index); Istanti_esercizio(Esercizio_Anticipato)=j; end
% Calcolo del prezzo Prezzo=max(K-S0,mean(Put.*exp(-r*dt*Istanti_esercizio'))); toc end
%-------------------------------------------------------------------------% Funzione per la simulazione del sottostante che evolve con modello % Black&Scholes %-------------------------------------------------------------------------function [X]=Esplicito(r,sigma,nsim,T,N,X0) % Definizione della griglia spaziale e temporale dt=T/N; X=zeros(N+1,nsim); X(1,:)=X0; % Simulazione mediante formula esplicita temp1=randn(N,nsim); for i=1:N W=sqrt(dt)*temp1(i,:); X(i+1,:)=X(i,:).*exp((r-sigma^2/2)*dt+sigma*W); end end
179
Appendice A. Codici Matlab sequenziali
function [Prezzo]=Put_American_DF_CN(S0,K,T,r,d,sigma,Smin,Smax,M,N) %-------------------------------------------------------------------------% Codice per il metodo alle differenze finite con variante PSOR e Crank % Nicholson per il calcolo del prezzo di un'opzione put americana con % sottostante Black&Scholes %-------------------------------------------------------------------------tic
% Definizione della griglia spaziale e temporale xmin=log(Smin/K); xmax=log(Smax/K); x=linspace(xmin,xmax,N+1); dx=(xmax-xmin)/N; tau=linspace(0,T*sigma^2/2,M+1); dtau=(T*sigma^2/2)/M;
% Definizione delle matrici del sistema da risolvere e della soluzione % iniziale nodi=x(2:end-1)'; qd=2*(r-d)/sigma^2; q=2*r/sigma^2; y=max(-(exp(0.5*nodi*(qd+1))-exp(0.5*nodi*(qd-1))),0); g=@(x,tau) exp(tau*((qd-1)^2+4*q)/4)*max(exp(0.5*x*(qd-1))-exp(0.5*... x*(qd+1)),0); lambda=dtau/dx^2; tridiag=[-0.5*lambda*ones(N-1,1) 1+lambda*ones(N-1,1) -0.5*lambda*... ones(N-1,1)]; A=spdiags(tridiag,-1:1,N-1,N-1); tridiag=[0.5*lambda*ones(N-1,1) 1-lambda*ones(N-1,1) 0.5*lambda*... ones(N-1,1)]; B=spdiags(tridiag,-1:1,N-1,N-1); BC=zeros(N-1,1);
% Input del PSOR MAXITER=500; TOL=0.0001; w=1.5;
% Ciclo temporale for j=1:M y0=exp(0.5*(qd-1)*xmin+0.25*(qd-1)^2*tau(j)); y0new=exp(0.5*(qd-1)*xmin+0.25*(qd-1)^2*tau(j+1)); BC(1)=0.5*lambda*y0new+0.5*lambda*y0; % PSOR R=(B*y+BC); for jj=1:MAXITER y_old=y; for ii=1:length(A) if ii==1 z=(R(ii)-A(ii,ii+1)*y(ii+1))/A(ii,ii);
180
A.2 Metodi alternativi elseif ii==length(A) z=(R(ii)-A(ii,ii-1)*y(ii-1))/A(ii,ii); else z=(R(ii)-A(ii,ii-1)*y(ii-1)-A(ii,ii+1)*y(ii+1))/A(ii,ii); end y(ii)=max(g(x(ii+1),j*dtau),y(ii)+w*(z-y(ii))); end if norm(y-y_old)
% Calcolo del prezzo S=K*exp(nodi); q=2*r/sigma^2; V=K*exp(-0.5*(qd-1)*nodi-(0.25*(qd-1)^2+q)*T*sigma^2/2).*y; Prezzo=interp1(S,V,S0,'spline'); toc end
A.2.3 Metodi alternativi per le opzioni fractional lookback Presentiamo in questa sezione gli algoritmi utilizzati per il calcolo del prezzo di un’opzione fractional lookback tramite gli algoritmi alternativi implementati; in particolare sono riportati i codici per il metodo Montecarlo adattato per le opzioni lookback con sottostante Black&Sholes e sottostante Kou. Gli algoritmi prendono in input il valore di S 0 , la maturity T, il tasso risk-free rf , la volatilità , il numero di simulazioni N sim , il numero di istanti temporali Ndates , e m nel caso di opzione call, e M nel caso di opzione put e i parametri , p, e nel caso di modello di
Kou, e restituiscono in output il prezzo dell’opzione e l’intervallo di confidenza.
function [Prezzo, IC]=FLCall_Montecarlo(S0,T,r,sigma,Nsim,Ndates,ALPHA,min) %-------------------------------------------------------------------------% Codice per il calcolo del prezzo di un'opzione call fractional lookback % tramite metodo Montecarlo con sottostante Black&Scholes %-------------------------------------------------------------------------tic
181
Appendice A. Codici Matlab sequenziali
% Simulazione del sottostante Path=Esplicito(r,sigma,Nsim,T,Ndates,S0);
% Calcolo del payoff scontato Smin=min(min(Path,[],1),ALPHA*min); Discpayoff=exp(-r*T)*max(Path(end,:)-Smin,0);
% Calcolo del prezzo e dell'intervallo di confidenza [Prezzo, ~, IC]=normfit(Discpayoff);
toc end
%-------------------------------------------------------------------------% Funzione per la simulazione del sottostante che evolve con modello % Black&Scholes %-------------------------------------------------------------------------function [X]=Esplicito(r,sigma,nsim,T,N,X0) % Definizione della griglia spaziale e temporale dt=T/N; X=zeros(N+1,nsim); X(1,:)=X0;
% Simulazione mediante formula esplicita temp1=randn(N,nsim); for i=1:N W=sqrt(dt)*temp1(i,:); X(i+1,:)=X(i,:).*exp((r-sigma^2/2)*dt+sigma*W); end end
function [Prezzo, IC]=FLPut_Montecarlo(S0,T,r,sigma,Nsim,Ndates,BETA,MAX) %-------------------------------------------------------------------------% Codice per il calcolo del prezzo di un'opzione put fractional lookback % tramite metodo Montecarlo con sottostante Black&Scholes %-------------------------------------------------------------------------tic
% Simulazione del sottostante Path=Esplicito(r,sigma,Nsim,T,Ndates,S0);
% Calcolo del payoff scontato
182
A.2 Metodi alternativi Smax=max(max(Path,[],1),BETA*MAX); Discpayoff=exp(-r*T)*max(-Path(end,:)+Smax,0);
% Calcolo del prezzo e dell'intervallo di confidenza [Prezzo, ~, IC]=normfit(Discpayoff);
toc end
%-------------------------------------------------------------------------% Funzione per la simulazione del sottostante che evolve con modello % Black&Scholes %-------------------------------------------------------------------------function [X]=Esplicito(r,sigma,nsim,T,N,X0) % Definizione della griglia spaziale e temporale dt=T/N; X=zeros(N+1,nsim); X(1,:)=X0; % Simulazione mediante formula esplicita temp1=randn(N,nsim); for i=1:N W=sqrt(dt)*temp1(i,:); X(i+1,:)=X(i,:).*exp((r-sigma^2/2)*dt+sigma*W); end end
function [Prezzo, IC]=FLPut_Montecarlo_Kou(S0,T,Nsim,Ndates,r,sigma,... lambda,p,lambdap,lambdam,BETA,MAX) %-------------------------------------------------------------------------% Codice per il calcolo del prezzo di un'opzione put fractional lookback % knock-out tramite metodo Montecarlo con sottostante Kou %-------------------------------------------------------------------------tic
% Simulazione del sottostante Path=Kou_Model_Nsim(Ndates,S0,T,sigma,lambda,lambdap,lambdam,p,r,Nsim);
% Calcolo del payoff scontato Smax=max(max(Path,[],1),BETA*MAX); Discpayoff=exp(-r*T)*max(-(Path(end,:)-Smax),0);
% Calcolo del prezzo e dell'intervallo di confidenza
183
Appendice A. Codici Matlab sequenziali [Prezzo, ~, IC]=normfit(Discpayoff);
toc end
%-------------------------------------------------------------------------% Funzione per la simulazione del sottostante che evolve con modello Kou %-------------------------------------------------------------------------function [X]=Kou_Model_Nsim(N,x0,T,sigma,lambda,lambdap,lambdam,p,r,Nsim) % Definizione della griglia spaziale e temporale e dei valori necessari % alla simulazione dt=T/N; t=[dt:dt:T]; X=zeros(N+1,Nsim); W=randn(N,Nsim); b=r-(sigma^2/2)-lambda*(p/(lambdap-1)-(1-p)/(lambdam+1));
% Determinazione degli istanti di salto usando cd_simulation for k=1:Nsim [NT,tau]=cd_simulation(lambda,T); if NT>0 for i=1:NT temp=abs(t-tau(i)); minimum=min(temp); ik(i)=find(temp==minimum); end taustar=t(ik); end % Simulazione del processo X % Parte continua X(1,k)=x0; for i=1:N X(i+1,k)=X(i,k)*exp(b*dt+sigma*sqrt(dt)*W(i,k)); % Aggiunta dei salti if NT>0 for j=1:NT if taustar(j)==t(i) U=rand; if U>=p Y=exprnd(1/lambdap); elseif U
184
A.2 Metodi alternativi
%-------------------------------------------------------------------------% Funzione per la determinazione degli istanti di salto %-------------------------------------------------------------------------function [NT,tau]=cd_simulation(lambda,T) % Inizializzazione tau(1)=0; i=0; while (tau(i+1)<=T) i=i+1; %aggiungo un salto tau(i+1)=tau(i)-log(rand)/lambda; end tau=tau(2:end-1); NT=i-1; end
185
Appendice B
Codici Matlab paralleli Presentiamo in questa sezione i codici Matlab adattati per il calcolo parallelo, suddivisi per i diversi tipi di opzioni studiate. Ci limitiamo a riportare il codice Matlab, in quanto i dati in input e output sono gli stessi dei corrispondenti codici sequenziali presentati in Appendice A.
B.1 Opzioni barriera
B.1.1 Codice parallelo per CPU function [Call]=HybridBarrier_Euler_par(S0,K,T,r,sigma,Smax,N,Binf) %-------------------------------------------------------------------------% Metodo ibrido per il calcolo del prezzo di un'opzione call barriera % singola down&out con sottostante Black&Scholes % Algoritmo di inversione: Eulero % Variante parallela per CPU %-------------------------------------------------------------------------tic
186
B.1 Opzioni barriera % Definizione griglia spaziale dS=(Smax-Binf)/N; S=linspace(Binf,Smax,N+1); nodes=S(2:N)';
% Definizione di pesi e nodi dell'algoritmo di inversione M=16; csi=ones(2*M+1,1); csi(1)=1/2; csi(2*M+1)=1/(2^M); for k=1:M-1 csi(2*M-k+1)=csi(2*M-k+2)+2^(M)*factorial(M)/(factorial(k)*factorial(M-k)); end eta=ones(2*M+1,1); for j=1:2*M+1 eta(j)=((-1)^(j-1))*csi(j); end g=0:2*M; beta=M*log(10)/3+pi*1i*g;
% Risoluzione sistema di ODE C=zeros(N-1,2*M+1); % CICLO FOR PARALLELO SU CPU parfor p=1:(2*M+1) Dd=sigma^2/(2*dS^2).*nodes.^2-r/(2*dS).*nodes; Dd=[Dd(2:end);0]; Dc=-(sigma^2/(dS^2).*nodes.^2+r+beta(p)); Du=sigma^2/(2*dS^2).*nodes.^2+r/(2*dS).*nodes; Du=[0;Du(1:end-1)]; tridiag=[Dd,Dc,Du]; matrK=spdiags(tridiag,-1:1,N-1,N-1); Bc=-max((nodes-K),0); Bc(1)=-max((nodes(1)-K),0); Bc(end)=(sigma^2/(2*dS^2)*nodes(end)^2+r*(2*dS)*nodes(end))*(Smax/beta(p)K/(r+beta(p)))-max((nodes(end)-K),0); C(:,p)=matrK\Bc; end Cend=zeros(2*M+1); for p=1:(2*M+1) Cend(p)=Smax/beta(p)-K/(r+beta(p)); end C = [zeros(1,2*M+1); C; Cend];
% Inversione della trasformata di Laplace somma = zeros(N+1,1);
187
Appendice B. Codici Matlab paralleli CallPrice=zeros(N+1,1); for k=1:N+1 for j=1:2*M+1 somma(k)= somma(k)+eta(j)*real(C(k,j)/T); end CallPrice(k)= somma(k)*(10^(M/3))/T; end
% Calcolo del prezzo Call=interp1(S(1:end),CallPrice(1:end),S0,'spline'); toc; end
B.1.2 Codice parallelo per GPU function [Call]=HybridBarrier_Gaver_par_GPU(S0,K,T,r,sigma,Smax,N,Binf) %------------------------------------------------------------------------% Metodo ibrido per il calcolo del prezzo di un'opzione call barriera % singola down&out con sottostante Black&Scholes % Algoritmo di inversione: Gaver-Stefhest % Variante parallela per GPU %------------------------------------------------------------------------tic
% Definizione griglia spaziale dS=(Smax-Binf)/N; S=linspace(Binf,Smax,N+1); nodes=S(2:N)';
% Definizione di pesi e nodi dell'algoritmo di inversione M=16; csi=ones(M,1); for i=1:M somma1=0; for k=(floor((i+1)/2)):(min(i,M/2)) somma1=somma1+(k^((M)/2)*factorial(2*k))/(factorial(M/2k)*factorial(k)*factorial(k-1)*factorial(i-k)*factorial(2*k-i)); end csi(i)=(-1)^(M/2+i)*somma1; end
%Definizione delle matrici C=zeros(N-1,M);
188
B.1 Opzioni barriera
matrK=zeros(N-1,N-1,M); Bc=zeros(N-1,M); for p=1:M Dd=sigma^2/(2*dS^2).*nodes.^2-r/(2*dS).*nodes; Dd=[Dd(2:end);0]; Dc=-(sigma^2/(dS^2).*nodes.^2+r+p*log(2)); Du=sigma^2/(2*dS^2).*nodes.^2+r/(2*dS).*nodes; Du=[0;Du(1:end-1)]; tridiag=[Dd,Dc,Du]; matrK(:,:,p)=full(spdiags(tridiag,-1:1,N-1,N-1)); Bc(:,p)=-max((nodes-K),0); Bc(1,p)=-max((nodes(1)-K),0); Bc(end,p)=(sigma^2/(2*dS^2)*nodes(end)^2+r*(2*dS)*nodes(end))*(Smax/(p*log(2))K/(r+p*log(2)))-max((nodes(end)-K),0); end
% Risoluzione sistema di ODE in parallelo su GPU for p=1:M matrK_GPU=gpuArray(matrK(:,:,p)); Bc_GPU=gpuArray(Bc(:,p)); C_GPU=(matrK_GPU\Bc_GPU)'; C(:,p)=gather(C_GPU); end
% Costruzione della matrice C per il calcolo del prezzo for p=1:M Cend(p)=Smax/(p*log(2))-K/(r+p*log(2)); end C = [zeros(1,M); C; Cend];
% Inversione della trasformata di Laplace somma = zeros(N+1,1); CallPrice=zeros(N+1,1); for k=1:N+1 for j=1:M somma(k)= somma(k)+csi(j)*(C(k,j)/T); end CallPrice(k)= somma(k)*log(2)/T; end
% Calcolo del prezzo Call=interp1(S(1:end),CallPrice(1:end),S0,'spline'); toc end
189
Appendice B. Codici Matlab paralleli
B.1.3 Codice parallelo per CPU nel caso di sottostante Kou Function [DBCall]=Laplace_Double_Barrier_Kou_par(S0,K,T,Binf,Bsup,... sigma,r,d,eta1,eta2,qm,lambda,M) %------------------------------------------------------------------------% Metodo analitico per il calcolo del prezzo di un'opzione call barriera % doppia knock-out con sottostante Kou % Algoritmo di inversione: Gaver-Stefhest % Variante per il calcolo parallelo %------------------------------------------------------------------------tic % Definizione griglia spaziale dS=(Bsup-Binf)/M; S=Binf:dS:Bsup; x=log(S./K); xu=x(end); xd=x(1);
% Definizione delle costanti usate phi=1; etam=1/eta1; etap=1/eta2; qp=1-qm; alpha=qp/(1-etap)+qm/(1+etam)-1; mu=r-d-lambda*alpha-1/2*sigma^2; N=16;
% Definizione delle funzioni analitiche del prezzo nello spazio della % trasformata funm=@(x,p,csi0,csi1,csi2,csi3,C0,C1,C4,C5,C6,C7) (C0+C4)*exp(csi0*x)+... (C1+C5)*exp(csi1*x)+C6*exp(csi2*x)+C7*exp(csi3*x)+(phi1)/2*(exp(x)/... (d+p)-1/(r+p)); funp=@(x,p,csi0,csi1,csi2,csi3,C2,C3,C4,C5,C6,C7) (C2+C6)*exp(csi2*x)+... (C3+C7)*exp(csi3*x)+C4*exp(csi0*x)+C5*exp(csi1*x)+(phi+1)/2*(exp(x)/... (d+p)-1/(r+p));
% Definizione dei pesi dell'algoritmo di inversione csi=ones(N,1); for i=1:N somma1=0; for k=(floor((i+1)/2)):(min(i,N/2)) somma1=somma1+(k^((N)/2)*factorial(2*k))/(factorial(N/2-k)*... factorial(k)*factorial(k-1)*factorial(i-k)*factorial(2*k-i)); end csi(i)=(-1)^(N/2+i)*somma1; end
% Inversione della trasformata di Laplace in parallelo DBCallPrice=zeros(length(S),1);
190
B.1 Opzioni barriera
parfor j=2:M somma=0; for k=1:N p=k*log(2)/T; % Trovo le radici dell'equazione (3.33) per ogni nodo di inversione c=[(1/2*sigma^2*etam*etap), (mu*etam*etap-1/2*sigma^2*... (etam-etap)), -(1/2*sigma^2+mu*(etam-etap)+(r+p+lambda)*... etam*etap), (-mu+(r+p+lambda)*(etam-etap)-lambda*... (qp*etam-qm*etap)), (r+p)]; radici=roots(c); radici=sort(radici,'descend'); % Calcolo i coefficienti C0,...,C7 A1=[1,1,-1,-1;radici(1),radici(2),-radici(3),-radici(4);1/... (radici(1)*etam+1),1/(radici(2)*etam+1),-1/(radici(3)*... etam+1),-1/(radici(4)*etam+1);1/(radici(1)*etap-1),1/... (radici(2)*etap-1),-1/(radici(3)*etap-1),-1/... (radici(4)*etap-1)]; B1=[1/(d+p)-1/(r+p);1/(d+p);1/((d+p)*(etam+1))-1/(r+p);1/... ((d+p)*(etap-1))+1/(r+p)]; C=A1\B1; A2=[exp(radici(1)*xd)/(radici(1)*etam+1),exp(radici(2)*xd)/... (radici(2)*etam+1),exp(radici(3)*xd)/(radici(3)*etam+1),... exp(radici(4)*xd)/(radici(4)*etam+1);exp(radici(1)*xd),... exp(radici(2)*xd),exp(radici(3)*xd),exp(radici(4)*xd);... exp(radici(1)*xu),exp(radici(2)*xu),exp(radici(3)*xu),... exp(radici(4)*xu);exp(radici(1)*xu)/(radici(1)*etap-1),... exp(radici(2)*xu)/(radici(2)*etap-1),exp(radici(3)*xu)/... (radici(3)*etap-1),exp(radici(4)*xu)/(radici(4)*etap-1)]; B2=[-(phi-1)/2*(exp(xd)/((d+p)*(etam+1))-1/(r+p))-exp... (radici(1)*xd)/(radici(1)*etam+1)*C(1)-exp(radici(2)*xd)/... (radici(2)*etam+1)*C(2);-(phi-1)/2*(exp(xd)/(d+p)-1/(r+p))-... exp(radici(1)*xd)*C(1)-exp(radici(2)*xd)*C(2);-(phi+1)/2*... (exp(xu)/(d+p)-1/(r+p))-exp(radici(3)*xu)*C(3)-exp... (radici(4)*xu)*C(4);-(phi+1)/2*(exp(xu)/((d+p)*(etap-1))+1/... (r+p))-exp(radici(3)*xu)/(radici(3)*etap-1)*C(3)-exp... (radici(4)*xu)/(radici(4)*etap-1)*C(4)]; D=A2\B2; if x(j)<0 somma=somma+csi(k)*funm(x(j),p,radici(1),radici(2),... radici(3),radici(4),C(1),C(2),D(1),D(2),D(3),D(4)); else somma=somma+csi(k)*funp(x(j),p,radici(1),radici(2),... radici(3),radici(4),C(3),C(4),D(1),D(2),D(3),D(4)); end end DBCallPrice(j)=somma*log(2)/T; end
% Calcolo del prezzo DBCallPriceS=DBCallPrice'*K; DBCall=interp1(S,DBCallPriceS,S0,'spline'); toc end
191
Appendice B. Codici Matlab paralleli
B.2 Opzioni fractional lookback
B.2.1 Codice parallelo per CPU per opzioni fractional lookback europee con sottostante B&S function [LBPrice]=FractionalLookback_Call_Gaver_par(S,m,T,r,sigma,delta,... alpha,N,Nnodi,Smax) %-------------------------------------------------------------------------% Codice basato sull'inversione della trasformata di Laplace per il calcolo % del prezzo di un'opzione fractional lookback call europea % Algoritmo di inversione: Gaver-Stefhest % Variante per il calcolo parallelo %-------------------------------------------------------------------------tic
% Definizione della griglia dei prezzi dS=(Smax-m)/Nnodi; S0=m:dS:Smax; LBCallPrice=zeros(length(S0));
% Ciclo for parallelo parfor j=1:length(S0) % Definizione delle funzioni necessarie per il calcolo del prezzo v1=@(lambda) (1/sigma^2)*(-(delta-r-0.5*sigma^2)+sqrt((delta-r-0.5*... sigma^2)^2+2*sigma^2*(lambda+delta))); v2=@(lambda) (1/sigma^2)*(-(delta-r-0.5*sigma^2)-sqrt((delta-r-0.5*... sigma^2)^2+2*sigma^2*(lambda+delta))); phi_1=@(lambda) (S0(j)*v1(lambda))/(v1(lambda)-v2(lambda))*(lambda/... (lambda+delta)+(1-v1(lambda))/v1(lambda)*lambda/(lambda+r))*... ((alpha*m/S0(j))^v2(lambda)-alpha^(v2(lambda)-v1(lambda))*... v2(lambda)/v1(lambda)*(alpha*m/S0(j))^v1(lambda)); phi_2=@(lambda) (S0(j)*v2(lambda))/(v1(lambda)-v2(lambda))*(lambda/... (lambda+delta)+(1-v2(lambda))/v2(lambda)*lambda/(lambda+r)-... alpha^(v2(lambda)-v1(lambda))*(lambda/(lambda+delta)+(1-... v1(lambda))/v1(lambda)*lambda/(lambda+r)))*((alpha*m/S0(j))^... v1(lambda)); if (S0(j)
% Definizione di pesi e nodi dell'algoritmo di inversione csi=ones(N,1); for i=1:N
192
B.2 Opzioni fractional lookback somma1=0; for k=(floor((i+1)/2)):(min(i,N/2)) somma1=somma1+(k^((N)/2)*factorial(2*k))/(factorial(N/2-k)*... factorial(k)*factorial(k-1)*factorial(i-k)*... factorial(2*k-i)); end csi(i)=(-1)^(N/2+i)*somma1; end % Inversione della trasformata di Laplace somma = 0; for k=1:N somma=somma+csi(k)*cstar(k*log(2)/T); end LBCallPrice(j)=somma*log(2)/T; end
% Calcolo del prezzo LBPrice=interp1(S0,LBCallPrice,S,'spline'); toc end
B.2.2 Codice parallelo per CPU per opzioni fractional lookback americane con sottostante B&S function [LBPriceAmerican]=AmFractionalLookback_Call_Gaver_par(S,m,T,r,sigma,... delta,alpha,Nnodi,Smax,N) %-------------------------------------------------------------------------% Codice basato sull'inversione della trasformata di Laplace per il calcolo % del prezzo di un'opzione fractional lookback call americana % Algoritmo di inversione: Gaver-Stefhest % Variante per il calcolo parallelo %-------------------------------------------------------------------------tic
% Definizione della griglia spaziale dS=(Smax-m)/Nnodi; S0=m:dS:Smax; LBCallPriceAmerican=zeros(length(S0));
% Ciclo for parallelo parfor j=1:length(S0) % Definizione delle funzioni per il calcolo di c*, necessaria per % il calcolo del prezzo della variante americana v1=@(lambda) (1/sigma^2)*(-(delta-r-0.5*sigma^2)+sqrt((delta-r-0.5*...
193
Appendice B. Codici Matlab paralleli sigma^2)^2+2*sigma^2*(lambda+delta))); v2=@(lambda) (1/sigma^2)*(-(delta-r-0.5*sigma^2)-sqrt((delta-r-0.5*... sigma^2)^2+2*sigma^2*(lambda+delta))); phi_1=@(lambda) (S0(j)*v1(lambda))/(v1(lambda)-v2(lambda))*(lambda/... (lambda+delta)+(1-v1(lambda))/v1(lambda)*lambda/(lambda+r))*... ((alpha*m/S0(j))^v2(lambda)-alpha^(v2(lambda)-v1(lambda))*... v2(lambda)/v1(lambda)*(alpha*m/S0(j))^v1(lambda)); phi_2=@(lambda) (S0(j)*v2(lambda))/(v1(lambda)-v2(lambda))*(lambda/... (lambda+delta)+(1-v2(lambda))/v2(lambda)*lambda/(lambda+r)-... alpha^(v2(lambda)-v1(lambda))*(lambda/(lambda+delta)+(1-... v1(lambda))/v1(lambda)*lambda/(lambda+r)))*((alpha*m/S0(j))^... v1(lambda)); if (S0(j)
194
B.2 Opzioni fractional lookback a=cstar(p); b=estar(p,x); else a=fun(p); b=0; end somma=somma+csi(k)*(a+b); end LBCallPriceAmerican(j)=somma*log(2)/T; end
% Calcolo del prezzo LBPriceAmerican=interp1(S0,LBCallPriceAmerican,S,'spline'); toc end
B.2.3 Codice parallelo per CPU per opzioni fractional lookback europee con sottostante Kou
function [LBPutKou]=Laplace_Lookback_Kou_Euler_parallelo(MAX,BETA,T,Smin,... sigma,r,d,eta1,eta2,pp,lambda,M,N) %-------------------------------------------------------------------------% Codice basato sull'inversione della trasformata di Laplace per il pricing % di un'opzione fractional lookback call europea con sottostante Kou % Algoritmo di inversione: Eulero % Variante per il calcolo in parallelo %-------------------------------------------------------------------------tic % Definizione della griglia temporale dS=(BETA*MAX-Smin)/M; S=Smin:dS:BETA*MAX;
% Definizione delle costanti e delle funzioni necessarie per il calcolo del % prezzo qq=1-pp; alpha=pp*eta1/(eta1-1)+qq*eta2/(eta2+1)-1; mu=r-d-lambda*alpha-1/2*sigma^2; A=@(b1,b2) (eta1-b1)*b2/(b1-1); B=@(b1,b2) (b2-eta1)*b1/(b2-1); C=@(p,b1,b2) (p+r)*eta1*(b2-b1); fun=@(S,p,A,B,C,b1,b2) S*BETA*A/C*(S/(BETA*MAX))^(b1-1)+S*BETA*B/C*(S/... (BETA*MAX))^(b2-1)+(BETA*MAX)/(p+r)-S/p;
195
Appendice B. Codici Matlab paralleli % Definizione di pesi e nodi dell'algoritmo di inversione csi=ones(2*N+1,1); csi(1)=1/2; csi(2*N+1)=1/(2^N); for k=1:N-1 csi(2*N-k+1)=csi(2*N-k+2)+2^(-N)*factorial(N)/(factorial(k)*... factorial(N-k)); end eta=ones(2*N+1,1); for j=1:2*N+1 eta(j)=((-1)^(j-1))*csi(j); end g=0:2*N; beta=N*log(10)/3+pi*1i*g;
% Inversione della trasformata di Laplace LBPutPriceKou=zeros(length(S),1); % Ciclo for parallelo parfor (j=1:M+1) somma=0; for k=0:2*N p=beta(k+1)/T; a=sigma^2; b=2*mu-sigma^2*(eta1-eta2); c=-sigma^2*eta1*eta2-2*mu*(eta1-eta2)-2*lambda-2*(p+r); d=-2*mu*eta1*eta2-2*lambda*pp*(eta1+eta2)+2*lambda*eta1+2*... (p+r)*(eta1-eta2); e=2*(p+r)*eta1*eta2; B0=c^2-3*b*d+12*a*e; B1=2*c^3-9*b*c*d+27*a*d^2+27*b^2*e-72*a*c*e; B2=sqrt(B1^2-4*B0^3); B3=b^2/(4*a^2)-2*c/(3*a); B4=b^2/(2*a^2)-4*c/(3*a); B5=4*b*c/a^2-8*d/a-(b/a)^3; Bt=(B1+B2)^(1/3); C0=2^(1/3)*B0/(3*a*Bt); C1=Bt/(3*2^(1/3)*a); p1=sqrt(B3+C0+C1); pt2=sqrt(B4-C0-C1+B5/(4*p1)); b1=-b/(4*a)+(p1-pt2)/2; b2=-b/(4*a)+(p1+pt2)/2; somma= somma+eta(k+1)*real(fun(S(j),p,A(b1,b2),B(b1,b2),... C(p,b1,b2),b1,b2)); end LBPutPriceKou(j)=somma*(10^(N/3))/T; end
% Calcolo del prezzo LBPutPricesKou=LBPutPriceKou'; LBPutKou=interp1(S,LBPutPricesKou,S0,'spline'); toc end
196
Bibliografia [1] Joseph Abate e Ward Whitt, "A United Framework for Numerically Invertin Laplace Transforms", INFORMS Journal Of Computing, vol. 4, no. 18, pp. 408 421, Fall 2006. [2] Joseph Abate e Ward Whitt, "The Fourier-Series Method for Invertin Transforms of Probability Distributions", Queueing Systems, vol. 10, no. 1-2, pp 5-87, January 1992. [3] Ghada Aldobaidi e Roland Mallier, "Laplace Transform and the American Ca Option" in Mathematical Control Theory and Finance, Springer, 2008, pp. 15-27 [4] Paolo Baldi, Equazioni Differenziali Stocastiche e Applicazioni, Bologna: Pitagor Editrice, 2000. [5] Giovanni Barone Adesi e Robert E. Whaley, "Efficient Analytical Aproximatio of American Option Values", The Journal of Finance vol. 42, pp. 301-320, 1987. [6] David S. Bates, "Jump and Stochastic Volatility: Exchange Rate Processe Implict in Deutche Mark in Options", Review of Financial Studies, pp. 69-107 1996.
198
Bibliografia
[7] Federica Bettinelli, Pricing di Opzioni attraverso la Trasformata di Laplace 2013. [8] Fisher Black e Myron Sholes, "The Pricing of Options and Corporate Liabilities The Journal of Political Economy, pp. 637-654, May-Jun 1973. [9] Stephen Boyd, "The Laplace Transform", Stanford University. [10] Phelim P. Boyle e Yisong Tian, "An Explicit Finite Difference Approach to th Pricing of Barrier Options", Applied Mathematical Finance, vol. 5, pp. 17-43 1998. [11] Mark Broadie e Jerome Detemple, "American Option Valuation: New Bounds Approximations, and a Comparision of Existing Models", Review of Financia Studies, vol. 9, no. 4, pp. 1211-1250, 1996. [13] David S. Bunch e Herb Johnson, "A Simple and Numerically Efficient Valuatio Method for American Puts Using a Modified Geske-Johnson Approach", Th Journal of Finance, vol. 47, no. 2, pp. 809-816, 1992. [14] Peter Carr, "Randomization and the American Put", Review of Financial Studie vol. 11, pp. 597-626, 1998. [15] Peter Carr e Dilip B. Madan, "Option Valuation Using the Fast Fourie Transform", Journal of Computational Finance, pp. 61-73, 1999. [16] Alan M. Cohen, Numerical Methods for Laplace Transform Inversion, Springer 2007. [17] Rama Cont e Peter Tankov, Financial Modelling with Jump Processes, Chapma & Hall / CRC Press, 2003.
198
Bibliografia
[18] Antoine Conze e R. Viswanathan, "Path Dependant Options: The Case o Lookback Options", The Journal Of Finance, vol. 46, no. 5, pp. 1893-1907, 1991. [19] John C. Cox, Stephen A. Ross e Mark Rubinstein, "Option Pricing: A Simplifie Approach", Journal of Financial Economics, vol. 7, pp. 229-263, 1979. [20] Donald P. Gaver, "Oserving Stochastic Processes, and Approximate Trasform Inversion", Operations Research, pp. 444-459, 1966. [21] Paul Glasserman, Monte Carlo Methods in Financial Engineering (Stochasti Modelling and Applied Probability), Springer, 2004. [22] Steven L. Heston, "A Closed-Form Solution for Options with Stochastic Volatilit with Applications to Bond and Currency Options", The Review of Financia Studies, pp. 327-343, 1993. [23] Edwin Hewitt e Karl Stromberg, Real and Abstract Analysis, Springer, 1975. [24] T.S., Stapleton Ho, Richard C. e Marti G. Subrahmanyam, "A Simple Techniqu for the Valuation and Hedging of American Options", Journal of Derivatives, vo 2, pp. 52-56, 1994. [25] Jingzh Huang, Marti G. Subrahmanyam e George Yu, "Pricing and Hedgin American Options: A Recursive Integration Method", Review of Financia Studies, vol. 9, pp. 277-300, 1996. [26] Robert Jeske e Herb E. Johnson, "The American Put Option Value Analytically", The Journal of Finance, vol. 39, no. 5, pp. 1511-1524, 1984. [28] In J. Kim, "The Analytic Valuation of American Options", Review of Financia Studies, vol. 3, no. 4, pp. 547-572, 1990.
199
Bibliografia
[29] Toshikazu Kimura, "Alternative Randomization for Valuing American Options Asia-Pacific Journal of Operational Research (APJOR), vol. 27, no. 2, pp. 167 187, 2010. [30] Toshikazu Kimura, "American Fractional Lookback Options: Valuation an Premium Decomposition", SIAM Journal of Applied Mathematics, vol. 71, pp 517-539, 2011. [33] Toshikazu Kimura e Takeyoshi Suzuki, "A Pincer Randomization Method fo Valuing American Options", Economy Journal of Hokkaido University, vol. 35 pp. 61-76, 2006. [34] Steven G. Kou, "A Jump-Diffusion Model for Option Pricing", Managemen Science, pp. 1086-1101, August 2002. [35] Steven Kou, Giovanni Petrella e Hui Wang, "Pricing Path Dependant Option with Jump Risk via Laplace Transform", The Kyoto Economic Review, vol. 74 no. 1, pp. 1-23, 2005. [36] Steven Kou e Hui Wang, "Option Pricing under a Double Exponential Jum Diffusion Model", Management Science, vol. 50, no. 9, pp. 1178-1192, 2004. [37] Alexey Kuznetsov, "On the Convergence of the Gaver-Stehfest Algorithm", New York Univeristy, 2013. [38] Tze Leung Lai e Tiong Wee Lim, "Efficient Valuation of American Floatin Strike Lookback Options", Stanford University, 2004. [39] Francis A. Longstaff e Eduardo S. Schwartz, "Valuing American Options b Simulation: A Simple Least-Squares Approach", The Review of Financial Studies vol. 14, no. 1, pp. 113-147, 2001.
200
Bibliografia
[40] Robert C. Merton, "A Rational Theory of Option Pricing", Bell Journal o Economics and Management Science, Spring 1973. [41] Robert C. Merton, "Option Pricing when Underlying Stock Returns ar Discontinuous", Journal of Financial Economics, pp. 125-144, 1976. [42] Almerico Murli e Mariarosa Rizzardi, "ALGORITHM 682 - Talbot’s Method fo the Laplace Inversion Problem", ACM Transactions on Mathematical Software vol. 16, no. 2, pp. 158-168, 1990. [43] Peter Ritchken, "On Pricing Barrier Options", The Journal of Derivatives, vol. 3 pp. 19-28, 1995. [44] Takayasu Sakurai, "Numerical Inversion for Laplace Transforms of Function with Discontinuities", Advances in Applied Probability, vol. 36, no. 2, pp. 616 642, 2004. [45] Herbert E. Salzer, "Formulas for the Partial Summation of Series", vol. 10, pp 149-156, 1956. [46] Ken-Iti Sato, Levy Processes and Infinitely Divisible Distributions, Cambridge Cambridge University Press, 1999. [47] Artur Sepp, "Analytical Pricing of Double Barrier Options under a Double Exponential Jump Diffusion Process: Applications of Laplace Transform International Journal of Theoretical and Applied Finance, vol. 7, no. 2, pp. 151 175, August 2004. [48] Rudiger U. Seydel, Tools for Computational Finance, Springer, 2009. [49] Steven E. Shreve, Stochastic Calculus for Finance II: Continuous-Time Models Springer, 2004. 201
Bibliografia
[50] Harald Stehfest, "Algorithm 368: Numerical Inversion of Laplace Transforms Communication of the ACM, pp. 47-49, January 1970. [51] Andrew Ming-Long Wang, Yu-Hong Liu e Yi-Long Hsiao, "Barrier Optio Pricing: a Hybrid Method Approach", Quantitative Finance, vol. 9, no. 3, pp 341-352, 2009. [53] David V. Widder, The Laplace Transform, Princeton, Princeton Universit Press, 1946. [54] You-Ian Zhu e Xiaonan Wu, Derivative Securities and Difference Methods, New York, Springer Finance, 2004.
202
Ringraziamenti Alla fine di questo lavoro e di questo percorso, mi sembra più che doveroso ringraziare chi ha contribuito al raggiungimento di questo risultato importante. Vorrei prima di tutti ringraziare il Professor Daniele Marazzina, per avermi permesso di sviluppare un argomento molto interessante, seguendomi in modo costante ma lasciandomi comunque una certa libertà nella scelta dei contenuti e nello sviluppo di questo lavoro; grazie per tutto l’aiuto fornito e la gentilezza dimostrata, grazie per l’impegno e la rapidità nel fornire i chiarimenti richiesti, e soprattutto grazie per la grande disponibilità ad assecondare i miei impegni di lavoro nell’organizzare gli incontri. Vorrei inoltre ringraziare tutte le persone che hanno contribuito al mio percorso di crescita professionale in questi mesi, introducendomi al mondo del lavoro durante la stesura di questo elaborato: grazie quindi a “bomber” Alberto, per la gentilezza e l’energia dimostrate nell’accogliermi in questa nuova realtà; grazie a Barbara e Augusta, che con la loro simpatia hanno reso più leggeri i primi mesi, ma allo stesso tempo con la loro precisione e professionalità mi hanno fatto capire cosa significa seguire un progetto dalla sua nascita alla sua conclusione; grazie a Tiziana e Giuseppe, che mi stanno seguendo tuttora, per la loro disponibilità nel lasciarmi del tempo per terminare questo lavoro, per i loro insegnamenti e consigli e per l’aiuto che mi stanno fornendo nel comprendere argomenti per me ancora sconosciuti; e grazie ad Elia, 203
perché nonostante sia una nuova leva, più volte mi ha aiutato e mi ha permesso di avere qualche momento in cui occuparmi unicamente di questa ricerca. Un enorme ringraziamento va alla mia famiglia, che mi ha sostenuto in questi cinque anni, anche nei momenti in cui era più difficile per me e quindi più difficile per loro darmi un aiuto. Il primo ringraziamento va ai miei genitori, Marina e Danilo, perché, per quanto possa sembrare un luogo comune, a loro devo tutto questo, ed è principalmente grazie a loro se oggi sono quello che sono. Grazie ad entrambi per aver sostenuto le mie scelte, per avermi spronato sempre e rimproverato quando ne avevo bisogno, per essere stati presenti, per avermi confortato e per avermi fatto riflettere e per avermi posto domande che mi hanno permesso di tenere la mente pronta; entrambi sono e sempre saranno un modello per me. Grazie a nonna Lilly, per esserci sempre stata e per avermi saputo confortare quando serviva; grazie a nonno Mino, per avermi incoraggiato e per avermi posto domande stimolanti e interessanti; grazie a nonna Carla, per avermi tranquillizzato nei momenti più tesi, e per aver alimentato le mie speranze per il futuro. Grazie a zio Andrea, per tutto il sostegno sia in campo universitario sia in campo lavorativo, per i consigli preziosi e per avermi sempre spronato a dare il meglio; grazie a zio Dede, per l’aiuto sia fuori che dentro l’università, per avermi spiegato tutto quello che non capivo in modo semplice ma efficace e per essere sempre stato disponibile; grazie a zio Berto (detto Nenè) per gli incitamenti e per avermi fatto ridere in ogni momento; grazie alla zia Bruna per il sostegno e per avermi fatto da “tutor” all’entrata nel mondo del lavoro, dandomi tutto l’aiuto di cui avevo bisogno; grazie a zia Gisella per le esortazioni e per avermi sempre fornito gli scoop migliori e più divertenti; grazie a zio Massimo per avermi fatto sempre sorridere, e per avermi fornito il fidato mezzo di trasporto con cui ho raggiunto il Politecnico anche sotto le condizioni metereologiche più avverse; grazie a zia Laura, che con la sua simpatia ha sempre portato il buonumore; grazie alle mie cuigine Giulia e Francesca, la prima per avermi sempre dato grandi soddisfazioni, la seconda per aver portato l’allegria con la sua sincerità; grazie a Welby, che mi ha aiutato nei primi 204
difficili momenti, quando non sembrava possibile superare gli esami. Grazie a Cilla, che anche se non può parlare si fa capire bene. E per finire, grazie a nonno Angelo e nonna Anna, che anche se non sono qui per vedere con me la conclusione di questo percorso, grazie ai loro consigli e insegnamenti è come se ci fossero sempre stati. Ringrazio tutti quelli che con me hanno condiviso questi cinque anni fatti di gioia, soddisfazioni, sacrifici, panico e momenti di pazzia. Grazie in particolare a Gabriele e Marta, per aver reso le lezioni, le pause e la vita in generale al Politecnico più divertenti e leggere. Un grazie ancora più speciale va a Matteo e Aurora, non solo compagni ma amici insostituibili: grazie per avermi fatto ridere, per avermi permesso di arrivare fino alla fine dandomi un aiuto costante e una scorta indispensabile di appunti, per avermi sopportato; grazie per tutti i momenti più assurdi; grazie perché senza di voi questo percorso sarebbe stato molto, molto diverso; i lavori di gruppo fatti insieme rimarranno tra i momenti più incredibili di questi cinque anni. Grazie anche a Daria, Cami, Nello, Gino, Ilaria, Carlo, Fra, Teo, Tony, Giudi, Ele, Benni, Michi, Alberto, Diana, Daniele e a tutti gli altri che hanno contribuito in qualche modo a rendere più sereno questo viaggio. Grazie ai compagni di stage prima e di lavoro ora, che hanno inizato con me la nuova esperienza rendendola indimenticabile e sicuramente più divertente: grazie a Cesare, Marco, Toni, Silvano, Mimmo, Nico, Salvo, Giordano, Giulio, Marina, Nino, Giovanni, Daniele, Michele, Salvatore, Giulia, Marco, Lisa, Andrea, Alessandro e Dani Grazie agli amici di sempre, che sono stati con me dall’inizio alla fine: grazie a Panda, amico da una vita, cantante, chitarrista e frontman, supporto morale e fonte inesauribile di risate, compagno di mille avventure; grazie ad Ashley, amica importante e compagna di Cosmo, che mi ha sostenuto fin dall’inzio e che rimane sempre una polla ma inizia a capire come va il mondo; grazie a Valeria, perché non manca mai quando ho bisogno, da sempre; grazie a Luca, per i consigli e per avermi sempre spronato quando quello che mi mancava era solo una spinta; grazie a Francesco per tutto l’aiuto, universitario e non, per le risate e per l’ottimo caffè al guaranà della 205
macchinetta. Grazie agli altri compagni di band: Fra, per avermi dato innumerevoli suggerimenti e per l’aiuto con la chitarra, e Tia, per avermi trasmesso un po’ del suo stile di vita zen e per gli anni incredibili come compagni di banco al liceo. Grazie a Francesco, per avermi sempre fatto divertire e per i suoi ritardi costanti pur essendo sempre a Loreto; grazie a Giulio, per tutte le battute, le citazioni, i video e i film più pazzeschi; grazie a Gio, per essere stato una fonte inesauribile di libri, per avermi aiutato con Matlab, per il Perudo e per tutti i discorsi surreali; grazie a Fra, “Bavone Bivva” per le serate a base di racconti sulla montagna; grazie a Paola, per avermi sempre rassicurato quando avevo bisogno, e per essere sempre stata sincera; grazie a Marzia, compagna di concerti con ottimi gusti musicali; grazie ad Andrea per le serate più assurde al mare, e per avermi fatto conoscere la vera Roma; grazie a Mary, Ale, Michi, Silvia, Matteo, Francesca, Gus, Erni e grazie a tutti gli altri che mi hanno spronato, sopportato, dato consigli e in generale hanno contribuito a farmi raggiungere questo risultato. Per finire, ultima della lista ma non ultima per importanza, grazie ad Alessia: per avermi sempre sostenuto, qualunque cosa succedesse, lungo questo percorso; per la felicità che mi hai dato, anche quando il Politecnico sembrava non essere d’accordo; per avermi sempre ascoltato, per avermi fatto ridere, per avermi fatto riflettere, per avermi fatto crescere e per avermi reso migliore; grazie per esserci sempre stata, e soprattutto grazie per aver sopportato non solo un ingegnere (che già è impegnativo), non solo un ingegnere matematico (che è ancora più faticoso), ma proprio me, e questa è forse la parte più difficile. Un percorso si è concluso, e uno nuovo è appena iniziato; sono stati cinque anni per nulla semplici, fatti di sacrifici ma anche di tante soddisfazioni, a volte di sconfitte ma in generale di successi. E guardando indietro posso dire: ne valeva la pena.
206