SlideShare une entreprise Scribd logo
1  sur  102
Télécharger pour lire hors ligne
Giovanni Della Lunga
Dipartimento di Chimica
Centro Interdipartimentale per lo Studio dei Sistemi Complessi
Università degli Studi di Siena

Introduzione al metodo
Monte Carlo
Concetti di Base e Applicazioni Finanziarie
INDICE*
_______________________________________________
1

Richiami di Teoria delle Probabilità.................................................................................................1
1.1
Definizioni....................................................................................................................................1
1.2
Variabili Aleatorie e Funzioni di Distribuzione ...........................................................................2
1.3
Momenti .......................................................................................................................................4
1.4

Distribuzioni Discrete ............................................................................................................8

1.5
1.6
1.7

Distribuzioni Continue.........................................................................................................12
Covarianza e Correlazione..........................................................................................................23
Che cos’è un Processo Stocastico...............................................................................................23

2

La Simulazione Monte Carlo...........................................................................................................25
2.1
Simulazione Monte Carlo e Integrazione Numerica...................................................................29

3

Generatori di Numeri Casuali .........................................................................................................33
3.1
Tre tipi di generatori...................................................................................................................33
3.2
3.3
3.4

4

Il generatore Lineare Congruente..........................................................................................34
Le funzioni Rnd() e Randomize()...............................................................................................35
Test statistici sui generatori di numeri casuali ......................................................................37

Generazione di Distribuzioni non Uniformi...................................................................................41
4.1
Il Transformation Method ..........................................................................................................41
4.1.1
Utilizzo delle funzioni del foglio di lavoro di Microsoft Excel in Visual Basic.................42
4.1.2

Come Simulare una variabile distribuita Normalmente ...............................................43

4.2

Il Rejection Method..............................................................................................................48

4.4
4.5
4.6
5

La simulazione di un processo di Wiener ............................................................................45

4.3

Generazione di variabili con correlazione assegnata ............................................................49
Come adattare una distribuzione non normale univariata ai dati empirici..................................51
Appendice A - Il condizionamento della matrice di covarianza .................................................53

La Valutazione dei Titoli Derivati...................................................................................................55
5.1
La stima del prezzo ...............................................................................................................55
5.2
La stima delle sensitività.......................................................................................................57
5.2.1
Approssimazione basata sulle differenze finite ..................................................................57
5.2.2
Stime dirette........................................................................................................................60
5.3
Un cenno alle problematiche dei derivati di tipo americano ......................................................62
5.4
Appendice A - Funzioni VB per la simulazione del Delta .........................................................64

6

La stima del Value-at-Risk ..............................................................................................................67
6.1
Le problematiche ........................................................................................................................67
6.2
Il rischio di mercato....................................................................................................................68
6.2.1
La rivalutazione parametrica del portafoglio......................................................................69

7

Metodi di riduzione della varianza .................................................................................................71
7.1
Introduzione................................................................................................................................71
7.2
7.3

*

Il metodo delle variabili antitetiche.......................................................................................72
Il metodo della variabile di controllo ....................................................................................74

I paragrafi preceduti dal simbolo

contengono argomenti sviluppati anche nelle cartelle Excel che accompagnano il testo.
Indice

ii

7.3.1
Un esempio pratico: il pricing di un’opzione asiatica.........................................................75
7.4
Moment Matching ......................................................................................................................78
7.5
Importance Sampling..................................................................................................................79
7.5.1
Importance Sampling e stima del VaR per portafogli contenenti opzioni ..........................80
7.6
Campionatura uniforme..............................................................................................................83
7.6.1

Il Campionamento Stratificato ......................................................................................83

7.6.2

Il metodo dell’Ipercubo Latino .....................................................................................85

7.6.3
Le Sequenze a Bassa Discrepanza ................................................................................86
La sequenza di Halton ....................................................................................................................89
La sequenza di Faure ......................................................................................................................90
7.6.4
Metodi misti e decomposizione spettrale per problemi ad alta dimensionalità ..................91
7.7
Appendice A - Deduzione della formula (5.9) ...........................................................................92
BIBLIOGRAFIA........................................................................................................................... 97
1

Richiami di Teoria delle Probabilità
Possibile, ma non interessante – rispose
Lönnrot -. Lei dirà che la realtà non ha il
minimo obbligo di essere interessante. Io
replicherò che se la realtà può sottrarsi a
quest’obbligo, non possono sottrarvisi le
ipotesi.
Jorge Luis Borges, “La morte e la bussola”

1.1

Definizioni

In questo paragrafo passeremo in rassegna i concetti del Calcolo delle Probabilità e
della Teoria delle Distribuzioni. Naturalmente questa presentazione è ben lungi
dall’essere completa e vuol soltanto essere di sussidio al lettore raccogliendo in maniera
sintetica i principali strumenti indispensabili per la comprensione dei modelli di pricing
di prodotti derivati e, più in generale, dei modelli di simulazione stocastica utilizzati in
tale settore.
Ogni tentativo di dare una definizione rigorosa dei concetti probabilistici più elementari
si trova di fronte ad un problema; infatti, non solo esistono differenti formalizzazioni e
assiomatizzazioni della probabilità ma a queste corrispondono, in generale, molteplici
nozioni intuitive di probabilità spesso assai diverse fra loro. Con queste parole di
avviso iniziamo a definire i principali concetti della teoria delle probabilità rinviando il
lettore in cerca di formalizzazioni rigorose a testi specifici. Al di la delle differenze di
carattere formale un elemento comune posseduto da tutte le forme di probabilità
riguarda il suo significato intuitivo di valutazione della possibilità che un dato evento
possa accadere o meno. Sia nelle scienze naturali sia in quelle economiche si è soliti
assumere che un certo evento sia il risultato di un ipotetico esperimento intendendo con
questo termine l’insieme di tutte “le azioni e le condizioni ambientali che conducono al
determinarsi di un fatto1”. E’ un esperimento la misura di una grandezza fisica, il lancio
di un dado o di una moneta, il verificarsi o meno di un particolare stato di natura (es.
l’indice MIB30 supera il livello 50.000).
Indicheremo con ω un particolare stato di natura esito di un dato esperimento e con Ω
l’insieme di tutti gli stati possibili (spazio campione). Il concetto di evento é associato al
verificarsi di uno o più stati di natura, esso verrà pertanto rappresentato come
sottoinsieme di Ω. Lo spazio degli eventi, A, è quindi una famiglia di sottoinsiemi di Ω
caratterizzata dalle seguenti proprietà:
1. Ω ∈ A;
2. se l’evento ω ∈ F allora anche il suo complemento Ω - ω ∈ A;
3. se ωn ∈ A, allora

U

ωn ∈ A

n

1

O. Lessi “Corso di Probabilità”, pag. 21, Metria, 1993.
2 Introduzione al metodo Monte Carlo

Una famiglia di sottoinsiemi che soddisfa a queste proprietà viene chiamata σ-algebra.
Diremo quindi che A è una σ-algebra di Ω. Definiamo funzione di probabilità una
funzione P a valori reali che soddisfa le seguenti proprietà:
1. P(ω ) ≥ 0, ∀ω ∈ A ;
2. P(Ω) = 1 ;

∞
 ∞
3. P U ω n  = ∑ P (ω n )


 n =1  n =1
se gli ωn sono a due a due disgiunti cioè se ω i ∩ ω j = ∅ per ogni i ≠ j .
Osserviamo che una funzione di probabilità così definita è anche una misura. La terna
(Ω, A , P) viene detta spazio di probabilità.
Esempio 1.1 – Consideriamo il caso di un indice azionario, ad esempio il MIB30, il cui
valore in un dato intervallo di tempo possa solo aumentare o diminuire di una quantità
assegnata (naturalmente si tratta di una schematizzazione). Indicando con u l’evento
corrispondente all’aumento dell’indice e con d l’evento contrario, possiamo scrivere:
Ω = { u, d }
A = { Ω, ∅, { u}, { d }}
Esempio 1.2 – Anche se questi sono solo dei brevi richiami non possiamo non citare
l’esperimento aleatorio per antonomasia: il lancio di un dado. In questo caso lo spazio
campione è formato dall’insieme dei sei numeri che possono risultare dal lancio stesso
Ω = {1, 2, 3, 4, 5, 6}

Vediamo il significato di alcuni elementi di A: l’elemento ω1 = {1,2} corrisponde
all’evento “il numero risultante dal lancio è minore o uguale a 2”, ω 2 = {1,3,5}
corrisponde a “il numero risultante è dispari”, ω 3 = { 2,4,6} rappresenta l’evento “il
numero uscente è pari”.

1.2

Variabili Aleatorie e Funzioni di Distribuzione

Dato uno spazio di probabilità, una variabile aleatoria o casuale viene definita come
una funzione X : Ω → ℜ tale che per ogni numero reale r si abbia
{ ω ∈ Ω : X (ω ) ≤ r}∈ A. La funzione FX (x ) = P ( X ≤ x ) = P ({ ω ∈ Ω : X (ω ) ≤ x}) ,
definita sull’insieme dei numeri reali, viene detta funzione di distribuzione cumulata o,
più semplicemente, funzione di distribuzione.
Esempio 1.3 – Con riferimento all’Esempio 1.1 sia X una funzione così definita

X(u) = 0
Introduzione al metodo Monte Carlo 3

X(d) = 1
La funzione X è una variabile aleatoria in quanto

{ ω : X (ω ) ≤ r} = ∅
{ ω : X (ω ) ≤ r} = { a}
{ ω : X (ω ) ≤ r} = Ω

r<0
0 ≤ r <1
r ≤1

Esempio 1.4 – Supponiamo che la variabile definita nell’esempio precedente assuma il
valore 0 con probabilità p1 e 1 con probabilità p2 = 1 – p1. La funzione di distribuzione
di questa variabile è data da
x<0
0 :

FX ( x ) =  p1 : 0 ≤ x < 1
1 :
1≤ x


La funzione indicatrice di un evento A, IA, definita come
0 : ω ∉ A
I A (ω ) = 
1 : ω ∈ A

è un tipico esempio di funzione a due valori con p1 = P(A).
Una variabile aleatoria è detta discreta se l’insieme dei valori che può assumere è
numerabile. Sia (Ω, A , P) uno spazio di probabilità e X una variabile aleatoria discreta
che può assumere i valori x1 , x2 , K , x k , K Definiamo la funzione di probabilità come
 P( X = x ) : se x = xi , per qualche i = 1,2,....
f X ( x) = 
: altrimenti
0

(1.1)

La funzione di probabilità e la funzione di distribuzione sono legate dalla relazione:
FX ( x ) =

∑f

xi ≤ x

X

( xi )

(1.2)

Una variabile aleatoria X è detta continua se esiste una funzione reale fX tale che per
ogni x reale sia soddisfatta la relazione
x

FX ( x ) =

∫f

X

( y )dy

(1.3)

−∞

nei punti in cui la funzione di distribuzione è derivabile vale anche la relazione inversa
4 Introduzione al metodo Monte Carlo

f X ( x) =

dFX ( x )
dx

(1.4)

La funzione f(x) in questo caso viene detta funzione densità di probabilità (o
semplicemente funzione densità).

1.3

Momenti

Il valor medio o valore di aspettazione di X, che indicheremo con µ X , è definito come

µ X = E [ X ] = ∑ xi f X ( xi )

(1.5)

i

In generale si definisce momento dall’origine (o momento grezzo) di ordine r, e si
r
indica µ X , la media della variabile aleatoria Xr. La definizione è naturalmente
2
applicabile solo nel caso in cui tale media sia finita. La varianza di X, indicata con σ X ,
è la media degli scarti quadratici rispetto alla media µ X e rappresenta una misura di
dispersione di X. La sua radice quadrata è detta deviazione standard. La varianza è
definita da
2
σ X = ∑ ( xi − µ X )2 f X ( xi )

(1.6)

i

da cui è immediato ricavare
2
σ X = E [X 2 ] − (E [X ])2

(1.7)

Un ruolo molto importante è rivestito dalla cosiddetta funzione generatrice dei momenti:

[ ]

1
1


m X (t ) = E e tX = E 1 + Xt + ( Xt ) 2 + ( Xt ) 3 + K =
2
3!


1 2
1 i
= 1 + µX t + µX t2 + K = ∑ µX ti
2
i i!

(1.8)

dove abbiamo utilizzato lo sviluppo in serie della funzione esponenziale. E’
estremamente semplice verificare che
2
µX =

dr
mX
dt r

(1.9)
t =0

Si possono facilmente generalizzare al caso continuo i risultati per le distribuzioni
discrete, il valore di aspettazione sarà pertanto definito come
Introduzione al metodo Monte Carlo 5

+∞

E[ X ] =

∫ xf

X

(1.10)

( x )dx

−∞

in maniera analoga si generalizzano le definizioni di varianza e degli altri momenti. La
funzione generatrice dei momenti gode delle stesse proprietà del caso discreto.
Un problema che citiamo solo per completezza ma che non può essere affrontato in
questo testo è quello relativo alla stima dei parametri statistici. Nel seguito vedremo
alcune formule (presenteremo quelle impiegate da Excel) che permettono di stimare il
valore di uno o più momenti a partire da un campione di dati. Occorre sempre ricordare
che campioni diversi forniscono stime diverse del parametro di riferimento. La stima di
un parametro statistico non restituisce il valore esatto del parametro del campione,
quanto una variabile casuale, dotata di una propria distribuzione di probabilità: la
distribuzione di probabilità delle stime dei parametri è nota in statistica come
distribuzione campionaria. Ci limitiamo a ricordare che per avere stime non distorte è
necessario che il valore di aspettazione dello stimatore sia uguale al parametro stimato.
Excel dispone di numerose funzioni per l’analisi statistica dei dati (vedi Tabella 1.1).
Fra queste vi sono una serie di funzioni per il calcolo dei momenti che vale la pena
descrivere in maggior dettaglio.
Tabella 1.1 – Le funzioni statistiche di Excel

MEDIA.DEV
MEDIA
MEDIA.VALORI
DISTRIB.BETA
INV.BETA
DISTRIB.BINOM
DISTRIB.CHI
INV.CHI
TEST.CHI
CONFIDENZA
CORRELAZIONE
CONTA.NUMERI
CONTA.VALORI
COVARIANZA
CRIT.BINOM

Restituisce la media delle deviazioni assolute dei valori rispetto alla loro media
Restituisce la media degli argomenti
Restituisce la media degli argomenti, inclusi i numeri, il testo e i valori logici
Calcola la funzione densità di probabilità cumulativa beta
Calcola l'inverso della funzione densità di probabilità cumulativa beta
Restituisce la distribuzione binomiale per il termine individuale
Restituisce la probabilità ad una coda per la distribuzione del chi quadrato
Restituisce l'inverso della probabilità ad una coda per la distribuzione del chi quadrato
Restituisce il test per l'indipendenza
Restituisce l'intervallo di confidenza per la popolazione
Restituisce il coefficiente di correlazione tra due serie di dati
Conta la quantità di numeri nell'elenco di argomenti
Conta il numero di valori nell'elenco di argomenti
Calcola la covarianza, la media dei prodotti delle deviazioni accoppiate
Restituisce il più piccolo valore per il quale la distribuzione cumulativa binomiale risulta maggiore o uguale
ad un valore di criterio
DEV.Q
Restituisce la somma dei quadrati delle deviazioni
DISTRIB.EXP
Restituisce la distribuzione esponenziale
DISTRIB.F
Restituisce la distribuzione di probabilità F
INV.F
Restituisce l'inverso della distribuzione della probabilità F
FISHER
Restituisce la trasformazione di Fisher
INV.FISHER
Restituisce l'inverso della trasformazione di Fisher
PREVISIONE
Restituisce i valori lungo una tendenza lineare
FREQUENZA
Restituisce la distribuzione di frequenza come matrice verticale
TEST.F
Restituisce il risultato di un test F
DISTRIB.GAMMA Restituisce la distribuzione gamma
GAMMAINV
Restituisce l'inverso della distribuzione cumulativa gamma
LN.GAMMA
Restituisce il logaritmo naturale della funzione gamma, Γ(x)
MEDIA.GEOMETRICA
Restituisce la media geometrica
CRESCITA
Restituisce i valori lungo una linea di tendenza esponenziale
MEDIA.ARMONICA
Restituisce la media armonica
DISTRIB.IPERGEOM
Restituisce la distribuzione ipergeometrica
INTERCETTA
Restituisce l'intercetta della retta di regressione lineare
CURTOSI
Restituisce la curtosi di un insieme di dati
6 Introduzione al metodo Monte Carlo

GRANDE
REGR.LIN
REGR.LOG
INV.LOGNORM

Restituisce il k-esimo valore più grande in un insieme di dati
Restituisce i parametri di una tendenza lineare
Restituisce i parametri di una linea di tendenza esponenziale
Restituisce l'inverso di una distribuzione lognormale
DISTRIB.LOGNORM
Restituisce la distribuzione lognormale cumulativa
MAX
Restituisce il valore massimo in un elenco di argomenti
MAX.VALORI
Restituisce il valore massimo in un elenco di argomenti, inclusi i numeri, il testo e i valori logici
MEDIANA
Restituisce la mediana dei numeri specificati
MIN
Restituisce il valore minimo in un elenco di argomenti
MIN.VALORI
Restituisce il più piccolo valore in un elenco di argomenti, inclusi i numeri, il testo e i valori logici
MODA
Restituisce il valore più comune in un insieme di dati
DISTRIB.BINOM.NEG
Restituisce la distribuzione binomiale negativa
DISTRIB.NORM
Restituisce la distribuzione cumulativa normale
INV.NOR
Restituisce l'inverso della distribuzione cumulativa normale
DISTRIB.NORM.ST
Restituisce la distribuzione cumulativa normale standard
INV.NORM.ST
Restituisce l'inverso della distribuzione cumulativa normale standard
PEARSON
Restituisce il coefficiente del momento di correlazione di Pearson
PERCENTILE
Restituisce il k-esimo dato percentile di valori in un intervallo
PERCENT.RANGO Restituisce il rango di un valore in un insieme di dati come percentuale
PERMUTAZIONE Restituisce il numero delle permutazioni per un determinato numero di oggetti
POISSON
Restituisce la distribuzione di Poisson
PROBABILITÀ
Calcola la probabilità che dei valori in un intervallo siano compresi tra due limiti
QUARTILE
Restituisce il quartile di un insieme di dati
RANGO
Restituisce il rango di un numero in un elenco di numeri
RQ
Restituisce la radice quadrata del coefficiente di momento di correlazione di Pearson
ASIMMETRIA
Restituisce il grado di asimmetria di una distribuzione
PENDENZA
Restituisce la pendenza di una retta di regressione lineare
PICCOLO
Restituisce il k-esimo valore più piccolo in un insieme di dati
NORMALIZZA
Restituisce un valore normalizzato
DEV.ST
Restituisce una stima della deviazione standard sulla base di un campione
DEV.ST.VALORI Restituisce una stima della deviazione standard sulla base di un campione, inclusi i numeri, il testo e i valori
logici
DEV.ST.POP
Calcola la deviazione standard sulla base di un'intera popolazione
DEV.ST.POP.VALORI
Calcola la deviazione standard sulla base sull'intera popolazione, inclusi i numeri, il testo e i valori logici
ERR.STD.YX
Restituisce l'errore standard del valore previsto per y per ciascun valore x nella regressione
DISTRIB.T
Restituisce la distribuzione t di Student
INV.T
Restituisce l'inversa della distribuzione t di Student
TENDENZA
Restituisce i valori lungo una linea di tendenza lineare
MEDIA.TRONCATA
Restituisce la media della parte interna di un insieme di dati
TEST.T
Restituisce la probabilità associata ad un test t di Student
VAR
Stima la varianza sulla base di un campione
VAR.VALORI
Stima la varianza sulla base di un campione, inclusi i numeri, il testo e i valori logici
VAR.POP
Calcola la varianza sulla base dell'intera popolazione
VAR.POP.VALORI Calcola la varianza sulla base dell'intera popolazione, inclusi i numeri, il testo e i valori logici
WEIBULL
Restituisce la distribuzione di Weibull
TEST.Z
Restituisce il livello di significatività a due code per un test z

In pratica vengono comunemente utilizzati i primi quattro momenti:
• media
• varianza
• skewness (o asimmetria)
• curtosi
La funzione MEDIA()viene utilizzata per calcolare la media aritmetica di un insieme
di valori. L’argomento di questa funzione deve indicare il blocco di celle che contiene i
valori di cui calcolare il valor medio. Notate che le celle contenenti il valore 0 (zero)
saranno incluse nel calcolo della media mentre le celle vuote (senza alcun dato) restano
escluse da questo calcolo.
Introduzione al metodo Monte Carlo 7

La varianza può essere calcolata tramite la funzione VAR(). Anche questa funzione
prende come argomento il blocco di celle contenente i dati di cui si desidera stimare la
varianza. Lo stimatore utilizzato da Excel per il calcolo è il seguente
 n 
n ∑ x −  ∑ xi 
 i =1 
s = i =1
n( n − 1)
n

2

2
i

(1.11)

Il momento centrale di ordine 3 ci dà informazioni sul grado di asimmetria di una
distribuzione attorno alla sua media ed è comunemente indicato col termine skewness.
L'asimmetria positiva indica una distribuzione con una coda asimmetrica che si estende
verso i valori più positivi. L'asimmetria negativa indica una distribuzione con una coda
asimmetrica che si estende verso i valori più negativi. Excel mette a disposizione la
funzione ASIMMETRIA() che utilizza il seguente stimatore
n
n
x −x
∑ i s 
( n − 1)( n − 2) i =1 


3

(1.12)

in cui s è lo stimatore della standard deviation e x è il valor medio. Se esistono meno di
tre valori o se la deviazione standard sulla base di un campione è uguale a zero,
ASIMMETRIA() restituirà il valore di errore #DIV/0!. La relazione tra momento del
terzo ordine e coefficiente di asimmetria, solitamente indicato con

β1 =

µ3
σ3

β1 , è data da
(1.13)

Valori positivi dell’asimmetria indicano che la distribuzione è asimmetrica per valori
crescenti della variabile x (a destra) mentre un’asimmetria negativa sta ad indicare una
distribuzione asimmetrica a sinistra.
Infine CURTOSI() restituisce la curtosi, indicata con β 2 , di un insieme di dati. Essa è
legata al momento centrale di ordine 4 dalla relazione

β2 =

µ4
σ4

(1.14)

ed è caratteristica delle cosiddette “code grasse”. Lo stimatore utilizzato da Excel

riporta in realtà la cosiddetta “curtosi in eccesso” ovvero la differenza fra β 2 e 3.
Questo è dovuto al fatto che la distribuzione normale o gaussiana ha curtosi pari a 3 e
questo indicatore viene spesso utilizzato come indice per comprendere quando la
distribuzione di un insieme di dati si allontani dalla normalità.
8 Introduzione al metodo Monte Carlo

La formula utilizzata è
4
2
n

3(n − 1)
n( n + 1)
 xi − x  
 −


∑
 ( n − 1)( n − 2)( n − 3) i =1  s   ( n − 2)( n − 3)



(1.15)

in cui s è lo stimatore della standard deviation e x è il valor medio. Se sono presenti
meno di quattro dati o se la deviazione standard del campione è uguale a zero,
CURTOSI() restituirà il valore di errore #DIV/0!.

1.4

Distribuzioni Discrete

Vediamo ora alcune fra le più comuni funzioni di distribuzioni discrete. Il lettore può
seguire la nostra analisi utilizzando il file “Richiami di Statistica 1.xls”.
Distribuzione Uniforme

Sia X una variabile aleatoria che assume valori nel dominio dei numeri naturali 1, 2, ... ,
n. Diremo che tale variabile ha una distribuzione uniforme se risulta
1 n : x = 1,2, K , n
f X ( x ) = f X ( x, n ) = 
: altrimenti
0

(1.16)

Valor medio e varianza sono dati da:

E[ X ] =

1 n
( n + 1)n n + 1
∑ i = 2n = 2
n i =1

2
σ X = E [ X 2 ] − (E[ X ])2 =

1 n 2 ( n + 1) 2 n( n + 1)( 2n + 1) ( n + 1) 2 n 2 − 1
−
=
∑i − 4 =
6
4
12
n i =1

(1.17)

(1.18)

Distribuzione Binomiale

Dati n eventi indipendenti, tutti con uguale probabilità p, sia X la variabile casuale che
conta il numero totale di eventi che si verificano fra quelli possibili. X ha una
distribuzione binomiale con parametri n e p. La funzione di probabilità è
f X (i ) =

n!
p i (1 − p ) n −i
i! ( n − i )!

per i = 0, 1, 2, ..., n

(1.19)
Introduzione al metodo Monte Carlo 9

valor medio e varianza sono dati da
E [X ] = np

(1.20)

2
σ X = np(1 − p )

(1.21)

Figura 1.1 – Funzione di Probabilità e Distribuzione Cumulata Binomiale per il caso n = 6 e p = 0.5 (le due figure
differiscono solo nel formato grafico, il primo è quello predefinito prodotto da Excel tramite gli Strumenti di
analisi, il secondo è ottenuto modificando la distanza fra le barre come spiegato nel testo)

In Excel è possibile lavorare con la distribuzione binomiale tramite la funzione
DISTRIB.BINOM() la cui sintassi è la seguente:
DISTRIB.BINOM(num_successi; num_prove;probabilita_s;cumulativo)

dove num_successi è il numero di successi in num_prove indipendenti,
probabilita_s è la probabilità di successo per ciascuna prova e cumulativo è
un valore logico che determina la forma assunta dalla funzione. Se il valore cumulativo
è VERO, DISTRIB.BINOM restituirà la funzione distribuzione cumulata, ovvero la
probabilità che venga restituito un numero massimo di successi pari al valore di
num_successi. Se il valore cumulativo è FALSO, verrà restituita la funzione di
probabilità.
Esempio 1.5 - Il lancio di una moneta può produrre come risultato solo testa o croce.
La probabilità che il primo lancio sia testa è uguale a 0,5, mentre la probabilità che
esattamente sei lanci su dieci siano testa è espressa dalla formula:
DISTRIB.BINOM(6;10;0;5;FALSO)

che risulta pari a 0.205078
10 Introduzione al metodo Monte Carlo

Distribuzione di Poisson

Esistono numerosi eventi che accadono nel tempo con cadenza del tutto irregolare. Il
numero di telefonate in arrivo ad un centralino, il numero di clienti che si presentano
allo sportello di un ufficio, il numero di auto che giungono ad un casello autostradale
sono tutti chiari esempi di questo tipo di processi. Indichiamo con µ il numero medio di
occorrenze nell’unità di tempo e supponiamo che siano soddisfatte le seguenti proprietà:
1. La probabilità di avere esattamente un’occorrenza in un intervallo di tempo dt di
ampiezza trascurabile è µ dt a meno di infinitesimi di ordine superiore mentre la
probabilità di avere più di un’occorrenza è trascurabile;
2. I numeri di occorrenze in intervalli temporali disgiunti sono indipendenti.

Figura 1.2 – Funzione di Probabilità e Distribuzione Cumulata di Poisson per λ = 9

Consideriamo la variabile aleatoria X che rappresenta il numero di occorrenze in un dato
intervallo (0, t ) . Dividiamo l’intervallo in n sotto-intervalli di ampiezza t / n. La
probabilità di avere esattamente una occorrenza all’interno di uno di questi sottointervalli è per le ipotesi fatte pari a µ t / n; per la proprietà dell’indipendenza, e
ricordando la definizione della distribuzione binomiale, otteniamo che la probabilità di k
occorrenze è data da (a meno di infinitesimi di ordine superiore)
Introduzione al metodo Monte Carlo 11

k

 n   µt  
µt 
P ( X = k ) =     1 − 
k  n
n
   

n −k

n

=

n( n − 1) L ( n − k + 1)
µt   µt 

( µt ) k 1 −  1 − 
k
k! n
n 
n


−k

(1.22)

Supponiamo ora che n tenda all’infinito, per le ipotesi fatte la probabilità di occorrenza
all’interno di un intervallo µ dt tende a zero ma il prodotto nµ dt è pari ad una costante
λ = µ t, otteniamo così la cosiddetta distribuzione di Poisson
f X ( x ) = f X ( x; λ ) =

e − λx λ x
x!

con x = 0, 1, 2, ...

(1.23)

Per il calcolo del valor medio e della varianza ricorreremo alla funzione generatrice dei
momenti che, in questo caso, è data da
t
(e t λ ) k
= e λ ( e −1)
k!
k =1
∞

m X (t ) = e −λ ∑

(1.24)

da cui si ricava facilmente
t
dm X (t )
= λe λ ( e −1)+t
dt

(1.25)

t
d 2 m X (t )
= λe λ ( e −1) + t ( λe t + 1)
2
dt

(1.26)

e quindi
E [X ] =

[ ]

EX

2

dm X (0)
=λ
dt

d 2 m X ( 0)
=
= λ ( λ + 1)
dt 2

(1.27)

(1.28)

La varianza è pertanto pari a

[ ]

E X 2 − (E [X ]) = λ ( λ + 1) − λ2 = λ
2

(1.29)

La media e la varianza di una distribuzione di Poisson coincidono e sono entrambe pari
al parametro λ.
In Excel è disponibile la funzione POISSON la cui sintassi è
POISSON(x;media;cumulativo)
12 Introduzione al metodo Monte Carlo

dove x è il numero degli eventi, media è il valore numerico previsto e, come al solito,
cumulativo è un valore logico che determina la forma per la distribuzione di
probabilità. Se cumulativo è VERO, POISSON restituirà la probabilità cumula di
Poisson indicante la probabilità che il numero degli eventi casuali sia compreso tra zero
e x inclusi. Se cumulativo è FALSO, verrà restituita la funzione di probabilità di
Poisson indicante la probabilità che il numero di eventi sia esattamente uguale a x.

Distribuzioni Continue

1.5

Distribuzione Uniforme

Diremo che una variabile aleatoria X è uniformemente distribuita nell’intervallo reale
[a, b] se la sua funzione di distribuzione cumulata è data da
0
x −a
FX ( x ) = 
b − a
1

se x < a
se a ≤ x ≤ b

(1.30)

se x > b

a cui corrisponde una funzione densità di probabilità data da
0
 1
f X ( x) = 
b − a
0

se x < a
se a ≤ x ≤ b

(1.31)

se x > b

La funzione generatrice dei momenti, il valore di aspettazione e la varianza sono
semplicemente calcolabili
b

m X (t ) = ∫ e tx
a

1
e bt − e at
dx =
( b − a )t
b−a

(1.32)

b

b+a
x
dx =
b−a
2
a

E[ X ] = ∫

(1.33)

(b − a )
x2
b+a
dx − 
 =
b−a
12
 2 
a
b

2
σ X = E[ X 2 ] − (E[ X ])2 = ∫

2

2

(1.34)

Come vedremo la distribuzione uniforme gioca un ruolo particolarmente importante nei
metodi di simulazione in quando per generare le diverse distribuzioni si parte
usualmente da generatori di variabili casuali uniformi. Excel mette a disposizione la
funzione CASUALE() che restituisce un numero aleatorio distribuito in maniera
uniforme nell’intervallo [0, 1) (si noti che i numeri prodotti sono strettamente minori di
Introduzione al metodo Monte Carlo 13

1). Ogni volta che si effettua un calcolo nel foglio di lavoro viene restituito un nuovo
numero casuale. Se si desidera utilizzare CASUALE per creare un numero casuale senza
che i numeri vengano modificati ogni volta che si esegue il calcolo della cella, è
possibile immettere = CASUALE() nella barra della formula e premere F9 per
convertire la formula in un numero casuale. Per creare un numero reale casuale
compreso tra a e b, occorre inserire la formula seguente:
= CASUALE()*(b - a) + a

Sebbene le informazioni derivanti dai momenti forniscano essenziali dettagli su un
insieme di dati, spesso è più comodo rappresentare questi ultimi in modo da illustrare
come i valori sono distribuiti all’interno del loro dominio. Un tipo di rappresentazione
che si presta particolarmente bene a questo tipo di indagine è il cosiddetto istogramma o
diagramma delle frequenze relative. Il primo passo per la creazione di un istogramma è
la suddivisione dell’insieme dei dati in una serie di intervalli adiacenti della stessa
ampiezza (questi intervalli sono anche chiamati Intervalli delle classi). Il
primo intervallo deve iniziare da un valore minore o uguale al minimo valore presente
nell’insieme dei dati e l’ultimo intervallo deve, ovviamente, estendersi oltre il limite
superiore dei valori dell’insieme stesso. In Excel gli istogrammi possono essere costruiti
molto facilmente utilizzando la funzione Istogramma del pacchetto degli
Strumenti di Analisi. Per installare questi strumenti, selezionate
Componenti Aggiuntivi dal menu Strumenti; nella finestra di dialogo che
viene aperta selezionate le caselle Strumenti di Analisi e Strumenti di
Analisi VBA (vedi Figura 1.3). Utilizzeremo un istogramma per analizzare il
generatore di numeri casuali di Excel. Se la serie dei numeri casuali è realmente
distribuita uniformemente si avrà un numero pressoché uguale di numeri “casuali” in
ognuno degli intervalli. Aprite una cartella di lavoro e nella cella A1 inserite la formula
= CASUALE(), premete INVIO e vedrete apparire nella cella stessa un numero reale
compreso fra 0 e 1. In un’altra riga è necessario introdurre gli estremi superiori degli
intervalli delle classi, l’ultimo intervallo viene considerato aperto nel senso che può
contenere tutti i valori che superano il limite massimo. Copiate la formula nelle prime
1000 righe del foglio di lavoro e definite gli intervalli delle classi in modo da
suddividere l’intervallo [0,1] in 25 classi equispaziate e adiacenti (vedi Figura 1.4).
Notate che nella definizione degli intervalli delle classi è necessario introdurre soltanto
l’estremo superiore dell’intervallo, per cui nel primo cadranno tutte le occorrenze
comprese fra 0 e 0.04, nel secondo quelle comprese fra 0.04 e 0.08 e così via.
A questo punto selezionate Analisi Dati dal menu Strumenti (Figura 1.5).
Scegliete la voce Istogramma ed inserite le informazioni richieste nella finestra
dialogo risultante (Figura 1.6). In particolare è necessario specificare i blocchi di celle
che contengono i dati (casella Intervallo di input) e gli estremi degli intervalli
(casella Intervallo della classe). Le due caselle di input sono degli oggetti
di tipo RefEdit. Il controllo RefEdit è uno strumento estremamente interessante
per i programmatori in Visual Basic per Excel per cui vale la pena spendere due parole
di descrizione.
14 Introduzione al metodo Monte Carlo

Figura 1.3 – La casella dei componenti aggiuntivi

Figura 1.4 – Valori della variabile aleatoria (colonna A) e classi dell’istogramma (colonna B)

Questo controllo permette all’utente di inserire un riferimento ad una o più celle
utilizzando il mouse. Quando l’utente preme il pulsante alla destra del componente
RefEdit, la finestra viene nascosta e ne appare un’altra che permette di accedere al
foglio e selezionare una cella o un insieme di celle: i riferimenti di tale selezione
vengono copiati nella nuova finestra. Al termine di questa operazione l’utente deve
premere INVIO o premere di nuovo il pulsante della casella, la finestra temporanea di
Introduzione al metodo Monte Carlo 15

input si chiude ripristinando quella originaria. All’interno del controllo RefEdit che
era stato attivato compariranno così i riferimenti scelti dall’utente.

Figura 1.5 – La finestra di dialogo Analisi Dati

Figura 1.6 – La finestra di dialogo per la costruzione di un istogramma

Se l’istogramma deve essere inserito nel foglio corrente attivate l’opzione
Intervallo di output e digitate l’indirizzo della cella dell’angolo superiore
sinistro del blocco che dovrà contenere i dati di output. Dopo aver specificato le
informazioni richieste premete il pulsante OK ed Excel creerà automaticamente la
tabella delle frequenze. I valori presenti in questa colonna sono numeri interi, possiamo
creare una colonna delle frequenze relative dividendo questi valori per il numero totale
di dati. Qualora si voglia ottenere il grafico occorre anche selezionare la casella
Grafico in output (vedi FIgura 1.7). Prestate attenzione al fatto che le etichette
numeriche rappresentate sotto ogni intervallo nel grafico corrispondono ai limiti
superiori degli intervalli e non agli intervalli stessi. Inoltre poiché le barre verticali
dell’istogramma corrispondono ad intervalli contigui può essere meglio scegliere una
rappresentazione grafica in cui le barre siano disposte una accanto all’altra senza spazi
intermedi. Per apportare questa modifica è sufficiente fare clic con il tasto destro del
mouse su una barra verticale qualsiasi del grafico e scegliere Serie dei dati
selezionati/Opzioni dal menu Formato; impostate a 0 il campo Distanza
fra le barre. L’utilizzo di uno strumento di analisi come l’istogramma è
16 Introduzione al metodo Monte Carlo

estremamente utile in vari contesti per cui può essere comodo disporre del codice VBA
per gestirlo da programma. Per questo risulta di grande utilità il registratore di macro
che abbiamo presentato nel primo capitolo. Nel seguente riquadro trovate il codice
prodotto automaticamente dal registratore all’interno di una macro realizzata durante la
creazione di un istogramma.
Application.Run "ATPVBAEN.XLA!Histogram", ActiveSheet.Range("$A$1:$B$1000") _
, ActiveSheet.Range("$D$1"), ActiveSheet.Range("$B$1:$B$25"), False, False _
, True, False

Figura 1.7 – Istogramma ottenuto generando 1000 numeri casuali col generatore di Excel

I dati sono quelli dell’esempio riportato in Figura 1.7. Prima di tutto osserviamo che
questo comando è in realtà una chiamata ad una funzione, precisamente al metodo Run
dell’oggetto Application che corrisponde ad Excel. Il metodo Run esegue una
macro o richiama una funzione e può essere utilizzato per eseguire una macro scritta in
linguaggio Visual Basic, segue una lista di argomenti di cui tipicamente il primo
rappresenta il nome della funzione da eseguire mentre gli altri rappresentano i parametri
da passare alla funzione. Selezionando gli strumenti di analisi vengono caricate due
aggiunte di Excel che contengono i riferimenti necessari per poter utilizzare da VB le
rispettive funzionalità. In uno di questi, ATPVBAEN.XLA, è presente la subroutine
Histogram che permette la realizzazione di un istogramma; si noti che per lanciare
una qualunque macro presente in un aggiunta occorre far precedere il nome della macro
dal nome del file in cui essa si trova separato dal simbolo “!”. I parametri successivi
sono relativi a tre intervalli di celle e a quattro variabili logiche che caratterizzano
altrettante opzioni. I parametri di tipo Range hanno il seguente significato:
Introduzione al metodo Monte Carlo 17

1. intevallo di input dei dati;
2. intervallo di output della tabella delle frequenze (notate che è sufficiente in
questo caso indicare la cella corrispondente all’angolo superiore sinistro del
range);
3. intervalli delle classi.
Le quattro variabili logiche corrispondono alle opzioni che è possibile selezionare dalla
finestra di dialogo dell’istogramma (se le variabili vengono impostate al valore VERO la
corrispondente opzione risulta selezionata):
1.
2.
3.
4.

opzione Pareto (istogramma ordinato);
opzione percentuale cumulativa;
opzione grafico in output;
indica se le prime righe dei blocchi di dati in input contengono delle etichette.

Se provate a registrare alcune macro selezionando diverse modalità di presentazione dei
risultati in output troverete che quando l’intervallo di output viene posto uguale a “”
(stringa vuota) la tabella delle frequenze (ed eventualmente il grafico) vengono riportati
su un nuovo foglio di lavoro della stessa cartella. Se scegliete di riportare i risultati
dell’istogramma su una nuova cartella di lavoro il parametro relativo all’intervallo di
output viene invece omesso del tutto. Nel riquadro seguente abbiamo riportato il codice
di una semplice subroutine che, a partire dal codice prodotto dal registratore di macro,
permette di gestire completamente da VBA la realizzazione di un istogramma.
Sub Istogramma(ClassRange As String, _
InputRange As String, _
Optional OutputRange As Variant, _
Optional flgPareto As Boolean = False, _
Optional flgCumulata As Boolean = False, _
Optional flgGrafico As Boolean = False, _
Optional flgEtichette As Boolean = False)
If IsMissing(OutputRange) Then
Application.Run "ATPVBAEN.XLA!Histogram", ActiveSheet.Range(InputRange) _
, , ActiveSheet.Range(ClassRange), _
flgPareto, flgCumulata, flgGrafico, flgEtichette
ElseIf Len(OutputRange) = 0 Then
Application.Run "ATPVBAEN.XLA!Histogram", ActiveSheet.Range(InputRange) _
, "", ActiveSheet.Range(ClassRange), _
flgPareto, flgCumulata, flgGrafico, flgEtichette
Else
Application.Run "ATPVBAEN.XLA!Histogram", ActiveSheet.Range(InputRange) _
, ActiveSheet.Range(OutputRange), ActiveSheet.Range(ClassRange) _
, flgPareto, flgCumulata, flgGrafico, flgEtichette
End If
End Sub

Si noti che tutti i parametri tranne i primi due sono opzionali; inoltre, poiché dobbiamo
essere in grado di controllare se il parametro OutputRange viene passato o meno alla
procedura tramite la funzione IsMissing(), è necessario definirlo di tipo Variant.
Per evitare che ogni operazione condotta sul foglio produca il ricalcolo dell’intera
18 Introduzione al metodo Monte Carlo

colonna di numeri casuali, abbiate cura di deselezionare l’opzione calcolo automatico
tramite la voce Opzioni del menu Strumenti (vedi Figura 1.8).

Figura 1.8 – La finestra Opzioni attivabile dal menu Strumenti

Nel file “Richiami di Statistica 2.xls” l’opzione calcolo manuale viene
attivata automaticamente non appena si carica il file stesso utilizzando il metodo Open
dell’oggetto Workbook. Il codice relativo è riportato nel riquadro seguente e non
richiede particolari commenti.
Private Sub Workbook_Open()
Application.Calculation = xlManual
End Sub

Nel file citato il lettore troverà un’applicazione del codice sopra discusso sia per la
distribuzione uniforme, sia per la distribuzione normale che adesso andremo a discutere.
Distribuzione Normale

Una delle funzioni più importanti, sia nella teoria sia nella pratica, è la distribuzione
normale o gaussiana la cui funzione densità è data da:
−
1
f X ( x ) = f X ( x; µ , σ ) =
e
σ 2π

( x − µ )2
2σ 2

(1.35)

dove i parametri µ e σ sono rispettivamente la media e la deviazione standard.
L’espressione della funzione generatrice dei momenti è
Introduzione al metodo Monte Carlo 19

[ ] = e E [e

m X (t ) = E e

tµ

tX

t ( X −µ )

]

+∞

−
1
e t ( x−µ ) e
=e ∫
− ∞σ 2π
tµ

+∞

−
1
e ∫
e
− ∞σ 2π
tµ

e

tµ +

σ 2t 2 + ∞
2

( x − µ )2
2σ 2

dx =

( x − µ ) 2 − 2σ 2t ( x − µ )
2σ 2

−
1
e
∫
− ∞σ 2π

( x − µ −σ 2t ) 2
2σ 2

dx =

(1.36)

dx

D’altra parte l’ultimo integrale è uguale ad 1 (si tratta infatti dell’integrale su tutto il
dominio di una funzione gaussiana) per cui possiamo scrivere:
m X (t ) = e

tµ +

σ 2t 2
2

(1.37)

Lasciamo al lettore verificare, utilizzando la funzione generatrice dei momenti, che
effettivamente i parametri µ e σ 2 sono rispettivamente la media e la varianza della
distribuzione. Una variabile aleatoria viene detta distribuita secondo una normale
standard se la media è 0 e la standard deviation è 1. Nel corso del testo utilizzeremo
anche una notazione abbastanza diffusa tramite la quale si indica che una generica
variabile aleatoria X è distribuita come una normale con media µ e varianza σ 2: X
~ N (µ,σ ) .

Figura 1.9 – Densità di Probabilità e Distribuzione Cumulata Normale (µ = 4, σ = 0.5)
20 Introduzione al metodo Monte Carlo

Per l’analisi di distribuzioni gaussiane Excel mette a disposizione due funzioni: una per
la distribuzione generica e l’altra specializzata al caso della normale standard.
DISTRIB.NORM(). Restituisce la distribuzione normale con media e distribuzione
standard specificate. La sintassi è la seguente
DISTRIB.NORM(x;media;dev_standard;cumulativo)

dove x è il valore per il quale si desidera la distribuzione, media è la media della
distribuzione, dev_standard è la deviazione standard e cumulativo è un valore
logico che determina la forma assunta dalla funzione. Se cumulativo è VERO,
DISTRIB.NORM restituirà la funzione di distribuzione cumulata, se è FALSO restituirà
la funzione densità di probabilità.
DISTRIB.NORM.ST(). Restituisce la funzione di distribuzione normale standard. La
distribuzione ha una media uguale a 0 e una deviazione standard uguale a 1 Sintassi:
DISTRIB.NORM.ST(z)

essendo z il valore per il quale si desidera la distribuzione.
Distribuzione LogNormale

Sia X una variabile aleatoria con distribuzione normale, allora la variabile Y = eX
definisce una variabile aleatoria con distribuita in maniera log-normale. Se la variabile
X ha media µ e standard deviation σ, allora la funzione densità di probabilità di z è data
da
f Z ( z) =

1
zσ 2π

e

−

1
2σ 2

(ln z − µ )2

(1.38)

con z ≥ 0 . La media e la varianza della variabile Z possono essere espresse in funzione
dei corrispondenti momenti di X tramite le relazioni
E[ Z ] = e

1
2

µ+ σ 2

2

(

(1.39)
2

)

2
σ Z = e 2 µ +σ eσ − 1 = e 2 µ ω (ω − 1)

(1.40)

avendo posto ω = exp(σ 2 ) ≥ 1 . I fattori di asimmetria e curtosi sono dati
rispettivamente da
Introduzione al metodo Monte Carlo 21

β1 = (ω − 1)1 / 2 (ω + 2 )

(1.41)

β 2 = ω 4 + 2ω 3 + 3ω 2 − 3

(1.42)

Notate che per valori di σ non nulli, sia l’asimmetria è sempre maggiore di zero e la
curtosi è sempre maggiore di 3. Questo vuol dire che la distribuzione log-normale è
sempre asimmetrica a destra e leptocurtica.

Figura 1.10 – Densità di Probabilità e Distribuzione Cumulata Lognormale

Nel grafico riportato in Figura 1.10 sono disegnati gli andamenti delle funzioni di
densità e cumulata. Per quest’ultima è stata utilizzata la funzione Excel
DISTRIB.LOGNORM() la cui sintassi è la seguente
DISTRIB.LOGNORM(x;media;dev_standard)
dove la media e la standard deviation sono relative al logaritmo di x. La funzione Excel
in questo caso restituisce solo la distribuzione cumulata.
Distribuzione Gamma

Infine un breve cenno alla distribuzione Gamma che è utilizzata nella teoria della
struttura a termine dei tassi di interesse. Questa funzione viene utilizzata in generale
nello studio di variabili aleatorie con distribuzione asimmetrica e nell’analisi delle code.
L’espressione della funzione densità di probabilità è:
22 Introduzione al metodo Monte Carlo

f X (α , β ) =

1
x α −1e − x / β
β Γ(α )
α

(1.43)

essendo
∞

Γ(z ) = ∫ t z −1e −t dt

(1.44)

0

In Excel è disponibile la funzione DISTRIB.GAMMA()la cui sintassi è la seguente
DISTRIB.GAMMA(x;alfa;beta;cumulativo)

in cui alfa e beta sono i parametri della distribuzione e cumulativo è, come al
solito, un parametro logico che indica se si desidera calcolare la densità di probabilità o
la distribuzione cumulata. La distribuzione Gamma è definita solo per valori positivi
della x e strettamente positivi dei parametri alfa e beta.

Figura 1.11 – Densità di Probabilità e Distribuzione Cumulata Gamma
Introduzione al metodo Monte Carlo 23

1.6

Covarianza e Correlazione

Date due variabili aleatorie X ed Y con varianza finita, si definisce covarianza la
quantità definita da

σ XY = Cov( X , Y ) = E[ XY ] − E[ X ]E[Y ]

(1.45)

Se la covarianza è nulla le due variabili si dicono non correlate. Solitamente viene
introdotto un coefficiente di correlazione definito come

ρ XY =

σ XY
σ Xσ Y

(1.46)

I cui valori massimi e minimi dipendono dal tipo di distribuzione considerata 2. Due
variabili si dicono indipendenti se la funzione di distribuzione congiunta FXY(x, y)3 è
fattorizzabile nel prodotto delle marginali FX(x)FY(Y). Due variabili indipendendi con
varianza finita sono anche non correlate ma non è vero il viceversa.
La funzione COVARIANZA() di Excel ha la seguente sintassi
COVARIANZA(matrice1; matrice2)

dove matrice1 e matrice2 rappresentano due intervalli di celle contenenti le serie di cui
si vuole valutare la covarianza. Date due variabili aleatorie X ed Y, questa funzione
utilizza lo stimatore
1 n
∑ ( xi − µ X )( yi − µY )
n i =1

(1.47)

essendo le medie rispettivamente di X e Y. E’ possibile inoltre calcolare direttamente il
coefficiente di correlazione tramite la funzione corrispondente di Excel.

1.7

Che cos’è un Processo Stocastico

Consideriamo una successione discreta di istanti di tempo t1 < t 2 < K < t n . In generale
possiamo descrivere il comportamento di un sistema che evolve nel tempo in maniera
2

E’ consuetudine (errata!) ritenere che l’indice di correlazione sopra definito abbia come dominio di variazione l’intervallo chiuso
[-1,1]. In realtà ciò non è vero! Il dominio dell’indice di correlazione lineare è sicuramente contenuto nel precedente intervallo ma i
valori massimo e minimo che ρ può assumere dipendono dalle distribuzioni di probabilità delle due variabili aleatorie X ed Y. Una
descrizione esauriente di questo risultato è al di là degli scopi di questo libro, il lettore interessato è rinviato all’articolo di
Embrechts et. al. citato in bibliografica.
3
Il significato da attribuire alla funzione di distribuzione congiunta di due o più variabili è analogo a quello visto per il caso
univariato FXY ( x, y ) = P ( X ≤ x e Y ≤ y ) . Rinviamo ai testi di statistica citati in bibliografia per la definizione delle distribuzioni
marginali.
24 Introduzione al metodo Monte Carlo

imprevedibile tramite una corrispondente sequenza di variabili aleatorie X1, X2, ..., Xn.
Parleremo in questo caso di processo stocastico discreto. Naturalmente possiamo anche
definire processi stocastici nel tempo continuo sia su un dominio finito, come ad
esempio [0, 1], sia su un dominio infinito, ad esempio [0, ∞). Da un punto di vista
formale consideriamo uno spazio di probabilità (Ω, A , P) e un insieme non vuoto, T, i
cui elementi sono gli istanti che vengono presi in considerazione. Definiamo processo
stocastico X = {X (t ) : t ∈ T } una funzione di due variabili X : T × Ω → R tale che
X (t ) = X (t , .) è una variabile aleatoria per ogni t ∈ T . X (. , ω ) : T → R viene chiamata
realizzazione o traiettoria del processo stocastico considerato. Ogni realizzazione in
pratica non è altro che un’osservazione dell’evoluzione temporale della quantità
descritta dal processo.

Figura 1.12 – Due diverse realizzazioni di un processo stocastico

La simulazione di un processo stocastico è dunque legata alla possibilità di generare
successioni di numeri casuali. Una domanda sorge tuttavia spontanea: come può un
elaboratore, macchina totalmente deterministica, generare numeri casuali e quindi per
loro natura non deterministici? La risposta è molto semplice: non può! Qualunque
sequenza di numeri prodotta da un computer viene sempre generata per mezzo di
qualche algoritmo per cui non si può parlare di casualità essendo la sequenza
predeterminata. Come vedremo nei prossimi capitoli, in compenso, con un computer si
possono generare sequenze di numeri che sembrano casuali.
2

La Simulazione Monte Carlo
La ricerca nel campo della fisica ha
dimostrato in modo lampante che, almeno
nella stragrande maggioranza dei fenomeni
naturali la cui regolarità e invariabilità ha
condotto alla formulazione del postulato
della causalità generale, è il caso la radice
comune della stretta rispondenza alle leggi
riscontrata.
Erwin Schroedinger “Che cos’è una legge
fisica”, 1922

Da un punto di vista del tutto generale con il termine Monte Carlo si intende una tecnica
numerica che faccia uso di numeri casuali per risolvere un problema. Per il momento
assumiamo che il lettore comprenda, per lo meno a livello intuitivo, che cosa sia un
numero casuale. Più avanti avremo modo di ritornare sulla definizione di numero
casuale e, come vedremo, questo porterà a delle questioni tutt’altro che banali.
Storicamente la prima applicazione su larga scala di metodi computazionali basati
sull'uso di numeri casuali furono gli studi di diffusione ed assorbimento di neutroni (una
particella elementare che compone il nucleo atomico) in vari tipi di materiale
nell'ambito del progetto per la realizzazione della prima bomba atomica. Prima di
passare ad alcuni esempi pratici, cerchiamo di dare una definizione formalmente più
precisa.
Il metodo Monte Carlo consiste nel rappresentare la soluzione di un problema come
parametro di un’ipotetica popolazione ed usare una sequenza di numeri casuali per
costruire un campione della popolazione dal quale possano essere estratte stime
statistiche del parametro.

E’ opportuno soffermarsi sulla natura dei problemi che è possibile affrontare con il
metodo Monte Carlo. Semplificando al massimo la questione, è possibile dividere tali
problemi in due grandi categorie
Problemi di natura intrinsecamente probabilistica in cui sono
coinvolti fenomeni legati alla fluttuazione stocastica di variabili
aleatorie. Due problemi tipici che rientrano in questa categoria sono il
pricing di un’opzione e la stima del VaR di un portafoglio.
Problemi di natura essenzialmente deterministica, del tutto privi
cioè di componenti aleatorie, ma la cui strategia di soluzione può essere
riformulata in modo tale da risultare equivalente alla determinazione del
valore di aspettazione di una funzione di variabili stocastiche.

Nel caso di un problema del primo tipo è possibile stabilire una corrispondenza diretta
fra popolazione simulata e popolazione studiata. Tali applicazioni sono dette
26 Introduzione al metodo Monte Carlo

simulazioni dirette. Nel secondo caso la formulazione del problema può essere tale da
rendere l’applicazione del metodo Monte Carlo poco evidente soprattutto se il problema
in esame è intrinsecamente analitico. Vediamo subito un esempio pratico. Con
riferimento alla fig. 2.1 consideriamo dapprima dei problemi di natura probabilistica (la
valutazione del premio per un’opzione di tipo europeo scritta su un titolo azionario che
non paga dividendi e la determinazione del VaR) ed un problema di natura prettamente
deterministica come la determinazione dell’area racchiusa da una figura piana, ad
esempio un cerchio.
Cominciamo dal primo problema. Il pricing di un’opzione è affrontato usualmente nel
contesto della cosiddetta valutazione neutrale rispetto al rischio. Indicando con fT il
valore dell’opzione stessa alla scadenza T, il valore ad oggi, f, sarà dato da

[

ˆ
f = E fT e − r T

]

(2.1)

essendo Ê il valore di aspettazione risk-neutral ed r il valore medio fra t = 0 e t = T del
tasso privo di rischio. Qualora si assuma di conoscere con certezza il valore di r il
problema può essere semplificato e la (2.1) diventa
ˆ
f = e − r T E [ fT ]

(2.2)

La formulazione del problema rende evidente la sua natura intrinsecamente
probabilistica. L’applicazione del metodo Monte Carlo nel caso in esame si riduce
essenzialmente alla generazione di un numero sufficientemente elevato di stime di fT da
cui estrarre il valore medio. A tal fine è necessario innanzi tutto introdurre un’ipotesi sul
modo in cui il prezzo del titolo sottostante si evolve nel tempo; l’assunzione più comune
è che il prezzo dell’azione segua un moto geometrico browniano. Secondo questa
ipotesi il tasso di variazione del prezzo in un intervallo di tempo infinitesimo è descritto
da
dS = µSdt + σSdz

(2.3)

dove µ è il tasso di rendimento atteso e σ è la volatilità del prezzo dell’azione. La
simulazione viene condotta dividendo l’intervallo di vita del derivato in N intervalli
ciascuno di ampiezza ∆t. Si può dimostrare che la versione discreta della (2.3) è data da
∆S = µS∆t + σSε ∆t

(2.4)

dove ∆S è la variazione di prezzo nell’intervallo ∆t ed ε è un numero casuale estratto da
una distribuzione normale (supponiamo per il momento di avere una qualche procedura
che ci permetta di generare numeri casuali con distribuzione di probabilità assegnata). I
valori di µ e σ possono essere stimati da un’analisi delle serie storiche dei prezzi per il
titolo sottostante l’opzione. A questo punto siamo in grado di calcolare i valori assunti
da ∆S (e quindi da S) agli istanti 0, ∆t, 2∆t, ….fino alla scadenza T. Si noti che il
Introduzione al metodo Monte Carlo 27

processo di simulazione richiede la generazione di N numeri casuali indipendenti
normalmente distribuiti. Una volta simulato il valore del titolo sottostante al tempo T
siamo in grado di ricavare il valore dell’opzione alla stessa data. Supponendo che
l’opzione sia di tipo call avremo semplicemente
fT = max(ST − K ,0)

(2.5)

essendo K lo strike price. Ripetendo la procedura appena descritta un numero molto
elevato di volte siamo in grado di ottenere una distribuzione di valori per fT dalla quale
è possibile estrarre il valore di aspettazione che compare nella (2.2).
Lo stesso problema può essere risolto con tecniche analitiche sia tipo numerico, come
l’approccio basato sull’uso di alberi binomiali, sia ricercando, laddove le ipotesi non
siano troppo restrittive per un uso pratico, una soluzione esatta come avviene nel caso
dell’analisi svolta da Black e Scholes che in un lavoro ormai storico hanno ricavato una
formula chiusa per il pricing di opzioni europee.
Restando all’interno del primo tipo di problematiche vediamo come formalizzare il
problema del VaR di un portafoglio in maniera adatta all’utilizzo di tecniche Monte
Carlo. Supponiamo che il valore corrente del portafoglio sia V(t), sia ∆t il periodo di
tempo su cui intendiamo stimare il VaR e infine V (t + ∆t ) indichi il valore del portafoglio
al termine di questo periodo. La perdita di valore del portafoglio nel periodo considerato
è pari a L = ∆V = V (t + ∆ ) − V (t ) e il VaR, xp, associato ad un certo livello di probabilità p
è definito dalla relazione
(2.6)

P( L > x p ) = p
PROBLEMA

FORMULAZIONE

VALUTAZIONE DEL
PREZZO DI UN’OPZIONE
(PROBABILISTICO)

Simulazione
diretta

TIPO A

(STATISTICO)

SOLUZIONE

Numeri
casuali

ESTRATTA DAL
CAMPIONE

(APPROSSIMATA)

Metodi di
valutazione
NUMERICA

Ad esempio:
Alberi Binomiali
Integrazione numerica

“Crude”
Monte Carlo
CALCOLO DELL’AREA DI
UN CERCHIO
(DETERMINISTICO)

TIPO B

geometria

(ANALITICO)
Ad esempio:
Formula di Black & Scholes
S = πR2

ESATTA

Figura 2.1
28 Introduzione al metodo Monte Carlo

Per valutare tale probabilità col metodo Monte Carlo possiamo simulare una serie di
valori per tutti i fattori di rischio cui è sensibile il portafoglio. La rivalutazione del
portafoglio per ogni serie di nuovi valori dei fattori di rischio viene ripetuta un numero
sufficientemente elevato di volte al fine di ottenere una distribuzione significativa della
perdita. Dalla distribuzione ottenuta si risale così al VaR come percentile al livello di
probabilità predefinito.

Figura 2.2 – Il calcolo di Pi greco.

Vediamo infine il problema di tipo geometrico che, al di là dell’ovvia banalità della
soluzione analitica, non sembra presentare alcuna relazione con l’utilizzo di sequenze di
numeri casuali. Consideriamo per semplicità un cerchio di raggio unitario di area pari a
π. Poniamoci ora sotto una prospettiva leggermente diversa da quella usuale ed
osserviamo che l’area di questo cerchio può essere misurata stimando la probabilità che
un punto scelto a caso all’interno di un quadrato di lato pari a 2 cada all’interno del
cerchio inscritto in esso.
Con riferimento alla figura 2.2 (dove per semplicità ci siamo limitati alla considerazione
del primo quadrante in un sistema di assi coordinati con origine nel centro del cerchio)
la procedura per la determinazione del valore di π può essere descritta come segue:
1. si estraggono due numeri casuali, indipendenti, uniformemente distribuiti
nell’intervallo [0,1]. Questa coppia di numeri rappresenta le coordinate di un
punto del piano appartenente al quadrato di lato unitario;
2. si determina la distanza del punto così generato dall’origine degli assi, se tale
distanza è minore o uguale a 1 il punto cade all’interno della superficie del
cerchio altrimenti no;
3. si ripete la procedura sopra descritta un numero N di volte e si misura il rapporto
fra il numero dei casi in cui il punto cade all’interno del cerchio, Nacc, e N stesso,
questo rapporto rappresenta una stima della probabilità che un punto con
coordinate scelte a caso cada all’interno del cerchio, tale probabilità è
chiaramente uguale al rapporto fra l’area del quadrante del cerchio e quella del
quadrato unitario quindi si ha
π =4

N acc
N
Introduzione al metodo Monte Carlo 29

Non c’è bisogno di dire che nessuno di noi stimerebbe l’area di un cerchio con questa
procedura, tuttavia problemi di natura analitica meno banali di quello presentato
possono trarre grande giovamento dalla riformulazione in termini di processi aleatori al
punto che, contrariamente a quello che si potrebbe pensare, tecniche di simulazione per
la soluzione di problemi deterministici di tipo fisico e matematico erano già state
sviluppate molto prima degli anni 40. Storicamente il primo esempio di simulazione
Monte Carlo ante litteram risale addirittura al 1777 anno in cui il matematico e
naturalista francese Buffon nel suo Essai d’arithmetique morale descrisse un
esperimento di natura aleatoria che gli consentì di stimare, con una precisione per
l’epoca accettabile, il valore di π.

2.1

Simulazione Monte Carlo e Integrazione Numerica

Esiste una connessione formale fra l’utilizzo del metodo Monte Carlo e il concetto di
integrazione di una funzione. Prima di tutto osserviamo come i problemi discussi nel
paragrafo precedente possono essere ricondotti entrambi al calcolo di integrali. Il caso
relativo all’area del cerchio è evidente
1

Area del cerchio = 4∫ 1 − x 2 dx

(2.7)

0

Il prezzo di un’opzione come abbiamo visto non è altro che il valore scontato del valore
di aspettazione del prezzo alla scadenza, il fattore di rischio sottostante (il prezzo
dell’azione) risulta distribuito in accordo ad una distribuzione log-normale perciò
abbiamo:
f (S , t ) =

e−rT

σ 2πT

∞

∫

0

f ( S ′) −(log( S / S ′) +[ r −(1 / 2)σ 2 ]T ) 2 / 2σ 2T
e
dS ′
S′

(2.8)

Infine, per quanto riguarda il calcolo del Value-at-Risk, osserviamo che indicata con
I(L>x) la funzione indicatrice definita come
 1 se L > x
I ( L > x) = 
0 altrimenti

(2.9)

e indicando con f(z) la densità di probabilità congiunta dei fattori di rischio, possiamo
scrivere
P( L > x) = ∫ I ( L > x) f ( z )dz = E[ I ( L > x)]

(2.10)

Più in generale possiamo affermare che ogni estrazione di un campione di numeri
casuali può essere utilizzata come stimatore di un integrale. Come esempio concreto
30 Introduzione al metodo Monte Carlo

consideriamo il caso relativo all’integrazione di una funzione di una variabile
b

reale I = ∫ g ( y )dy ; tramite un opportuno cambio di variabile possiamo sempre ricondurci al
a

caso più semplice in cui l’intervallo di integrazione è compreso fra 0 ed 1:
1

I = ∫ f ( x)dx

(2.11)

0

Il punto fondamentale del nostro ragionamento consiste nel riconoscere che
l’espressione scritta sopra rappresenta anche il valore di aspettazione della funzione f di
una variabile aleatoria a valori uniformemente distribuiti nell’intervallo [0, 1]. Diventa
così possibile stimare il valore del nostro integrale tramite una media aritmetica di n
valori di f(xi) dove ciascun xi rappresenta un campione estratto da una distribuzione
uniforme in [0, 1]. In altre parole possiamo affermare che la quantità
~ 1
In =
n

n

∑ f (x )

(2.12)

i

i =1

rappresenta uno stimatore non distorto di I. La varianza di questa stima risulta pari a:
1 n

n
 11
~
1
σ2
var( I n ) = var  ∑ f ( xi )  = 2 var  ∑ f ( xi )  = ∫ [ f ( x) − I ]2 dx =
n
 n i =1
 n
i =1
 n0





(2.13)

come si vede l’errore quadratico medio dello stimatore, che può essere interpretato
come l’errore quadratico medio della simulazione Monte Carlo, decresce all’aumentare
di n come 1 / n . Questo risultato risulta del tutto indipendente dalla dimensione del
problema. E’ proprio quest’ultima caratteristica che rende attraente il metodo Monte
Carlo per la risoluzione di problemi con un numero elevato di dimensioni. In questo
caso tipicamente il metodo Monte Carlo risulta convergere verso il valore finale più
velocemente dei metodi numerici tradizionali in cui il numero di iterazioni per
raggiungere un’approssimazione prefissata cresce con l’aumentare del numero di
dimensioni. E’ comunque conveniente a questo punto formalizzare il problema in modo
più rigoroso. Consideriamo il seguente integrale

r r
I = ∫ f ( x ) dx

(2.14)

D

r

dove abbiamo indicato col simbolo x il vettore multidimensionale ( x1, x2 ,K, xn ) e con
r
dx l’elemento di volume infinitesimo in n dimensioni dx1dx2 K dxn , f(x) è una funzione
integrabile secondo Lebesgue definita sul dominio D. Ogniqualvolta l’integrale (2.14)
esiste, il suo valore è uguale a quello dell’integrale di Lebesgue-Stieltjes

r
r
I LS = ∫ κ ( z )dF ( z )
Z

(2.15)
Introduzione al metodo Monte Carlo 31

r r
dove { f ( x ), x ∈ D} e D determinano la forma assunta dalla nuova regione di
r r
integrazione Z, la funzione {κ ( z ), z ∈ Z } è misurabile e la funzione non decrescente
r r
{F ( z ), z ∈ Z } per ogni sottoinsieme misurabile di Z, con A e B tali che A ⊆ B ⊆ Z ,
soddisfa la relazione
0 ≤ F ( A) ≤ F ( B) ≤ F ( Z ) = 1
F(z) può quindi essere considerata una funzione di distribuzione e questo permette di
r
interpretare l’integrale (2.15) come il valore di aspettazione di κ ( z ) dove z è una
variabile aleatoria n-dimensionale la cui funzione di distribuzione è proprio F(z). Questo
ci permette di affermare in modo del tutto generale che la quantità
n
I LS

1 n r
= ∑κ ( zi )
n i =1

(2.16)

r
dove zi è un campionamento di n valori indipendenti di Z estratti dalla distribuzione
F(Z), è uno stimatore privo di errori sistematici dell’integrale (2.15). Vale la pena notare
che l’integrale di Lebesgue-Stiltjes associato all’integrale di Lebesgue non è unico.
Infatti, se consideriamo una nuova funzione F* definita in modo che dF(z)/dF*(z) esista
per ogni z appartenente a D, e poniamo κ * ( z ) = κ ( z )dF ( z ) / dF * ( z ) otteniamo

r

r

r

r

∫ κ ( z )dF ( z ) = ∫ κ * ( z )dF * ( z )
Z

(2.17)

Z

Come vedremo più avanti questa opportunità risulta di grande aiuto nella ricerca di
metodologie per la riduzione della varianza.
32 Introduzione al metodo Monte Carlo
3

Generatori di Numeri Casuali
Random numbers should not be generated
with a method chosen at random. Some
theory should be used.
Donald
Knuth,
“L’arte
Programmazione”, vol. 2

3.1

della

Tre tipi di generatori

I generatori di numeri casuali che possono essere utilizzati nel metodo Monte Carlo
appartengono a tre categorie generali classificate in accordo alla natura dei numeri
prodotti:

•

Numeri veramente casuali (truly random numbers): sono numeri la cui
sequenza è assolutamente impredicibile (anche in via teorica) e devono
essere prodotti sfruttando opportuni fenomeni fisici di cui è nota l’intrinseca
aleatorietà (es. decadimento radioattivo di un nucleo atomico). Esistono serie
di numeri di questo tipo registrate su nastri o pubblicate su appositi manuali.
In generale il loro uso è estremamente difficoltoso, le serie di numeri
veramente casuali sono quasi sempre composte da un numero di dati
insufficiente per effettuare simulazioni attendibili pertanto non le
discuteremo ulteriormente.

•

Numeri pseudo casuali (pseudorandom numbers): sono numeri prodotti da
un computer per mezzo di un algoritmo. Ovviamente essendo generati da un
processo di calcolo deterministico essi non sono numeri veramente casuali in
quanto la sequenza può essere predeterminata. Tuttavia è possibile simulare
in maniera efficiente una sequenza di numeri che appaia del tutto casuale a
chiunque non conosca l’algoritmo usato per generarla. Questi sono i numeri
più utilizzati per le simulazioni Monte Carlo e verranno discussi più
approfonditamente nel seguito del capitolo.

•

Numeri quasi casuali (quasirandom numbers): si tratta di numeri prodotti
anch’essi da un algoritmo numerico, tuttavia in questo caso non si cerca di
riprodurre una sequenza aleatoria bensì di disporre di una serie di numeri
distribuiti nella maniera più uniforme possibile al fine di ridurre la varianza
dei risultati delle integrazioni Monte Carlo. Tali sequenze non risultano
appropriate per qualsiasi applicazione del metodo Monte Carlo, tuttavia
laddove il loro uso è consigliato possono portare a dei miglioramenti
impressionati nelle performance dei metodi numerici che ne fanno uso.

Le sequenze di numeri, sia pseudo che quasi casuali, sono caratterizzate dall’essere
periodiche. Dopo un certo intervallo di numeri prodotti, detto periodo, i generatori
iniziano a riproporre gli stessi numeri casuali della sequenza appena conclusa.
Chiaramente una delle proprietà più importanti di qualunque tipo di generatore è quella
di avere un periodo che risulti il più grande possibile. Discuteremo questa ed altre
caratteristiche facendo riferimento ad un particolare metodo di generazione di numeri
34 Introduzione al metodo Monte Carlo

casuali il cosiddetto generatore lineare congruente che ha il pregio di essere
estremamente semplice e computazionalmente efficiente.

3.2

Il generatore Lineare Congruente

Virtualmente tutti i generatori di numeri pseudo casuali impiegati in pratica sono basati
sul generatore lineare congruente, da un valore iniziale, J0, si genera una sequenza di
numeri basati sulla formula iterativa
J i = ( aJ i −1 + c ) mod m

(3.1)

I parametri a, c e m determinano la qualità del generatore; a viene detto moltiplicatore,
c incremento e m è il cosiddetto modulo. La formula appena descritta genera numeri
interi compresi fra 0 e m. Usualmente si utilizzano generatori di numeri casuali
uniformemente distribuiti fra 0 ed 1, per questo è sufficiente scegliere la sequenza
U i = J i / m . Dalla formula risulta evidente che la sequenza di numeri casuali si ripeterà
dopo un ciclo che, al più, potrà essere di lunghezza m. In generale se indichiamo con L
la lunghezza di parola (word length) di un computer espressa in numero di bit, il
massimo intero rappresentabile è pari a 2 L − 1 , poiché per motivi pratici un bit è spesso
perso (in quanto riservato per indicare il segno del numero), la scelta usuale è quella di
porre m = 2 L −1 − 1 .
Come abbiamo già accennato, il principale vantaggio del generatore lineare congruente
va ricercato nella sua efficienza. Esso è molto veloce richiedendo pochissime operazioni
per chiamata, questo è uno dei principali motivi che hanno finito per renderlo di uso
universale. Fra i punti deboli di questo metodo il maggiore è rappresentato senz’altro
dalla presenza di correlazione sequenziale fra i numeri generati; vediamo di capire di
cosa si tratta. Come risulta chiaro dalla (3.1) ciascun numero prodotto dal generatore
lineare congruente è completamente determinato dal numero generato al passo
precedente. Questo fa sì che i valori dei numeri prodotti siano fortemente correlati fra
loro. Ad esempio a numeri piccoli seguiranno preferibilmente numeri piccoli con una
probabilità superiore a quella che dovremmo attenderci se i numeri fossero veramente
casuali. La correlazione fra due numeri diminuisce all’aumentare della distanza che li
separa espressa in termini di passo di generazione. Uno degli effetti più evidenti di
questa correlazione consiste nel seguente fatto. Si generino n numeri casuali e si
formino n/2 coppie di numeri scegliendo valori generati successivamente uno all’altro
(U n , U n +1 ) . Consideriamo poi queste coppie come coordinate di punti su un piano. Se i
numeri fossero veramente casuali dovremo aspettarci di veder riempire uniformemente
il quadrato unitario. Invece quello che si osserva è che tali punti non si distribuiscono
affatto in maniera uniforme ma, al contrario, tendono ad allinearsi lungo segmenti di
retta.
Esempio 3.1 – Supponiamo di generare un migliaio di punti nel quadrato di lato
unitario utilizzando come motore il generatore lineare congruente (3.1) con i seguenti
Introduzione al metodo Monte Carlo 35

valori per i parametri: a = 1229, b = 1, c = 2048 e valore iniziale della sequenza pari a
0. Questi numeri sono tali da dar luogo ad un pessimo generatore di numeri casuali
come si può facilmente verificare riportando in un grafico i punti così ottenuti (Fig.3 a).
La correlazione sequenziale può essere facilmente rimossa con tecniche di
mescolamento (shuffling), il numero prodotto al passo j-esimo non costituisce la
risposta j-esima del generatore ma viene utilizzato per fornire ad un passo successivo
un’uscita scelta in maniera casuale fra una serie di numeri precedentemente generati.
Come si può vedere in Fig.3 b con questa semplice procedura il risultato migliora
decisamente

1

1

0.9

0.9

0.8

0.8

0.7

0.7

0.6

0.6

0.5

0.5

0.4

0.4

0.3

0.3

0.2

0.2

0.1

0.1

0

0

0

0.2

0.4

0.6

0.8

1

0

0.2

0.4

0.6

0.8

1

b)

a)

Figura 3.1 – Risultati del generatore lineare congruente con a = 1229, b = 1, c = 2048 e valore iniziale nullo. Il
generatore non utilizza la procedura di shuffling nel primo caso

3.3

Le funzioni Rnd() e Randomize()

La funzione Rnd() restituisce un valore numerico di tipo Single che contiene un
numero casuale. La sintassi è la seguente:
Rnd[(num)]

L'argomento facoltativo num può essere un valore Single o una qualsiasi espressione
numerica valida. I valori restituiti dalla funzione dipendono dal valore passato come
argomento. Per ogni base iniziale specificata, viene generata la stessa sequenza di
numeri, in quanto ogni successiva chiamata alla funzione Rnd() utilizza il numero
casuale precedente come base per il numero successivo nella sequenza. In particolare, se
il parametro num è minore di zero Rnd() genera sempre lo stesso numero, utilizzando
num come base; se num è maggiore di zero viene restituito il successivo numero casuale
nella sequenza; se num è uguale a zero viene restituito il numero generato per ultimo;
infine se il parametro in input viene omesso, Rnd() restituirà il successivo numero
casuale nella sequenza.
36 Introduzione al metodo Monte Carlo

Esempio 3.2 - Il ciclo seguente
For i = 1 To 5
Cells(i, 1).Value = Rnd(-1)
Next

produce in output la serie costante
0.22400701
0.22400701
0.22400701
0.22400701
0.22400701
Se utilizzate Rnd() con un valore positivo
For i = 1 To 5
Cells(i, 1).Value = Rnd(1)
Next

otterrete invece
0.035845816
0.086352348
0.164263904
0.17973578
0.573200524
Se a questo punto richiamate Rnd(0) otterrete in output sempre l’ultimo numero
generato
0.573200524
0.573200524
0.573200524
0.573200524
0.573200524

Prima di richiamare Rnd(), è consigliabile utilizzare l'istruzione Randomize senza
argomento per inizializzare il generatore di numeri casuali con una base connessa al
timer del sistema con la seguente sintassi
Randomize[(numero)]
Introduzione al metodo Monte Carlo 37

Randomize utilizza il parametro numero per inizializzare il generatore di numeri
casuali della funzione Rnd() assegnandogli un nuovo valore base. Se numero viene
omesso, il valore restituito dal timer di sistema verrà utilizzato come nuova base.

Per ripetere sequenze di numeri casuali, è sufficiente richiamare Rnd() con un
argomento negativo immediatamente prima dell'utilizzo di Randomize con un
argomento numerico. L'utilizzo di Randomize con lo stesso valore di numero non
determinerà la ripetizione della sequenza precedente. Se Randomize non viene
utilizzata, quando la funzione Rnd (senza argomenti) viene chiamata per la prima volta,
utilizza come base lo stesso numero. Per le chiamate successive la funzione utilizzerà
l'ultimo numero generato.
Ricordate che la funzione Rnd() restituisce un valore minore di 1 ma maggiore o
uguale a zero. Per generare interi casuali in un dato intervallo, utilizzare la seguente
formula:
Int((limitesup - limiteinf + 1) * Rnd + limiteinf)

In questo contesto, limitesup indica il numero maggiore presente nell'intervallo,
mentre limiteinf indica il numero minore.

3.4

Test statistici sui generatori di numeri casuali

Nell’esempio 3.1 abbiamo visto come la presenza di correlazione sequenziale del
generatore lineare congruente possa alterare in maniera drammatica i risultati di un
esperimento che faccia uso di numeri casuali. Di fatto, come abbiamo già osservato, il
generatore lineare congruente, non produce numeri veramente casuali. Diventa quindi
essenziale disporre di test statistici che ci permettano di giudicare la qualità di una serie
di numeri quasi-random anche al fine di poter paragonare le serie prodotte da diversi
generatori per selezionare quello che meglio soddisfa le nostre esigenze. E’ opportuno
ricordare che in tutte le considerazioni relative alla scelta del generatore di numeri
casuali da utilizzare si dovrà sempre tenere conto anche dell’efficienza numerica del
generatore stesso a causa dell’elevato numero di variabili aleatorie che è necessario
generare nelle applicazioni pratiche del metodo Monte Carlo.
Esistono moltissimi test statistici che possono essere utilizzati per controllare la qualità
di un generatore; tra i più usati vogliamo ricordare il test di χ2 e il test di KolmogorovSmirnov. Entrambi si basano su una comparazione fra la funzione di distribuzione
cumulata estratta da un campione dei numeri casuali prodotti dal generatore con la
funzione di distribuzione cumulata ricavata dalla funzione di densità di probabilità in
accordo alla quale il generatore ha prodotto i numeri stessi. Vediamo un esempio
concreto di applicazione del test di χ2 sul generatore lineare congruente per due diversi
insiemi di parametri rimandando alla letteratura per una descrizione completa delle
38 Introduzione al metodo Monte Carlo

varie tipologie di test. Dato l’algoritmo lineare congruente sono noti diversi insiemi di
parametri che permettono di ottenere buoni generatori di numeri casuali. Ad esempio il
generatore definito da
a = 1812433253
c dispari
m = 232

produce un buona distribuzione di punti su macchine a 32 bit. Per eseguire un test su
questo generatore possiamo impiegarlo per produrre un numero elevato di valori
(almeno 10000) raccolti in 100 intervalli equispaziati lungo il segmento [0,1]. Il numero
attesto di valori all’interno di ciascun intervallo è pari a 100. A questo punto calcoliamo
il valore di χ2 e verifichiamo se il generatore è accettabile utilizzando i valori riportati in
Tabella 1. La tabella riporta, per ciascun valore dei gradi di libertà k, il valore χ12−α ,k per
2
cui la probabilità P (χ 2 < χ 1−α ,k ) è pari al valore della colonna corrispondente. Ad
esempio nella riga corrispondente a 10 gradi di libertà, sotto la colonna p = 95%
troviamo il valore 18.3; questo significa che con 10 gradi di libertà dovremmo trovare
un valore di χ2 superiore a 18.31 in media 5 volte su 100. Quando il numero di gradi di
libertà supera 30 possiamo usare una formula asintotica in funzione dei percentili xp
riportati per completezza nell’ultima riga della tabella. Una volta trovata la probabilità
corrispondente al valore di χ2 misurato possiamo applicare il seguente criterio Knuth
(1981):
P(χ2) < 1% o P(χ2) > 99% ⇒ rigetto
1% < P(χ2) < 5% o 95% < P(χ2) < 99% ⇒ sospetto
5% < P(χ2) < 10% o 90% < P(χ2) < 95% ⇒ leggermente sospetto
Il criterio viene applicato ad almeno tre serie prodotte dal generatore e il risultato è
definitivamente negativo se due serie su tre danno risultato negativo.
Come esempio pratico abbiamo applicato la procedura appena descritta al generatore
lineare congruente caratterizzato dai parametri definiti poco sopra, i valori di χ2 misurati
su tre serie indipendenti di 1000 numeri sono risultati pari a:
94.2

95.6

88.8

Utilizzando la formula asintotica con k = 99, troviamo i seguenti valori di χ2
p = 1%
61.66594

p = 5%

p = 25% p = 50% p = 75% p = 95% p = 99%

77.04955481.38991 98.333333108.13518123.20325134.73861
Introduzione al metodo Monte Carlo 39

Come si vede i valori trovati cadono tutti nell’intervallo compreso fra il 25% e il 50%
di probabilità, il nostro generatore ha quindi superato il test. La stessa prova eseguita
scegliendo i parametri dell’esempio 1 ha dato invece i seguenti risultati
57.6

62.9

60.1

In questo caso tutti i valori sono tali che la probabilità corrispondente risulta inferiore
all’1%, un’ulteriore conferma del fatto che il set di parametri che caratterizza questo
generatore corrisponde a numeri molto correlati fra loro e quindi molto lontani
dall’emulare un insieme di numeri veramente casuali.

Tabella 3.1 – Valori di probabilità per la distribuzione χ

2

p = 1%

p = 5%

p = 25%

p = 50%

p = 75%

p = 95%

P = 99%

k=1

0.00016

0.00393

0.1015

0.4549

1.323

3.841

6.635

k=2

0.02010

0.1026

0.5753

1.386

2.773

5.991

210

k=3

0.1148

0.3518

1.213

2.366

4.108

7.815

11.34

k=4

0.2971

0.7107

1.923

3.357

5.385

488

13.28

k=5

0.5543

1.1455

2.675

4.351

6.626

11.07

15.09

k=6

0.8720

1.635

3.455

5.348

7.841

12.59

16.81

k=7

1.239

2.167

4.255

6.346

037

14.07

18.48

k=8

1.646

2.733

5.071

7.344

10.22

15.51

20.09

k=9

2.088

3.325

5.899

8.343

11.39

16.92

21.67

k = 10

2.558

3.940

6.737

342

12.55

18.31

23.21

k = 20

8.260

10.85

15.45

134

23.83

31.41

37.57

k = 30

14.95

18.49

24.48

234

34.80

43.77

50.89

1.64

2.33

k > 30
xp

≈ k + 2k x p +

-2.33

-1.64

-0.675

0.00

2 2 2
xp −
3
3

0.675
40 Introduzione al metodo Monte Carlo
4

Generazione di Distribuzioni non Uniformi
Non ho ancora trovato un problema che,
per quanto fosse complicato, a considerarlo
nel modo giusto non diventasse ancora più
complicato.
Poul Anderson

4.1

Il “Transformation Method”

Nei precedenti paragrafi abbiamo visto come generare sequenze di numeri casuali
uniformemente distribuite. Utilizzando un generatore di questo tipo la probabilità di
ottenere un risultato con un valore compreso fra x e x+dx è data da
dx per 0 < x < 1
p ( x ) dx = 
 0 altrimenti

(4.1)

Supponiamo ora di generare una serie di numeri casuali uniformemente distribuiti e di
calcolarne una qualche funzione definita y=y(x). La distribuzione di probabilità di y, che
indicheremo con g(y), può essere ricavata ricordando che
g ( y )dy = p ( x) dx

(4.2)

da cui
g ( y ) = p( x)

dx
dy

A scopo di esempio supponiamo che
uniformemente, si ha
g ( y ) dy =

dx
dy = e − y dy
dy

(4.3)
y ( x) = − ln( x) con x variabile distribuita

(4.4)

y risulta distribuita esponenzialmente. Il problema appena discusso può anche essere
posto in maniera diversa. Supponiamo infatti di conoscere la distribuzione di probabilità
della variabile y e cerchiamo di determinare quale deve essere la relazione funzionale
che lega y a x. In altre parole, supponendo sempre di avere una distribuzione p(x)
uniforme, il problema che dobbiamo affrontare è quello di risolvere l’equazione
differenziale
g ( y) =

dx
dy

(4.5)

la cui soluzione è
x = ∫ g ( y ) dy = F ( y )

da cui

(4.6)
42 Introduzione al metodo Monte Carlo

y = F −1 ( x )

(4.7)

Il metodo appena esposto va sotto il nome di Transformation Method. Seguendo questa
procedura possiamo definire un semplice algoritmo per la generazione di variabili
casuali da distribuzioni diverse da quella uniforme. L’algoritmo si riassume nei seguenti
passi:
1. Si genera un numero casuale x distribuito uniformemente fra 0 ed 1;
2. Si determina, qualora risulti possibile, l’inversa della funzione di ripartizione
della distribuzione che si desidera replicare;
3. Si determina il valore di tale funzione in x;
4. Si torna al punto 1 e si ripete il ciclo n volte.
I numeri così ottenuti risulteranno distribuiti in accordo con la funzione desiderata.
4.1.1

Utilizzo delle funzioni del foglio di lavoro di Microsoft Excel in Visual
Basic

Una caratteristica molto importante offerta dal Visual Basic è la possibilità di utilizzare
direttamente nel codice funzioni del foglio di lavoro di Microsoft Excel. Per un elenco
completo delle funzioni del foglio di lavoro disponibili si rinvia all’elenco presente nella
guida in linea 4. In Visual Basic le funzioni del foglio di lavoro di Microsoft Excel sono
disponibili tramite l'oggetto WorksheetFunction.
Nella seguente routine Sub viene utilizzata la funzione del foglio di lavoro Min per
determinare il valore minimo in un intervallo di celle. La variabile myRange viene
innanzitutto dichiarata come oggetto Range, quindi viene associata all'intervallo
A1:C10 di Sheet1. Ad un'altra variabile, answer, viene assegnato il risultato della
funzione Min su myRange. Infine, il valore di answer viene visualizzato in una
finestra di messaggio.
Sub UseFunction()
Dim myRange As Range
Set myRange = Worksheets("Sheet1").Range("A1:C10")
answer = Application.WorksheetFunction.Min(myRange)
MsgBox answer
End Sub

Se viene utilizzata una funzione del foglio di lavoro che richiede un riferimento di
intervallo quale argomento, è necessario specificare un oggetto Range. Ad esempio, è
possibile utilizzare la funzione del foglio di lavoro Match per eseguire ricerche in un
4

Alcune funzioni del foglio di lavoro sono superflue in Visual Basic. La funzione Concatenate, ad esempio, non è necessaria poiché
in Visual Basic è possibile utilizzare l'operatore & per concatenare più valori di testo.
Introduzione al metodo Monte Carlo 43

intervallo di celle. Occorre quindi immettere in una cella del foglio di lavoro una
formula quale = CONFRONTA(9,A1:A10,0). Tuttavia, in una routine Visual Basic
è possibile specificare un oggetto Range per ottenere lo stesso risultato.
Sub FindFirst()
myVar = Application.WorksheetFunction.Match(9, Worksheets(1).Range("A1:A10"), 0)
MsgBox myVar
End Sub

E’ importante notare che non è detto che una funzione Visual Basic con lo stesso nome
di una funzione Microsoft Excel operi in modo identico. Ad esempio,
Application.WorksheetFunction.Log e Log restituiranno valori diversi.
E’ possibile anche immettere una funzione del foglio di lavoro in una cella. Per fare
questo è necessario definire la funzione come valore della proprietà Formula del
corrispondente oggetto Range. Nell'esempio seguente la funzione del foglio di lavoro
CASUALE, che genera un numero casuale, viene assegnata alla proprietà Formula
dell'intervallo A1:B3 di Sheet1 nella cartella di lavoro attiva.
Sub InsertFormula()
Worksheets("Sheet1").Range("A1:B3").Formula = "=RAND()"
End Sub

4.1.2

Come Simulare una variabile distribuita Normalmente

Come esempio del metodo descritto nel paragrafo precedente proviamo a generare una
sequenza di numeri casuali con distribuzione normale. Per raggiungere il nostro scopo
abbiamo bisogno della funzione inversa della distribuzione cumulata che,
fortunatamente, Excel mette già a nostra disposizione. Le funzioni che potete inserire
direttamente nei fogli di calcolo sono in realtà due:
INV.NORM(). Restituisce l'inversa della distribuzione normale cumulativa per la
media e la deviazione standard specificate. La sintassi é
INV.NORM(probabilità;media;dev_standard)

dove probabilità è la probabilità corrispondente alla distribuzione normale,
media è la media aritmetica della distribuzione, dev_standard è la deviazione
standard della distribuzione. INV.NORM utilizza una tecnica iterativa per il calcolo
della funzione. Dato un valore di probabilità, INV.NORM applica il metodo delle
iterazioni fino a quando la precisione del risultato non rientra in ± 3x10^-7. Se il
risultato di INV.NORM non converge dopo 100 iterazioni, la funzione restituirà il valore
di errore #N/D.
44 Introduzione al metodo Monte Carlo

INV.NORM.ST(). Restituisce l'inversa della distribuzione normale standard
cumulativa. La distribuzione ha una media uguale a 0 e una deviazione standard uguale
a 1 Sintassi:
INV.NORM.ST(probabilità)

dove probabilità è la probabilità corrispondente alla distribuzione normale. Anche
questa funzione utilizza un metodo di calcolo iterativo analogo a quello impiegato in
INV.NORM.
Le due funzioni sono richiamabili da VBA tramite l’oggetto WorksheetFunction
con una sintassi leggermente diversa da quella utilizzata da Excel nei suoi fogli di
calcolo. Se desiderate generare n variabili con distribuzione normale standard potete
utilizzare il seguente codice
Randomize
For i = 1 To n
Cells(i ,1).Value = Application.WorksheetFunction.NormSInv(Rnd())
Next

Si noti che in questo caso l’unico argomento richiesto dalla funzione è un numero
casuale uniformemente distribuito fra 0 ed 1. Nel caso in cui desideriate generare
variabili con distribuzione normale caratterizzate da una media M e standard deviation
Sigma è sufficiente utilizzare la funzione NormInv() del tutto analoga a
INV.NORM(); un esempio di codice in questo caso è
Randomize
For i = 1 To n
Cells(i ,1).Value = Application.WorksheetFunction.NormInv(Rnd(), M,Sigma)
Next

Nel file “Richiami di Statistica 2.xls” il lettore troverà un esempio di
generazione di variabili aleatorie con distribuzione normale.
In linea di principio il metodo appena visto si presta alla generazione di variabili
aleatorie distribuite in accordo ad una qualunque funzione di densità di probabilità
purché questa sia continua. In pratica tuttavia un’applicazione diretta di tale metodo può
risultare molto onerosa sotto il profilo del calcolo. Questo accade in particolare per la
distribuzione gaussiana per la quale non risulta possibile esprimere in forma analitica
l’inversa della funzione di ripartizione. In casi come questo l’integrale della funzione
deve essere calcolato numericamente con evidente perdita di tempo. Il metodo di BoxMuller per la generazione di variabili aleatorie distribuite normalmente evita questo
problema. Questa procedura è basata sull’osservazione che se U1 e U2 sono due variabili
aleatorie indipendenti distribuite uniformemente fra 0 ed 1 allora le variabili G1 e G2
definite dalle relazioni
Introduzione al metodo Monte Carlo 45

G1 = − 2 ln(U1 ) cos(2πU 2 )

(4.8)

G2 = − 2 ln(U1 ) sin(2πU 2 )

sono due variabili indipendenti distribuite normalmente.

Esempio 4.1 – Utilizziamo il generatore lineare congruente con i valori dei parametri
definiti nell’esempio precedente per generare N coppie di punti nel piano con
coordinate distribuite normalmente applicando la trasformazione di Box-Muller. Quello
che si trova è abbastanza sorprendente e sicuramente diverso da quello che ci
aspettavamo. Le coppie di numeri sono correlate clamorosamente una all’altra. Questo
si verifica facilmente osservando che (dalla (3.1))
U i +1 = [(aU i + c ) mod m]/ m

ricordando la definizione dell’operazione di “modulo” possiamo scrivere
U i +1 =

1
{(aU i + c ) − m INT (aU i + c )} = a U i + c − k = αU i + γ − k
m
m
m

essendo k un numero intero. A causa della periodicità delle funzioni trigonometriche, si
ha:
cos(2πU i +1 ) = cos[2π (αU i + γ )]
sin(2πU i +1 ) = sin[2π (αU i + γ )]

Quindi in questo caso particolare le relazioni di Box-Muller diventano
G1 = − 2 ln(U1 ) cos (2π (αU1 + γ ))
G2 = − 2 ln(U1 ) sin(2π (αU1 + γ ))
Entrambe le nuove variabili dipendono solo dalla prima variabile U1 generata inoltre il
luogo dei punti descritto dalle equazioni scritte sopra è una spirale logaritmica,
Geweke (1995b).

4.2

La simulazione di un processo di Wiener

Il processo di Wiener prende il nome dal fisico-matematico tedesco Norbert Wiener ed
è una descrizione matematica del fenomeno fisico noto come moto browniano ovverosia
del moto casuale a cui è sottoposta una piccola particella di materiale sospesa in una
soluzione liquida. Il moto browniano trova la sua spiegazione nella teoria cinetica della
materia in quanto il moto della particella altro non è che il risultato dei numerosissimi
urti che questa riceve dalle molecole del liquido circostante. Nella letteratura i termini
46 Introduzione al metodo Monte Carlo

processo di Wiener e moto browniano sono pertanto usati come sinonimi anche se, a
rigore, il primo individua un modello matematico mentre il secondo andrebbe riservato
per indicare il processo fisico corrispondente. Nella matematica finanziaria i processi di
Wiener svolgono un ruolo estremamente importante per la descrizione della
componente stocastica della dinamica di prezzi.

3

2

1

0
-3

-2

-1

0

1

2

3

-1

-2

-3

Figura 4.1 – Risultati dell’applicazione del metodo di Box-Muller alle coppie di numeri casuali prodotti dal
generatore lineare congruente dell’esempio 1 senza shuffling.

Definiamo processo di Wiener standard W = {W (t ), t ≥ 0 } un processo stocastico
gaussiano nel tempo continuo con incrementi indipendenti tale che

•
•
•

W (0) = 0 con probabilità 1;
E [W (t )] = 0 ;
σ 2 [W (t ) − W ( s )] = t − s per ogni 0 ≤ s ≤ t ;

Nella Figura 4.2 sono riportate alcune realizzazioni di un processo di Wiener realizzate
utilizzando la procedura riportata nel riquadro seguente
Sub Wiener()
Dim i As Integer
Dim nPunti As Integer
Dim
Dim
Dim
Dim
Dim

t0 As Single
tf As Single
t As Single
Delta As Single
x As Single
Introduzione al metodo Monte Carlo 47

Dim wt As Single
t0 = 0
tf = Range("t_finale").Value
nPunti = Range("NrPunti").Value
Delta = (tf - t0) / nPunti
t = t0 - Delta
wt = 0
Randomize (Timer)
For i = 1 To nPunti
t = t + Delta
x = Application.WorksheetFunction.NormSInv(Rnd())
If x < 10 And x > -10 Then
wt = wt + x * Sqr(Delta)
Cells(i + 1, 1).Value = t
Cells(i + 1, 2).Value = wt
End If
Next
Calculate
Cells(k + 5, 16).Value = Cells(5, 15).Value
Cells(5, 17).Value = k
Cells(k + 5, 19).Value = Cells(5, 18).Value
Cells(k + 5, 20).Value = Range("B202").Value
k = k + 1
End Sub

Figura 4.2 – Alcune realizzazioni di un processo di Wiener
48 Introduzione al metodo Monte Carlo

4.3

Il “Rejection Method”

Un altro metodo estremamente diffuso per generare variabili aleatorie a distribuzione
non uniforme è il cosiddetto Rejection Method. Esso si basa sul seguente teorema
enunciato da von Neumann nel 1951, Fishman, (1996)
Teorema Sia f(z) con a ≤ z ≤ b una funzione di distribuzione di probabilità,
supponiamo che sia possibile trovare una seconda funzione h(z) > 0 e con
integrale finito tale che

f(z)=cg(z)h(z)
essendo 0 ≤ g ( z ) ≤ 1 . La costante c può essere scelta in modo da normalizzare
l’integrale della funzione f(z) per cui possiamo assumere senza perdere in
generalità
c=

1
b

∫ g ( z )h( z )dz

a

Sia infine Z una variabile aleatoria con funzione di distribuzione h(z) e U
indichi un campione estratto da una distribuzione uniforme U(0,1), allora se
noi selezioniamo le estrazioni di Z tali che U ≤ g (Z ) i valori così ottenuti
saranno distribuiti secondo f(z).

Per dimostrare il teorema appena enunciato osserviamo prima di tutto che le variabili
aleatorie U e Z hanno una funzione di distribuzione di probabilità congiunta data da
fU , Z (u , z ) = h( z )

0 ≤ u ≤1

a≤z≤b

Da questa possiamo ricavare la funzione di distribuzione di probabilità di Z
condizionale a U ≤ g (Z )
g (z)

hZ (z | U ≤ g ( Z ) ) =

∫

g ( z)

∫ h( z )du

fU , Z (u , z )du

0

pr[U ≤ g ( Z )]

=

0

pr[U ≤ g ( Z )]

=

D’altra parte abbiamo
b

g ( z)

a

0

pr[U ≤ g ( Z )] = ∫ dz

∫

b

du fU , Z (u , z ) = ∫ h( z ) g ( z ) dz =
a

da cui
hZ (z | U ≤ g ( Z ) ) = c h( z ) g ( z ) = f ( z )

1
c

h( z ) g ( z )
pr[U ≤ g ( Z )]
Introduzione al metodo Monte Carlo 49

come volevamo dimostrare.
Da un punto di vista implementativo possiamo sfruttare questo teorema per definire un
semplice algoritmo; per semplicità definiamo la funzione e(z) pari a c h(z). Cominciamo
con l’osservare che dalla definizione di g(z) si ricava immediatamente che e(z) è una
funzione maggiorante della distribuzione che intendiamo campionare f(z), ci riferiremo
ad e(z) con il nome di funzione di paragone. In termini di e(z) la condizione di
accettazione U ≤ g (Z ) può essere riformulata come e( Z ) ≤ g ( Z ) . A questo punto possiamo
descrivere un algoritmo di generazione di numeri casuali con distribuzione assegnata
secondo il rejection method:
1. Si genera un numero casuale y’ con distribuzione uniforme fra 0 e A essendo
b

A = ∫ e( z ) dz
a

2. Si ricava il valore x = E-1(y’) essendo

x

E ( x ) = ∫ e( z )dz .

I punti x saranno

a

distribuiti in accordo alla funzione e(z) (in pratica stiamo utilizzando il
transformation method discusso prima);
3. Si genera un secondo numero casuale, y”, uniformemente distribuito fra 0 ed
e(x);
4. Se risulta soddisfatta la condizione y′′ ≤ f (x) accettiamo x;
5. Si ripete la procedura n volte
Un punto cruciale, da cui dipende il successo dell’applicazione di questo metodo, è
rappresentato dalla scelta della funzione di paragone e(z). Tale funzione deve essere
sempre maggiore o uguale alla funzione di distribuzione che intendiamo campionare e
tale che sia facilmente computabile l’inversa della corrispondente funzione di
ripartizione.

4.4

Generazione di variabili con correlazione assegnata
r

Indichiamo con x = ( x1, x2 ,..., xn ) un vettore di variabili aleatorie indipendenti ciascuna delle
r
quali distribuita secondo una normale standard, la matrice di varianza-covarianza di x
sarà pertanto data dalla matrice unità di dimensione n× n. Supponiamo di voler derivare
da questo insieme di variabili un secondo set di variabili, che indicheremo con
r
y = ( y1, y2 ,..., yn ) , non più indipendenti bensì dotato di matrice di varianza-covarianza
r
assegnata Σ. Il nuovo insieme di variabili aleatorie y può essere ricercato come
r
combinazione lineare delle variabili indipendenti x , cioè si pone

r
r
y = Ax

(4.9)
Introduzione al metodo monte carlo
Introduzione al metodo monte carlo
Introduzione al metodo monte carlo
Introduzione al metodo monte carlo
Introduzione al metodo monte carlo
Introduzione al metodo monte carlo
Introduzione al metodo monte carlo
Introduzione al metodo monte carlo
Introduzione al metodo monte carlo
Introduzione al metodo monte carlo
Introduzione al metodo monte carlo
Introduzione al metodo monte carlo
Introduzione al metodo monte carlo
Introduzione al metodo monte carlo
Introduzione al metodo monte carlo
Introduzione al metodo monte carlo
Introduzione al metodo monte carlo
Introduzione al metodo monte carlo
Introduzione al metodo monte carlo
Introduzione al metodo monte carlo
Introduzione al metodo monte carlo
Introduzione al metodo monte carlo
Introduzione al metodo monte carlo
Introduzione al metodo monte carlo
Introduzione al metodo monte carlo
Introduzione al metodo monte carlo
Introduzione al metodo monte carlo
Introduzione al metodo monte carlo
Introduzione al metodo monte carlo
Introduzione al metodo monte carlo
Introduzione al metodo monte carlo
Introduzione al metodo monte carlo
Introduzione al metodo monte carlo
Introduzione al metodo monte carlo
Introduzione al metodo monte carlo
Introduzione al metodo monte carlo
Introduzione al metodo monte carlo
Introduzione al metodo monte carlo
Introduzione al metodo monte carlo
Introduzione al metodo monte carlo
Introduzione al metodo monte carlo
Introduzione al metodo monte carlo
Introduzione al metodo monte carlo
Introduzione al metodo monte carlo
Introduzione al metodo monte carlo
Introduzione al metodo monte carlo
Introduzione al metodo monte carlo
Introduzione al metodo monte carlo
Introduzione al metodo monte carlo

Contenu connexe

Similaire à Introduzione al metodo monte carlo

Validation and analysis of mobility models
Validation and analysis of mobility modelsValidation and analysis of mobility models
Validation and analysis of mobility models
Umberto Griffo
 
Progettazione ed implementazione di una base di dati per la gestione di emiss...
Progettazione ed implementazione di una base di dati per la gestione di emiss...Progettazione ed implementazione di una base di dati per la gestione di emiss...
Progettazione ed implementazione di una base di dati per la gestione di emiss...
Francesco Occhioni
 
Tesi trigenerazione ospedaliera
Tesi trigenerazione ospedalieraTesi trigenerazione ospedaliera
Tesi trigenerazione ospedaliera
Nicola Giulietti
 
Progetto e realizzazione di un kernel linux per il controllo dinamico degli s...
Progetto e realizzazione di un kernel linux per il controllo dinamico degli s...Progetto e realizzazione di un kernel linux per il controllo dinamico degli s...
Progetto e realizzazione di un kernel linux per il controllo dinamico degli s...
Myrteza Kertusha
 
Tecniche di Test-driven development in ambito sicurezza informatica e rilevaz...
Tecniche di Test-driven development in ambito sicurezza informatica e rilevaz...Tecniche di Test-driven development in ambito sicurezza informatica e rilevaz...
Tecniche di Test-driven development in ambito sicurezza informatica e rilevaz...
fcecutti
 
Libro "La valutazione dei rischi di incendio" L. Fiorentini (TECSA S.p.A.), L...
Libro "La valutazione dei rischi di incendio" L. Fiorentini (TECSA S.p.A.), L...Libro "La valutazione dei rischi di incendio" L. Fiorentini (TECSA S.p.A.), L...
Libro "La valutazione dei rischi di incendio" L. Fiorentini (TECSA S.p.A.), L...
lucafiore1
 
Il mio libro - My book (intro)
Il mio libro - My book (intro)Il mio libro - My book (intro)
Il mio libro - My book (intro)
pls3d
 

Similaire à Introduzione al metodo monte carlo (20)

Dispense Probabilità (1.3)
Dispense Probabilità (1.3)Dispense Probabilità (1.3)
Dispense Probabilità (1.3)
 
Aqfa probabilita
Aqfa   probabilitaAqfa   probabilita
Aqfa probabilita
 
Teoria probabilità 4
Teoria probabilità 4Teoria probabilità 4
Teoria probabilità 4
 
Tesi R. Offredi
Tesi R. OffrediTesi R. Offredi
Tesi R. Offredi
 
Pattern Recognition Lecture Notes
Pattern Recognition Lecture NotesPattern Recognition Lecture Notes
Pattern Recognition Lecture Notes
 
Tesi
TesiTesi
Tesi
 
Validation and analysis of mobility models
Validation and analysis of mobility modelsValidation and analysis of mobility models
Validation and analysis of mobility models
 
Tesi OPC_final_Cassitta
Tesi OPC_final_CassittaTesi OPC_final_Cassitta
Tesi OPC_final_Cassitta
 
Rischio esplosione - Materiale didattico 1
Rischio esplosione - Materiale didattico 1Rischio esplosione - Materiale didattico 1
Rischio esplosione - Materiale didattico 1
 
Progettazione ed implementazione di una base di dati per la gestione di emiss...
Progettazione ed implementazione di una base di dati per la gestione di emiss...Progettazione ed implementazione di una base di dati per la gestione di emiss...
Progettazione ed implementazione di una base di dati per la gestione di emiss...
 
Tesi trigenerazione ospedaliera
Tesi trigenerazione ospedalieraTesi trigenerazione ospedaliera
Tesi trigenerazione ospedaliera
 
Progetto e realizzazione di un kernel linux per il controllo dinamico degli s...
Progetto e realizzazione di un kernel linux per il controllo dinamico degli s...Progetto e realizzazione di un kernel linux per il controllo dinamico degli s...
Progetto e realizzazione di un kernel linux per il controllo dinamico degli s...
 
Tecniche di Test-driven development in ambito sicurezza informatica e rilevaz...
Tecniche di Test-driven development in ambito sicurezza informatica e rilevaz...Tecniche di Test-driven development in ambito sicurezza informatica e rilevaz...
Tecniche di Test-driven development in ambito sicurezza informatica e rilevaz...
 
a4_centrata
a4_centrataa4_centrata
a4_centrata
 
Libro "La valutazione dei rischi di incendio" L. Fiorentini (TECSA S.p.A.), L...
Libro "La valutazione dei rischi di incendio" L. Fiorentini (TECSA S.p.A.), L...Libro "La valutazione dei rischi di incendio" L. Fiorentini (TECSA S.p.A.), L...
Libro "La valutazione dei rischi di incendio" L. Fiorentini (TECSA S.p.A.), L...
 
Risorse infrastrutturali area vasta di Torremaggiore
Risorse infrastrutturali area vasta di TorremaggioreRisorse infrastrutturali area vasta di Torremaggiore
Risorse infrastrutturali area vasta di Torremaggiore
 
WHITEPAPER: Il progetto per la Cyber Resilience: Una nuova prospettiva sulla ...
WHITEPAPER: Il progetto per la Cyber Resilience: Una nuova prospettiva sulla ...WHITEPAPER: Il progetto per la Cyber Resilience: Una nuova prospettiva sulla ...
WHITEPAPER: Il progetto per la Cyber Resilience: Una nuova prospettiva sulla ...
 
PSA - Luigi Trinchieri
PSA - Luigi TrinchieriPSA - Luigi Trinchieri
PSA - Luigi Trinchieri
 
Il mio libro - My book (intro)
Il mio libro - My book (intro)Il mio libro - My book (intro)
Il mio libro - My book (intro)
 
Implementazione hardware/software di un sistemamultitouch per l'interazione u...
Implementazione hardware/software di un sistemamultitouch per l'interazione u...Implementazione hardware/software di un sistemamultitouch per l'interazione u...
Implementazione hardware/software di un sistemamultitouch per l'interazione u...
 

Plus de Giovanni Della Lunga

Plus de Giovanni Della Lunga (20)

Halloween Conference 2023 - Introduction to Deep Learning
Halloween Conference 2023 - Introduction to Deep LearningHalloween Conference 2023 - Introduction to Deep Learning
Halloween Conference 2023 - Introduction to Deep Learning
 
Excel development e sql 3.9
Excel development e sql   3.9Excel development e sql   3.9
Excel development e sql 3.9
 
Excel development e sql 1.7
Excel development e sql   1.7Excel development e sql   1.7
Excel development e sql 1.7
 
Copule slides
Copule slidesCopule slides
Copule slides
 
Introduction to python programming 2
Introduction to python programming   2Introduction to python programming   2
Introduction to python programming 2
 
Introduction to python programming 1
Introduction to python programming   1Introduction to python programming   1
Introduction to python programming 1
 
Excel development e sql 2.1
Excel development e sql   2.1Excel development e sql   2.1
Excel development e sql 2.1
 
Excel development e sql 1.3
Excel development e sql   1.3Excel development e sql   1.3
Excel development e sql 1.3
 
Cavalcando onde gravitazionali
Cavalcando onde gravitazionaliCavalcando onde gravitazionali
Cavalcando onde gravitazionali
 
Simulation methods finance_2
Simulation methods finance_2Simulation methods finance_2
Simulation methods finance_2
 
Simulation methods finance_1
Simulation methods finance_1Simulation methods finance_1
Simulation methods finance_1
 
Viaggi nel tempo [2015 01 24]
Viaggi nel tempo [2015 01 24]Viaggi nel tempo [2015 01 24]
Viaggi nel tempo [2015 01 24]
 
Universo lato oscuro
Universo lato oscuroUniverso lato oscuro
Universo lato oscuro
 
Metodi numerici
Metodi numericiMetodi numerici
Metodi numerici
 
Breve intro caos
Breve intro caosBreve intro caos
Breve intro caos
 
Fg esercizi 4
Fg esercizi 4Fg esercizi 4
Fg esercizi 4
 
2 magnetismo
2 magnetismo2 magnetismo
2 magnetismo
 
1 elettrostatica
1 elettrostatica1 elettrostatica
1 elettrostatica
 
Lezione 1 - Introduzione al VBA per Excel
Lezione 1 - Introduzione al VBA per ExcelLezione 1 - Introduzione al VBA per Excel
Lezione 1 - Introduzione al VBA per Excel
 
Fenomeni termici
Fenomeni termiciFenomeni termici
Fenomeni termici
 

Dernier

Presentazione tre geni della tecnologia informatica
Presentazione tre geni della tecnologia informaticaPresentazione tre geni della tecnologia informatica
Presentazione tre geni della tecnologia informatica
nico07fusco
 
Adducchio.Samuel-Steve_Jobs.ppppppppppptx
Adducchio.Samuel-Steve_Jobs.ppppppppppptxAdducchio.Samuel-Steve_Jobs.ppppppppppptx
Adducchio.Samuel-Steve_Jobs.ppppppppppptx
sasaselvatico
 
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxNicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
lorenzodemidio01
 
case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....
giorgiadeascaniis59
 
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxScienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
lorenzodemidio01
 

Dernier (20)

Presentazione tre geni della tecnologia informatica
Presentazione tre geni della tecnologia informaticaPresentazione tre geni della tecnologia informatica
Presentazione tre geni della tecnologia informatica
 
Esame di Stato 2024 - Materiale conferenza online 09 aprile 2024
Esame di Stato 2024 - Materiale conferenza online 09 aprile 2024Esame di Stato 2024 - Materiale conferenza online 09 aprile 2024
Esame di Stato 2024 - Materiale conferenza online 09 aprile 2024
 
TeccarelliLorenzo-i4stilidellapitturaromana.docx
TeccarelliLorenzo-i4stilidellapitturaromana.docxTeccarelliLorenzo-i4stilidellapitturaromana.docx
TeccarelliLorenzo-i4stilidellapitturaromana.docx
 
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptxProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
 
discorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptxdiscorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptx
 
Tosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptxTosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptx
 
Adducchio.Samuel-Steve_Jobs.ppppppppppptx
Adducchio.Samuel-Steve_Jobs.ppppppppppptxAdducchio.Samuel-Steve_Jobs.ppppppppppptx
Adducchio.Samuel-Steve_Jobs.ppppppppppptx
 
Una breve introduzione ad Elsa Morante, vita e opere
Una breve introduzione ad Elsa Morante, vita e opereUna breve introduzione ad Elsa Morante, vita e opere
Una breve introduzione ad Elsa Morante, vita e opere
 
Descrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptxDescrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptx
 
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxNicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
 
CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...
CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...
CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...
 
Aristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptxAristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptx
 
Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................
 
descrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptxdescrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptx
 
case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....
 
Scrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibileScrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibile
 
LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................
 
TeccarelliLorenzo-Mitodella.cavernaa.pdf
TeccarelliLorenzo-Mitodella.cavernaa.pdfTeccarelliLorenzo-Mitodella.cavernaa.pdf
TeccarelliLorenzo-Mitodella.cavernaa.pdf
 
Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.
 
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxScienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
 

Introduzione al metodo monte carlo

  • 1. Giovanni Della Lunga Dipartimento di Chimica Centro Interdipartimentale per lo Studio dei Sistemi Complessi Università degli Studi di Siena Introduzione al metodo Monte Carlo Concetti di Base e Applicazioni Finanziarie
  • 2.
  • 3. INDICE* _______________________________________________ 1 Richiami di Teoria delle Probabilità.................................................................................................1 1.1 Definizioni....................................................................................................................................1 1.2 Variabili Aleatorie e Funzioni di Distribuzione ...........................................................................2 1.3 Momenti .......................................................................................................................................4 1.4 Distribuzioni Discrete ............................................................................................................8 1.5 1.6 1.7 Distribuzioni Continue.........................................................................................................12 Covarianza e Correlazione..........................................................................................................23 Che cos’è un Processo Stocastico...............................................................................................23 2 La Simulazione Monte Carlo...........................................................................................................25 2.1 Simulazione Monte Carlo e Integrazione Numerica...................................................................29 3 Generatori di Numeri Casuali .........................................................................................................33 3.1 Tre tipi di generatori...................................................................................................................33 3.2 3.3 3.4 4 Il generatore Lineare Congruente..........................................................................................34 Le funzioni Rnd() e Randomize()...............................................................................................35 Test statistici sui generatori di numeri casuali ......................................................................37 Generazione di Distribuzioni non Uniformi...................................................................................41 4.1 Il Transformation Method ..........................................................................................................41 4.1.1 Utilizzo delle funzioni del foglio di lavoro di Microsoft Excel in Visual Basic.................42 4.1.2 Come Simulare una variabile distribuita Normalmente ...............................................43 4.2 Il Rejection Method..............................................................................................................48 4.4 4.5 4.6 5 La simulazione di un processo di Wiener ............................................................................45 4.3 Generazione di variabili con correlazione assegnata ............................................................49 Come adattare una distribuzione non normale univariata ai dati empirici..................................51 Appendice A - Il condizionamento della matrice di covarianza .................................................53 La Valutazione dei Titoli Derivati...................................................................................................55 5.1 La stima del prezzo ...............................................................................................................55 5.2 La stima delle sensitività.......................................................................................................57 5.2.1 Approssimazione basata sulle differenze finite ..................................................................57 5.2.2 Stime dirette........................................................................................................................60 5.3 Un cenno alle problematiche dei derivati di tipo americano ......................................................62 5.4 Appendice A - Funzioni VB per la simulazione del Delta .........................................................64 6 La stima del Value-at-Risk ..............................................................................................................67 6.1 Le problematiche ........................................................................................................................67 6.2 Il rischio di mercato....................................................................................................................68 6.2.1 La rivalutazione parametrica del portafoglio......................................................................69 7 Metodi di riduzione della varianza .................................................................................................71 7.1 Introduzione................................................................................................................................71 7.2 7.3 * Il metodo delle variabili antitetiche.......................................................................................72 Il metodo della variabile di controllo ....................................................................................74 I paragrafi preceduti dal simbolo contengono argomenti sviluppati anche nelle cartelle Excel che accompagnano il testo.
  • 4. Indice ii 7.3.1 Un esempio pratico: il pricing di un’opzione asiatica.........................................................75 7.4 Moment Matching ......................................................................................................................78 7.5 Importance Sampling..................................................................................................................79 7.5.1 Importance Sampling e stima del VaR per portafogli contenenti opzioni ..........................80 7.6 Campionatura uniforme..............................................................................................................83 7.6.1 Il Campionamento Stratificato ......................................................................................83 7.6.2 Il metodo dell’Ipercubo Latino .....................................................................................85 7.6.3 Le Sequenze a Bassa Discrepanza ................................................................................86 La sequenza di Halton ....................................................................................................................89 La sequenza di Faure ......................................................................................................................90 7.6.4 Metodi misti e decomposizione spettrale per problemi ad alta dimensionalità ..................91 7.7 Appendice A - Deduzione della formula (5.9) ...........................................................................92 BIBLIOGRAFIA........................................................................................................................... 97
  • 5. 1 Richiami di Teoria delle Probabilità Possibile, ma non interessante – rispose Lönnrot -. Lei dirà che la realtà non ha il minimo obbligo di essere interessante. Io replicherò che se la realtà può sottrarsi a quest’obbligo, non possono sottrarvisi le ipotesi. Jorge Luis Borges, “La morte e la bussola” 1.1 Definizioni In questo paragrafo passeremo in rassegna i concetti del Calcolo delle Probabilità e della Teoria delle Distribuzioni. Naturalmente questa presentazione è ben lungi dall’essere completa e vuol soltanto essere di sussidio al lettore raccogliendo in maniera sintetica i principali strumenti indispensabili per la comprensione dei modelli di pricing di prodotti derivati e, più in generale, dei modelli di simulazione stocastica utilizzati in tale settore. Ogni tentativo di dare una definizione rigorosa dei concetti probabilistici più elementari si trova di fronte ad un problema; infatti, non solo esistono differenti formalizzazioni e assiomatizzazioni della probabilità ma a queste corrispondono, in generale, molteplici nozioni intuitive di probabilità spesso assai diverse fra loro. Con queste parole di avviso iniziamo a definire i principali concetti della teoria delle probabilità rinviando il lettore in cerca di formalizzazioni rigorose a testi specifici. Al di la delle differenze di carattere formale un elemento comune posseduto da tutte le forme di probabilità riguarda il suo significato intuitivo di valutazione della possibilità che un dato evento possa accadere o meno. Sia nelle scienze naturali sia in quelle economiche si è soliti assumere che un certo evento sia il risultato di un ipotetico esperimento intendendo con questo termine l’insieme di tutte “le azioni e le condizioni ambientali che conducono al determinarsi di un fatto1”. E’ un esperimento la misura di una grandezza fisica, il lancio di un dado o di una moneta, il verificarsi o meno di un particolare stato di natura (es. l’indice MIB30 supera il livello 50.000). Indicheremo con ω un particolare stato di natura esito di un dato esperimento e con Ω l’insieme di tutti gli stati possibili (spazio campione). Il concetto di evento é associato al verificarsi di uno o più stati di natura, esso verrà pertanto rappresentato come sottoinsieme di Ω. Lo spazio degli eventi, A, è quindi una famiglia di sottoinsiemi di Ω caratterizzata dalle seguenti proprietà: 1. Ω ∈ A; 2. se l’evento ω ∈ F allora anche il suo complemento Ω - ω ∈ A; 3. se ωn ∈ A, allora U ωn ∈ A n 1 O. Lessi “Corso di Probabilità”, pag. 21, Metria, 1993.
  • 6. 2 Introduzione al metodo Monte Carlo Una famiglia di sottoinsiemi che soddisfa a queste proprietà viene chiamata σ-algebra. Diremo quindi che A è una σ-algebra di Ω. Definiamo funzione di probabilità una funzione P a valori reali che soddisfa le seguenti proprietà: 1. P(ω ) ≥ 0, ∀ω ∈ A ; 2. P(Ω) = 1 ; ∞  ∞ 3. P U ω n  = ∑ P (ω n )    n =1  n =1 se gli ωn sono a due a due disgiunti cioè se ω i ∩ ω j = ∅ per ogni i ≠ j . Osserviamo che una funzione di probabilità così definita è anche una misura. La terna (Ω, A , P) viene detta spazio di probabilità. Esempio 1.1 – Consideriamo il caso di un indice azionario, ad esempio il MIB30, il cui valore in un dato intervallo di tempo possa solo aumentare o diminuire di una quantità assegnata (naturalmente si tratta di una schematizzazione). Indicando con u l’evento corrispondente all’aumento dell’indice e con d l’evento contrario, possiamo scrivere: Ω = { u, d } A = { Ω, ∅, { u}, { d }} Esempio 1.2 – Anche se questi sono solo dei brevi richiami non possiamo non citare l’esperimento aleatorio per antonomasia: il lancio di un dado. In questo caso lo spazio campione è formato dall’insieme dei sei numeri che possono risultare dal lancio stesso Ω = {1, 2, 3, 4, 5, 6} Vediamo il significato di alcuni elementi di A: l’elemento ω1 = {1,2} corrisponde all’evento “il numero risultante dal lancio è minore o uguale a 2”, ω 2 = {1,3,5} corrisponde a “il numero risultante è dispari”, ω 3 = { 2,4,6} rappresenta l’evento “il numero uscente è pari”. 1.2 Variabili Aleatorie e Funzioni di Distribuzione Dato uno spazio di probabilità, una variabile aleatoria o casuale viene definita come una funzione X : Ω → ℜ tale che per ogni numero reale r si abbia { ω ∈ Ω : X (ω ) ≤ r}∈ A. La funzione FX (x ) = P ( X ≤ x ) = P ({ ω ∈ Ω : X (ω ) ≤ x}) , definita sull’insieme dei numeri reali, viene detta funzione di distribuzione cumulata o, più semplicemente, funzione di distribuzione. Esempio 1.3 – Con riferimento all’Esempio 1.1 sia X una funzione così definita X(u) = 0
  • 7. Introduzione al metodo Monte Carlo 3 X(d) = 1 La funzione X è una variabile aleatoria in quanto { ω : X (ω ) ≤ r} = ∅ { ω : X (ω ) ≤ r} = { a} { ω : X (ω ) ≤ r} = Ω r<0 0 ≤ r <1 r ≤1 Esempio 1.4 – Supponiamo che la variabile definita nell’esempio precedente assuma il valore 0 con probabilità p1 e 1 con probabilità p2 = 1 – p1. La funzione di distribuzione di questa variabile è data da x<0 0 :  FX ( x ) =  p1 : 0 ≤ x < 1 1 : 1≤ x  La funzione indicatrice di un evento A, IA, definita come 0 : ω ∉ A I A (ω ) =  1 : ω ∈ A è un tipico esempio di funzione a due valori con p1 = P(A). Una variabile aleatoria è detta discreta se l’insieme dei valori che può assumere è numerabile. Sia (Ω, A , P) uno spazio di probabilità e X una variabile aleatoria discreta che può assumere i valori x1 , x2 , K , x k , K Definiamo la funzione di probabilità come  P( X = x ) : se x = xi , per qualche i = 1,2,.... f X ( x) =  : altrimenti 0 (1.1) La funzione di probabilità e la funzione di distribuzione sono legate dalla relazione: FX ( x ) = ∑f xi ≤ x X ( xi ) (1.2) Una variabile aleatoria X è detta continua se esiste una funzione reale fX tale che per ogni x reale sia soddisfatta la relazione x FX ( x ) = ∫f X ( y )dy (1.3) −∞ nei punti in cui la funzione di distribuzione è derivabile vale anche la relazione inversa
  • 8. 4 Introduzione al metodo Monte Carlo f X ( x) = dFX ( x ) dx (1.4) La funzione f(x) in questo caso viene detta funzione densità di probabilità (o semplicemente funzione densità). 1.3 Momenti Il valor medio o valore di aspettazione di X, che indicheremo con µ X , è definito come µ X = E [ X ] = ∑ xi f X ( xi ) (1.5) i In generale si definisce momento dall’origine (o momento grezzo) di ordine r, e si r indica µ X , la media della variabile aleatoria Xr. La definizione è naturalmente 2 applicabile solo nel caso in cui tale media sia finita. La varianza di X, indicata con σ X , è la media degli scarti quadratici rispetto alla media µ X e rappresenta una misura di dispersione di X. La sua radice quadrata è detta deviazione standard. La varianza è definita da 2 σ X = ∑ ( xi − µ X )2 f X ( xi ) (1.6) i da cui è immediato ricavare 2 σ X = E [X 2 ] − (E [X ])2 (1.7) Un ruolo molto importante è rivestito dalla cosiddetta funzione generatrice dei momenti: [ ] 1 1   m X (t ) = E e tX = E 1 + Xt + ( Xt ) 2 + ( Xt ) 3 + K = 2 3!   1 2 1 i = 1 + µX t + µX t2 + K = ∑ µX ti 2 i i! (1.8) dove abbiamo utilizzato lo sviluppo in serie della funzione esponenziale. E’ estremamente semplice verificare che 2 µX = dr mX dt r (1.9) t =0 Si possono facilmente generalizzare al caso continuo i risultati per le distribuzioni discrete, il valore di aspettazione sarà pertanto definito come
  • 9. Introduzione al metodo Monte Carlo 5 +∞ E[ X ] = ∫ xf X (1.10) ( x )dx −∞ in maniera analoga si generalizzano le definizioni di varianza e degli altri momenti. La funzione generatrice dei momenti gode delle stesse proprietà del caso discreto. Un problema che citiamo solo per completezza ma che non può essere affrontato in questo testo è quello relativo alla stima dei parametri statistici. Nel seguito vedremo alcune formule (presenteremo quelle impiegate da Excel) che permettono di stimare il valore di uno o più momenti a partire da un campione di dati. Occorre sempre ricordare che campioni diversi forniscono stime diverse del parametro di riferimento. La stima di un parametro statistico non restituisce il valore esatto del parametro del campione, quanto una variabile casuale, dotata di una propria distribuzione di probabilità: la distribuzione di probabilità delle stime dei parametri è nota in statistica come distribuzione campionaria. Ci limitiamo a ricordare che per avere stime non distorte è necessario che il valore di aspettazione dello stimatore sia uguale al parametro stimato. Excel dispone di numerose funzioni per l’analisi statistica dei dati (vedi Tabella 1.1). Fra queste vi sono una serie di funzioni per il calcolo dei momenti che vale la pena descrivere in maggior dettaglio. Tabella 1.1 – Le funzioni statistiche di Excel MEDIA.DEV MEDIA MEDIA.VALORI DISTRIB.BETA INV.BETA DISTRIB.BINOM DISTRIB.CHI INV.CHI TEST.CHI CONFIDENZA CORRELAZIONE CONTA.NUMERI CONTA.VALORI COVARIANZA CRIT.BINOM Restituisce la media delle deviazioni assolute dei valori rispetto alla loro media Restituisce la media degli argomenti Restituisce la media degli argomenti, inclusi i numeri, il testo e i valori logici Calcola la funzione densità di probabilità cumulativa beta Calcola l'inverso della funzione densità di probabilità cumulativa beta Restituisce la distribuzione binomiale per il termine individuale Restituisce la probabilità ad una coda per la distribuzione del chi quadrato Restituisce l'inverso della probabilità ad una coda per la distribuzione del chi quadrato Restituisce il test per l'indipendenza Restituisce l'intervallo di confidenza per la popolazione Restituisce il coefficiente di correlazione tra due serie di dati Conta la quantità di numeri nell'elenco di argomenti Conta il numero di valori nell'elenco di argomenti Calcola la covarianza, la media dei prodotti delle deviazioni accoppiate Restituisce il più piccolo valore per il quale la distribuzione cumulativa binomiale risulta maggiore o uguale ad un valore di criterio DEV.Q Restituisce la somma dei quadrati delle deviazioni DISTRIB.EXP Restituisce la distribuzione esponenziale DISTRIB.F Restituisce la distribuzione di probabilità F INV.F Restituisce l'inverso della distribuzione della probabilità F FISHER Restituisce la trasformazione di Fisher INV.FISHER Restituisce l'inverso della trasformazione di Fisher PREVISIONE Restituisce i valori lungo una tendenza lineare FREQUENZA Restituisce la distribuzione di frequenza come matrice verticale TEST.F Restituisce il risultato di un test F DISTRIB.GAMMA Restituisce la distribuzione gamma GAMMAINV Restituisce l'inverso della distribuzione cumulativa gamma LN.GAMMA Restituisce il logaritmo naturale della funzione gamma, Γ(x) MEDIA.GEOMETRICA Restituisce la media geometrica CRESCITA Restituisce i valori lungo una linea di tendenza esponenziale MEDIA.ARMONICA Restituisce la media armonica DISTRIB.IPERGEOM Restituisce la distribuzione ipergeometrica INTERCETTA Restituisce l'intercetta della retta di regressione lineare CURTOSI Restituisce la curtosi di un insieme di dati
  • 10. 6 Introduzione al metodo Monte Carlo GRANDE REGR.LIN REGR.LOG INV.LOGNORM Restituisce il k-esimo valore più grande in un insieme di dati Restituisce i parametri di una tendenza lineare Restituisce i parametri di una linea di tendenza esponenziale Restituisce l'inverso di una distribuzione lognormale DISTRIB.LOGNORM Restituisce la distribuzione lognormale cumulativa MAX Restituisce il valore massimo in un elenco di argomenti MAX.VALORI Restituisce il valore massimo in un elenco di argomenti, inclusi i numeri, il testo e i valori logici MEDIANA Restituisce la mediana dei numeri specificati MIN Restituisce il valore minimo in un elenco di argomenti MIN.VALORI Restituisce il più piccolo valore in un elenco di argomenti, inclusi i numeri, il testo e i valori logici MODA Restituisce il valore più comune in un insieme di dati DISTRIB.BINOM.NEG Restituisce la distribuzione binomiale negativa DISTRIB.NORM Restituisce la distribuzione cumulativa normale INV.NOR Restituisce l'inverso della distribuzione cumulativa normale DISTRIB.NORM.ST Restituisce la distribuzione cumulativa normale standard INV.NORM.ST Restituisce l'inverso della distribuzione cumulativa normale standard PEARSON Restituisce il coefficiente del momento di correlazione di Pearson PERCENTILE Restituisce il k-esimo dato percentile di valori in un intervallo PERCENT.RANGO Restituisce il rango di un valore in un insieme di dati come percentuale PERMUTAZIONE Restituisce il numero delle permutazioni per un determinato numero di oggetti POISSON Restituisce la distribuzione di Poisson PROBABILITÀ Calcola la probabilità che dei valori in un intervallo siano compresi tra due limiti QUARTILE Restituisce il quartile di un insieme di dati RANGO Restituisce il rango di un numero in un elenco di numeri RQ Restituisce la radice quadrata del coefficiente di momento di correlazione di Pearson ASIMMETRIA Restituisce il grado di asimmetria di una distribuzione PENDENZA Restituisce la pendenza di una retta di regressione lineare PICCOLO Restituisce il k-esimo valore più piccolo in un insieme di dati NORMALIZZA Restituisce un valore normalizzato DEV.ST Restituisce una stima della deviazione standard sulla base di un campione DEV.ST.VALORI Restituisce una stima della deviazione standard sulla base di un campione, inclusi i numeri, il testo e i valori logici DEV.ST.POP Calcola la deviazione standard sulla base di un'intera popolazione DEV.ST.POP.VALORI Calcola la deviazione standard sulla base sull'intera popolazione, inclusi i numeri, il testo e i valori logici ERR.STD.YX Restituisce l'errore standard del valore previsto per y per ciascun valore x nella regressione DISTRIB.T Restituisce la distribuzione t di Student INV.T Restituisce l'inversa della distribuzione t di Student TENDENZA Restituisce i valori lungo una linea di tendenza lineare MEDIA.TRONCATA Restituisce la media della parte interna di un insieme di dati TEST.T Restituisce la probabilità associata ad un test t di Student VAR Stima la varianza sulla base di un campione VAR.VALORI Stima la varianza sulla base di un campione, inclusi i numeri, il testo e i valori logici VAR.POP Calcola la varianza sulla base dell'intera popolazione VAR.POP.VALORI Calcola la varianza sulla base dell'intera popolazione, inclusi i numeri, il testo e i valori logici WEIBULL Restituisce la distribuzione di Weibull TEST.Z Restituisce il livello di significatività a due code per un test z In pratica vengono comunemente utilizzati i primi quattro momenti: • media • varianza • skewness (o asimmetria) • curtosi La funzione MEDIA()viene utilizzata per calcolare la media aritmetica di un insieme di valori. L’argomento di questa funzione deve indicare il blocco di celle che contiene i valori di cui calcolare il valor medio. Notate che le celle contenenti il valore 0 (zero) saranno incluse nel calcolo della media mentre le celle vuote (senza alcun dato) restano escluse da questo calcolo.
  • 11. Introduzione al metodo Monte Carlo 7 La varianza può essere calcolata tramite la funzione VAR(). Anche questa funzione prende come argomento il blocco di celle contenente i dati di cui si desidera stimare la varianza. Lo stimatore utilizzato da Excel per il calcolo è il seguente  n  n ∑ x −  ∑ xi   i =1  s = i =1 n( n − 1) n 2 2 i (1.11) Il momento centrale di ordine 3 ci dà informazioni sul grado di asimmetria di una distribuzione attorno alla sua media ed è comunemente indicato col termine skewness. L'asimmetria positiva indica una distribuzione con una coda asimmetrica che si estende verso i valori più positivi. L'asimmetria negativa indica una distribuzione con una coda asimmetrica che si estende verso i valori più negativi. Excel mette a disposizione la funzione ASIMMETRIA() che utilizza il seguente stimatore n n x −x ∑ i s  ( n − 1)( n − 2) i =1   3 (1.12) in cui s è lo stimatore della standard deviation e x è il valor medio. Se esistono meno di tre valori o se la deviazione standard sulla base di un campione è uguale a zero, ASIMMETRIA() restituirà il valore di errore #DIV/0!. La relazione tra momento del terzo ordine e coefficiente di asimmetria, solitamente indicato con β1 = µ3 σ3 β1 , è data da (1.13) Valori positivi dell’asimmetria indicano che la distribuzione è asimmetrica per valori crescenti della variabile x (a destra) mentre un’asimmetria negativa sta ad indicare una distribuzione asimmetrica a sinistra. Infine CURTOSI() restituisce la curtosi, indicata con β 2 , di un insieme di dati. Essa è legata al momento centrale di ordine 4 dalla relazione β2 = µ4 σ4 (1.14) ed è caratteristica delle cosiddette “code grasse”. Lo stimatore utilizzato da Excel riporta in realtà la cosiddetta “curtosi in eccesso” ovvero la differenza fra β 2 e 3. Questo è dovuto al fatto che la distribuzione normale o gaussiana ha curtosi pari a 3 e questo indicatore viene spesso utilizzato come indice per comprendere quando la distribuzione di un insieme di dati si allontani dalla normalità.
  • 12. 8 Introduzione al metodo Monte Carlo La formula utilizzata è 4 2 n  3(n − 1) n( n + 1)  xi − x    −   ∑  ( n − 1)( n − 2)( n − 3) i =1  s   ( n − 2)( n − 3)   (1.15) in cui s è lo stimatore della standard deviation e x è il valor medio. Se sono presenti meno di quattro dati o se la deviazione standard del campione è uguale a zero, CURTOSI() restituirà il valore di errore #DIV/0!. 1.4 Distribuzioni Discrete Vediamo ora alcune fra le più comuni funzioni di distribuzioni discrete. Il lettore può seguire la nostra analisi utilizzando il file “Richiami di Statistica 1.xls”. Distribuzione Uniforme Sia X una variabile aleatoria che assume valori nel dominio dei numeri naturali 1, 2, ... , n. Diremo che tale variabile ha una distribuzione uniforme se risulta 1 n : x = 1,2, K , n f X ( x ) = f X ( x, n ) =  : altrimenti 0 (1.16) Valor medio e varianza sono dati da: E[ X ] = 1 n ( n + 1)n n + 1 ∑ i = 2n = 2 n i =1 2 σ X = E [ X 2 ] − (E[ X ])2 = 1 n 2 ( n + 1) 2 n( n + 1)( 2n + 1) ( n + 1) 2 n 2 − 1 − = ∑i − 4 = 6 4 12 n i =1 (1.17) (1.18) Distribuzione Binomiale Dati n eventi indipendenti, tutti con uguale probabilità p, sia X la variabile casuale che conta il numero totale di eventi che si verificano fra quelli possibili. X ha una distribuzione binomiale con parametri n e p. La funzione di probabilità è f X (i ) = n! p i (1 − p ) n −i i! ( n − i )! per i = 0, 1, 2, ..., n (1.19)
  • 13. Introduzione al metodo Monte Carlo 9 valor medio e varianza sono dati da E [X ] = np (1.20) 2 σ X = np(1 − p ) (1.21) Figura 1.1 – Funzione di Probabilità e Distribuzione Cumulata Binomiale per il caso n = 6 e p = 0.5 (le due figure differiscono solo nel formato grafico, il primo è quello predefinito prodotto da Excel tramite gli Strumenti di analisi, il secondo è ottenuto modificando la distanza fra le barre come spiegato nel testo) In Excel è possibile lavorare con la distribuzione binomiale tramite la funzione DISTRIB.BINOM() la cui sintassi è la seguente: DISTRIB.BINOM(num_successi; num_prove;probabilita_s;cumulativo) dove num_successi è il numero di successi in num_prove indipendenti, probabilita_s è la probabilità di successo per ciascuna prova e cumulativo è un valore logico che determina la forma assunta dalla funzione. Se il valore cumulativo è VERO, DISTRIB.BINOM restituirà la funzione distribuzione cumulata, ovvero la probabilità che venga restituito un numero massimo di successi pari al valore di num_successi. Se il valore cumulativo è FALSO, verrà restituita la funzione di probabilità. Esempio 1.5 - Il lancio di una moneta può produrre come risultato solo testa o croce. La probabilità che il primo lancio sia testa è uguale a 0,5, mentre la probabilità che esattamente sei lanci su dieci siano testa è espressa dalla formula: DISTRIB.BINOM(6;10;0;5;FALSO) che risulta pari a 0.205078
  • 14. 10 Introduzione al metodo Monte Carlo Distribuzione di Poisson Esistono numerosi eventi che accadono nel tempo con cadenza del tutto irregolare. Il numero di telefonate in arrivo ad un centralino, il numero di clienti che si presentano allo sportello di un ufficio, il numero di auto che giungono ad un casello autostradale sono tutti chiari esempi di questo tipo di processi. Indichiamo con µ il numero medio di occorrenze nell’unità di tempo e supponiamo che siano soddisfatte le seguenti proprietà: 1. La probabilità di avere esattamente un’occorrenza in un intervallo di tempo dt di ampiezza trascurabile è µ dt a meno di infinitesimi di ordine superiore mentre la probabilità di avere più di un’occorrenza è trascurabile; 2. I numeri di occorrenze in intervalli temporali disgiunti sono indipendenti. Figura 1.2 – Funzione di Probabilità e Distribuzione Cumulata di Poisson per λ = 9 Consideriamo la variabile aleatoria X che rappresenta il numero di occorrenze in un dato intervallo (0, t ) . Dividiamo l’intervallo in n sotto-intervalli di ampiezza t / n. La probabilità di avere esattamente una occorrenza all’interno di uno di questi sottointervalli è per le ipotesi fatte pari a µ t / n; per la proprietà dell’indipendenza, e ricordando la definizione della distribuzione binomiale, otteniamo che la probabilità di k occorrenze è data da (a meno di infinitesimi di ordine superiore)
  • 15. Introduzione al metodo Monte Carlo 11 k  n   µt   µt  P ( X = k ) =     1 −  k  n n     n −k n = n( n − 1) L ( n − k + 1) µt   µt   ( µt ) k 1 −  1 −  k k! n n  n  −k (1.22) Supponiamo ora che n tenda all’infinito, per le ipotesi fatte la probabilità di occorrenza all’interno di un intervallo µ dt tende a zero ma il prodotto nµ dt è pari ad una costante λ = µ t, otteniamo così la cosiddetta distribuzione di Poisson f X ( x ) = f X ( x; λ ) = e − λx λ x x! con x = 0, 1, 2, ... (1.23) Per il calcolo del valor medio e della varianza ricorreremo alla funzione generatrice dei momenti che, in questo caso, è data da t (e t λ ) k = e λ ( e −1) k! k =1 ∞ m X (t ) = e −λ ∑ (1.24) da cui si ricava facilmente t dm X (t ) = λe λ ( e −1)+t dt (1.25) t d 2 m X (t ) = λe λ ( e −1) + t ( λe t + 1) 2 dt (1.26) e quindi E [X ] = [ ] EX 2 dm X (0) =λ dt d 2 m X ( 0) = = λ ( λ + 1) dt 2 (1.27) (1.28) La varianza è pertanto pari a [ ] E X 2 − (E [X ]) = λ ( λ + 1) − λ2 = λ 2 (1.29) La media e la varianza di una distribuzione di Poisson coincidono e sono entrambe pari al parametro λ. In Excel è disponibile la funzione POISSON la cui sintassi è POISSON(x;media;cumulativo)
  • 16. 12 Introduzione al metodo Monte Carlo dove x è il numero degli eventi, media è il valore numerico previsto e, come al solito, cumulativo è un valore logico che determina la forma per la distribuzione di probabilità. Se cumulativo è VERO, POISSON restituirà la probabilità cumula di Poisson indicante la probabilità che il numero degli eventi casuali sia compreso tra zero e x inclusi. Se cumulativo è FALSO, verrà restituita la funzione di probabilità di Poisson indicante la probabilità che il numero di eventi sia esattamente uguale a x. Distribuzioni Continue 1.5 Distribuzione Uniforme Diremo che una variabile aleatoria X è uniformemente distribuita nell’intervallo reale [a, b] se la sua funzione di distribuzione cumulata è data da 0 x −a FX ( x ) =  b − a 1 se x < a se a ≤ x ≤ b (1.30) se x > b a cui corrisponde una funzione densità di probabilità data da 0  1 f X ( x) =  b − a 0 se x < a se a ≤ x ≤ b (1.31) se x > b La funzione generatrice dei momenti, il valore di aspettazione e la varianza sono semplicemente calcolabili b m X (t ) = ∫ e tx a 1 e bt − e at dx = ( b − a )t b−a (1.32) b b+a x dx = b−a 2 a E[ X ] = ∫ (1.33) (b − a ) x2 b+a dx −   = b−a 12  2  a b 2 σ X = E[ X 2 ] − (E[ X ])2 = ∫ 2 2 (1.34) Come vedremo la distribuzione uniforme gioca un ruolo particolarmente importante nei metodi di simulazione in quando per generare le diverse distribuzioni si parte usualmente da generatori di variabili casuali uniformi. Excel mette a disposizione la funzione CASUALE() che restituisce un numero aleatorio distribuito in maniera uniforme nell’intervallo [0, 1) (si noti che i numeri prodotti sono strettamente minori di
  • 17. Introduzione al metodo Monte Carlo 13 1). Ogni volta che si effettua un calcolo nel foglio di lavoro viene restituito un nuovo numero casuale. Se si desidera utilizzare CASUALE per creare un numero casuale senza che i numeri vengano modificati ogni volta che si esegue il calcolo della cella, è possibile immettere = CASUALE() nella barra della formula e premere F9 per convertire la formula in un numero casuale. Per creare un numero reale casuale compreso tra a e b, occorre inserire la formula seguente: = CASUALE()*(b - a) + a Sebbene le informazioni derivanti dai momenti forniscano essenziali dettagli su un insieme di dati, spesso è più comodo rappresentare questi ultimi in modo da illustrare come i valori sono distribuiti all’interno del loro dominio. Un tipo di rappresentazione che si presta particolarmente bene a questo tipo di indagine è il cosiddetto istogramma o diagramma delle frequenze relative. Il primo passo per la creazione di un istogramma è la suddivisione dell’insieme dei dati in una serie di intervalli adiacenti della stessa ampiezza (questi intervalli sono anche chiamati Intervalli delle classi). Il primo intervallo deve iniziare da un valore minore o uguale al minimo valore presente nell’insieme dei dati e l’ultimo intervallo deve, ovviamente, estendersi oltre il limite superiore dei valori dell’insieme stesso. In Excel gli istogrammi possono essere costruiti molto facilmente utilizzando la funzione Istogramma del pacchetto degli Strumenti di Analisi. Per installare questi strumenti, selezionate Componenti Aggiuntivi dal menu Strumenti; nella finestra di dialogo che viene aperta selezionate le caselle Strumenti di Analisi e Strumenti di Analisi VBA (vedi Figura 1.3). Utilizzeremo un istogramma per analizzare il generatore di numeri casuali di Excel. Se la serie dei numeri casuali è realmente distribuita uniformemente si avrà un numero pressoché uguale di numeri “casuali” in ognuno degli intervalli. Aprite una cartella di lavoro e nella cella A1 inserite la formula = CASUALE(), premete INVIO e vedrete apparire nella cella stessa un numero reale compreso fra 0 e 1. In un’altra riga è necessario introdurre gli estremi superiori degli intervalli delle classi, l’ultimo intervallo viene considerato aperto nel senso che può contenere tutti i valori che superano il limite massimo. Copiate la formula nelle prime 1000 righe del foglio di lavoro e definite gli intervalli delle classi in modo da suddividere l’intervallo [0,1] in 25 classi equispaziate e adiacenti (vedi Figura 1.4). Notate che nella definizione degli intervalli delle classi è necessario introdurre soltanto l’estremo superiore dell’intervallo, per cui nel primo cadranno tutte le occorrenze comprese fra 0 e 0.04, nel secondo quelle comprese fra 0.04 e 0.08 e così via. A questo punto selezionate Analisi Dati dal menu Strumenti (Figura 1.5). Scegliete la voce Istogramma ed inserite le informazioni richieste nella finestra dialogo risultante (Figura 1.6). In particolare è necessario specificare i blocchi di celle che contengono i dati (casella Intervallo di input) e gli estremi degli intervalli (casella Intervallo della classe). Le due caselle di input sono degli oggetti di tipo RefEdit. Il controllo RefEdit è uno strumento estremamente interessante per i programmatori in Visual Basic per Excel per cui vale la pena spendere due parole di descrizione.
  • 18. 14 Introduzione al metodo Monte Carlo Figura 1.3 – La casella dei componenti aggiuntivi Figura 1.4 – Valori della variabile aleatoria (colonna A) e classi dell’istogramma (colonna B) Questo controllo permette all’utente di inserire un riferimento ad una o più celle utilizzando il mouse. Quando l’utente preme il pulsante alla destra del componente RefEdit, la finestra viene nascosta e ne appare un’altra che permette di accedere al foglio e selezionare una cella o un insieme di celle: i riferimenti di tale selezione vengono copiati nella nuova finestra. Al termine di questa operazione l’utente deve premere INVIO o premere di nuovo il pulsante della casella, la finestra temporanea di
  • 19. Introduzione al metodo Monte Carlo 15 input si chiude ripristinando quella originaria. All’interno del controllo RefEdit che era stato attivato compariranno così i riferimenti scelti dall’utente. Figura 1.5 – La finestra di dialogo Analisi Dati Figura 1.6 – La finestra di dialogo per la costruzione di un istogramma Se l’istogramma deve essere inserito nel foglio corrente attivate l’opzione Intervallo di output e digitate l’indirizzo della cella dell’angolo superiore sinistro del blocco che dovrà contenere i dati di output. Dopo aver specificato le informazioni richieste premete il pulsante OK ed Excel creerà automaticamente la tabella delle frequenze. I valori presenti in questa colonna sono numeri interi, possiamo creare una colonna delle frequenze relative dividendo questi valori per il numero totale di dati. Qualora si voglia ottenere il grafico occorre anche selezionare la casella Grafico in output (vedi FIgura 1.7). Prestate attenzione al fatto che le etichette numeriche rappresentate sotto ogni intervallo nel grafico corrispondono ai limiti superiori degli intervalli e non agli intervalli stessi. Inoltre poiché le barre verticali dell’istogramma corrispondono ad intervalli contigui può essere meglio scegliere una rappresentazione grafica in cui le barre siano disposte una accanto all’altra senza spazi intermedi. Per apportare questa modifica è sufficiente fare clic con il tasto destro del mouse su una barra verticale qualsiasi del grafico e scegliere Serie dei dati selezionati/Opzioni dal menu Formato; impostate a 0 il campo Distanza fra le barre. L’utilizzo di uno strumento di analisi come l’istogramma è
  • 20. 16 Introduzione al metodo Monte Carlo estremamente utile in vari contesti per cui può essere comodo disporre del codice VBA per gestirlo da programma. Per questo risulta di grande utilità il registratore di macro che abbiamo presentato nel primo capitolo. Nel seguente riquadro trovate il codice prodotto automaticamente dal registratore all’interno di una macro realizzata durante la creazione di un istogramma. Application.Run "ATPVBAEN.XLA!Histogram", ActiveSheet.Range("$A$1:$B$1000") _ , ActiveSheet.Range("$D$1"), ActiveSheet.Range("$B$1:$B$25"), False, False _ , True, False Figura 1.7 – Istogramma ottenuto generando 1000 numeri casuali col generatore di Excel I dati sono quelli dell’esempio riportato in Figura 1.7. Prima di tutto osserviamo che questo comando è in realtà una chiamata ad una funzione, precisamente al metodo Run dell’oggetto Application che corrisponde ad Excel. Il metodo Run esegue una macro o richiama una funzione e può essere utilizzato per eseguire una macro scritta in linguaggio Visual Basic, segue una lista di argomenti di cui tipicamente il primo rappresenta il nome della funzione da eseguire mentre gli altri rappresentano i parametri da passare alla funzione. Selezionando gli strumenti di analisi vengono caricate due aggiunte di Excel che contengono i riferimenti necessari per poter utilizzare da VB le rispettive funzionalità. In uno di questi, ATPVBAEN.XLA, è presente la subroutine Histogram che permette la realizzazione di un istogramma; si noti che per lanciare una qualunque macro presente in un aggiunta occorre far precedere il nome della macro dal nome del file in cui essa si trova separato dal simbolo “!”. I parametri successivi sono relativi a tre intervalli di celle e a quattro variabili logiche che caratterizzano altrettante opzioni. I parametri di tipo Range hanno il seguente significato:
  • 21. Introduzione al metodo Monte Carlo 17 1. intevallo di input dei dati; 2. intervallo di output della tabella delle frequenze (notate che è sufficiente in questo caso indicare la cella corrispondente all’angolo superiore sinistro del range); 3. intervalli delle classi. Le quattro variabili logiche corrispondono alle opzioni che è possibile selezionare dalla finestra di dialogo dell’istogramma (se le variabili vengono impostate al valore VERO la corrispondente opzione risulta selezionata): 1. 2. 3. 4. opzione Pareto (istogramma ordinato); opzione percentuale cumulativa; opzione grafico in output; indica se le prime righe dei blocchi di dati in input contengono delle etichette. Se provate a registrare alcune macro selezionando diverse modalità di presentazione dei risultati in output troverete che quando l’intervallo di output viene posto uguale a “” (stringa vuota) la tabella delle frequenze (ed eventualmente il grafico) vengono riportati su un nuovo foglio di lavoro della stessa cartella. Se scegliete di riportare i risultati dell’istogramma su una nuova cartella di lavoro il parametro relativo all’intervallo di output viene invece omesso del tutto. Nel riquadro seguente abbiamo riportato il codice di una semplice subroutine che, a partire dal codice prodotto dal registratore di macro, permette di gestire completamente da VBA la realizzazione di un istogramma. Sub Istogramma(ClassRange As String, _ InputRange As String, _ Optional OutputRange As Variant, _ Optional flgPareto As Boolean = False, _ Optional flgCumulata As Boolean = False, _ Optional flgGrafico As Boolean = False, _ Optional flgEtichette As Boolean = False) If IsMissing(OutputRange) Then Application.Run "ATPVBAEN.XLA!Histogram", ActiveSheet.Range(InputRange) _ , , ActiveSheet.Range(ClassRange), _ flgPareto, flgCumulata, flgGrafico, flgEtichette ElseIf Len(OutputRange) = 0 Then Application.Run "ATPVBAEN.XLA!Histogram", ActiveSheet.Range(InputRange) _ , "", ActiveSheet.Range(ClassRange), _ flgPareto, flgCumulata, flgGrafico, flgEtichette Else Application.Run "ATPVBAEN.XLA!Histogram", ActiveSheet.Range(InputRange) _ , ActiveSheet.Range(OutputRange), ActiveSheet.Range(ClassRange) _ , flgPareto, flgCumulata, flgGrafico, flgEtichette End If End Sub Si noti che tutti i parametri tranne i primi due sono opzionali; inoltre, poiché dobbiamo essere in grado di controllare se il parametro OutputRange viene passato o meno alla procedura tramite la funzione IsMissing(), è necessario definirlo di tipo Variant. Per evitare che ogni operazione condotta sul foglio produca il ricalcolo dell’intera
  • 22. 18 Introduzione al metodo Monte Carlo colonna di numeri casuali, abbiate cura di deselezionare l’opzione calcolo automatico tramite la voce Opzioni del menu Strumenti (vedi Figura 1.8). Figura 1.8 – La finestra Opzioni attivabile dal menu Strumenti Nel file “Richiami di Statistica 2.xls” l’opzione calcolo manuale viene attivata automaticamente non appena si carica il file stesso utilizzando il metodo Open dell’oggetto Workbook. Il codice relativo è riportato nel riquadro seguente e non richiede particolari commenti. Private Sub Workbook_Open() Application.Calculation = xlManual End Sub Nel file citato il lettore troverà un’applicazione del codice sopra discusso sia per la distribuzione uniforme, sia per la distribuzione normale che adesso andremo a discutere. Distribuzione Normale Una delle funzioni più importanti, sia nella teoria sia nella pratica, è la distribuzione normale o gaussiana la cui funzione densità è data da: − 1 f X ( x ) = f X ( x; µ , σ ) = e σ 2π ( x − µ )2 2σ 2 (1.35) dove i parametri µ e σ sono rispettivamente la media e la deviazione standard. L’espressione della funzione generatrice dei momenti è
  • 23. Introduzione al metodo Monte Carlo 19 [ ] = e E [e m X (t ) = E e tµ tX t ( X −µ ) ] +∞ − 1 e t ( x−µ ) e =e ∫ − ∞σ 2π tµ +∞ − 1 e ∫ e − ∞σ 2π tµ e tµ + σ 2t 2 + ∞ 2 ( x − µ )2 2σ 2 dx = ( x − µ ) 2 − 2σ 2t ( x − µ ) 2σ 2 − 1 e ∫ − ∞σ 2π ( x − µ −σ 2t ) 2 2σ 2 dx = (1.36) dx D’altra parte l’ultimo integrale è uguale ad 1 (si tratta infatti dell’integrale su tutto il dominio di una funzione gaussiana) per cui possiamo scrivere: m X (t ) = e tµ + σ 2t 2 2 (1.37) Lasciamo al lettore verificare, utilizzando la funzione generatrice dei momenti, che effettivamente i parametri µ e σ 2 sono rispettivamente la media e la varianza della distribuzione. Una variabile aleatoria viene detta distribuita secondo una normale standard se la media è 0 e la standard deviation è 1. Nel corso del testo utilizzeremo anche una notazione abbastanza diffusa tramite la quale si indica che una generica variabile aleatoria X è distribuita come una normale con media µ e varianza σ 2: X ~ N (µ,σ ) . Figura 1.9 – Densità di Probabilità e Distribuzione Cumulata Normale (µ = 4, σ = 0.5)
  • 24. 20 Introduzione al metodo Monte Carlo Per l’analisi di distribuzioni gaussiane Excel mette a disposizione due funzioni: una per la distribuzione generica e l’altra specializzata al caso della normale standard. DISTRIB.NORM(). Restituisce la distribuzione normale con media e distribuzione standard specificate. La sintassi è la seguente DISTRIB.NORM(x;media;dev_standard;cumulativo) dove x è il valore per il quale si desidera la distribuzione, media è la media della distribuzione, dev_standard è la deviazione standard e cumulativo è un valore logico che determina la forma assunta dalla funzione. Se cumulativo è VERO, DISTRIB.NORM restituirà la funzione di distribuzione cumulata, se è FALSO restituirà la funzione densità di probabilità. DISTRIB.NORM.ST(). Restituisce la funzione di distribuzione normale standard. La distribuzione ha una media uguale a 0 e una deviazione standard uguale a 1 Sintassi: DISTRIB.NORM.ST(z) essendo z il valore per il quale si desidera la distribuzione. Distribuzione LogNormale Sia X una variabile aleatoria con distribuzione normale, allora la variabile Y = eX definisce una variabile aleatoria con distribuita in maniera log-normale. Se la variabile X ha media µ e standard deviation σ, allora la funzione densità di probabilità di z è data da f Z ( z) = 1 zσ 2π e − 1 2σ 2 (ln z − µ )2 (1.38) con z ≥ 0 . La media e la varianza della variabile Z possono essere espresse in funzione dei corrispondenti momenti di X tramite le relazioni E[ Z ] = e 1 2 µ+ σ 2 2 ( (1.39) 2 ) 2 σ Z = e 2 µ +σ eσ − 1 = e 2 µ ω (ω − 1) (1.40) avendo posto ω = exp(σ 2 ) ≥ 1 . I fattori di asimmetria e curtosi sono dati rispettivamente da
  • 25. Introduzione al metodo Monte Carlo 21 β1 = (ω − 1)1 / 2 (ω + 2 ) (1.41) β 2 = ω 4 + 2ω 3 + 3ω 2 − 3 (1.42) Notate che per valori di σ non nulli, sia l’asimmetria è sempre maggiore di zero e la curtosi è sempre maggiore di 3. Questo vuol dire che la distribuzione log-normale è sempre asimmetrica a destra e leptocurtica. Figura 1.10 – Densità di Probabilità e Distribuzione Cumulata Lognormale Nel grafico riportato in Figura 1.10 sono disegnati gli andamenti delle funzioni di densità e cumulata. Per quest’ultima è stata utilizzata la funzione Excel DISTRIB.LOGNORM() la cui sintassi è la seguente DISTRIB.LOGNORM(x;media;dev_standard) dove la media e la standard deviation sono relative al logaritmo di x. La funzione Excel in questo caso restituisce solo la distribuzione cumulata. Distribuzione Gamma Infine un breve cenno alla distribuzione Gamma che è utilizzata nella teoria della struttura a termine dei tassi di interesse. Questa funzione viene utilizzata in generale nello studio di variabili aleatorie con distribuzione asimmetrica e nell’analisi delle code. L’espressione della funzione densità di probabilità è:
  • 26. 22 Introduzione al metodo Monte Carlo f X (α , β ) = 1 x α −1e − x / β β Γ(α ) α (1.43) essendo ∞ Γ(z ) = ∫ t z −1e −t dt (1.44) 0 In Excel è disponibile la funzione DISTRIB.GAMMA()la cui sintassi è la seguente DISTRIB.GAMMA(x;alfa;beta;cumulativo) in cui alfa e beta sono i parametri della distribuzione e cumulativo è, come al solito, un parametro logico che indica se si desidera calcolare la densità di probabilità o la distribuzione cumulata. La distribuzione Gamma è definita solo per valori positivi della x e strettamente positivi dei parametri alfa e beta. Figura 1.11 – Densità di Probabilità e Distribuzione Cumulata Gamma
  • 27. Introduzione al metodo Monte Carlo 23 1.6 Covarianza e Correlazione Date due variabili aleatorie X ed Y con varianza finita, si definisce covarianza la quantità definita da σ XY = Cov( X , Y ) = E[ XY ] − E[ X ]E[Y ] (1.45) Se la covarianza è nulla le due variabili si dicono non correlate. Solitamente viene introdotto un coefficiente di correlazione definito come ρ XY = σ XY σ Xσ Y (1.46) I cui valori massimi e minimi dipendono dal tipo di distribuzione considerata 2. Due variabili si dicono indipendenti se la funzione di distribuzione congiunta FXY(x, y)3 è fattorizzabile nel prodotto delle marginali FX(x)FY(Y). Due variabili indipendendi con varianza finita sono anche non correlate ma non è vero il viceversa. La funzione COVARIANZA() di Excel ha la seguente sintassi COVARIANZA(matrice1; matrice2) dove matrice1 e matrice2 rappresentano due intervalli di celle contenenti le serie di cui si vuole valutare la covarianza. Date due variabili aleatorie X ed Y, questa funzione utilizza lo stimatore 1 n ∑ ( xi − µ X )( yi − µY ) n i =1 (1.47) essendo le medie rispettivamente di X e Y. E’ possibile inoltre calcolare direttamente il coefficiente di correlazione tramite la funzione corrispondente di Excel. 1.7 Che cos’è un Processo Stocastico Consideriamo una successione discreta di istanti di tempo t1 < t 2 < K < t n . In generale possiamo descrivere il comportamento di un sistema che evolve nel tempo in maniera 2 E’ consuetudine (errata!) ritenere che l’indice di correlazione sopra definito abbia come dominio di variazione l’intervallo chiuso [-1,1]. In realtà ciò non è vero! Il dominio dell’indice di correlazione lineare è sicuramente contenuto nel precedente intervallo ma i valori massimo e minimo che ρ può assumere dipendono dalle distribuzioni di probabilità delle due variabili aleatorie X ed Y. Una descrizione esauriente di questo risultato è al di là degli scopi di questo libro, il lettore interessato è rinviato all’articolo di Embrechts et. al. citato in bibliografica. 3 Il significato da attribuire alla funzione di distribuzione congiunta di due o più variabili è analogo a quello visto per il caso univariato FXY ( x, y ) = P ( X ≤ x e Y ≤ y ) . Rinviamo ai testi di statistica citati in bibliografia per la definizione delle distribuzioni marginali.
  • 28. 24 Introduzione al metodo Monte Carlo imprevedibile tramite una corrispondente sequenza di variabili aleatorie X1, X2, ..., Xn. Parleremo in questo caso di processo stocastico discreto. Naturalmente possiamo anche definire processi stocastici nel tempo continuo sia su un dominio finito, come ad esempio [0, 1], sia su un dominio infinito, ad esempio [0, ∞). Da un punto di vista formale consideriamo uno spazio di probabilità (Ω, A , P) e un insieme non vuoto, T, i cui elementi sono gli istanti che vengono presi in considerazione. Definiamo processo stocastico X = {X (t ) : t ∈ T } una funzione di due variabili X : T × Ω → R tale che X (t ) = X (t , .) è una variabile aleatoria per ogni t ∈ T . X (. , ω ) : T → R viene chiamata realizzazione o traiettoria del processo stocastico considerato. Ogni realizzazione in pratica non è altro che un’osservazione dell’evoluzione temporale della quantità descritta dal processo. Figura 1.12 – Due diverse realizzazioni di un processo stocastico La simulazione di un processo stocastico è dunque legata alla possibilità di generare successioni di numeri casuali. Una domanda sorge tuttavia spontanea: come può un elaboratore, macchina totalmente deterministica, generare numeri casuali e quindi per loro natura non deterministici? La risposta è molto semplice: non può! Qualunque sequenza di numeri prodotta da un computer viene sempre generata per mezzo di qualche algoritmo per cui non si può parlare di casualità essendo la sequenza predeterminata. Come vedremo nei prossimi capitoli, in compenso, con un computer si possono generare sequenze di numeri che sembrano casuali.
  • 29. 2 La Simulazione Monte Carlo La ricerca nel campo della fisica ha dimostrato in modo lampante che, almeno nella stragrande maggioranza dei fenomeni naturali la cui regolarità e invariabilità ha condotto alla formulazione del postulato della causalità generale, è il caso la radice comune della stretta rispondenza alle leggi riscontrata. Erwin Schroedinger “Che cos’è una legge fisica”, 1922 Da un punto di vista del tutto generale con il termine Monte Carlo si intende una tecnica numerica che faccia uso di numeri casuali per risolvere un problema. Per il momento assumiamo che il lettore comprenda, per lo meno a livello intuitivo, che cosa sia un numero casuale. Più avanti avremo modo di ritornare sulla definizione di numero casuale e, come vedremo, questo porterà a delle questioni tutt’altro che banali. Storicamente la prima applicazione su larga scala di metodi computazionali basati sull'uso di numeri casuali furono gli studi di diffusione ed assorbimento di neutroni (una particella elementare che compone il nucleo atomico) in vari tipi di materiale nell'ambito del progetto per la realizzazione della prima bomba atomica. Prima di passare ad alcuni esempi pratici, cerchiamo di dare una definizione formalmente più precisa. Il metodo Monte Carlo consiste nel rappresentare la soluzione di un problema come parametro di un’ipotetica popolazione ed usare una sequenza di numeri casuali per costruire un campione della popolazione dal quale possano essere estratte stime statistiche del parametro. E’ opportuno soffermarsi sulla natura dei problemi che è possibile affrontare con il metodo Monte Carlo. Semplificando al massimo la questione, è possibile dividere tali problemi in due grandi categorie Problemi di natura intrinsecamente probabilistica in cui sono coinvolti fenomeni legati alla fluttuazione stocastica di variabili aleatorie. Due problemi tipici che rientrano in questa categoria sono il pricing di un’opzione e la stima del VaR di un portafoglio. Problemi di natura essenzialmente deterministica, del tutto privi cioè di componenti aleatorie, ma la cui strategia di soluzione può essere riformulata in modo tale da risultare equivalente alla determinazione del valore di aspettazione di una funzione di variabili stocastiche. Nel caso di un problema del primo tipo è possibile stabilire una corrispondenza diretta fra popolazione simulata e popolazione studiata. Tali applicazioni sono dette
  • 30. 26 Introduzione al metodo Monte Carlo simulazioni dirette. Nel secondo caso la formulazione del problema può essere tale da rendere l’applicazione del metodo Monte Carlo poco evidente soprattutto se il problema in esame è intrinsecamente analitico. Vediamo subito un esempio pratico. Con riferimento alla fig. 2.1 consideriamo dapprima dei problemi di natura probabilistica (la valutazione del premio per un’opzione di tipo europeo scritta su un titolo azionario che non paga dividendi e la determinazione del VaR) ed un problema di natura prettamente deterministica come la determinazione dell’area racchiusa da una figura piana, ad esempio un cerchio. Cominciamo dal primo problema. Il pricing di un’opzione è affrontato usualmente nel contesto della cosiddetta valutazione neutrale rispetto al rischio. Indicando con fT il valore dell’opzione stessa alla scadenza T, il valore ad oggi, f, sarà dato da [ ˆ f = E fT e − r T ] (2.1) essendo Ê il valore di aspettazione risk-neutral ed r il valore medio fra t = 0 e t = T del tasso privo di rischio. Qualora si assuma di conoscere con certezza il valore di r il problema può essere semplificato e la (2.1) diventa ˆ f = e − r T E [ fT ] (2.2) La formulazione del problema rende evidente la sua natura intrinsecamente probabilistica. L’applicazione del metodo Monte Carlo nel caso in esame si riduce essenzialmente alla generazione di un numero sufficientemente elevato di stime di fT da cui estrarre il valore medio. A tal fine è necessario innanzi tutto introdurre un’ipotesi sul modo in cui il prezzo del titolo sottostante si evolve nel tempo; l’assunzione più comune è che il prezzo dell’azione segua un moto geometrico browniano. Secondo questa ipotesi il tasso di variazione del prezzo in un intervallo di tempo infinitesimo è descritto da dS = µSdt + σSdz (2.3) dove µ è il tasso di rendimento atteso e σ è la volatilità del prezzo dell’azione. La simulazione viene condotta dividendo l’intervallo di vita del derivato in N intervalli ciascuno di ampiezza ∆t. Si può dimostrare che la versione discreta della (2.3) è data da ∆S = µS∆t + σSε ∆t (2.4) dove ∆S è la variazione di prezzo nell’intervallo ∆t ed ε è un numero casuale estratto da una distribuzione normale (supponiamo per il momento di avere una qualche procedura che ci permetta di generare numeri casuali con distribuzione di probabilità assegnata). I valori di µ e σ possono essere stimati da un’analisi delle serie storiche dei prezzi per il titolo sottostante l’opzione. A questo punto siamo in grado di calcolare i valori assunti da ∆S (e quindi da S) agli istanti 0, ∆t, 2∆t, ….fino alla scadenza T. Si noti che il
  • 31. Introduzione al metodo Monte Carlo 27 processo di simulazione richiede la generazione di N numeri casuali indipendenti normalmente distribuiti. Una volta simulato il valore del titolo sottostante al tempo T siamo in grado di ricavare il valore dell’opzione alla stessa data. Supponendo che l’opzione sia di tipo call avremo semplicemente fT = max(ST − K ,0) (2.5) essendo K lo strike price. Ripetendo la procedura appena descritta un numero molto elevato di volte siamo in grado di ottenere una distribuzione di valori per fT dalla quale è possibile estrarre il valore di aspettazione che compare nella (2.2). Lo stesso problema può essere risolto con tecniche analitiche sia tipo numerico, come l’approccio basato sull’uso di alberi binomiali, sia ricercando, laddove le ipotesi non siano troppo restrittive per un uso pratico, una soluzione esatta come avviene nel caso dell’analisi svolta da Black e Scholes che in un lavoro ormai storico hanno ricavato una formula chiusa per il pricing di opzioni europee. Restando all’interno del primo tipo di problematiche vediamo come formalizzare il problema del VaR di un portafoglio in maniera adatta all’utilizzo di tecniche Monte Carlo. Supponiamo che il valore corrente del portafoglio sia V(t), sia ∆t il periodo di tempo su cui intendiamo stimare il VaR e infine V (t + ∆t ) indichi il valore del portafoglio al termine di questo periodo. La perdita di valore del portafoglio nel periodo considerato è pari a L = ∆V = V (t + ∆ ) − V (t ) e il VaR, xp, associato ad un certo livello di probabilità p è definito dalla relazione (2.6) P( L > x p ) = p PROBLEMA FORMULAZIONE VALUTAZIONE DEL PREZZO DI UN’OPZIONE (PROBABILISTICO) Simulazione diretta TIPO A (STATISTICO) SOLUZIONE Numeri casuali ESTRATTA DAL CAMPIONE (APPROSSIMATA) Metodi di valutazione NUMERICA Ad esempio: Alberi Binomiali Integrazione numerica “Crude” Monte Carlo CALCOLO DELL’AREA DI UN CERCHIO (DETERMINISTICO) TIPO B geometria (ANALITICO) Ad esempio: Formula di Black & Scholes S = πR2 ESATTA Figura 2.1
  • 32. 28 Introduzione al metodo Monte Carlo Per valutare tale probabilità col metodo Monte Carlo possiamo simulare una serie di valori per tutti i fattori di rischio cui è sensibile il portafoglio. La rivalutazione del portafoglio per ogni serie di nuovi valori dei fattori di rischio viene ripetuta un numero sufficientemente elevato di volte al fine di ottenere una distribuzione significativa della perdita. Dalla distribuzione ottenuta si risale così al VaR come percentile al livello di probabilità predefinito. Figura 2.2 – Il calcolo di Pi greco. Vediamo infine il problema di tipo geometrico che, al di là dell’ovvia banalità della soluzione analitica, non sembra presentare alcuna relazione con l’utilizzo di sequenze di numeri casuali. Consideriamo per semplicità un cerchio di raggio unitario di area pari a π. Poniamoci ora sotto una prospettiva leggermente diversa da quella usuale ed osserviamo che l’area di questo cerchio può essere misurata stimando la probabilità che un punto scelto a caso all’interno di un quadrato di lato pari a 2 cada all’interno del cerchio inscritto in esso. Con riferimento alla figura 2.2 (dove per semplicità ci siamo limitati alla considerazione del primo quadrante in un sistema di assi coordinati con origine nel centro del cerchio) la procedura per la determinazione del valore di π può essere descritta come segue: 1. si estraggono due numeri casuali, indipendenti, uniformemente distribuiti nell’intervallo [0,1]. Questa coppia di numeri rappresenta le coordinate di un punto del piano appartenente al quadrato di lato unitario; 2. si determina la distanza del punto così generato dall’origine degli assi, se tale distanza è minore o uguale a 1 il punto cade all’interno della superficie del cerchio altrimenti no; 3. si ripete la procedura sopra descritta un numero N di volte e si misura il rapporto fra il numero dei casi in cui il punto cade all’interno del cerchio, Nacc, e N stesso, questo rapporto rappresenta una stima della probabilità che un punto con coordinate scelte a caso cada all’interno del cerchio, tale probabilità è chiaramente uguale al rapporto fra l’area del quadrante del cerchio e quella del quadrato unitario quindi si ha π =4 N acc N
  • 33. Introduzione al metodo Monte Carlo 29 Non c’è bisogno di dire che nessuno di noi stimerebbe l’area di un cerchio con questa procedura, tuttavia problemi di natura analitica meno banali di quello presentato possono trarre grande giovamento dalla riformulazione in termini di processi aleatori al punto che, contrariamente a quello che si potrebbe pensare, tecniche di simulazione per la soluzione di problemi deterministici di tipo fisico e matematico erano già state sviluppate molto prima degli anni 40. Storicamente il primo esempio di simulazione Monte Carlo ante litteram risale addirittura al 1777 anno in cui il matematico e naturalista francese Buffon nel suo Essai d’arithmetique morale descrisse un esperimento di natura aleatoria che gli consentì di stimare, con una precisione per l’epoca accettabile, il valore di π. 2.1 Simulazione Monte Carlo e Integrazione Numerica Esiste una connessione formale fra l’utilizzo del metodo Monte Carlo e il concetto di integrazione di una funzione. Prima di tutto osserviamo come i problemi discussi nel paragrafo precedente possono essere ricondotti entrambi al calcolo di integrali. Il caso relativo all’area del cerchio è evidente 1 Area del cerchio = 4∫ 1 − x 2 dx (2.7) 0 Il prezzo di un’opzione come abbiamo visto non è altro che il valore scontato del valore di aspettazione del prezzo alla scadenza, il fattore di rischio sottostante (il prezzo dell’azione) risulta distribuito in accordo ad una distribuzione log-normale perciò abbiamo: f (S , t ) = e−rT σ 2πT ∞ ∫ 0 f ( S ′) −(log( S / S ′) +[ r −(1 / 2)σ 2 ]T ) 2 / 2σ 2T e dS ′ S′ (2.8) Infine, per quanto riguarda il calcolo del Value-at-Risk, osserviamo che indicata con I(L>x) la funzione indicatrice definita come  1 se L > x I ( L > x) =  0 altrimenti (2.9) e indicando con f(z) la densità di probabilità congiunta dei fattori di rischio, possiamo scrivere P( L > x) = ∫ I ( L > x) f ( z )dz = E[ I ( L > x)] (2.10) Più in generale possiamo affermare che ogni estrazione di un campione di numeri casuali può essere utilizzata come stimatore di un integrale. Come esempio concreto
  • 34. 30 Introduzione al metodo Monte Carlo consideriamo il caso relativo all’integrazione di una funzione di una variabile b reale I = ∫ g ( y )dy ; tramite un opportuno cambio di variabile possiamo sempre ricondurci al a caso più semplice in cui l’intervallo di integrazione è compreso fra 0 ed 1: 1 I = ∫ f ( x)dx (2.11) 0 Il punto fondamentale del nostro ragionamento consiste nel riconoscere che l’espressione scritta sopra rappresenta anche il valore di aspettazione della funzione f di una variabile aleatoria a valori uniformemente distribuiti nell’intervallo [0, 1]. Diventa così possibile stimare il valore del nostro integrale tramite una media aritmetica di n valori di f(xi) dove ciascun xi rappresenta un campione estratto da una distribuzione uniforme in [0, 1]. In altre parole possiamo affermare che la quantità ~ 1 In = n n ∑ f (x ) (2.12) i i =1 rappresenta uno stimatore non distorto di I. La varianza di questa stima risulta pari a: 1 n  n  11 ~ 1 σ2 var( I n ) = var  ∑ f ( xi )  = 2 var  ∑ f ( xi )  = ∫ [ f ( x) − I ]2 dx = n  n i =1  n i =1  n0     (2.13) come si vede l’errore quadratico medio dello stimatore, che può essere interpretato come l’errore quadratico medio della simulazione Monte Carlo, decresce all’aumentare di n come 1 / n . Questo risultato risulta del tutto indipendente dalla dimensione del problema. E’ proprio quest’ultima caratteristica che rende attraente il metodo Monte Carlo per la risoluzione di problemi con un numero elevato di dimensioni. In questo caso tipicamente il metodo Monte Carlo risulta convergere verso il valore finale più velocemente dei metodi numerici tradizionali in cui il numero di iterazioni per raggiungere un’approssimazione prefissata cresce con l’aumentare del numero di dimensioni. E’ comunque conveniente a questo punto formalizzare il problema in modo più rigoroso. Consideriamo il seguente integrale r r I = ∫ f ( x ) dx (2.14) D r dove abbiamo indicato col simbolo x il vettore multidimensionale ( x1, x2 ,K, xn ) e con r dx l’elemento di volume infinitesimo in n dimensioni dx1dx2 K dxn , f(x) è una funzione integrabile secondo Lebesgue definita sul dominio D. Ogniqualvolta l’integrale (2.14) esiste, il suo valore è uguale a quello dell’integrale di Lebesgue-Stieltjes r r I LS = ∫ κ ( z )dF ( z ) Z (2.15)
  • 35. Introduzione al metodo Monte Carlo 31 r r dove { f ( x ), x ∈ D} e D determinano la forma assunta dalla nuova regione di r r integrazione Z, la funzione {κ ( z ), z ∈ Z } è misurabile e la funzione non decrescente r r {F ( z ), z ∈ Z } per ogni sottoinsieme misurabile di Z, con A e B tali che A ⊆ B ⊆ Z , soddisfa la relazione 0 ≤ F ( A) ≤ F ( B) ≤ F ( Z ) = 1 F(z) può quindi essere considerata una funzione di distribuzione e questo permette di r interpretare l’integrale (2.15) come il valore di aspettazione di κ ( z ) dove z è una variabile aleatoria n-dimensionale la cui funzione di distribuzione è proprio F(z). Questo ci permette di affermare in modo del tutto generale che la quantità n I LS 1 n r = ∑κ ( zi ) n i =1 (2.16) r dove zi è un campionamento di n valori indipendenti di Z estratti dalla distribuzione F(Z), è uno stimatore privo di errori sistematici dell’integrale (2.15). Vale la pena notare che l’integrale di Lebesgue-Stiltjes associato all’integrale di Lebesgue non è unico. Infatti, se consideriamo una nuova funzione F* definita in modo che dF(z)/dF*(z) esista per ogni z appartenente a D, e poniamo κ * ( z ) = κ ( z )dF ( z ) / dF * ( z ) otteniamo r r r r ∫ κ ( z )dF ( z ) = ∫ κ * ( z )dF * ( z ) Z (2.17) Z Come vedremo più avanti questa opportunità risulta di grande aiuto nella ricerca di metodologie per la riduzione della varianza.
  • 36. 32 Introduzione al metodo Monte Carlo
  • 37. 3 Generatori di Numeri Casuali Random numbers should not be generated with a method chosen at random. Some theory should be used. Donald Knuth, “L’arte Programmazione”, vol. 2 3.1 della Tre tipi di generatori I generatori di numeri casuali che possono essere utilizzati nel metodo Monte Carlo appartengono a tre categorie generali classificate in accordo alla natura dei numeri prodotti: • Numeri veramente casuali (truly random numbers): sono numeri la cui sequenza è assolutamente impredicibile (anche in via teorica) e devono essere prodotti sfruttando opportuni fenomeni fisici di cui è nota l’intrinseca aleatorietà (es. decadimento radioattivo di un nucleo atomico). Esistono serie di numeri di questo tipo registrate su nastri o pubblicate su appositi manuali. In generale il loro uso è estremamente difficoltoso, le serie di numeri veramente casuali sono quasi sempre composte da un numero di dati insufficiente per effettuare simulazioni attendibili pertanto non le discuteremo ulteriormente. • Numeri pseudo casuali (pseudorandom numbers): sono numeri prodotti da un computer per mezzo di un algoritmo. Ovviamente essendo generati da un processo di calcolo deterministico essi non sono numeri veramente casuali in quanto la sequenza può essere predeterminata. Tuttavia è possibile simulare in maniera efficiente una sequenza di numeri che appaia del tutto casuale a chiunque non conosca l’algoritmo usato per generarla. Questi sono i numeri più utilizzati per le simulazioni Monte Carlo e verranno discussi più approfonditamente nel seguito del capitolo. • Numeri quasi casuali (quasirandom numbers): si tratta di numeri prodotti anch’essi da un algoritmo numerico, tuttavia in questo caso non si cerca di riprodurre una sequenza aleatoria bensì di disporre di una serie di numeri distribuiti nella maniera più uniforme possibile al fine di ridurre la varianza dei risultati delle integrazioni Monte Carlo. Tali sequenze non risultano appropriate per qualsiasi applicazione del metodo Monte Carlo, tuttavia laddove il loro uso è consigliato possono portare a dei miglioramenti impressionati nelle performance dei metodi numerici che ne fanno uso. Le sequenze di numeri, sia pseudo che quasi casuali, sono caratterizzate dall’essere periodiche. Dopo un certo intervallo di numeri prodotti, detto periodo, i generatori iniziano a riproporre gli stessi numeri casuali della sequenza appena conclusa. Chiaramente una delle proprietà più importanti di qualunque tipo di generatore è quella di avere un periodo che risulti il più grande possibile. Discuteremo questa ed altre caratteristiche facendo riferimento ad un particolare metodo di generazione di numeri
  • 38. 34 Introduzione al metodo Monte Carlo casuali il cosiddetto generatore lineare congruente che ha il pregio di essere estremamente semplice e computazionalmente efficiente. 3.2 Il generatore Lineare Congruente Virtualmente tutti i generatori di numeri pseudo casuali impiegati in pratica sono basati sul generatore lineare congruente, da un valore iniziale, J0, si genera una sequenza di numeri basati sulla formula iterativa J i = ( aJ i −1 + c ) mod m (3.1) I parametri a, c e m determinano la qualità del generatore; a viene detto moltiplicatore, c incremento e m è il cosiddetto modulo. La formula appena descritta genera numeri interi compresi fra 0 e m. Usualmente si utilizzano generatori di numeri casuali uniformemente distribuiti fra 0 ed 1, per questo è sufficiente scegliere la sequenza U i = J i / m . Dalla formula risulta evidente che la sequenza di numeri casuali si ripeterà dopo un ciclo che, al più, potrà essere di lunghezza m. In generale se indichiamo con L la lunghezza di parola (word length) di un computer espressa in numero di bit, il massimo intero rappresentabile è pari a 2 L − 1 , poiché per motivi pratici un bit è spesso perso (in quanto riservato per indicare il segno del numero), la scelta usuale è quella di porre m = 2 L −1 − 1 . Come abbiamo già accennato, il principale vantaggio del generatore lineare congruente va ricercato nella sua efficienza. Esso è molto veloce richiedendo pochissime operazioni per chiamata, questo è uno dei principali motivi che hanno finito per renderlo di uso universale. Fra i punti deboli di questo metodo il maggiore è rappresentato senz’altro dalla presenza di correlazione sequenziale fra i numeri generati; vediamo di capire di cosa si tratta. Come risulta chiaro dalla (3.1) ciascun numero prodotto dal generatore lineare congruente è completamente determinato dal numero generato al passo precedente. Questo fa sì che i valori dei numeri prodotti siano fortemente correlati fra loro. Ad esempio a numeri piccoli seguiranno preferibilmente numeri piccoli con una probabilità superiore a quella che dovremmo attenderci se i numeri fossero veramente casuali. La correlazione fra due numeri diminuisce all’aumentare della distanza che li separa espressa in termini di passo di generazione. Uno degli effetti più evidenti di questa correlazione consiste nel seguente fatto. Si generino n numeri casuali e si formino n/2 coppie di numeri scegliendo valori generati successivamente uno all’altro (U n , U n +1 ) . Consideriamo poi queste coppie come coordinate di punti su un piano. Se i numeri fossero veramente casuali dovremo aspettarci di veder riempire uniformemente il quadrato unitario. Invece quello che si osserva è che tali punti non si distribuiscono affatto in maniera uniforme ma, al contrario, tendono ad allinearsi lungo segmenti di retta. Esempio 3.1 – Supponiamo di generare un migliaio di punti nel quadrato di lato unitario utilizzando come motore il generatore lineare congruente (3.1) con i seguenti
  • 39. Introduzione al metodo Monte Carlo 35 valori per i parametri: a = 1229, b = 1, c = 2048 e valore iniziale della sequenza pari a 0. Questi numeri sono tali da dar luogo ad un pessimo generatore di numeri casuali come si può facilmente verificare riportando in un grafico i punti così ottenuti (Fig.3 a). La correlazione sequenziale può essere facilmente rimossa con tecniche di mescolamento (shuffling), il numero prodotto al passo j-esimo non costituisce la risposta j-esima del generatore ma viene utilizzato per fornire ad un passo successivo un’uscita scelta in maniera casuale fra una serie di numeri precedentemente generati. Come si può vedere in Fig.3 b con questa semplice procedura il risultato migliora decisamente 1 1 0.9 0.9 0.8 0.8 0.7 0.7 0.6 0.6 0.5 0.5 0.4 0.4 0.3 0.3 0.2 0.2 0.1 0.1 0 0 0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1 b) a) Figura 3.1 – Risultati del generatore lineare congruente con a = 1229, b = 1, c = 2048 e valore iniziale nullo. Il generatore non utilizza la procedura di shuffling nel primo caso 3.3 Le funzioni Rnd() e Randomize() La funzione Rnd() restituisce un valore numerico di tipo Single che contiene un numero casuale. La sintassi è la seguente: Rnd[(num)] L'argomento facoltativo num può essere un valore Single o una qualsiasi espressione numerica valida. I valori restituiti dalla funzione dipendono dal valore passato come argomento. Per ogni base iniziale specificata, viene generata la stessa sequenza di numeri, in quanto ogni successiva chiamata alla funzione Rnd() utilizza il numero casuale precedente come base per il numero successivo nella sequenza. In particolare, se il parametro num è minore di zero Rnd() genera sempre lo stesso numero, utilizzando num come base; se num è maggiore di zero viene restituito il successivo numero casuale nella sequenza; se num è uguale a zero viene restituito il numero generato per ultimo; infine se il parametro in input viene omesso, Rnd() restituirà il successivo numero casuale nella sequenza.
  • 40. 36 Introduzione al metodo Monte Carlo Esempio 3.2 - Il ciclo seguente For i = 1 To 5 Cells(i, 1).Value = Rnd(-1) Next produce in output la serie costante 0.22400701 0.22400701 0.22400701 0.22400701 0.22400701 Se utilizzate Rnd() con un valore positivo For i = 1 To 5 Cells(i, 1).Value = Rnd(1) Next otterrete invece 0.035845816 0.086352348 0.164263904 0.17973578 0.573200524 Se a questo punto richiamate Rnd(0) otterrete in output sempre l’ultimo numero generato 0.573200524 0.573200524 0.573200524 0.573200524 0.573200524 Prima di richiamare Rnd(), è consigliabile utilizzare l'istruzione Randomize senza argomento per inizializzare il generatore di numeri casuali con una base connessa al timer del sistema con la seguente sintassi Randomize[(numero)]
  • 41. Introduzione al metodo Monte Carlo 37 Randomize utilizza il parametro numero per inizializzare il generatore di numeri casuali della funzione Rnd() assegnandogli un nuovo valore base. Se numero viene omesso, il valore restituito dal timer di sistema verrà utilizzato come nuova base. Per ripetere sequenze di numeri casuali, è sufficiente richiamare Rnd() con un argomento negativo immediatamente prima dell'utilizzo di Randomize con un argomento numerico. L'utilizzo di Randomize con lo stesso valore di numero non determinerà la ripetizione della sequenza precedente. Se Randomize non viene utilizzata, quando la funzione Rnd (senza argomenti) viene chiamata per la prima volta, utilizza come base lo stesso numero. Per le chiamate successive la funzione utilizzerà l'ultimo numero generato. Ricordate che la funzione Rnd() restituisce un valore minore di 1 ma maggiore o uguale a zero. Per generare interi casuali in un dato intervallo, utilizzare la seguente formula: Int((limitesup - limiteinf + 1) * Rnd + limiteinf) In questo contesto, limitesup indica il numero maggiore presente nell'intervallo, mentre limiteinf indica il numero minore. 3.4 Test statistici sui generatori di numeri casuali Nell’esempio 3.1 abbiamo visto come la presenza di correlazione sequenziale del generatore lineare congruente possa alterare in maniera drammatica i risultati di un esperimento che faccia uso di numeri casuali. Di fatto, come abbiamo già osservato, il generatore lineare congruente, non produce numeri veramente casuali. Diventa quindi essenziale disporre di test statistici che ci permettano di giudicare la qualità di una serie di numeri quasi-random anche al fine di poter paragonare le serie prodotte da diversi generatori per selezionare quello che meglio soddisfa le nostre esigenze. E’ opportuno ricordare che in tutte le considerazioni relative alla scelta del generatore di numeri casuali da utilizzare si dovrà sempre tenere conto anche dell’efficienza numerica del generatore stesso a causa dell’elevato numero di variabili aleatorie che è necessario generare nelle applicazioni pratiche del metodo Monte Carlo. Esistono moltissimi test statistici che possono essere utilizzati per controllare la qualità di un generatore; tra i più usati vogliamo ricordare il test di χ2 e il test di KolmogorovSmirnov. Entrambi si basano su una comparazione fra la funzione di distribuzione cumulata estratta da un campione dei numeri casuali prodotti dal generatore con la funzione di distribuzione cumulata ricavata dalla funzione di densità di probabilità in accordo alla quale il generatore ha prodotto i numeri stessi. Vediamo un esempio concreto di applicazione del test di χ2 sul generatore lineare congruente per due diversi insiemi di parametri rimandando alla letteratura per una descrizione completa delle
  • 42. 38 Introduzione al metodo Monte Carlo varie tipologie di test. Dato l’algoritmo lineare congruente sono noti diversi insiemi di parametri che permettono di ottenere buoni generatori di numeri casuali. Ad esempio il generatore definito da a = 1812433253 c dispari m = 232 produce un buona distribuzione di punti su macchine a 32 bit. Per eseguire un test su questo generatore possiamo impiegarlo per produrre un numero elevato di valori (almeno 10000) raccolti in 100 intervalli equispaziati lungo il segmento [0,1]. Il numero attesto di valori all’interno di ciascun intervallo è pari a 100. A questo punto calcoliamo il valore di χ2 e verifichiamo se il generatore è accettabile utilizzando i valori riportati in Tabella 1. La tabella riporta, per ciascun valore dei gradi di libertà k, il valore χ12−α ,k per 2 cui la probabilità P (χ 2 < χ 1−α ,k ) è pari al valore della colonna corrispondente. Ad esempio nella riga corrispondente a 10 gradi di libertà, sotto la colonna p = 95% troviamo il valore 18.3; questo significa che con 10 gradi di libertà dovremmo trovare un valore di χ2 superiore a 18.31 in media 5 volte su 100. Quando il numero di gradi di libertà supera 30 possiamo usare una formula asintotica in funzione dei percentili xp riportati per completezza nell’ultima riga della tabella. Una volta trovata la probabilità corrispondente al valore di χ2 misurato possiamo applicare il seguente criterio Knuth (1981): P(χ2) < 1% o P(χ2) > 99% ⇒ rigetto 1% < P(χ2) < 5% o 95% < P(χ2) < 99% ⇒ sospetto 5% < P(χ2) < 10% o 90% < P(χ2) < 95% ⇒ leggermente sospetto Il criterio viene applicato ad almeno tre serie prodotte dal generatore e il risultato è definitivamente negativo se due serie su tre danno risultato negativo. Come esempio pratico abbiamo applicato la procedura appena descritta al generatore lineare congruente caratterizzato dai parametri definiti poco sopra, i valori di χ2 misurati su tre serie indipendenti di 1000 numeri sono risultati pari a: 94.2 95.6 88.8 Utilizzando la formula asintotica con k = 99, troviamo i seguenti valori di χ2 p = 1% 61.66594 p = 5% p = 25% p = 50% p = 75% p = 95% p = 99% 77.04955481.38991 98.333333108.13518123.20325134.73861
  • 43. Introduzione al metodo Monte Carlo 39 Come si vede i valori trovati cadono tutti nell’intervallo compreso fra il 25% e il 50% di probabilità, il nostro generatore ha quindi superato il test. La stessa prova eseguita scegliendo i parametri dell’esempio 1 ha dato invece i seguenti risultati 57.6 62.9 60.1 In questo caso tutti i valori sono tali che la probabilità corrispondente risulta inferiore all’1%, un’ulteriore conferma del fatto che il set di parametri che caratterizza questo generatore corrisponde a numeri molto correlati fra loro e quindi molto lontani dall’emulare un insieme di numeri veramente casuali. Tabella 3.1 – Valori di probabilità per la distribuzione χ 2 p = 1% p = 5% p = 25% p = 50% p = 75% p = 95% P = 99% k=1 0.00016 0.00393 0.1015 0.4549 1.323 3.841 6.635 k=2 0.02010 0.1026 0.5753 1.386 2.773 5.991 210 k=3 0.1148 0.3518 1.213 2.366 4.108 7.815 11.34 k=4 0.2971 0.7107 1.923 3.357 5.385 488 13.28 k=5 0.5543 1.1455 2.675 4.351 6.626 11.07 15.09 k=6 0.8720 1.635 3.455 5.348 7.841 12.59 16.81 k=7 1.239 2.167 4.255 6.346 037 14.07 18.48 k=8 1.646 2.733 5.071 7.344 10.22 15.51 20.09 k=9 2.088 3.325 5.899 8.343 11.39 16.92 21.67 k = 10 2.558 3.940 6.737 342 12.55 18.31 23.21 k = 20 8.260 10.85 15.45 134 23.83 31.41 37.57 k = 30 14.95 18.49 24.48 234 34.80 43.77 50.89 1.64 2.33 k > 30 xp ≈ k + 2k x p + -2.33 -1.64 -0.675 0.00 2 2 2 xp − 3 3 0.675
  • 44. 40 Introduzione al metodo Monte Carlo
  • 45. 4 Generazione di Distribuzioni non Uniformi Non ho ancora trovato un problema che, per quanto fosse complicato, a considerarlo nel modo giusto non diventasse ancora più complicato. Poul Anderson 4.1 Il “Transformation Method” Nei precedenti paragrafi abbiamo visto come generare sequenze di numeri casuali uniformemente distribuite. Utilizzando un generatore di questo tipo la probabilità di ottenere un risultato con un valore compreso fra x e x+dx è data da dx per 0 < x < 1 p ( x ) dx =   0 altrimenti (4.1) Supponiamo ora di generare una serie di numeri casuali uniformemente distribuiti e di calcolarne una qualche funzione definita y=y(x). La distribuzione di probabilità di y, che indicheremo con g(y), può essere ricavata ricordando che g ( y )dy = p ( x) dx (4.2) da cui g ( y ) = p( x) dx dy A scopo di esempio supponiamo che uniformemente, si ha g ( y ) dy = dx dy = e − y dy dy (4.3) y ( x) = − ln( x) con x variabile distribuita (4.4) y risulta distribuita esponenzialmente. Il problema appena discusso può anche essere posto in maniera diversa. Supponiamo infatti di conoscere la distribuzione di probabilità della variabile y e cerchiamo di determinare quale deve essere la relazione funzionale che lega y a x. In altre parole, supponendo sempre di avere una distribuzione p(x) uniforme, il problema che dobbiamo affrontare è quello di risolvere l’equazione differenziale g ( y) = dx dy (4.5) la cui soluzione è x = ∫ g ( y ) dy = F ( y ) da cui (4.6)
  • 46. 42 Introduzione al metodo Monte Carlo y = F −1 ( x ) (4.7) Il metodo appena esposto va sotto il nome di Transformation Method. Seguendo questa procedura possiamo definire un semplice algoritmo per la generazione di variabili casuali da distribuzioni diverse da quella uniforme. L’algoritmo si riassume nei seguenti passi: 1. Si genera un numero casuale x distribuito uniformemente fra 0 ed 1; 2. Si determina, qualora risulti possibile, l’inversa della funzione di ripartizione della distribuzione che si desidera replicare; 3. Si determina il valore di tale funzione in x; 4. Si torna al punto 1 e si ripete il ciclo n volte. I numeri così ottenuti risulteranno distribuiti in accordo con la funzione desiderata. 4.1.1 Utilizzo delle funzioni del foglio di lavoro di Microsoft Excel in Visual Basic Una caratteristica molto importante offerta dal Visual Basic è la possibilità di utilizzare direttamente nel codice funzioni del foglio di lavoro di Microsoft Excel. Per un elenco completo delle funzioni del foglio di lavoro disponibili si rinvia all’elenco presente nella guida in linea 4. In Visual Basic le funzioni del foglio di lavoro di Microsoft Excel sono disponibili tramite l'oggetto WorksheetFunction. Nella seguente routine Sub viene utilizzata la funzione del foglio di lavoro Min per determinare il valore minimo in un intervallo di celle. La variabile myRange viene innanzitutto dichiarata come oggetto Range, quindi viene associata all'intervallo A1:C10 di Sheet1. Ad un'altra variabile, answer, viene assegnato il risultato della funzione Min su myRange. Infine, il valore di answer viene visualizzato in una finestra di messaggio. Sub UseFunction() Dim myRange As Range Set myRange = Worksheets("Sheet1").Range("A1:C10") answer = Application.WorksheetFunction.Min(myRange) MsgBox answer End Sub Se viene utilizzata una funzione del foglio di lavoro che richiede un riferimento di intervallo quale argomento, è necessario specificare un oggetto Range. Ad esempio, è possibile utilizzare la funzione del foglio di lavoro Match per eseguire ricerche in un 4 Alcune funzioni del foglio di lavoro sono superflue in Visual Basic. La funzione Concatenate, ad esempio, non è necessaria poiché in Visual Basic è possibile utilizzare l'operatore & per concatenare più valori di testo.
  • 47. Introduzione al metodo Monte Carlo 43 intervallo di celle. Occorre quindi immettere in una cella del foglio di lavoro una formula quale = CONFRONTA(9,A1:A10,0). Tuttavia, in una routine Visual Basic è possibile specificare un oggetto Range per ottenere lo stesso risultato. Sub FindFirst() myVar = Application.WorksheetFunction.Match(9, Worksheets(1).Range("A1:A10"), 0) MsgBox myVar End Sub E’ importante notare che non è detto che una funzione Visual Basic con lo stesso nome di una funzione Microsoft Excel operi in modo identico. Ad esempio, Application.WorksheetFunction.Log e Log restituiranno valori diversi. E’ possibile anche immettere una funzione del foglio di lavoro in una cella. Per fare questo è necessario definire la funzione come valore della proprietà Formula del corrispondente oggetto Range. Nell'esempio seguente la funzione del foglio di lavoro CASUALE, che genera un numero casuale, viene assegnata alla proprietà Formula dell'intervallo A1:B3 di Sheet1 nella cartella di lavoro attiva. Sub InsertFormula() Worksheets("Sheet1").Range("A1:B3").Formula = "=RAND()" End Sub 4.1.2 Come Simulare una variabile distribuita Normalmente Come esempio del metodo descritto nel paragrafo precedente proviamo a generare una sequenza di numeri casuali con distribuzione normale. Per raggiungere il nostro scopo abbiamo bisogno della funzione inversa della distribuzione cumulata che, fortunatamente, Excel mette già a nostra disposizione. Le funzioni che potete inserire direttamente nei fogli di calcolo sono in realtà due: INV.NORM(). Restituisce l'inversa della distribuzione normale cumulativa per la media e la deviazione standard specificate. La sintassi é INV.NORM(probabilità;media;dev_standard) dove probabilità è la probabilità corrispondente alla distribuzione normale, media è la media aritmetica della distribuzione, dev_standard è la deviazione standard della distribuzione. INV.NORM utilizza una tecnica iterativa per il calcolo della funzione. Dato un valore di probabilità, INV.NORM applica il metodo delle iterazioni fino a quando la precisione del risultato non rientra in ± 3x10^-7. Se il risultato di INV.NORM non converge dopo 100 iterazioni, la funzione restituirà il valore di errore #N/D.
  • 48. 44 Introduzione al metodo Monte Carlo INV.NORM.ST(). Restituisce l'inversa della distribuzione normale standard cumulativa. La distribuzione ha una media uguale a 0 e una deviazione standard uguale a 1 Sintassi: INV.NORM.ST(probabilità) dove probabilità è la probabilità corrispondente alla distribuzione normale. Anche questa funzione utilizza un metodo di calcolo iterativo analogo a quello impiegato in INV.NORM. Le due funzioni sono richiamabili da VBA tramite l’oggetto WorksheetFunction con una sintassi leggermente diversa da quella utilizzata da Excel nei suoi fogli di calcolo. Se desiderate generare n variabili con distribuzione normale standard potete utilizzare il seguente codice Randomize For i = 1 To n Cells(i ,1).Value = Application.WorksheetFunction.NormSInv(Rnd()) Next Si noti che in questo caso l’unico argomento richiesto dalla funzione è un numero casuale uniformemente distribuito fra 0 ed 1. Nel caso in cui desideriate generare variabili con distribuzione normale caratterizzate da una media M e standard deviation Sigma è sufficiente utilizzare la funzione NormInv() del tutto analoga a INV.NORM(); un esempio di codice in questo caso è Randomize For i = 1 To n Cells(i ,1).Value = Application.WorksheetFunction.NormInv(Rnd(), M,Sigma) Next Nel file “Richiami di Statistica 2.xls” il lettore troverà un esempio di generazione di variabili aleatorie con distribuzione normale. In linea di principio il metodo appena visto si presta alla generazione di variabili aleatorie distribuite in accordo ad una qualunque funzione di densità di probabilità purché questa sia continua. In pratica tuttavia un’applicazione diretta di tale metodo può risultare molto onerosa sotto il profilo del calcolo. Questo accade in particolare per la distribuzione gaussiana per la quale non risulta possibile esprimere in forma analitica l’inversa della funzione di ripartizione. In casi come questo l’integrale della funzione deve essere calcolato numericamente con evidente perdita di tempo. Il metodo di BoxMuller per la generazione di variabili aleatorie distribuite normalmente evita questo problema. Questa procedura è basata sull’osservazione che se U1 e U2 sono due variabili aleatorie indipendenti distribuite uniformemente fra 0 ed 1 allora le variabili G1 e G2 definite dalle relazioni
  • 49. Introduzione al metodo Monte Carlo 45 G1 = − 2 ln(U1 ) cos(2πU 2 ) (4.8) G2 = − 2 ln(U1 ) sin(2πU 2 ) sono due variabili indipendenti distribuite normalmente. Esempio 4.1 – Utilizziamo il generatore lineare congruente con i valori dei parametri definiti nell’esempio precedente per generare N coppie di punti nel piano con coordinate distribuite normalmente applicando la trasformazione di Box-Muller. Quello che si trova è abbastanza sorprendente e sicuramente diverso da quello che ci aspettavamo. Le coppie di numeri sono correlate clamorosamente una all’altra. Questo si verifica facilmente osservando che (dalla (3.1)) U i +1 = [(aU i + c ) mod m]/ m ricordando la definizione dell’operazione di “modulo” possiamo scrivere U i +1 = 1 {(aU i + c ) − m INT (aU i + c )} = a U i + c − k = αU i + γ − k m m m essendo k un numero intero. A causa della periodicità delle funzioni trigonometriche, si ha: cos(2πU i +1 ) = cos[2π (αU i + γ )] sin(2πU i +1 ) = sin[2π (αU i + γ )] Quindi in questo caso particolare le relazioni di Box-Muller diventano G1 = − 2 ln(U1 ) cos (2π (αU1 + γ )) G2 = − 2 ln(U1 ) sin(2π (αU1 + γ )) Entrambe le nuove variabili dipendono solo dalla prima variabile U1 generata inoltre il luogo dei punti descritto dalle equazioni scritte sopra è una spirale logaritmica, Geweke (1995b). 4.2 La simulazione di un processo di Wiener Il processo di Wiener prende il nome dal fisico-matematico tedesco Norbert Wiener ed è una descrizione matematica del fenomeno fisico noto come moto browniano ovverosia del moto casuale a cui è sottoposta una piccola particella di materiale sospesa in una soluzione liquida. Il moto browniano trova la sua spiegazione nella teoria cinetica della materia in quanto il moto della particella altro non è che il risultato dei numerosissimi urti che questa riceve dalle molecole del liquido circostante. Nella letteratura i termini
  • 50. 46 Introduzione al metodo Monte Carlo processo di Wiener e moto browniano sono pertanto usati come sinonimi anche se, a rigore, il primo individua un modello matematico mentre il secondo andrebbe riservato per indicare il processo fisico corrispondente. Nella matematica finanziaria i processi di Wiener svolgono un ruolo estremamente importante per la descrizione della componente stocastica della dinamica di prezzi. 3 2 1 0 -3 -2 -1 0 1 2 3 -1 -2 -3 Figura 4.1 – Risultati dell’applicazione del metodo di Box-Muller alle coppie di numeri casuali prodotti dal generatore lineare congruente dell’esempio 1 senza shuffling. Definiamo processo di Wiener standard W = {W (t ), t ≥ 0 } un processo stocastico gaussiano nel tempo continuo con incrementi indipendenti tale che • • • W (0) = 0 con probabilità 1; E [W (t )] = 0 ; σ 2 [W (t ) − W ( s )] = t − s per ogni 0 ≤ s ≤ t ; Nella Figura 4.2 sono riportate alcune realizzazioni di un processo di Wiener realizzate utilizzando la procedura riportata nel riquadro seguente Sub Wiener() Dim i As Integer Dim nPunti As Integer Dim Dim Dim Dim Dim t0 As Single tf As Single t As Single Delta As Single x As Single
  • 51. Introduzione al metodo Monte Carlo 47 Dim wt As Single t0 = 0 tf = Range("t_finale").Value nPunti = Range("NrPunti").Value Delta = (tf - t0) / nPunti t = t0 - Delta wt = 0 Randomize (Timer) For i = 1 To nPunti t = t + Delta x = Application.WorksheetFunction.NormSInv(Rnd()) If x < 10 And x > -10 Then wt = wt + x * Sqr(Delta) Cells(i + 1, 1).Value = t Cells(i + 1, 2).Value = wt End If Next Calculate Cells(k + 5, 16).Value = Cells(5, 15).Value Cells(5, 17).Value = k Cells(k + 5, 19).Value = Cells(5, 18).Value Cells(k + 5, 20).Value = Range("B202").Value k = k + 1 End Sub Figura 4.2 – Alcune realizzazioni di un processo di Wiener
  • 52. 48 Introduzione al metodo Monte Carlo 4.3 Il “Rejection Method” Un altro metodo estremamente diffuso per generare variabili aleatorie a distribuzione non uniforme è il cosiddetto Rejection Method. Esso si basa sul seguente teorema enunciato da von Neumann nel 1951, Fishman, (1996) Teorema Sia f(z) con a ≤ z ≤ b una funzione di distribuzione di probabilità, supponiamo che sia possibile trovare una seconda funzione h(z) > 0 e con integrale finito tale che f(z)=cg(z)h(z) essendo 0 ≤ g ( z ) ≤ 1 . La costante c può essere scelta in modo da normalizzare l’integrale della funzione f(z) per cui possiamo assumere senza perdere in generalità c= 1 b ∫ g ( z )h( z )dz a Sia infine Z una variabile aleatoria con funzione di distribuzione h(z) e U indichi un campione estratto da una distribuzione uniforme U(0,1), allora se noi selezioniamo le estrazioni di Z tali che U ≤ g (Z ) i valori così ottenuti saranno distribuiti secondo f(z). Per dimostrare il teorema appena enunciato osserviamo prima di tutto che le variabili aleatorie U e Z hanno una funzione di distribuzione di probabilità congiunta data da fU , Z (u , z ) = h( z ) 0 ≤ u ≤1 a≤z≤b Da questa possiamo ricavare la funzione di distribuzione di probabilità di Z condizionale a U ≤ g (Z ) g (z) hZ (z | U ≤ g ( Z ) ) = ∫ g ( z) ∫ h( z )du fU , Z (u , z )du 0 pr[U ≤ g ( Z )] = 0 pr[U ≤ g ( Z )] = D’altra parte abbiamo b g ( z) a 0 pr[U ≤ g ( Z )] = ∫ dz ∫ b du fU , Z (u , z ) = ∫ h( z ) g ( z ) dz = a da cui hZ (z | U ≤ g ( Z ) ) = c h( z ) g ( z ) = f ( z ) 1 c h( z ) g ( z ) pr[U ≤ g ( Z )]
  • 53. Introduzione al metodo Monte Carlo 49 come volevamo dimostrare. Da un punto di vista implementativo possiamo sfruttare questo teorema per definire un semplice algoritmo; per semplicità definiamo la funzione e(z) pari a c h(z). Cominciamo con l’osservare che dalla definizione di g(z) si ricava immediatamente che e(z) è una funzione maggiorante della distribuzione che intendiamo campionare f(z), ci riferiremo ad e(z) con il nome di funzione di paragone. In termini di e(z) la condizione di accettazione U ≤ g (Z ) può essere riformulata come e( Z ) ≤ g ( Z ) . A questo punto possiamo descrivere un algoritmo di generazione di numeri casuali con distribuzione assegnata secondo il rejection method: 1. Si genera un numero casuale y’ con distribuzione uniforme fra 0 e A essendo b A = ∫ e( z ) dz a 2. Si ricava il valore x = E-1(y’) essendo x E ( x ) = ∫ e( z )dz . I punti x saranno a distribuiti in accordo alla funzione e(z) (in pratica stiamo utilizzando il transformation method discusso prima); 3. Si genera un secondo numero casuale, y”, uniformemente distribuito fra 0 ed e(x); 4. Se risulta soddisfatta la condizione y′′ ≤ f (x) accettiamo x; 5. Si ripete la procedura n volte Un punto cruciale, da cui dipende il successo dell’applicazione di questo metodo, è rappresentato dalla scelta della funzione di paragone e(z). Tale funzione deve essere sempre maggiore o uguale alla funzione di distribuzione che intendiamo campionare e tale che sia facilmente computabile l’inversa della corrispondente funzione di ripartizione. 4.4 Generazione di variabili con correlazione assegnata r Indichiamo con x = ( x1, x2 ,..., xn ) un vettore di variabili aleatorie indipendenti ciascuna delle r quali distribuita secondo una normale standard, la matrice di varianza-covarianza di x sarà pertanto data dalla matrice unità di dimensione n× n. Supponiamo di voler derivare da questo insieme di variabili un secondo set di variabili, che indicheremo con r y = ( y1, y2 ,..., yn ) , non più indipendenti bensì dotato di matrice di varianza-covarianza r assegnata Σ. Il nuovo insieme di variabili aleatorie y può essere ricercato come r combinazione lineare delle variabili indipendenti x , cioè si pone r r y = Ax (4.9)