Sei sulla pagina 1di 48

L.

Passalacqua

Metodologia “Least-Squares Monte Carlo”.


T
Applicazioni finanziarie ed attuariali.
AF
materiale didattico
DR

Roma, a.a. 2018-2019


Due problemi di riferimento
La metodologia Least-Squares Monte Carlo (LSMC) è una variante
della metodologia Monte Carlo “classica”, sviluppata appositamente
per i seguenti due problemi:

1. la determinazione del valore di una opzione di tipo americano


all’istante corrente t;
2. la determinazione della distribuzione del valore di un contratto
derivato (il cui valore non sia noto in forma chiusa) all’istante
futuro t + 1.

Si tratta di due problemi che richiederebbero entrambi l’applicazione


del c.d. metodo “Monte Carlo annidato” (nested Monte Carlo), ov-
vero della generazione di N2|1 simulazioni Monte Carlo condizionate
agli esiti di un altro insieme di N1 simulazioni Monte Carlo, per un
totale di N1 × N2|1 simulazioni.

Nel primo problema si è interessati alla determinazione di un valore


atteso, ma il numero complessivo di istanti da cui originare simula-
zioni condizionate è potenzialmente infinito (tutti gli istanti in cui è
possibile esercitare anticipatamente), per cui il numero di simulazioni
richieste – pur in approssimazione “Bermuda” – è grandissimo.
Nel secondo caso gli insiemi di simulazioni sono riferiti solo a due
T
istanti, ma essendo – tipicamente– interessati alla determinazione
del quantile della distribuzione in t + 1, almeno uno dei due insiemi
AF

(N1 ) di simulazioni è composto da un grande numero di simulazioni.


Il LSMC è una tecnica numerica “ibrida”, nel senso che combina
tecniche di regressione con la tecnica MC, sviluppata per ridurre
DR

l’onere computazionale di questo tipo problemi.

Metodologia “Least-Squares Monte Carlo”. Applicazioni finanziarie ed attuariali – Roma, a.a. 2018-19 2
La valutazione di derivati americani con il metodo MC
Da Option, Futures and other Derivative Securities, Hull J., Prentice
Hall (1993), pag. 334:

“Compared to other procedures, Monte Carlo simulation is numeri-


cally efficient when there are several variables. This is because the
time taken to carry out a Monte Carlo simulation increases approxi-
mately linearly with the number of variables, whereas the time taken
for most other procedures increases exponentially with the number of
variables. It also has the advantage that it provides a standard error
for the estimates that are made. One limitation of the Monte
Carlo simulation approach is that it can be used only for
European-style derivative securities.”
Il motivo di tale “diffidenza” dipende dal fatto che il metodo Monte
Carlo, nella sua versione più semplice, procede “in avanti”, mentre
la valutazione di un derivato americano richiede di procedere ricorsi-
vamente “all’indietro”. Poiché la valutazione delle opzioni americane
richiede di determinare se l’opzione è esercitata in qualsiasi istante
precedente la scadenza, si riteneva che - per ogni istante di ciascuna
traiettoria originata a partire dalla data di valutazione - si dovesse
far partire un insieme di nuove traiettorie necessarie alla valutazione
del valore di continuazione.
Nel loro articolo del 2001 Longstaff e Schwartz [LS-01] propongo-
T
no di estendere l’approccio Monte Carlo tremite il c.d. approccio
“Least-Squares Monte Carlo” (LSMC) dettagliando un algoritmo per
la valutazione di opzioni americane.
AF

Ad oggi, il LSMC è una tecnica standard per la valutazione di derivati


di tipo americano, e il problema si è spostato nel determinare la
precisione del metodo.
DR

Metodologia “Least-Squares Monte Carlo”. Applicazioni finanziarie ed attuariali – Roma, a.a. 2018-19 3
Stima dei percentili con il metodo Monte Carlo
Sia X ∈ R una variabile aleatoria con funzione di ripartizione F (x)
e densità di probabilità f (x); il quantile α-esimo della distribuzione
di X è definito come:
qα = inf{x|F (x) ≥ α}, α ∈ (0, 1). (1)
Nel caso di funzioni di ripartizione assolutamente continue la (1)
diventa:
qα = F −1 (α). (2)
Su un campione di n realizzazioni i.i.d. di X, x1 , x2 , . . . , xn , lo
stimatore della funzione di ripartizione è dato da:
n
1X
F̂ (x) = 1I{xi ≤x} ,
n i=1
mentre lo stimatore del quantile è:
q̂α = x(dαne)
dove x(1) ≤ x(2) ≤ . . . x(n) sono le statistiche d’ordine e due è il più
piccolo intero non inferiore a u (mentre buc è il più grande intero
non superiore a u).
Nel limite di n → ∞ lo stimatore q̂α è distribuito in maniera normale
con valore atteso qα e varianza:
α(1 − α)
Var[q̂α ] = .
nf 2 (qα )
T
Osservazione. La definizione di quantile empirico non è univoca e
AF
può comportare differenze significative quando la distribuzione non
è continua. [HF-96] discutono le proprietà di uno stimatore ideale
del quantile e riportano 9 diverse definizioni utilizzate in letteratura
o nelle librerie di calcolo. La funzione quantile() di R permette
DR

di scegliere tra le 9 diverse definizioni.


[HF-96] Hyndman, R. J., Fan, Y. (1996) Sample quantiles in statistical packages,
American Statistician 50, pp. 361-365.
Metodologia “Least-Squares Monte Carlo”. Applicazioni finanziarie ed attuariali – Roma, a.a. 2018-19 4
Nel limite di n → ∞, la precisione relativa nella determinazione di
qα è:
r
1/2
Var[q̂α ] α(1 − α) 1
= (3)
qα n qα f (qα )

Per ottenere una precisione relativa prefissata εα è pertanto neces-


sario eseguire un numero di simulazioni:
 2  2
1 1
n ≥ nα = α(1 − α) .
εα qα f (qα )

Osservazione. Il secondo termine tra parentesi quadre contiene la


densità di probabilità della distribuzione f (x); spesso questa è ignota
(a priori) e quindi non è possibile calcolare nα ex-ante.

Per valori finiti di n lo stimatore q̂α è distorto. Bahadur[B-66] ha


mostrato che:
α(1 − α)f 0 (qα ) 1
E[q̂α ] = qα − +O 2
2(n + 2)f 3 (qα ) n
(4)
α(1 − α)  1 
Var[q̂α ] = + O
(n + 2)f 2 (qα ) n2
T
AF
DR

[B-66] Bahadur, R. R. A note on quantiles in large samples, Ann. Math. Statist.


37 (1966), pp. 577-580.
Metodologia “Least-Squares Monte Carlo”. Applicazioni finanziarie ed attuariali – Roma, a.a. 2018-19 5
1 L’approccio “Least-Squares Monte Carlo”

In un (famoso) articolo, pubblicato nel 2001, Longstaff e Schwartz


hanno proposto un metodo per la valutazione delle opzioni americane
tramite il metodo MC.

Valuing American Options by Simulation:


A Simple Least-Squares Approach
Francis A. Longstaff
UCLA

Eduardo S. Schwartz
UCLA

This article presents a simple yet powerful new approach for approximating the value of
America11 options by simulation. The kcy to this approach is the use of least squares to
estimate the conditional expected payoff to the optionholder from continuation. This
makes this approach readily applicable in path-dependent and multifactor situations
where traditional finite difference techniques cannot be used. We illustrate this tech-
nique with several realistic exatnples including valuing an option when the underlying
asset follows a jump-diffusion process and valuing an America11 swaption in a 20-factor
string model of the term structure.

One of the most important problems in option pricing theory is the valuation
and optimal exercise of derivatives with American-style exercise features.
These types of derivatives are found in all major financial markets includ-
ing the equity, commodity, foreign exchange, insurance, energy, sovereign,
agency, municipal, mortgage, credit, real estate, convertible, swap, and emerg-
ing markets. Despite recent advances, however, the valuation and optimal
exercise of American options remains one of the most challenging problems
in derivatives finance, particularly when more than one factor affects the
value of the option. This is primarily because finite difference and binomial
techniques become impractical in situations where there are multiple factors.' T
We are grateful for the cotnl~lelitsof Yaser Abu-Mostafa, Giovanlii Barone-Adesi, Marco Avellaneda, Peter
Bossaerts, Peter Carr, Peter DeCrem, Craig F~thian,Bjorn Flesaker, James Cammill, Gordon Gemmill, Robert
Geske, Eric Ghysels, Ravit Efraty Mandell. Soetojo Tanudjaja. John Thornley, Bruce Tuckman. Pedro Santa-
Clara, Pratap Sondhi. Ross Valkanov, and seminar participants at Bear Stearns, the University of British
Columbia, the California Institute of Technology. Chase Manhattan Bank. Citibank, the Courant Institute at
New York University, C r e d ~ tSuisse First Boston, Daiwa Securities. Fuji Bank. Goldman Sachs, Greenwich
Capital. Morgan Stanley Dean Witter, the No~inchukinBank, Nikko Securities, the h4ath Week Risk Magazine
AF
Conferences in London and New York. Salomon Smith Barney in London and Neu York. Simplex Capital,
the Su~nitomoBank, UCLA. the 1998 Danish Finance Association meetings. and the 1999 Western Finance
Association meetings. We are particularly grateful for the comments of the editor Ravi Jagannathan and of an

LO; Angeles, C A 90095-1481. or e-mail: francia.iongstaff@anderson.ucla.edu


' For example. this explains why virtually all Wall Street firms value and exercise American swaptions using a
simple single-factor model despite clear ev~dencethat the term structure is driven by multlple factors.

The Reiieib of Firiancial Studies Spring 2001 Vol. IS. No. I , pp. 113-147

DR

O 2001 The Society for Financial Studies

Figura 1: L’articolo originale di Longstaff e Scwartz, pubblicato su


Review of Financial Studies, 14(1), 113-147.
Metodologia “Least-Squares Monte Carlo”. Applicazioni finanziarie ed attuariali – Roma, a.a. 2018-19 6
Siano, rispettivamente, r(t) il tasso spot, S(t) il valore del sottostante
(titolo azionario) e V (t) il valore dell’opzione americana e VI (t) il
suo valore intrinseco. Il valore dell’opzione si ottiene risolvendo “a
ritroso” l’equazione ricorsiva definita sulla coppie di istanti (tj−1 , tj )
(j = 1, . . . , n):
R tj
Q − r(u)du
n h io
V (tj−1 ) = max VI (tj−1 ), E e tj−1 V (tj )|Ftj−1 , (5)
| {z  }
MC ↔ f S(tj−1 )

sulla griglia temporale t = t0 , t1 , . . . , tn = T , essendo t l’istante di


valutazione e T la scadenza dell’opzione.
Il problema principale è che ad ogni istante tj−1 bisognerebbe far
partire un nuovo insieme di simulazioni per calcolare il termine di
destra nell’espressione del max().
L’approccio di Longstaff e Schwartz consiste nell’ipotizzare che tale
termine sia esprimibile come una funzione (polinomiale) di S(tj−1 ),
i cui coefficienti sono determinati,
 ad ogni istante tj−1 richiedendo
che la funzione f S(tj−1 ) sia “il più vicino possibile” (nel senso che
minimizza lo scarto quadratico medio) al valore in tj−1 ottenuto dai
flussi di cassa generati dal contratto sugli scenari futuri.
Questo approccio deriva da una metodologia ampiamente consolidata
nel campo dell’integrazione numerica e della soluzione, sempre per
via numerica, delle equazioni differenziali (metodi spettrali ).
T
Prima di ripercorre tali logiche, è utile considerare un esempio sem-
AF
plificato.
DR

Metodologia “Least-Squares Monte Carlo”. Applicazioni finanziarie ed attuariali – Roma, a.a. 2018-19 7
Un esempio elementare
L’approccio di Longstaff e Schwartz è generalmente presentato a
partire da un esempio fornito dagli stessi autori.

Si consideri una opzione put di tipo Bermuda, con scadenza all’istan-


te j = 3 e prezzo di esercizio K = 1.1, esercitabile agli istanti tj , con
j = 1, 2, 3. Il prezzo del sottostante alla data di valutazione j = 0 è
S(0) = 1 e la struttura per scadenza dei tassi di interesse risk-free è
piatta al livello i = 6%. Si ipotizza inoltre che l’insieme dei possibili
sentieri seguiti dal sottostante sia quello riportato nella tabella 1.

Path j=0 j=1 j=2 j=3


1 1.00 1.09 1.08 1.34
2 1.00 1.16 1.26 1.54
3 1.00 1.22 1.07 1.03
4 1.00 0.93 0.97 0.92
5 1.00 1.11 1.56 1.52
6 1.00 0.76 0.77 0.90
7 1.00 0.92 0.84 1.01
8 1.00 0.88 1.22 1.34

Tabella 1: Sentieri dei prezzi del sottostante. T


AF
DR

Metodologia “Least-Squares Monte Carlo”. Applicazioni finanziarie ed attuariali – Roma, a.a. 2018-19 8
L’algoritmo è composto da un passo preliminare, da una serie di passi
intermedi nei quali si procede ricorsivamente all’indietro lavorando
su coppie di date (tj−1 , tj ), j = 3, 2, 1, e da un passo finale.
Il passo preliminare consiste nel determinare il valore dell’opzione a
scadenza, come mostrato nella tabella 2.

Path j=1 j=2 j=3


1 − − .00
2 − − .00
3 − − .07
4 − − .18
5 − − .00
6 − − .20
7 − − .09
8 − − .00

Tabella 2: Passo preliminare. Payoff in j = 3.

Per ogni coppia di date (tj−1 , tj ) i passi intermedi sono a loro volta
composti dalle seguenti operazioni:
1. si determinano gli stati in cui l’opzione è in-the-money;

2. per tali stati si determina il valore intrinseco e il valore di continua-


zione dell’opzione nell’istante corrente tj−1 , condizionatamente al
T
valore del sottostante S(tj−1 );
3. Per tutti gli stati si determina la strategia ottima (esercizio/con-
AF

tinuazione) e i corrispondenti flussi di cassa sui sentieri.

Il passo finale consiste nel valutare il prezzo dell’opzione come valore


medio dei flussi di cassa generati su ciascun sentiero.
DR

Metodologia “Least-Squares Monte Carlo”. Applicazioni finanziarie ed attuariali – Roma, a.a. 2018-19 9
Nel primo passo intermedio si considera la coppia di date (t2 , t3 ), si
determina il valore Y dei flussi di cassa futuri – scontando da t3 a
t2 – e si stima il valore di continuazione utilizzando il polinomio di
secondo grado ottenuto regredendo il valore attuale dei flussi futuri
sul valore di X = S(t2 ). Si ottiene così:

E[Y |X] = −1.070 + 2.983X − 1.813X 2 . (6)

Path Y X Commento Esercizio Continuazione


1 .00 × .94176 1.08 – .02 .0369
2 – – “out” in j = 2 – –
3 .07 × .94176 1.07 – .03 .0461
4 .18 × .94176 0.97 – .13 .1176
5 – – “out” in j = 2 – –
6 .20 × .94176 0.77 – .33 .1520
7 .09 × .94176 0.84 – .26 .1565
8 – – “out” in j = 2 – –

Tabella 3: Primo passo. Regressione in j = 2.

Si procede quindi a determinare i nuovi flussi di cassa:

Path j=1 j=2 j=3 Commento


1 – .00 .00 “out” in j = 3, in j = 2 continua
T
2 – .00 .00 “out” in j = 3 e in j = 2
3 – .00 .07 “in” in j = 3, in j = 2 continua
AF
4 – .13 .00 esercita in j = 2
5 – .00 .00 “out” in j = 3 e in j = 2
6 – .33 .00 esercita in j = 2
7 – .26 .00 esercita in j = 2
8 – .00 .00 “out” in j = 3 e in j = 2
DR

Tabella 4: Flussi di cassa dopo il primo passo.

Metodologia “Least-Squares Monte Carlo”. Applicazioni finanziarie ed attuariali – Roma, a.a. 2018-19 10
Il secondo passo intermedio consiste nel considerare la coppia di date
(t1 , t2 ) e ripetere le operazioni eseguite al passo precedente. In questo
caso il risultato della regressione è:

E[Y |X] = 2.038 − 3.335X + 1.356X 2 . (7)

Path Y X Commento Esercizio Continuazione


1 .00 × .88692 1.09 sconta da j = 3 .01 .0139
2 – – “out” in j = 1 – –
3 – – “out” in j = 1 – –
4 .13 × .94176 0.93 sconta da j = 2 .17 .1092
5 – – “out” in j = 1 – –
6 .33 × .94176 0.76 sconta da j = 2 .34 .2866
7 .26 × .94176 0.92 sconta da j = 2 .18 .1175
8 .00 × .88692 0.88 sconta da j = 3 .22 .1533

Tabella 5: Secondo passo. Regressione in j = 1.

Per i nuovi flussi di cassa si ottengono i risultati riportati nella tabella


6. I valori relativi all’istante di esercizio sono evidenziati in grassetto.

Path j=1 j=2 j=3 Commento


1 .00 .00 .00 “out” in j = 3, in j = 1, 2 continua
2 .00 .00 .00 “out” in j = 3 e in j = 1, 2
T
3 .00 .00 .07 “in” in j = 3, in j = 1, 2 continua
4 .17 .00 .00 esercita in j = 1
AF
5 .00 .00 .00 “out” in j = 3 e in j = 1, 2
6 .34 .00 .00 esercita in j = 1
7 .18 .00 .00 esercita in j = 1
8 .22 .00 .00 esercita in j = 1
DR

Tabella 6: Flussi di cassa dopo il secondo passo.

Metodologia “Least-Squares Monte Carlo”. Applicazioni finanziarie ed attuariali – Roma, a.a. 2018-19 11
L’ultimo passo consiste nella valutazione dell’opzione:
n n n
1 hX X X i
V (t0 ) = v(t0 , t1 )Vi (t1 )+ v(t0 , t2 )Vi (t2 )+ v(t0 , t3 )Vi (t3 ) ,
n i=1 i=1 i=1
i∈I1 i∈I2 i∈I3
(8)
dove Ij è l’insieme dei sentieri per i quali l’opzione viene esercitata
all’istante tj .
In questo caso:
V (t0 ) = 0.1144. (9)

T
AF
DR

Metodologia “Least-Squares Monte Carlo”. Applicazioni finanziarie ed attuariali – Roma, a.a. 2018-19 12
2 Basi di polinomi ortogonali

In [LS-01] pag. 122 gli autori giustificano l’uso di una funzione


polinomiale ottenuta per regressione:
“This assumption can be formally justified, for example, when the
conditional expectation is an element of the L2 space of square-
integrable functions relative to some measure. Since L2 is a Hilbert
space, it has a countable orthonormal basis and the conditional
expectation can be represented as a linear function of the elements
of the basis. As an example, assume that X of the value of the as-
set underlying the option and that X follows a Markov process. One
possible choice of basis functions is the set of (weighted) Laguerre
polynomials”

Il riferimento alla rappresentazione di funzioni in termini di una


base di polinomi ortonormali è l’elemento metodologico “importa-
to” dall’ambito dei metodi spettrali. Per completezza, la sua illu-
strazione richiede una digressione sui metodi di integrazione (e di
interpolazione).

T
AF
DR

Metodologia “Least-Squares Monte Carlo”. Applicazioni finanziarie ed attuariali – Roma, a.a. 2018-19 13
3 Basi di polinomi ortogonali

Si consideri lo spazio delle funzioni f : [a, b] → R “quadrato integra-


bili” in [a, b]:
n Z b o
L2ω (a, b) = f : 2
f (x)ω(x)dx < ∞ , (10)
a

dove l’integrale è definito mediante una (arbitraria) funzione peso


non negativa e integrabile ω(x) : [a, b] → {0} ∪ R+ (a valori non
negativi). Tale insieme contiene tutte le funzioni integrabili.
Definiamo ora la norma (“modulo”) di una funzione e il prodotto
scalare di due funzioni rispettivamente come:
hZ b i1/2 Z b
2
kf kω = f (x)ω(x)dx , (f · g)ω = f (x)g(x)ω(x)dx.
a a
(11)
Osservazione. In uno spazio vettoriale euclideo la norma corrisponde
alla lunghezza di un vettore.

Una base di polinomi ortogonali è una successione di polinomi {p0 , p1 , . . . }


tali che: (
ci i = j,
pi · pj = ci δi,j = . (12)
0 i 6= j.
T
Osservazione In uno spazio vettoriale euclideo due vettori sono or-
togonali quando il loro prodotto scalare è nullo.
AF

Se la norma di ciascun polinomio è pari a 1 (ovvero ci = 1∀i), la base


si dice ortonormale.
DR

Osservazione. In uno spazio vettoriale euclideo i versori degli assi


cartesiani costituiscono una base ortonormale.

Metodologia “Least-Squares Monte Carlo”. Applicazioni finanziarie ed attuariali – Roma, a.a. 2018-19 14
Polinomi ortogonali “classici”
La lista dei principali polinomi ortogonali è composta da un insieme
relativamente vasto di polinomi definiti in (−1, 1) con funzioni peso
differenti e da due polinomi per gli intervalli (0, ∞) e (−∞, ∞) per i
quali la scelta della funzione peso è di tipo esponenziale.
La tabella 7 riporta dominio e funzione peso dei principali polinomi
ortogonali. Per ulteriori dettagli si veda, ad esempio, [AS-72] pag.
771 ss o [N-10] pag. 435 ss.

Polinomio pn (x) (a, b) w(x)


(α,β)
Jacobi Pn (x) (−1, 1) (1 − x)α (1 + x)β
λ
Gegenbauer Cn (x) (−1, 1) (1 − x2 )λ−1/2
Chebychev 1 Tn (x) (−1, 1) (1 − x2 )−1/2
Chebychev 2 Un (x) (−1, 1) (1 − x2 )+1/2
Chebychev 3 Vn (x) (−1, 1) (1 − x)1/2 (1 + x)−1/2
Chebychev 4 Wn (x) (−1, 1) (1 − x)−1/2 (1 + x)1/2
Legendre Pn (x) (−1, 1) 1
(α)(x)
Laguerre Ln (0, ∞) xα e−x
2
Hermite Hn (x) (−∞, ∞) e−x

Tabella 7: Principali polinomi ortogonali, dominio e funzione peso


corrispondenti.
T
AF

[AS-72] Abramowitz M., Stegun I. (1972), Handbook of Mathematical Func-


DR

tions with Formulas, Graphs, and Mathematical Tables, Dover Publications.


http://people.math.sfu.ca/∼cbm/aands/page_771.htm
[N-10] Olver F.W.J. et al. (2010), NIST Handbook of Mathematical Functions,
NIST and Cambridge University Press. http://dlmf.nist.gov/18
Metodologia “Least-Squares Monte Carlo”. Applicazioni finanziarie ed attuariali – Roma, a.a. 2018-19 15
Il ruolo della funzione peso
La funzione peso ω(x) “pondera” la funzione f (x) nell’espressione del-
l’integrale. Questo effetto è particolarmente importante per integrali
in (0, ∞) e (−∞, ∞).
Il ruolo di ω(x) è simile a quello svolto della densità di probabilità
nella definizione di aspettativa.

Esempio. Si consideri il valore atteso di una call europea nel modello


di Black e Scholes:
h i Z ∞
EQ C(T )|Ft = max{ST − K, 0} f Q (ST ) dST (13)
0 | {z } | {z }
→∞ →0
per ST →∞ per ST →∞

Poiché max{ST − K, 0} è lineare in ST , mentre f Q (ST ) ∼ log N (·),


quest’ultima tende a zero più velocemente e l’integrale rimane finito.
Tuttavia, si vede che un contratto che avesse un payoff identico a
quello della call salvo che per un limite superiore, con un cap molto
elevato, avrebbe un valore atteso molto simile, poiché gli scenari con
ST estremamente grande “pesano poco”.

Eistono tre funzioni peso la cui definizione è intuitiva:


1. ω(x) = 1 in intervalli limitati [a, b];
T
2. ω(x) = e−x in [0, ∞).
AF
2
3. ω(x) = e−x in (−∞, ∞).

I pesi esponenziali garantiscono che f (x) ∈ L2ω per un insieme di


funzioni estremamente vasto.
DR

Le tre basi di polinomi ortogonali corrispondenti sono rispettiva-


mente i polinomi di Legendre, i polinomi di Laguerre (con α = 0) e
i polinomi di Hermite.
Metodologia “Least-Squares Monte Carlo”. Applicazioni finanziarie ed attuariali – Roma, a.a. 2018-19 16
Polinomi ortogonali e sviluppo in serie di funzioni
Le basi di polinomi ortogonali permettono di approssimare le funzioni
nel senso dei minimi quadrati:
n
X (f · pk )ω
fn (x) := fˆk pk (x), fˆk = 2 , (14)
k=0
kpk kω
con
lim kf (x) − fn (x)kω = 0. (15)
n→∞

Osservazione. Diversamente dalla logica “interpolatoria” usata nei


metodi di integrazione per quadratura, in questo caso si intende mi-
nimizzare la “distanza” tra la funzione f (x) e la sua approssimazione
(polinomiale) fn (x).
Si può dimostrare che, data la funzione peso ω(x), il polinomio πn
di grado n, soluzione del problema:

min kf (x) − πn (x)kω (16)


π n ∈ Pn

è il polinomio della base ortogonale corrispondente a ω(x). Il polino-


mio πn è detto least-squares polynomial poiché la funzione obiettivo,
nel caso ω(x) = 1, minimizza l’errore quadratico medio commesso
nell’approssimazione di f (x) con πn (x).
T
Osservazione. Per definizione di norma, le differenze tra f (x) e fn (x)
sono di scarsa rilevanza per tutti i valori di x per i quali w(x) è
AF
“piccola”. Ad esempio, se si considerano i polinomi di Laguerre in
(0, ∞), f (x) e fn (x) possono avere comportamenti molto diversi nel
limite x → ∞, poiché in tale limite w(x) → 0.
DR

Metodologia “Least-Squares Monte Carlo”. Applicazioni finanziarie ed attuariali – Roma, a.a. 2018-19 17
Espressioni analitiche dei polinomi ortogonali
Le espressioni analitiche dei polinomi ortogonali si possono ricavare
tramite la c.d. formula di Rodrigues:
1 dn h n
i
pn (x) = w(x)F (x) (17)
κn w(x) dxn

dove κn e Fn (x) sono specifici di ciascun polinomio.

Polinomio pn (x) (a, b) w(x) F (x) κn


Legendre Pn (x) (−1, 1) 1 1 − x2 (−2)2 n!
(α)(x)
Laguerre Ln (0, ∞) xα e−x/2 x n!
2
Hermite Hn (x) (−∞, ∞) e−x 1 (−1)n

Tabella 8: Termini della formula di Rodrigues per i polinomi di Legendre,


Laguerre e Hermite.

Ad esempio per i polinomi di Laguerre (con α = 0), si ha:

per n = 0 p0 (x) = 1

1 d  −x 
per n = 1 p1 (x) = e x =1−x (18)
e−x dx
T
d2  −x 2  1 21
per n = 2 p2 (x) = −x 2 e x = x − 2x + 1
AF
e dx 2
DR

Metodologia “Least-Squares Monte Carlo”. Applicazioni finanziarie ed attuariali – Roma, a.a. 2018-19 18
Polinomi ortogonali e integrali
I polinomi ortogonali sono legati al metodo di integrazione per qua-
drature di Gauss da una importante proprietà:

Scelta la funzione peso w(x) e il corrispondente polinomio ortogonale


in (a, b), i nodi di Gauss della formula di quadratura a n + 1 nodi
sono gli zeri del polinomio ortogonale di grado n + 1.

Come già detto, per w(x) = 1 i polinomi associati sono quelli di


Legendre e quindi i nodi di Gauss si trovano risolvendo l’equazione:

Ln (x) = 0. (19)

Il generico integrale di una funzione f (x) può essere riscritto facendo


comparire esplicitamente la funzione peso:
Z b Z b n
X
I= f (x)dx = f (x) ω −1 (x) ω(x)dx ' w
bj ϕ(xj ). (20)
a a | {z }
j=0
:=ϕ(x)

Gli algoritmi per ricavare i nodi xj (j = 0, . . . , n) e i corrispondenti


pesi w
bj , sono riportati, ad esempio, in [QSS-08] pag. 339-341.
T
AF
DR

Metodologia “Least-Squares Monte Carlo”. Applicazioni finanziarie ed attuariali – Roma, a.a. 2018-19 19
La libreria di R “orthopolynom” fornisce una collezione di funzioni
per l’uso dei polinomi ortogonali.

library(orthopolynom)

# polinomi di Laguerre di grado n=2


p.Laguerre = glaguerre.polynomials(n = 2,alpha = 0)
print(p.Laguerre)
[[1]]
1
[[2]]
1 - x
[[3]]
1 - 2*x + 0.5*x^2

# polinomi di Legendre di grado n=2


p.legendre = legendre.polynomials(n = 2)
[[1]]
1
[[2]]
x
[[3]]
-0.5 + 1.5*x^2

Si noti che gli zeri del polinomio di Legendre di ordine n = 2 si


T
ottengono risolvendo l’equazione:
3 2 1 1
AF
x − = (3 x2 − 1) = 0, (21)
2 2 2

e quindi valgono x = ±1/ 3 (−→ integrazione per quadrature di
Gauss).
DR

Metodologia “Least-Squares Monte Carlo”. Applicazioni finanziarie ed attuariali – Roma, a.a. 2018-19 20
Esempio di integrazione
Si consideri (cfr [QSS-00] pag. 402 e pag. 429) l’integrale:
Z ∞
3
I= cos2 (x)e−x dx = = 0.6. (22)
0 5

Usando n = 12 nodi la formula di quadratura di Gauss-Laguerre


fornisce il valore 0.5997 per l’integrale I, con un errore δ = 2.96 10−4 .
Si può stimare che il numero di nodi richiesti dalla regola del trapezio
per ottenere un precisione simile servono n = 277 nodi.

Nel seguente esempio i polinomi ortogonali sono forniti dalla libreria


di R “orthopolynom”; pesi e nodi sono ottenuti con la funzione
NodiPesi.R che a sua volta utilizza la libreria “SoDA”.
1 library(orthopolynom)
2 library(SoDA)
3 source("NodiPesi.R")
4
5 # polinomi di Laguerre di grado n=2
6 p.Laguerre = glaguerre.polynomials(n = 2,alpha = 0)
7 print(p.Laguerre)
8 [[1]]
9 1
10 [[2]]
11 1 - x
12 [[3]]
13 1 - 2*x + 0.5*x^2
14
15 # nodi (x) e pesi (x^\alpha e^{-x}) dei polinomi di grado n
16 z = zplagu(n=2)
17 print(z)
18 nodi pesi
19 1 3.4142136 0.1464466
20 2 0.5857864 0.8535534
21
22 # \int_0^{\infty} cos^{2}(x) e^{-x} dx = 3/5 = 0.6
T
23 p.Laguerre <- glaguerre.polynomials(n = 12,alpha = 0)
24 z = zplagu(n=12); x = z$nodi; w = z$pesi
25 y = cos(x)^2
AF
26 Integrale = w %*% y
27
28 print(Integrale)
29 [,1]
30 [1,] 0.5997037

Listing 1: Esempio in R. Esempio di integrazione per quadrature sui nodi


dei polinomi di Laguerre.
DR

Metodologia “Least-Squares Monte Carlo”. Applicazioni finanziarie ed attuariali – Roma, a.a. 2018-19 21
1 # cfr. Quarteroni A., Sacco R., Saleri F. "Matematica Numerica", 2008, Springer, pagg. 339-341
2
3 coeflege <- function(n) { # calcola i coefficienti dei polinomi di Legendre
4 a = b = array(0, dim=n)
5 b[1] = 2
6 k = seq(from=2, to=n, by=1)
7 b[k] = 1/(4-1/(k-1)^2)
8 out = data.frame(a=a, b=b)
9 return(out)
10 }
11
12 coeflagu <- function(n) { # calcola i coefficienti dei polinomi di Laguerre
13 a = b = array(0, dim=n)
14 a[1] = b[1] = 1
15 k = seq(from=2, to=n, by=1)
16 a[k] = 2*(k-1)+1
17 b[k] = (k-1)^2
18 out = data.frame(a=a, b=b)
19 return(out)
20 }
21
22 coefherm <- function(n) { # calcola i coefficienti dei polinomi di Hermite
23 a = b = array(0, dim=n)
24 b[1] = sqrt(4*atan(1))
25 k = seq(from=2, to=n, by=1)
26 b[k] = 0.5*(k-1);
27 out = data.frame(a=a, b=b)
28 return(out)
29 }
30
31 zplege <- function(n) { # calcola nodi e pesi delle formule di Gauss-Legendre
32 d <- coeflege(n)
33 a = d$a
34 b = d$b
35 JacM <- triDiag(diagonal = a, upper=sqrt(b[2:n]), lower=sqrt(b[2:n]))
36 e <- eigen(JacM)
37 x <- e$values # nodi
38 w <- 2*e$vectors[1,]^2 # pesi
39 out = data.frame(nodi=x, pesi=w)
40 return(out)
41 }
42
43 zplagu <- function(n) { # calcola nodi e pesi delle formule di Gauss-Laguerre
44 d <- coeflagu(n)
45 a = d$a
46 b = d$b
47 JacM <- triDiag(diagonal = a, upper=sqrt(b[2:n]), lower=sqrt(b[2:n]))
48 e <- eigen(JacM)
49 x <- e$values # nodi
50 w <- e$vectors[1,]^2 # pesi
51 out = data.frame(nodi=x, pesi=w)
52 return(out)
53 }
T
54
55 zpherm <- function(n) {# calcola nodi e pesi delle formule di Gauss-Hermite
56 d <- coefherm(n)
57
AF
a = d$a
58 b = d$b
59 JacM <- triDiag(diagonal = a, upper=sqrt(b[2:n]), lower=sqrt(b[2:n]))
60 e <- eigen(JacM)
61 x <- e$values # nodi
62 w <- sqrt(pi)*e$vectors[1,]^2 # pesi
63 out = data.frame(nodi=x, pesi=w)
64 return(out)
DR

65 }

Listing 2: Esempio in R. Funzioni per il calcolo di coefficienti, nodi e pesi


di alcuni polinomi ortogonali.

Metodologia “Least-Squares Monte Carlo”. Applicazioni finanziarie ed attuariali – Roma, a.a. 2018-19 22
Esempio di approssimazione di funzione
In generale, per costruire il polinomio che approssima una funzione
data tramite polinomi ortogonali è necessario compiere i seguenti
passi:
1. Scegliere la funzione peso w(x);
2. Identificare il corrispondente polinomio ortogonale;
3. Scegliere il grado del polinomio;

4. calcolare i coefficienti fˆk dei polinomi.

Ad esempio, Si voglia approssimare con uno sviluppo in polinomi


di Laguerre il valore all’istante t di una opzione call europea con
scadenza in T = t + τ e prezzo d’esercizio K nel modello di Black e
Scholes, considerata come funzione del prezzo St del sottostante:
1 2 
ln(St /K) + r ± σ τ
C(t) = St Φ(d1 ) − Ke−rτ Φ(d2 ), d1/2 = √ 2 .
σ τ
(23)
Detto n il grado del polinomio di Laguerre utilizzato, si ha pertanto:
n
X
Cn (St ) = fˆk Lk (St ), (24)
k=1
T
dove:
AF

∞ m
(f · pk )ω
Z X
fˆk = 2 = −x
C(x)Lk (x) | e{z } dx ' w
bj C(x̂j )L(x̂j ),
kpk kω 0 | {z }
ω(x) j=1
| {z }
ϕ(x) ϕ(x̂j )
DR

(25)
avendo approssimato l’integrale con m nodi di coordinate xj .

Metodologia “Least-Squares Monte Carlo”. Applicazioni finanziarie ed attuariali – Roma, a.a. 2018-19 23
1 library("orthopolynom")
2 library(SoDA)
3 source("NodiPesi.R")
4
5 # prezzo di una call secondo il modello di Black e Scholes
6 # come funzione del prezzo corrente del sottostante
7 r = 0.01; sigma = 0.3; tau = 5; K = 1
8 BScall <- function(S){
9 d1 = (log(S/K) + (r+0.5*sigma^2)*tau)/sigma/sqrt(tau)
10 d2 = d1 - sigma*sqrt(tau)
11 f = S*pnorm(d1)-K*exp(-r*T)*pnorm(d2)
12 }
13 # griglia di valori del sottostante
14 S = seq(from=0, to=5, by=0.01)
15 # prezzo dell’opzione in t
16 Ct = BScall(S)
17 # payoff a scadenza
18 CT = pmax(S-K,0)
19
20 # Sviluppo in serie di polinomi di Laguerre
21 n = 20
22 CL20 = array(0, dim = length(S)) # valore della funzione
23 CL10 = array(0, dim = length(S)) # valore della funzione
24 CL5 = array(0, dim = length(S)) # valore della funzione
25
26 # polinomi
27 p.Laguerre <- glaguerre.polynomials(n, alpha = 0, normalized=TRUE)
28 # nodi e pesi del polinomio
29 z <- zplagu(n)
30 x <- z$nodi
31 w <- z$pesi
32
33 # coeff. dello sviluppo in serie
34 fhat = array(0, dim = (n+1))
35 for (j in 1:n) {
36 yn <- unlist(polynomial.values(p.Laguerre, x[j]))
37 fhat <- fhat + w[j]*BScall(x[j])*yn
38 }
39
40 for (i in 1:length(S)) {
41 yn <- unlist(polynomial.values(p.Laguerre, S[i]))
42 CL20[i] <- fhat %*% yn
43 CL10[i] <- fhat[1:10] %*% yn[1:10]
44 CL5[i] <- fhat[1:5] %*% yn[1:5]
45 }
46
47 # grafico
48 plot(S, Ct, typ="l", col="red", xlab="S(t)", ylab="C(t)")
49 lines(S, CT, col="black", lty=2)
50 lines(S, CL5, col="blue", lty=3)
T
51 legend("topleft", c("Exact in t=0", "Exact in t=T", "Laguerre n=5 in t=0"), col=c("red", "black",
"blue"), lty=c(1,2,3), bty="n")
52
AF
53 plot(S, Ct-CL5, type="l", col="red", xlab="S(t)", ylab=expression(paste(’C’[BS],’(t)-C’[Laguerre],
’(t)’)))
54 lines(S, Ct-CL10, col="blue")
55 lines(S, Ct-CL20, col="green")
56 abline(h=0)
57 grid()
58 legend("bottomleft", legend = c("n = 5", "n = 10", "n = 20"), col=c("red", "blue", "green"), lty=c
(1,1,1), bty="n")
DR

Listing 3: Esempio in R. Approssimazione del prezzo di una call europea


con un polinomio di Laguerre.

Metodologia “Least-Squares Monte Carlo”. Applicazioni finanziarie ed attuariali – Roma, a.a. 2018-19 24
Exact in t=0

4
Exact in t=T
Laguerre n=5 in t=0

3
C(t)

2
1
0

0 1 2 3 4 5

S(t)

Figura 2: Valore esatto (in rosso) e del polinomio di Laguerre di quinto


grado (in blu) per una call europea nel modello di Black e Scholes al variare
del sottostante. Il tratto in nero rappresenta il valore a scadenza.
0.04
0.02
0.00
CBS(t)−CLaguerre(t)

−0.02
−0.04
−0.06
−0.08

n=5
n = 10
T
−0.10

n = 20

0 1 2 3 4 5

S(t)
AF

Figura 3: Differenza tra il valore esatto della call e quello del polinomio di
Laguerre al variare del grado del polinomio, rispettivamente pari a n = 5
(in rosso), n = 10 (in blu), n = 20 (in verde), al variare del prezzo del
DR

sottostante.

Metodologia “Least-Squares Monte Carlo”. Applicazioni finanziarie ed attuariali – Roma, a.a. 2018-19 25
Un esempio finanziario: il modello di Nelson-Siegel
Il modello di Nelson-Siegel [NS-87], utilizzato direttamente o nella
sua estensione dovuta a Svensson [S-95] dalla maggior parte delle
Banche centrali, assume che l’intensità istantanea di rendimento (in-
stantaneous forward rate), definita tramite il fattore di sconto v(t, T )
sull’orizzonte temporale [t, T = t + τ ] come:

1 ∂v(t, T )
δ(t, T ) = − , (26)
v(t, T ) ∂T

sia data dall’espressione:

δ(t, T ) = β1 + β2 e−λτ + β3 λτ e−λτ , (27)

dove β1 , β2 , β3 , λ sono parametri da determinare tramite opportune


procedura di calibrazione sui dati di mercato.
Sotto tale ipotesi la struttura per scadenza della intensità di rendi-
mento a scadenza (yield, yield to maturity):
Z T
1 1
h(t, T ) = − log v(t, T ) = δ(t, u)du (28)
τ τ t

risulta essere
   
−λτ −λτ
1−e 1−e
h(t, T ) = β1 + β2 + β3 − e−λτ (29)
T
λτ λτ
AF
Si ricorda che h(t, T ) = log(1 + i(t, T )) ' i(t, T ).
DR

[NS-87] Nelson C.R., Siegel A.F. (1987), Parsimonious modeling of yield curves,
Journal of Business, 60, pp. 473-489.
[S-95] Svensson L.E.O. (1995) Estimating forward interest rates with the extended
Nelson and Siegel method, Sveriges Riksbank Quarterly Review, 3, pp. 13-26.
Metodologia “Least-Squares Monte Carlo”. Applicazioni finanziarie ed attuariali – Roma, a.a. 2018-19 26
Osservazione. In virtù della relazione:
   
1 d 1 − e−λτ 1−e −λτ
=− − e−λτ , (30)
τ dτ λτ λτ
il tre termini nella (29) vengono a volte interpretati rispettivamente
come level, slope e curvature della struttura per scadenza.

Osservazione. Due dei quattro parametri sono legati agli estremi


della struttura per scadenza:

lim δ(t, T ) = lim h(t, T ) = β0 ,


T →∞ T →∞
(31)
lim δ(t, T ) = lim h(t, T ) = β0 + β1 = r(t)
T →0 T →0

essendo r(t) lo spot rate in vigore all’istante t.

Come evidenziato dagli autori stessi ([NS-87] p. 475), tale ipotesi


deriva da uno sviluppo in serie di polinomi di Laguerre, corredato
dall’assunzione che nel limite T → ∞, δ(t, T ) (h(t, T )) tenda ad una
costante.
Dai polinomi di Laguerre è infatti possibile definire le funzioni di
Laguerre (si veda, ad. es., [CHQZ-06] pag. 94):
p
Ln (x) = Ln (x) ω(x) = e−x/2 Ln (x), (32)
T
associate a una nuova funzione peso ω(x) = 1 in modo che:
AF
Z ∞
Li (x)Lj (x)dx = δij . (33)
0
DR

[CHQZ-06] Canuto C., Hussaini M.Y., Quarteroni A, Zang T.A. (2006) Spectral
Methods: Fundamentals in Single Domains, Springer.
Metodologia “Least-Squares Monte Carlo”. Applicazioni finanziarie ed attuariali – Roma, a.a. 2018-19 27
Le funzioni di Laguerre costituiscono una base ortonormale in L2 (0, ∞)
e sono particolarmente adatte per descrivere funzioni che si annullano
nel limite x → ∞.
Lo sviluppo in serie di δ(t, T ) come funzione di µτ , con µ > 0
opportuna costante, è pertanto:
n
X
δn (t, T ) = δ∞ + δ̂k Lk (µτ ) . (34)
k=0
| {z }
→0
T →∞

Osservazione. Il parametro µ determina la velocità di convergenza


di δn (t, T ) al limite asintotico δ∞ .

Per n = 1, ricordando che L0 (x) = 1 e L1 (x) = 1 − x, si ha


−µτ /2
 −µτ /2
δ(t, T ) = δ∞ + δ̂0 e + δ̂1 1 − µτ e
  µ
= δ∞ + δ̂0 + δ̂1 e−µτ − 2δ̂1 τ e−µτ /2 (35)
2

= β1 + β2 e−λτ + β3 λτ e−λτ ,

avendo posto β1 = δ∞ , β2 = δ̂0 + δ̂1 , β3 = −2δ̂1 e λ = µ/2.


T
AF
DR

Metodologia “Least-Squares Monte Carlo”. Applicazioni finanziarie ed attuariali – Roma, a.a. 2018-19 28
Il problema della approssimazione di funzione rivisitato
Si supponga di essere interessati al prezzo della opzione call europea
considerata in precedenza, ma all’istante t + 1 invece che all’istante
corrente t, vista come una funzione del valore del sottostante in t+ 1:
h RT i h i
− r du −r(T −t+1)
C(St+1 ) = E e t+1 C(T )|Ft+1 = e E C(T )|Ft+1 . (36)

Ovviamente C(St+1 ) è una v.a. in t, e nota la distribuzione di


St+1 |St , siamo interessati a calcolare il quantile α-esimo della sua
distribuzione.
Questa operazione può essere portata a termine utilizzando i polino-
mi di Laguerre. Tuttavia, l’uso della funzione peso e−St+1 potrebbe
essere “eccessivo”, ovvero potremmo avere un errore “grande” proprio
nella regione del quantile.
Poiché a priori non è noto dove si trova il quantile, una alternativa
è di usare come funzione peso la densità di probabilità di St+1 |St .
In questo caso i polinomi ortogonali si possono costruire in maniera
iterativa.
Z ∞h i2
1/2
p0 (x) = c : kp0 kw = p0 (St+1 ) f P (St+1 )dSt+1 = 1
0
−→ c = 1
 Z ∞h i2
T
1/2 P



 kp 1 kw = p 1 (St+1 ) f (St+1 )dSt+1 = 1
 0
p1 (x) = a + bx :
AF

 Z ∞
(p0 · p1 )w = p1 (St+1 )p0 (St+1 )f P (St+1 )dSt+1 = 0


0

−→ a = E[St+1 ]/Std[St+1 ], b = −1/Std[St+1 ],


DR

.. ..
. .
(37)
Metodologia “Least-Squares Monte Carlo”. Applicazioni finanziarie ed attuariali – Roma, a.a. 2018-19 29
Si avrebbe pertanto:
n
X
Cn (St+1 ) = e−r(T −t+1) Ĉk pk (St+1 ), (38)
k=0

dove i coefficienti Ĉk sono dati da:


Z ∞
(C · pk )ω
Ĉk = = C(St+1 )pk (St+1 )f P (St+1 )dSt+1 . (39)
kpk kω 0

Per calcolare questi integrali tramite quadrature di Gauss andreb-


bero conosciuti i nodi corrispondenti ai polinomi. In alternativa, è
possibile utilizzare quadrature di Newton-Côtes.
Una volta calcolati i coefficienti Ĉk , è possibile raggruppare i termini
con stesso esponente:
n n
" #
X X
Cn (St+1 ) = e−r(T −t+1) Cˆk St+1
0
+ Cˆk St+1
1
+ · · · + Cˆn St+1
n

k=0 k=1

e−r(T −t+1) β0 + β1 St+1


1 n
 
= + · · · + βn St+1
n 
X 
−r(T −t+1) k
= βk e St+1
k=0

n
X k
= ck St+1
T
k=0
(40)
AF

Per le proprietà dei polinomi ortogonali, tale funzione minimizza la


distanza tra la funzione esatta e quella approssimata, ponderata con
la funzione peso adottata:
DR

min kC(St+1 ) − Cn (St+1 )kω (41)


c0 ,c1 ,...,cn

Metodologia “Least-Squares Monte Carlo”. Applicazioni finanziarie ed attuariali – Roma, a.a. 2018-19 30
L’approccio Least-Squares Monte Carlo
L’approccio Least-Squares Monte Carlo (LSMC) si propone di risol-
vere il problema di determinare i coefficienti ck nella (40), effettuando
gli integrali nella (39) tramite il metodo Monte Carlo, invece che per
quadrature.
Osservazione. Dal punto di vista numerico, nel caso unidimensionale
è conveniente usare il metodo delle quadrature, mentre per integrali
su 3 o più dimensioni è più conveniente il metodo Monte Carlo.

Dal punto di vista algoritmico, l’approccio LSMC si compone dei


seguenti passi:
1. effettuare N simulazioni del valore di St+1 |St ;
(i)
2. per ciascuna simulazione calcolare il valore di C(St+1 ), i = 1, . . . , N ;
3. risolvere il problema di regressione:
n h n i2
(i) (i) k
X X
min C(St+1 ) − ck St+1 (42)
c0 ,c11 ,...,cn
i=1 k=0
| {z }
(i)
Cn (St+1 )

Osservazione. Nella (42) si sta implicitamente ponderando per


(i)
T
la densità di St+1 |St poiché i valori di St+1 sono stati simulati
secondo tale distribuzione di probabilità.
AF
DR

Metodologia “Least-Squares Monte Carlo”. Applicazioni finanziarie ed attuariali – Roma, a.a. 2018-19 31
Esempio in R
Il caso del quantile della distribuzione del valore di una call europea
in t + 1 può essere considerato come benchmark, essendo la soluzione
ottenibile in modo esatto.
Nell’esempio la determinazione del quantile viene ripetuta un numero
N.repliche di volte per ottenere la distribuzione della v.a. stima-
tore del quantile. Per ciascuna replica vengono generate N.realW
× N.riskN simulazioni, rispettivamente in probabilità naturale e
risk-neutral.
Le N.riskN simulazioni risk-neutral sono utilizzate per calcolare il
valore della call in t + 1, condizionatamente al valore S(t + 1) otte-
nuto in ciascuna traiettoria naturale. I prezzi della call così ottenuti
vengono regrediti su un polinomio di grado n in S(t + 1).
Usando un campione di N.realW.big simulazioni naturali, diffe-
renti da quelle usate per la regressione, viene quindi determinato il
quantile di C(t + 1), per ciascuna delle N.repliche repliche.
Sul campione dei quantili così stimati viene determinata la media
campionaria µQ e la varianza campionaria σQ , al fine di investigare
la presenza di distorsione nella stima e la dipendenza della preci-
sione dai parametri di calcolo (numero di simulazioni e grado del
polinomio).
T
AF
DR

Metodologia “Least-Squares Monte Carlo”. Applicazioni finanziarie ed attuariali – Roma, a.a. 2018-19 32
n N.realW N.riskN µQ σQ ∆
3 5000 2 1.2802 0.0973 −3.3098
3 5000 10 1.2800 0.0424 −7.3960
3 5000 40 1.2798 0.0261 −11.7988
3 5000 100 1.2805 0.0193 −17.1781
3 5000 400 1.2801 0.0164 −19.4293
3 5000 1000 1.2804 0.0147 −22.2027
5 5000 2 1.2636 0.1164 1.7566
5 5000 10 1.2679 0.0533 1.2842
5 5000 40 1.2687 0.0295 1.4441
5 5000 100 1.2702 0.0213 −0.2265
5 5000 400 1.2701 0.0163 −0.0327
5 3420 60 1.2692 0.0287 0.9201
5 6300 80 1.2713 0.0213 −1.8788
5 15875 125 1.2699 0.0161 0.2685

Tabella 9: Risultati ottenuti replicando N.repliche = 1000 volte


la valutazione del quantile del prezzo in t = 1 di una call europea
nel modello di Black e Scholes, utilizzando per C(t + 1) un poli-
nomio “addestrato” su N.realW × N.riskN scenari, e applicato a
N.realW.big=50000 scenari di S(t + 1).

Il parametro ∆ (scarto standardizzato) è definito come:


T
qα − µQ
AF
∆=
σQ , (43)

N.repliche

dove qα è il valore esatto del quantile e σQ / N.repliche è l’errore
DR

statistico su µQ . Valori di ∆ al di fuori dell’intervallo (−1.96, 1.96)


(95% di livello di confidenza) segnalano una stima distorta.

Metodologia “Least-Squares Monte Carlo”. Applicazioni finanziarie ed attuariali – Roma, a.a. 2018-19 33
0.12

limite
fit

0.10
0.08
Errore sul quantile

0.06


0.04


0.02

0 100 200 300 400

N.riskN

Figura 4: Errore nella stima del quantile di C(t + 1) al variare del


numero delle simulazioni risk-neutral utilizzado un polinomio di gra-
do quinto “addestrato” con 5.000 simulazioni naturali e applicato a
50000 simulazioni naturali.
√ La linea nera rappresenta la curva di
equazione c∞ + c/ n dove i due parametri c∞ e c sono stati de-
terminati per regressione sui primi quattro punti. La linea rossa
rappresenta l’errore che si avrebbe se la determinazione del quan-
tile fosse affetta solo dall’errore statistico relativo alle simulazioni
naturali.

√ nota che l’andamento di σQ in funzione di N.riskN decresce come


Si
T
N.riskN fino al punto N.riskN = 100 e poi più lentamente.
L’errore infatti non può scendere al di sotto dell’errore asintotico
AF
dovuto al numero delle simulazioni naturali, pari a 0.0144
Si noti inoltre che l’andamento di ∆ sullo stesso insieme di simula-
zioni è quasi monotono e tende a zero, benché tutti i valori siano
“accettabili” in quanto compresi nell’intervallo [−1.96, 1.96].
DR

Metodologia “Least-Squares Monte Carlo”. Applicazioni finanziarie ed attuariali – Roma, a.a. 2018-19 34
Calcolo dell’errore asintotico

S0 = 1; mu = 0.06; sigma = 0.3


DeltaT = 1
alfa = 0.995
N.realW.big = 50000

m.log = (mu-0.5*sigma^2)*DeltaT
s.log = sigma*sqrt(DeltaT)
Q.S1.exact <- S0*qlnorm(meanlog=m.log, sdlog =s.log, p=alfa)
f.Q = dlnorm(x=Q.S1.exact, meanlog=m.log, sdlog=s.log)
Bahadur.variance <- alfa*(1-alfa)/N.realW.big/f.Q^2
Bahadur.std <- sqrt(Bahadur.variance)
print(Bahadur.std)
[1] 0.01438756

T
AF
DR

Metodologia “Least-Squares Monte Carlo”. Applicazioni finanziarie ed attuariali – Roma, a.a. 2018-19 35
Considerazioni “geometriche” sul numero di simulazioni

Figura 5: Figura tratta da [B-11] p. 1177, dove si argomenta l’utilità


di usare un numero di simulazioni N.riskN adattivo, in funzione
della distanza dal quantile (maggiore in prossimità).

Risulta evidente che nel limite N.riskN → ∞ l’errore sul quantile


è fornito dalla formula di Bahadur e dipende solo da N.realW.
Quando N.riskN è finito, ciascuna delle determinazioni di C(t + 1)
è affetta da errore. Se N.riskN è “sufficientemente grande”, per il
teorema del limite centrale, CN.riskN (t + 1) è una v.a. distribuita
in maniera normale e non distorta. Pertanto ciascuno dei valori
(i)
CN.riskN (t + 1) (i = 1, . . . , N.riskN) ha il 50% di probabilità di
essere maggiore o minore del valore corretto. Se la distribuzione di
C(t+1) è decrescente nell’intorno del quantile, i valori che si spostano
T
“verso destra” sono di più di quelli che si spostano “verso sinistra”.
Questa asimmetria ha il duplice effetto di introdurre una distorsione
AF
nella stima del quantile e di aumentarne l’errore, essendo:

E (qα − q̂α ) = E (qα − E[q̂α ]) + E[qα − q̂α ]2


2 2
   
(44)
| {z } | {z }
varianza bias 2
DR

[B-11] Broadie M., Du Y., Efficient Risk Estimation via Nested Sequential Si-
mulation, Management Science 57 n.6 (2011) pp. 1172-1194.
Metodologia “Least-Squares Monte Carlo”. Applicazioni finanziarie ed attuariali – Roma, a.a. 2018-19 36
Considerazioni sul numero di simulazioni “ottimo”
In [G-10] si discute il problema della scelta “ottima” del numero di
simulazioni N.realW e N.riskN, in caso di Monte Carlo annidato
(non di LSMC), per la determinazione della probabilità di subire
perdite superiori ad un livello prefissato, dove la v.a. perdita è la
differenza tra il valore corrente (in t) di un portafoglio e il valore
scontato da t + H a t dello stesso portafoglio, e le poste scadute in
[t, H] vengono reinvestite a tasso di mercato dalla data di scadenza
all’istante H.
Sotto opportune ipotesi sulla continuità e derivabilità della distri-
buzione della v.a. perdita (essenzialmente per portafogli altamen-
te granulari) si può dimostrare che lo stimatore di tale probabilità
è distorto, e che il bias è inversamente proporzionale a N.riskN.
Ponendo un vincolo sul carico computazionale complessivo, ovvero
chiedendo che:

N.realW × N.riskN = N.tot = costante, (45)

si arriva ad una allocazione ottima del tipo:

N.realW ∝ N.tot2/3 , N.riskN ∝ N.tot1/3 . (46)

Tale risultato suggerisce, ad esempio, che la scelta N.riskN = 2 sia


sub-ottimale (corrisponde a N.realW=4).
Nella tabella 9 sono riportati tre casi in cui le simulazioni sono state
T
scelte con la regola (2/3, 1/3), in modo da avere lo stesso carico
computazione dei casi 5000 × 40, 5000 × 100 e 5000 × 400. Si può
AF

notare che in tutti e tre i casi σQ rimane invariata o diminuisce molto


leggermente.
DR

[G-10] Gordy M.B., Juneja S., Nested Simulation in Portfolio Risk Measurement,
Management Science 56 n 10 (2010) pp. 1833-1848.
Metodologia “Least-Squares Monte Carlo”. Applicazioni finanziarie ed attuariali – Roma, a.a. 2018-19 37
Considerazioni sull’uso di un numero di simulazioni risk-
neutral “piccolo”
Come si vede dalla tabella 9, è possibile applicare il metodo LSMC
anche con un numero di simulazioni risk-neutral molto piccolo.
Dal punto di vista “informativo” questa possibilità può essere giusti-
ficata dal fatto che il polinomio sta introducendo una relazione tra i
valori in t + 1, che – in un approccio di Monte Carlo annidato – non
è presente.
In alcuni documenti sull’uso del LSMC in ambito Solvency II, la
possibilità di ridurre N.riskN viene portata all’estremo, proponen-
do di usare N.riskN=2, campionate con la tecnica della variabile
antitetica.
Dal punto di vista numerico questa soluzione presenta il vantaggio di
ridurre fortemente il carico computazionale, tuttavia presenta alcuni
“punti di attenzione”:
1. N.riskN = 2 è un valore estremamente piccolo, che non permette
di considerare valide le ipotesi di normalità del metodo Monte
Carlo;
2. N.riskN=2 potrebbe comportare un errore troppo elevato nella
determinazione del quantile, che risulti superiore, ad esempio, alla
differenza tra i quantili “limitrofi”, q0.995 − q0.994 e q0.996 − q0.995 ;
3. N.riskN=2, a causa dell’elevato errore, potrebbe mascherare la
T
presenza di un bias elevato; il bias riceve contributi, sia dall’effet-
to di aumentata varianza della stima risk-neutral – che tuttavia
AF
dovrebbe spingere gli eventi sulle code – che dall’effetto di distor-
sione dovuto a un polinomio di grado troppo basso, che invece
può agire in senso contrario; dalla tabella 9 si vede infatti che,
per n = 3, σQ è molto simile ai valori ottenuti per n = 5, mentre
DR

i valori di µQ sono estremamente diversi; inoltre ∆ cresce signi-


ficativamente (in modulo) all’aumentare di N.riskN (e pertanto
la presenza del bias diviene più evidente).

Metodologia “Least-Squares Monte Carlo”. Applicazioni finanziarie ed attuariali – Roma, a.a. 2018-19 38
Esempio della call europea
1 library("orthopolynom")
2 library("SoDA")
3 source("NodiPesi.R")
4
5 BSoption <- function(K,T,S,sigma,r){
6 d1 = log(S/K)+(r+0.5*sigma^2)*T
7 d1 = d1/sigma/sqrt(T)
8 d2 = d1 - sigma*sqrt(T)
9 f = S*pnorm(d1)-exp(-r*T)*pnorm(d2)
10 return(f)
11 }
12
13 t = 0
14 T = 5
15 K = 1
16 r = 0.01
17 mu = 0.06
18 S0 = 1
19 sigma = 0.3
20
21 # ----------------------------------------
22 # Monte Carlo annidato
23 # ----------------------------------------
24
25 N.repliche <- 1000
26 N.realW <- 5000
27 N.riskN <- 1000
28
29 set.seed(20151001)
30
31 # quantile esatto di S(t+1) e corrispondente quantile di C(t+1)
32 Q.S1.exact <- S0*qlnorm(meanlog = (mu-0.5*sigma^2)*DeltaT, sdlog = sigma*sqrt(DeltaT), p = 0.995)
33 V.Q1.exact <- BSoption(K,T-1,Q.S1.exact,sigma,r)
34
35 # simula S(t+1)
36 DeltaT = 1
37 S1 <- S0*rlnorm(N.realW, meanlog = (mu-0.5*sigma^2)*DeltaT, sdlog = sigma*sqrt(DeltaT))
38 V1 <- BSoption(K,T-1,S1,sigma,r)
39
40 # calcola il quantile empirico di C(t+1) e S(t+1)
41 Q.V1.MC <- quantile(V1, probs=0.995, type=5)
42 Q.S1.MC <- quantile(S1, probs=0.995, type=5)
43
44 # controlla che il quantile sia ben ricostruito
45 Q.S1.MC.r <- array(0, N.repliche)
46 Q.V1.MC.r <- array(0, N.repliche)
47 for (k in 1:N.repliche) {
48 S <- S0*rlnorm(N.realW, meanlog = (mu-0.5*sigma^2)*DeltaT, sdlog = sigma*sqrt(DeltaT))
T
49 V <- BSoption(K,T-1,S,sigma,r)
50 Q.S1.MC.r[k] <- quantile(S, probs=0.995, type=5)
51 Q.V1.MC.r[k] <- quantile(V, probs=0.995, type=5)
AF
52 }
53
54 hist(Q.S1.MC.r, xlab="quantile di S(t+1)", main="")
55 abline(v=Q.S1.exact, col="red")
56
57 precisione <- (Q.S1.exact-mean(Q.S1.MC.r))/Q.S1.exact
58 print(paste("precisione = ", as.character(round(precisione,5))))
59
DR

60 scarto.standard <- (Q.S1.exact-mean(Q.S1.MC.r))/(sd(Q.S1.MC.r)/sqrt(N.repliche))


61 print(paste("scarto standardizzato = ", as.character(round(scarto.standard,4))))

Listing 4: Esempio in R per il prezzo di una call europea in t + 1. Prima


parte.

Metodologia “Least-Squares Monte Carlo”. Applicazioni finanziarie ed attuariali – Roma, a.a. 2018-19 39
1 # -----------------------------------
2 # Calcola C(t+1) via MC
3 # -----------------------------------
4 t0 = Sys.time()
5 Q1.regr = array(0, N.repliche)
6
7 for (k in 1:N.repliche) {
8
9 S1 <- S0*rlnorm(N.realW, meanlog = (mu-0.5*sigma^2)*1, sdlog = sigma*sqrt(1))
10 V1 <- BSoption(K,T-1,S1,sigma,r)
11
12 # calcola E[C(T) | S(t+1)]
13 V1.nested <- array(0, N.realW)
14 for (i in 1:N.realW) {
15 ST <- S1[i]*rlnorm(N.riskN, meanlog = (r-0.5*sigma^2)*(T-1), sdlog = sigma*sqrt(T-1))
16 V1.nested[i] <- mean(pmax(ST-K,0)*exp(-r*(T-1)))
17 }
18
19 if (k==1) {
20 hist(V1.nested, 50, main="", xlab="C(t=1)")
21 abline(v=mean(V1), col="red")
22 abline(v=V.Q1.exact, col="blue")
23 }
24
25 # Regressione
26 x = S1; y = V1.nested
27 degree = 5
28 regr <- lm(y ~ poly(x, degree))
29 yregr <- regr$fitted.values
30 Q1.regr[k] = quantile(yregr, type=5, probs = 0.995)
31
32 if (k==1) {
33 irank = order(x)
34 x.sorted = sort(x, decreasing = FALSE)
35 x.sorted = x[irank]
36 yregr.sorted = yregr[irank]
37 yexact.sorted = V1[irank]
38
39 plot(x.sorted, yregr.sorted, col="red", ylim=c(0,3), xlim=c(0,4),
40 xlab="S(t+1)", ylab="C(t+1)", typ="l")
41 par(new=TRUE)
42 plot(x.sorted, yexact.sorted, col="black", ylim=c(0,3), xlim=c(0,4),
43 xlab="S(t+1)", ylab="C(t+1)", typ="l")
44 abline(v=V.Q1.exact, lty=2)
45 grid()
46 legend("topleft", c("LSMC", "valore esatto", "quantile esatto"),
47 lty=c(1,1,2), col=c("red", "black", "black"), bty="n")
48 }
49 }
50 t1 = Sys.time(); print(t1-t0)
T
51
52 hist(Q1.regr, xlab="quantile", main="")
53 abline(v=V.Q1.exact, col="red")
AF
54
55 print(paste("Quantile esatto =", as.character(round(V.Q1.exact,5)),
56 ", LSMC = ", as.character(round(mean(Q1.regr),5))))
57
58 precisione.LSMC <- (V.Q1.exact-mean(Q1.regr))/V.Q1.exact
59 print(paste("precisione LSMC = ", as.character(round(precisione.LSMC,5))))
60
61 scarto.standard.LSMC <- (V.Q1.exact-mean(Q1.regr))/(sd(Q1.regr)/sqrt(N.repliche))
DR

62 print(paste("scarto standardizzato LSMC = ", as.character(round(scarto.standard.LSMC,4))))

Listing 5: Esempio in R per il prezzo di una call europea in t + 1. Seconda


parte.

Metodologia “Least-Squares Monte Carlo”. Applicazioni finanziarie ed attuariali – Roma, a.a. 2018-19 40
4 Esempi numerici su casi elementari

In [LS-01] vengono presentati esempi numerici dell’applicazione del


metodo LSMC su alcuni casi “elementari”.
Nel seguito sono riprodotti in R gli esempi relativi alla valutazione,
rispettivamente, di:

1. una put americana per un sottostante che non paga dividendi, nel
contesto del modello di Black e Scholes;
2. una call asiatica americana con scadenza T e prezzo di esercizio co-
stante X, il cui payoff è indicizzato a valore medio A(t) del sotto-
stante calcolato su uno scadenzario di date (−T2 , −T2 +∆t, . . . , T ),
dove t = 0 è la data di valutazione, il cui esercizio anticipato è per-
messo solo nell’intervallo (T3 , T ), sempre nel contesto del modello
di Black e Scholes.

Il caso del derivato asiatico è significativo poiché, essendo un deri-


vato di tipo path dependent, tecniche numeriche alternative (quali,
ad esempio, gli alberi binomiali) sono poco adatte, mentre il Monte
Carlo è particolarmente adatto, lavorando in logica di “sentiero dei
prezzi”. Inoltre, il valore del derivato in un generico istante t, diven-
ta funzione di più di una variabile (in questo caso S(t) e S̄(t)) e il
numero dei termini che compongono il polinomio cresce in modo non
lineare per la presenza dei termini “misti”. Ad esempio, un polinomio
di terzo grado avrà la forma:
T
p(St S̄t ) = c0 + a1 St + a2 St2 + a3 St3 + b1 S̄t + b2 S̄t2 + b3 S̄t3 +
AF

2
+ m1 St S̄t + m2 St2 S̄t + m3 St S̄t . (47)
DR

Metodologia “Least-Squares Monte Carlo”. Applicazioni finanziarie ed attuariali – Roma, a.a. 2018-19 41
Esempio della put americana
1 #--------------------------------
2 # Generazione dei sentieri
3 #--------------------------------
4
5 OriginalExample = FALSE
6
7 if (OriginalExample) {
8
9 Nsimul = 8
10 Nt = 3
11 Np = Nt + 1
12 S0 = 1
13 K = 1.1
14 r = 0.06
15 dt = 1
16
17 Spaths = matrix(0, nrow=Nsimul, ncol=Np)
18 Spaths[1,] = c(1.00, 1.09, 1.08, 1.34)
19 Spaths[2,] = c(1.00, 1.16, 1.26, 1.54)
20 Spaths[3,] = c(1.00, 1.22, 1.07, 1.03)
21 Spaths[4,] = c(1.00, 0.93, 0.97, 0.92)
22 Spaths[5,] = c(1.00, 1.11, 1.56, 1.52)
23 Spaths[6,] = c(1.00, 0.76, 0.77, 0.90)
24 Spaths[7,] = c(1.00, 0.92, 0.84, 1.01)
25 Spaths[8,] = c(1.00, 0.88, 1.22, 1.34)
26
27 } else {
28
29 T <- 1
30 S0 <- 44
31 sigma <- 0.4
32 K <- 40
33 r <- 0.06
34 Nt <- 50*T
35 dt <- T/Nt
36 Np <- Nt+1
37
38 nu_t = (r-0.5*sigma^2)*dt
39 si_t = sigma*sqrt(dt)
40
41 set.seed(20151001)
42
43 Nsimul = 50000
44 epsilon = matrix(rnorm(Nsimul*Nt), nrow=Nsimul, ncol=Nt)
45 epsilon2 = -epsilon # variabili antitetiche
46 epsilon = rbind(epsilon, epsilon2)
47 Nsimul = 2*Nsimul
48 increments = nu_t + si_t*epsilon
49
50 Spaths = matrix(0, nrow=Nsimul, ncol=Nt)
51 for (i in 1:Nsimul) {
T
52 Spaths[i,] = log(S0) + cumsum(increments[i,])
53 Spaths[i,] = exp(Spaths[i,])
54 }
AF
55 Spaths = cbind( array(S0,dim = Nsimul), Spaths)
56
57 # test: confronto del valore medio e dev. st di S(T)
58 meanS <- c(mean(Spaths[,Np]), exp(r*T)*S0)
59 names(meanS) = c("MC", "Esatto")
60 sdS <- c(sd(Spaths[,Np]), exp(r*T)*S0*sqrt(exp(sigma^2*T)-1))
61 names(sdS) = c("MC", "Esatto")
62 print(meanS); print(sdS)
DR

63 }

Listing 6: Esempio in R per il prezzo di una put americana con il metodo


LSMC. Prima parte (generazione dei sentieri).

Metodologia “Least-Squares Monte Carlo”. Applicazioni finanziarie ed attuariali – Roma, a.a. 2018-19 42
1 #--------------------------------
2 # Valutazione
3 #--------------------------------
4
5 Vo = matrix(0, nrow=Nsimul, ncol=Np) # valore dell’opzione
6 Vo[,Np] = pmax(K-Spaths[,Np],0) # payoff a scadenza
7
8 # "Loop" all’indietro sugli istanti temporali
9 for (i in Nt:2) {
10
11 Vexer = pmax(K-Spaths[,i],0) # valore intrinseco
12
13 id <- which(Vexer>0) # in-the-money paths
14 x <- Spaths[id,i]
15
16 # polinomi ortogonali
17 L0 <- x/x
18 L1 <- (1-x)
19 L2 <- (2-4*x+x^2)/2
20
21 # valore corrente dei pagameti futuri
22 y <- array(0, dim = length(id))
23 for (j in 1:length(id)) {
24 isc= id[j]
25 Vnext = Vo[isc, (i+1):Np];
26 idj = which(Vnext>0)
27 idt = ifelse(length(idj)==0, 0, idj[1])
28 y[j] = ifelse (idt==0, 0, exp(-idt*r*dt)*Vnext[idt])
29 }
30
31 # regressione
32 data = data.frame(y=y, x=x, x2=x^2, L0=L0, L1=L1, L2=L2)
33
34 if (OriginalExample==TRUE) {
35 regr <- lm(data = data, y ~ x + x2)
36 print("coeff. di regressione")
37 print(regr$coefficients)
38 } else {
39 regr <- lm(data = data, y ~ 0 + L0 + L1 + L2)
40 }
41
42 Vcont <- regr$fitted.values # valori di continuazione
43
44 ide = which(Vexer[id]>Vcont) # sentieri su cui si esercita
45 Vo[id[ide], i] = Vexer[id[ide]] # valore dell’opzione
46 Vo[id[ide], (i+1):Np] = 0 # azzera il payoff sugli istanti futuri
47
48 }
49
50 P = array(0, dim = Nsimul) # valore in t=0 dei pagamenti futuri
T
51 for (i in 1:Nsimul) {
52 id = which(Vo[i,]>0)
53 if (length(id)>0) {
AF
54 k = id[length(id)]
55 P[i] = Vo[i,k]*exp(-r*(k-1)*dt)
56 }
57 }
58
59 MCAmerican = mean(P)
60 print(paste("Risultato = ", as.character(round(MCAmerican,4))))

Listing 7: Esempio in R per il prezzo di una put americana con il metodo


DR

LSMC. Seconda parte.

Metodologia “Least-Squares Monte Carlo”. Applicazioni finanziarie ed attuariali – Roma, a.a. 2018-19 43
Figura 6: Risultati riportati in [LS-01] p. 127, relativi alla valutazione di
una opzione put americana, per diversi valori del sottostante, della vola-
T
tilità e della scadenza del contratto. Il valore determinato con il metodo
LSMC è riportato nella colonna “Simulated American”. Per confronto sono
riportati anche il corrispondente valore del contratto valutato con il meto-
AF

do delle differenze finite e quello del contratto di tipo europeo determinato


in modo esatto.
DR

Metodologia “Least-Squares Monte Carlo”. Applicazioni finanziarie ed attuariali – Roma, a.a. 2018-19 44
Esempio della call asiatica americana
1 A0 = 110 # A(0)
2 S0 = 120 # prezzo corrente del sottostante
3 #
4 X = 100 # strike
5 T = 2 # vita residua a scadenza
6 r = 0.06 # spot rate
7 dividend = 0
8 sigma = 0.2 # volatilita’ del sottostante
9 nsimulations = 50000 # deve essere un numero pari (!)
10 T2 = 3/12 # (-T2) data da cui si conta A(t)
11 T3 = 3/12 # (+T3) data da cui e’ permesso l’esercizio enaticipato
12 nsteps = 100*T # usa 100 date per anno
13 z=1 # option type (1 = call, -1 = put)
14
15 smat = matrix(0, nrow = nsimulations, ncol = nsteps+1)
16 dt = T/nsteps
17
18 drift = ((r-dividend)-sigma^2/2)*dt
19 diffusion = sigma*sqrt(dt)
20
21 # genera con variabili antitetiche
22 set.seed(931316785)
23 randmat1 = matrix(rnorm(n = nsimulations/2*nsteps), nrow = nsimulations/2, ncol = nsteps)
24 randmat2 = -randmat1
25 randmat = rbind(randmat1, randmat2)
26
27 smat[ ,1] = S0
28 smat[1:nsimulations ,2:(nsteps+1)] = exp(drift+diffusion*randmat)
29 smat = t(apply(smat,1,cumprod))
30
31 # media ponderata per il valore iniziale di A(t)
32 tmpsmat = (T/(T+T2))*smat[,1:(nsteps+1)] + (T2/(T+T2))*A0
33 AT = rowMeans(tmpsmat)
34
35 EuropeanPayoff = exp(-r*T)*pmax(z*(AT-X),0)
36 MCEuropeanPrice = mean(EuropeanPayoff)
37
38 CC = matrix(0, nrow=nsimulations, ncol=(nsteps+1)) # valore di continuazione
39 CE = matrix(0, nrow=nsimulations, ncol=(nsteps+1)) # valore di esercizio
40 EF = matrix(0, nrow=nsimulations, ncol=(nsteps+1)) # indicatore di esercizio anticipato
41
42 # valori a scadenza
43 st = smat[ , nsteps+1]
44 CE[ , nsteps+1] = pmax(z*(AT-X),0)
45 CC[ , nsteps+1] = CE[ ,nsteps+1]
46 EF[ , nsteps+1] = ifelse(CE[ ,nsteps+1]>0,1,0)
47
48 # indice corrispondente all’istante T3
49 klimit = round(T3/dt)
T
Listing 8: Esempio in R per il prezzo di una call asiatica mericana con il
metodo LSMC. Prima parte.
AF
DR

Metodologia “Least-Squares Monte Carlo”. Applicazioni finanziarie ed attuariali – Roma, a.a. 2018-19 45
1 for (k in seq(from=nsteps, to=klimit, by = -1)) {
2 St = smat[ ,k]
3 currentT = k*dt
4
5 tmpsmat = (currentT/(currentT+T2))*smat[,1:k] + (T2/(currentT+T2))*A0
6 At = rowMeans(tmpsmat)
7
8 CE[ ,k] = pmax(z*(At-X),0)
9
10 idx = which(CE[ ,k]>0) # per la regressione si usano solo i sentieri "in the money"
11
12 if (length(idx)>0) {
13 Xvec = smat[idx,k]
14 Yvec = CC[idx,k+1]*exp(-r*dt)
15 Avec = At[idx]
16 # Si regredisce il valore di continuazione (scontato) sui valori di S e A correnti
17 regr = lm(Yvec ~ I(Xvec) + I(Xvec^2) + I(Avec) + I(Avec^2) + I(Xvec*Avec))
18 if (length(which(is.na(regr$coefficients)==TRUE))) {
19 regr$coefficients[which(is.na(regr$coefficients)==TRUE)] = 0
20 warning(’errore di regressione’)
21 }
22 CC[idx,k] = regr$coefficients[1]*(Xvec/Xvec) +
23 regr$coefficients[2]*Xvec +
24 regr$coefficients[3]*Xvec^2 +
25 regr$coefficients[4]*Avec +
26 regr$coefficients[5]*Avec^2 +
27 regr$coefficients[6]*Xvec*Avec
28 EF[idx,k]= ifelse(CE[idx,k] > CC[idx,k], 1, 0)
29 }
30
31 # trova le traiettorie su cui l’opzione viene esercitata
32 tmp = which(EF[ ,k]>0)
33 print(c(k, length(tmp)))
34
35 # azzera gli indicatori degli istanti successivi
36 if (length(tmp)>0) {EF[which(EF[ ,k]>0),(k+1):(nsteps+1)] = 0}
37
38 # trova le traiettorie su cui l’opzione NON viene esercitata
39 idx = which(EF[ ,k] == 0)
40 if (length(idx)>0) {CC[idx,k] = CC[idx,k+1]*exp(-r*dt)}
41
42 # trova le traiettorie su cui l’opzione viene esercitata
43 idx = which(EF[ ,k] == 1)
44 if (length(idx)>0) {CC[idx,k] = CE[idx,k]}
45
46 }
47
48 payoff_sum = 0
49 for (i in 1:(nsteps+1)) {
50 idx = which(EF[ ,i] == 1)
T
51 if (length(idx)>0) {
52 st = smat[idx,i]
53 currentT = i*dt
AF
54 tmpsmat=(currentT/(currentT+T2))*smat[idx,1:i] + (T2/(currentT+T2))*A0
55 if(length(idx)==1) {At = mean(tmpsmat)} else {At = rowMeans(tmpsmat)}
56 payoffvec = exp(-r*(i-1)*dt)*pmax(z*(At-X),0)
57 payoff_sum = payoff_sum + sum(payoffvec)
58 }
59 }
60
61 MCAmericanPrice=payoff_sum/nsimulations
DR

62 print(MCAmericanPrice)

Listing 9: Esempio in R per il prezzo di una call asiatica mericana con il


metodo LSMC. Seconda parte.

Metodologia “Least-Squares Monte Carlo”. Applicazioni finanziarie ed attuariali – Roma, a.a. 2018-19 46
Figura 7: Risultati riportati in [LS-01] p. 130, relativi alla valutazione di
una opzione call americana asiatica, per diversi valori del sottostante S(0)
e della media (“average”) A(0) dei valori assunti dal sottostante in [−T2 , 0],
con t = 0 data di valutazione. Il valore determinato con il metodo LSMC
è riportato nella colonna “American” del gruppo di colonne indicato con
virgoletteSimulation. Per confronto sono riportati anche il corrispondente
valore del contratto e della sua versione europea, valutati con il metodo
delle differenze finite
T
AF
DR

Metodologia “Least-Squares Monte Carlo”. Applicazioni finanziarie ed attuariali – Roma, a.a. 2018-19 47
Sulla precisione numerica del metodo LSMC nella valuta-
zione del prezzo di opzioni americane
Il problema della convergenza del metodo LSMC è stato ampiamente
dibattuto, senza che ne sia emersa una prescrizione operativa univoca
per scegliere il grado e il tipo di polinomio da utilizzare, e il numero
di simulazioni, in funzione della precisione richiesta.
(k)
È stato dimostrato (si veda, ad es., [CLP-02]) che lo stimatore VN (t0 )
basato su N simulazioni e un polinomio di grado k tende, nel limite
del numero di simulazioni N → ∞, ad un limite V (k) (t0 ) diverso dal
valore corretto del contratto, che, tuttavia, nel limite k → ∞, tende
al valore corretto V (t0 ):

VNk (t0 ) −−−−→ V (k) (t0 ) −−−−→ V (t0 ). (48)


N →∞ k→∞

Per N e k finiti lo stimatore è distorto, e uno dei punti maggiormente


dibattuti è se la distorsione sia sistematica o meno (e quindi si possa
affermare che la stima è sicuramente per eccesso o per difetto).
[LS-01] argomentano che l’errore numerico introduce una sub-ottimalità
nella strategia di esercizio e quindi che lo stimatore fornisce un limite
inferiore per il prezzo del contratto (low bias). Secondo i risultati
di [CLP-02] questo appare corretto nel limite N → ∞, ma dubbio
per N finito. Come notato in [G-03] p. 463, per un insieme finito di
simulazioni, la strategia potrebbe risultare diversa da quella effettiva
e il prezzo distorto verso valori più grandi (high bias).
T
Tra le molteplici estensioni del metodo si segnala l’uso del metodo
AF
della variabile di controllo, che, ad es., in [R-05] è scelta essere il
prezzo del corrispondente contratto europeo.

[CLP-02] Clément E., Lamberton D., Protter P., An Analysis of a Least Squares
DR

Regression Method for American Option Pricing, Finance and Stochastics 6(4),
pp. 449-471, 2001.
[R-05] Rasmussen N. S., Control variates for Monte Carlo valuation of American
options, Journal of Computational Finance, 9(1), pp. 84-102, 2005.
Metodologia “Least-Squares Monte Carlo”. Applicazioni finanziarie ed attuariali – Roma, a.a. 2018-19 48

Potrebbero piacerti anche