• Non ci sono risultati.

CAPITOLO 3 – APPLICAZIONE EMPIRICA DEL MODELLO

3.4 Gli algoritmi simulativi

Abbiamo già visto entrambi gli algoritmi utilizzati nella simulazione effettuata. Il primo riguarda l’ipotesi di una distribuzione multivariata con struttura di dipendenza gaussiana, che non richiede, o perlomeno non necessariamente, l’utilizzo di alcun tipo di copula. Il secondo invece simula la struttura di dipendenza della multivariata utilizzando una qualsiasi copula archimedea vediamo adesso in maniera più dettagliata i vari passaggi di ciascuno di due algoritmi.

3.4.1 L’algoritmo per la dipendenza di tipo gaussiano

Vedremo passo per passo il procedimento che passa attraverso la decomposizione di Cholesky della matrice degli indici di correlazione lineare.

1. Individuazione della matrice R e della relativa matrice A risultante dalla decomposizione di Cholesky.

Questo primo passo non ha bisogno di particolari spiegazioni; il calcolo della matrice triangolare inferiore A non causa problematiche di alcun genere. La metodologia usata in MATLAB è già stata esposta in precedenza

PORT. CORR. 2,748175 1,464596 PORT. SCORR. 1,3 1,219512 PORT. CORR. 2,586207 2,11784 1,797578 1,557912 PORT. SCORR. 2,111111 1,682821 1,311993 1,247874 PORT. SCORR. 1,324561 1,288136

76

2. Generazione di n realizzazioni indipendenti di variabili con distribuzione normale standard 𝒛 = 𝑧1, 𝑧2, … , 𝑧𝑛.

Il passo 2 si incentra sulla generazione di valori indipendenti dalle distribuzioni dei singoli titoli, ricavandoli da una normale standard; questo consentirà nel passaggio successivo di applicare in maniera accettabile la struttura di dipendenza lineare. Il procedimento è suddivisibile in 2 parti: prima si generano una serie di valori casuali indipendenti da una distribuzione uniforme nell’ intervallo [0,1]18; in MATLAB questo può essere fatto utilizzando la funzione rand(n,q) che genera una matrice di 𝑛 righe e 𝑞 colonne19 di variabili casuali estratta da questo tipo di distribuzione; chiameremo queste variabili 𝒓 = 𝑟1, 𝑟2, … , 𝑟𝑛. La seconda parte del procedimento consiste nel trovare le 𝑛 𝑧 distribuite secondo la normale standard; per fare questo faremo la funzione inversa della normale standard rispetto alle diverse 𝒓, quindi 𝜙−1(𝑟

𝑖) = 𝑧𝑖. In MATLAB la funzione norminv(X) permette di calcolare il valore della funzione inversa della normale associata al valore X.

3. Porre 𝒕 = 𝐴𝒛, in questo modo 𝒕 avrà una struttura di dipendenza lineare rappresentata da R.

Il terzo passaggio risulta quello fondamentale per applicare la struttura di dipendenza nella simulazione della distribuzione gaussiana. La matrice A ottenuta con la decomposizione di Cholesky viene moltiplicata per la matrice data dalla 𝒛 = 𝑧1, 𝑧2, … , 𝑧𝑛. Otterremo dunque la matrice t con variabili aleatorie distribuite sempre secondo una normale standard ma che incorporano la struttura di dipendenza di tipo lineare

4. Porre 𝑢𝑖 = 𝜙(𝑡𝑖) con 𝑖 = 1,2, … , 𝑛 cosicché 𝒖 = (𝑢1, 𝑢2, … , 𝑢𝑛) sia una realizzazione di una distribuzione con marginali uniformi e struttura di dipendenza descritta da R.

Questo passaggio ritrasforma la variabile 𝑡 in una variabile aleatoria 𝒖 distribuita nell’intervallo [0,1] applicando una distribuzione normale alle varie variabili 𝑡𝑖. Adesso abbiamo finalmente le variabili aleatorie con struttura di dipendenza desiderata da utilizzare con le singole distribuzioni dei titoli. In MATLAB possiamo usare la funzione normcdf(X), che associa a ciascuna x il

18 La distribuzione continua uniforme attribuisce la stessa probabilità a tutti i punti appartenenti ad un dato

intervallo [𝑎, 𝑏] contenuto nell'insieme. La funzione di densità ha una forma rettangolare con altezza 1 𝑏−𝑎, difatti, 𝑓(𝑥) = 1

𝑏−𝑎 ; la funzione di ripartizione è data dalla diagonale del rettangolo con base [𝑎, 𝑏] e altezza 1; essa vale 0 per 𝑥 ≤ 𝑎 e 1 per 𝑥 ≥ 𝑏

77

corrispondente valore della distribuzione di densità di probabilità normale standard (Probability Density Function, PDF)

5. Ricavare le realizzazioni volute 𝒙 = (𝑥1, 𝑥2, … , 𝑥𝑛), con 𝑥𝑖 = 𝐹𝑖−1(𝑢𝑖) per 𝑖 = 1,2, … , 𝑛 e con 𝐹𝑖−1 funzione inversa di 𝐹𝑖; in questo modo avremo realizzazioni risultanti dalle funzioni di ripartizione delle singole variabili e struttura di dipendenza associata a R

Il passaggio finale consiste nell’ utilizzare il vettore 𝒖 per generare realizzazioni correlate di ciascun titolo, in base alla funzione di distribuzione che si considera. Quindi, le diverse forme delle distribuzioni serviranno a generare valori il più possibile coerenti con gli andamenti dei singoli titoli, mentre la struttura di dipendenza è incorporata nel vettore 𝒖. Le funzioni di ripartizione utilizzate sono esattamente quelle che abbiamo già incontrato nel corso di tutto il lavoro. A proposito della funzione inversa, gli unici accorgimenti da fare riguardano la t di student e la distribuzione empirica, che possiamo trovare ai paragrafi 3.2.3 e 3.2.2 rispettivamente. Per quanto riguarda l’implementazione in MATLAB, facciamo una distinzione tra i tre tipi di distribuzione:

1. per la normale usiamo sempre la funzione norminv(X,µ,σ) ma includiamo anche i parametri media e deviazione standard per considerare la distribuzione con forma e media particolare per il singolo titolo.

2. per la t di student usiamo la funzione tinv(X,ν) dove ν indica i gradi di libertà, che varieremo per ciascun titolo in base alle formule viste in precedenza. L’idea è la stessa della funzione normale, solo che cambia il parametro che determina la forma della distribuzione. Le realizzazioni ottenute dovranno, però, essere ulteriormente trasformate tramite l’espressione (60) vista al paragrafo 3.2.3 3. Per quanto riguarda la funzione empirica, non è stata usata nessuna funzione particolare, si è solo adattato il procedimento visto nel paragrafo 3.2.2

Le realizzazioni generate con questo algoritmo20 rappresenteranno la simulazione dei rendimenti descritta dagli indici di correlazione lineare da applicare ai vari titoli del portafoglio che utilizzeremo nel calcolo delle due misure di rischio di nostro interesse. L’attendibilità di queste ultime dipende principalmente dal numero di simulazioni che vengono effettuate.

78

3.4.2. L’algoritmo per la dipendenza descritta da copula

Anche in questo caso riprenderemo i passaggi già introdotti nel paragrafo 2.3.7. e approfondiremo la logica sottostante ciascuno di essi. I parametri della funzione copula di tipo Gumbel sono già stati ricavati in precedenza.

1. generare n realizzazioni 𝑞0, 𝑠1, 𝑠1, … , 𝑠𝑛−1 indipendenti da una distribuzione uniformemente distribuita su [0,1]

Il primo passaggio è sostanzialmente identico a quello dell’algoritmo con dipendenza gaussiana. Le variabili da computare sono estratte da una distribuzione uniforme su [0,1]; non è necessario passare da una normale standard dato il diverso tipo di struttura di dipendenza

2. porre 𝑡1 = 𝐾𝑐−1𝜃1(𝑞0)

Con il secondo passaggio si individua il valore 𝑡1 come realizzazione della copula 𝐶𝜃1 (descritta dal parametro 𝜃1) dalla variabile aleatoria 𝑞0. Come visto nel paragrafo 2.3.5.2, la funzione 𝐾𝑐 di una copula archimedea è completamente descritta dalla formula 𝐾𝑐 = 𝑡 −𝜑(𝑡)

𝜑′(𝑡); nel caso preso in esame, con copula di tipo Gumbel, La funzione di ripartizione è data da 𝐾𝑐 = 𝑡 (1 −ln(𝑡)

𝜃1 ); poiché risulta

difficilmente invertibile, nella computazione, si è preferito adottare proprio questa formula, piuttosto che l’inversa. È stato posto 𝐾𝑐(𝑡) = 𝑞0 e la relativa 𝑡1 è stata

ricavata tramite la metodologia della bisezione, ponendo 𝑡𝑚𝑎𝑥 = 1 e 𝑡𝑚𝑖𝑛 = 0 e riducendo questo intervallo sempre di più fino all’ottenimento del valore 𝑞0, con una precisione impostata alla dodicesima cifra decimale; il t ottenuto risulta esattamente la realizzazione cercata.

3. per 𝑖 = 1,2, … , 𝑛 − 2 procedere come indicato nel passo successivo

4. ricavare 𝑎𝑖 = 𝜑𝜃𝑖−1((1 − 𝑠𝑖)𝜑𝜃𝑖(𝑡𝑖)) e porre 𝑢𝑛−𝑖+1= 𝜑𝜃𝑖−1(𝑠𝑖𝜑𝜃𝑖(𝑡𝑖)) e

calcolare inoltre 𝑡𝑖+1= 𝐾𝑐−1𝜃𝑖+1(𝑎 𝑖)

I passaggi 3 e 4 consentono, alla replicazione di ogni passo, di ottenere, avendo la variabile estratta inizialmente 𝑠𝑖 e quella ricavata 𝑡𝑖, le realizzazioni della copula bivariata 𝐶𝜃𝑖, quindi 𝑢𝑛−𝑖+1, che rappresenta l’ 𝑛 − 𝑖 + 1-esimo elemento del vettore da aleatorio da campionare e 𝑎𝑖, necessario per ottenere il valore 𝑡𝑖+1 e procedere al calcolo dell’elemento di u successivo. Circa l’implementazione in MATLAB di questo passaggio, c’è poco da aggiungere; posta la 𝜑𝜃𝑖 = (− ln 𝑡)𝜃𝑖

79

possiamo scrivere la 𝑎𝑖 come 𝑎𝑖 = exp ((1 − 𝑠𝑖)𝜃𝑖1 ln(𝑡𝑖)) mentre l’elemento

𝑢𝑛−𝑖+1 = exp (𝑠𝑖

1

𝜃𝑖ln(𝑡𝑖)) e ripetuto per ogni 𝑖 = 1,2, … , 𝑛 − 2; circa l’ultima

formula per ricavare 𝑡𝑖+1 è stato seguito lo stesso procedimento del passo 1

5. porre, infine, 𝑢2 = 𝜑𝜃𝑛−1−1 ((1 − 𝑠𝑛−1)𝜑𝜃𝑛−1(𝑡𝑛−1)) e 𝑢1 = 𝜑𝜃𝑛−1−1 (𝑠𝑛−1𝜑𝜃𝑛−1(𝑡𝑛−1))

Con questo passaggio si ricavano gli ultimi due valori del vettore u, con la stessa modalità di procedimento vista nel caso bivariato. La trascrizione in MATLAB è praticamente la stessa vista per il passaggio precedente

6. abbiamo ora n realizzazioni di 𝒖 = (𝑢1, 𝑢2, … , 𝑢𝑛) con distribuzioni marginali

uniformi e struttura di dipendenza voluta

7. le realizzazioni 𝒙 = (𝑥1, 𝑥2, … , 𝑥𝑛) cercate saranno date da 𝑥𝑖 = 𝐹𝑖−1(𝑢𝑖) per

ogni 𝑖 = 1,2, … , 𝑛, dove 𝐹𝑖 è la funzione di ripartizione marginale delle singole

variabili aleatorie

I passaggi 6 e 7 sono esattamente identici a quelli visti per l’algoritmo precedente; non necessitano, quindi, di particolari commenti o precisazioni.

L’elemento fondamentale dell’algoritmo è comprendere che i valori successivi a 𝑞0, dati da 𝑎1, 𝑎2, … , 𝑎𝑛−2, altro non sono che i valori assunti dalla copula a due variabili relativa. Come abbiamo già visto, le due variabili aleatorie

𝑆1 = 𝜑1(𝑈)

𝜑1(𝑈) + 𝜑1(𝑉) 𝑒 𝑇1 = 𝐶(𝑈, 𝑉) = 𝜑1 −1(𝜑

1(𝑈) + 𝜑1(𝑉))

Sono indipendenti e 𝑆1 è uniformemente distribuita su [0,1]. Data questa ipotesi, le variabili generate 𝑢𝑛 = e 𝑎1 = sono realizzazioni della copula 𝐶𝜃1. Avendo dunque 𝑎1 possiamo ricavare 𝑡2 come realizzazione della copula 𝐶𝜃2 e il procedimento si ripete fino agli ultimi due valori di u.

Possiamo inoltre dimostrare che 𝜏(𝑈𝑛−𝑖, 𝑈𝑛−𝑗) = 1 + 4 ∫ 𝜑𝑖+1(𝑡)

𝜑′𝑖+1(𝑡)𝑑𝑡

1

0 per ogni i tale che 0 ≤ 𝑖 ≤ 𝑛 − 2 e contemporaneamente 𝑗 = 𝑖 + 1, 𝑖 + 2, … , 𝑛 − 1. Riprendendo la formulazione della copula archimedea multivariata vista nel paragrafo 2.3.6.2 abbiamo che

𝐶𝜃1(𝐶𝜃2(… 𝐶𝜃𝑛−2𝐶𝜃𝑛−1(𝑢1, 𝑢2), 𝑢3… , 𝑢𝑛−1), 𝑢𝑛)

Poniamo la variabile 𝑢 = 1 se ℎ ≠ 𝑛 − 𝑖 e ℎ ≠ 𝑛 − 𝑗; otteniamo dunque la seguente scrittura della stessa formula

𝐶𝑈𝑛−𝑗𝑈𝑛−𝑖(𝑈𝑛−𝑖, 𝑈𝑛−𝑗) = 𝐶𝑖+1(𝐶𝑖+2(… 𝐶𝜃𝑗+2𝐶𝜃𝑗+1(𝑢𝑛−𝑗, 1), 1 … ,1), 𝑢𝑛−𝑖)

80

Ora che abbiamo analizzato entrambi gli algoritmi21 simulativi possiamo passare alla fase di esposizione dei dati ottenuti

Documenti correlati