IMPLEMENTAZIONE IN VBA DI OPZIONI ESOTICHE
Università Degli Studi Di Padova
Dipartimento Di Scienze Economiche e Aziendali
Corso Di Laurea Magistrale in Economia e Finanza
Arcuri Stefania 1035987 - Peraro Valentina 1040045 - Schiavon Lucia 1035797
Computational Finance
A.A. 2012/2013
SCHEMA DEL LAVORO
 Presentazione dei fondamenti teorici
 Cos’è il rischio di controparte?
 Quando sorge?
 In cosa consiste l’esposizione a tale rischio?
 Descrizione del modello di implementazione in
VBA
 Caso Pratico
 Analisi dei codici
2
COS’Ѐ IL RISCHIO DI CONTROPARTE
 Dalla Circolare n° 263 del 27 dicembre 2006 di Banca
d’Italia, il rischio di controparte è definito come:
il rischio che la controparte di una transazione
finanziaria avente ad oggetto determinati strumenti
finanziari risulti inadempiente prima del regolamento
della transazione stessa.
 A differenza del rischio di credito in cui la probabilità di
perdita è unilaterale e in capo alla banca erogante, il
rischio di controparte crea, di regola, un rischio di perdita
di tipo bilaterale. Infatti, il valore di mercato della
transazione può essere positivo o negativo per entrambe
le controparti.
3
QUANDO SORGE
4
Principalmente dall’utilizzo di derivati Over the
Counter (OTC), dove:
• mancano quotazioni ufficiali  asimmetria
informativa;
• la diffusione delle informazioni tra le parti non è
regolamentata  maggiore rischiosità.
Il 15/03/13 è entrata in vigore l’ EMIR  obblighi di
compensazione di strumenti derivati OTC,
segnalazione informativa a soggetti autorizzati.
L’ ESPOSIZIONE AL
RISCHIO
 Il possessore di un contratto è esposto al rischio
di controparte quando:
 La controparte è inadempiente  non onora i
pagamenti previsti dal contratto;
 Il possessore stesso è creditore  sostituire il
contratto significa subire una perdita pari al
valore di mercato del contratto (MtM+).
5
 Asimmetria del rischio di controparte:
 Se il possessore è creditore subirà una perdita
pari al MtM+;
 Se, invece, è debitore non subirà né una perdita
né otterrà un guadagno.
6
ANALITICAMENTE (1)
E, EE, EPE
 L’esposizione (E) al rischio è funzione del Mark-to-Market:
𝐸𝑖(𝑡) = max 𝑀𝑡𝑀𝑖(𝑡); 0
 L'esposizione attesa per ogni periodo futuro sarà l’Expected
Exposure (EE):
𝐸𝐸(𝑡) =
𝑖=1
𝑚
𝐸[𝑚𝑎𝑥(𝑀𝑡𝑀𝑖(𝑡); 0)]
 La stima ad oggi delle esposizioni future è data dall'Expected
Positive Exposure (EPE) in un intervallo temporale [0;T]:
𝐸𝑃𝐸(𝑇) = 𝑡=0
𝑇
𝐸𝐸 𝑡 ∗𝑡
𝑇
7
ANALITICAMENTE (2)
dall’EE ed EPE all’EEE ed EEPE
 PROBLEMA:
L'EE e l'EPE possono sottostimare l'esposizione per
transazioni a breve maturity.
Questo avviene a causa dell’estinzione dei contratti di
breve periodo, sebbene questi siano sostituiti con nuovi
contratti la metrica non integra con i nuovi valori.
 SOLUZIONE:
Basilea II ha introdotto delle misure alternative (definite
effettive). Si tratta di:
 Effective Expected Exposure (EEE);
 Effective Expected Positive Exposure (EEPE).
8
ANALITICAMENTE (3)
EEE, EEPE
 L'EEE introduce un vincolo di non decremento,
tale per cui ad un dato periodo l'EE non può
essere inferiore all'EEE del periodo precedente:
𝐸𝐸𝐸 𝑡 = 𝑚𝑎𝑥 𝐸𝐸 𝑡 ; 𝐸𝐸𝐸(𝑡 − 1)
 L'EEPE è la media ponderata per il tempo delle
EEE:
𝐸𝐸𝑃𝐸(𝑇) =
𝑡=0
𝑇
𝐸𝐸𝐸 𝑡 ∗ 𝑡
𝑇
9
CASO PRATICO
 Opzioni esotiche (path-dependent) considerate:
 Opzione Asiatica Call
 Opzione Barriera Call Up-and-Out
 Opzione Barriera Call Up-and-In
 Opzione Lookback Call
 Opzione Lookback Put
 Costruite sui seguenti indici azionari:
 FTSEMIB
 GDAXX
 STOXX50E
 S&P500
 CAC40
10
VALUTAZIONE
DELL’ESPOSIZIONE
 Il rischio risiede nell’evoluzione del sottostante, stimata
attraverso simulazioni MonteCarlo ed i cui input sono stati:
 S0: valore iniziale del sottostante;
 K: strike price;
 r: risk-free rate;
 σ: volatilità storica del sottostante
 Δt: intervallo di tempo espresso in anni;
 T: maturity;
 m: numero di scenari
Tali per cui:
𝑆𝑡 = 𝑆𝑡−1 ∗ 𝑒𝑥𝑝 𝑟 −
𝜎2
2
∗ ∆𝑡 + 𝜎 ∗ ∆𝑡 ∗ 𝑁(0,1)
11
 Ottenute le n*m simulazioni di 𝑆𝑡 si passa a calcolare
gli m payoff per il primo time step:
dove n, numero di time step, è ricavato come rapporto
tra Δt e il periodo di analisi x, pari a un anno o alla
maturity se questa è inferiore ad un anno.
Opzione Payoff
Call Asiatica 𝑚𝑎𝑥
1
𝑇
𝑡=1
𝑇
𝑆𝑡 − 𝐾; 0
Barriera Call Up-and-Out
𝑚𝑎𝑥 𝑆 𝑇 − 𝐾; 0 𝑠𝑒 𝑚𝑎𝑥𝑆𝑡 < 𝐵
0 𝑠𝑒 𝑚𝑎𝑥𝑆𝑡 > 𝐵
Barriera Call Up-and-In
𝑚𝑎𝑥 𝑆 𝑇 − 𝐾; 0 𝑠𝑒 𝑚𝑎𝑥𝑆𝑡 > 𝐵
0 𝑠𝑒 𝑚𝑎𝑥𝑆𝑡 < 𝐵
Lookback Call 𝑚𝑎𝑥 𝑆 𝑇 − 𝑚𝑖𝑛𝑆𝑡; 0
Lookback Put 𝑚𝑎𝑥 𝑚𝑎𝑥𝑆𝑡 − 𝑆 𝑇; 0
12
MONTECARLO IN
MONTECARLO…
 Al fine di mantenere memoria delle simulazioni, ad
ogni time step successivo al primo si è ripetuto MC
ponendo:
𝑆0(𝑡) =
1
𝑀 𝑚=1
𝑀
𝑆 𝑚(𝑡 − 1)
N.B. Di volta in volta si considera un orizzonte
temporale via via decrescente.
 Ad ogni nuova simulazione si riapplicano le formule di
payoff, ottenendo alla fine n*m payoff.
13
 Ottenuti così gli m*n payoff, possiamo
passare al calcolo delle varie misure stimanti
l’esposizione.
Metriche Formule
EE(t) 1
𝑀
𝑚=1
𝑀
𝑝𝑎𝑦𝑜𝑓𝑓𝑚(𝑡)
EPE
𝑡=0
𝑇
[𝐸𝐸(𝑡) ∗ 𝑑𝑡]
𝑇
EEE(t) max 𝐸𝐸𝐸 𝑡 − 1 ; 𝐸𝐸(𝑡)
EEPE
𝑡=0
𝑇
[𝐸𝐸𝐸(𝑡) ∗ 𝑑𝑡]
𝑇
14
Interfaccia in Excel
15
ESEMPIO DI CODICE: Call Asiatica
1/12
Abbiamo nominato la macro e dichiarato le variabili
principali:
Sub Asiancall()
Dim sigma As Double, S0 As Double, K As Long, r As Currency
Dim q As Double, n As Integer, T As Double, sum As Long
Dim dt As Double, x As Double
16
ESEMPIO DI CODICE: Call Asiatica
2/12
Con i seguenti codici istruiamo VBA riguardo le celle di
Excel in cui trovare i valori input delle variabili:
S0 = Foglio2.Cells(7, 3)
K = Foglio2.Cells(8, 3)
r = Foglio2.Cells(9, 3)
sigma = Foglio2.Cells(10, 3)
dt = Foglio2.Cells(11, 3)
T = Foglio2.Cells(14, 3)
m = Foglio2.Cells(12, 3)
17
ESEMPIO DI CODICE: Call Asiatica
3/12
In questa sezione di codice ricaviamo n (numero di time
step) dopo aver definito x (orizzonte temporale non
superiore a un anno). L’ultima riga ordina a VBA di
inserire il valore nella specifica cella di Excel.
dt = dt / 360
If T > 1 Then
x = 1
Else
x = T
End If
w = x / dt
n = Fix(w)
Foglio2.Cells(13, 3) = n
18
ESEMPIO DI CODICE: Call Asiatica
4/12
Indicazioni delle dimensioni delle matrici e definizione
delle variabili ‘accessorie’ utili per i passaggi successivi.
ReDim s(1 To m, 1 To n)
ReDim array_po(1 To m, 1 To n)
ReDim EE(1, 1 To n)
ReDim EEE(1, 0 To n)
Dim p As Integer
Dim i As Integer
Dim j As Integer
Dim Y As Currency
Dim S1 As Double
Dim sum_s As Double
Dim med_s As Double
19
ESEMPIO DI CODICE: Call Asiatica
5/12
Inizializzazione degli indici e delle variabili. L’ultimo
comando permette la creazione di valori casuali non
ripetuti.
j = 1
i = 1
p = 0
sum_s = 0
EE_tot = 0
EEE_tot = 0
Randomize
20
ESEMPIO DI CODICE: Call Asiatica
6/12
Successivamente sono stati iniziati due cicli, con il primo
vogliamo ottenere i payoff per ogni time step. Con il ciclo
più interno, invece, simuliamo i valori del sottostante al
fine di calcolare il payoff per uno specifico time step.
Entrambi avvengono per m scenari.
Abbiamo utilizzato due cicli validi finché la condizione
non risulti falsa.
Do
…
Do
…
Loop Until i > m
Loop Until j > n
21
ESEMPIO DI CODICE: Call Asiatica
7/12
All’inizio del ciclo più interno le seguenti istruzioni
definiscono 𝑆0 per le simulazioni successivi alla prima.
Y = Application.WorksheetFunction.NormSInv(Rnd)
s(i, p) = S0 * Exp((r - ((sigma ^ 2) / 2) - q) * dt + sigma * (dt ^ (1 / 2)) * Y)
sum_s = s(i, p)
22
Do
If j > 1 Then
S0 = S1_m
End If
Di seguito viene calcolata la simulazione del sottostante
per il primo time step di ogni simulazione.
ESEMPIO DI CODICE: Call Asiatica
8/12
Successivamente si esegue il ciclo per calcolare il
sottostante nei rimanenti time step.
Il ciclo è valido fino a che la condizione indicata risulta
vera.
Do While p < n
p = p + 1
Y = Application.WorksheetFunction.NormSInv(Rnd)
s(i, p) = s(i, (p - 1)) * Exp((r - ((sigma ^ 2) / 2) - q) * dt + sigma *
(dt ^ (1 / 2)) * Y)
sum_s = sum_s + s(i, p)
Loop
23
ESEMPIO DI CODICE: Call Asiatica
9/12
Abbiamo poi calcolato il payoff.
Nel caso dell’opzione asiatica, occorre determinare la
media dei valori del sottostante e a questa sottrarre il
valore dello strike. Si è poi scelto di determinare il
massimo tra il valore ottenuto e 0 attraverso l’istruzione
‘If…Then…Else’.
med_s = sum_s / (p - j + 1)
payoff_s = med_s – K
If payoff_s >= 0 Then
array_po(i, j) = payoff_s
Else
array_po(i, j) = 0
End If
24
ESEMPIO DI CODICE: Call Asiatica
10/12
Terminiamo questo primo ciclo calcolando la somma dei
payoff per periodo e la somma dei valori del sottostante
al primo periodo delle rispettive simulazioni. Quest’ultimo
permette di calcolare la media dei sottostanti al primo
periodo, tale valore diventerà 𝑆0 alla successiva
ripetizione del ciclo.
p = tpp
S1 = S1 + s(i, p)
po_sum = po_sum + array_po(i, j)
i = i + 1
Loop Until i > m
S1_m = S1 / m
25
ESEMPIO DI CODICE: Call Asiatica
11/12
Possiamo ora calcolare due delle misure sopraindicate:
l’EE e l’EEE. Queste vengono poi mostrate sul foglio
Excel.
EE(1, j) = po_sum / m
Foglio2.Cells(5, 5 + j) = EE(1, j)
If j = 1 Then
EEE(1, j) = EE(1, j)
Else
EEE(1, j) = Application.WorksheetFunction.Max(EE(1, j), EEE(1, j - 1))
End If
Foglio2.Cells(7, 5 + j) = EEE(1, j)
EE_tot = EE_tot + EE(1, j) * dt
EEE_tot = EEE_tot + EEE(1, j) * dt
26
ESEMPIO DI CODICE: Call Asiatica
12/12
Infine, chiuso il secondo ciclo, calcoliamo le altre due
misure: l’EPE e l’EEPE, mostrandole sul foglio Excel.
EE_tot = EE_tot + EE(1, j) * dt
EEE_tot = EEE_tot + EEE(1, j) * dt
…
Loop Until j > n
EPE = EE_tot / x
EEPE = EEE_tot / x
Foglio2.Cells(6, 6) = EPE
Foglio2.Cells(8, 6) = EEPE
End Sub
27
Grazie per l’attenzione!
28

Esposizione al rischio di controparte

  • 1.
    IMPLEMENTAZIONE IN VBADI OPZIONI ESOTICHE Università Degli Studi Di Padova Dipartimento Di Scienze Economiche e Aziendali Corso Di Laurea Magistrale in Economia e Finanza Arcuri Stefania 1035987 - Peraro Valentina 1040045 - Schiavon Lucia 1035797 Computational Finance A.A. 2012/2013
  • 2.
    SCHEMA DEL LAVORO Presentazione dei fondamenti teorici  Cos’è il rischio di controparte?  Quando sorge?  In cosa consiste l’esposizione a tale rischio?  Descrizione del modello di implementazione in VBA  Caso Pratico  Analisi dei codici 2
  • 3.
    COS’Ѐ IL RISCHIODI CONTROPARTE  Dalla Circolare n° 263 del 27 dicembre 2006 di Banca d’Italia, il rischio di controparte è definito come: il rischio che la controparte di una transazione finanziaria avente ad oggetto determinati strumenti finanziari risulti inadempiente prima del regolamento della transazione stessa.  A differenza del rischio di credito in cui la probabilità di perdita è unilaterale e in capo alla banca erogante, il rischio di controparte crea, di regola, un rischio di perdita di tipo bilaterale. Infatti, il valore di mercato della transazione può essere positivo o negativo per entrambe le controparti. 3
  • 4.
    QUANDO SORGE 4 Principalmente dall’utilizzodi derivati Over the Counter (OTC), dove: • mancano quotazioni ufficiali  asimmetria informativa; • la diffusione delle informazioni tra le parti non è regolamentata  maggiore rischiosità. Il 15/03/13 è entrata in vigore l’ EMIR  obblighi di compensazione di strumenti derivati OTC, segnalazione informativa a soggetti autorizzati.
  • 5.
    L’ ESPOSIZIONE AL RISCHIO Il possessore di un contratto è esposto al rischio di controparte quando:  La controparte è inadempiente  non onora i pagamenti previsti dal contratto;  Il possessore stesso è creditore  sostituire il contratto significa subire una perdita pari al valore di mercato del contratto (MtM+). 5
  • 6.
     Asimmetria delrischio di controparte:  Se il possessore è creditore subirà una perdita pari al MtM+;  Se, invece, è debitore non subirà né una perdita né otterrà un guadagno. 6
  • 7.
    ANALITICAMENTE (1) E, EE,EPE  L’esposizione (E) al rischio è funzione del Mark-to-Market: 𝐸𝑖(𝑡) = max 𝑀𝑡𝑀𝑖(𝑡); 0  L'esposizione attesa per ogni periodo futuro sarà l’Expected Exposure (EE): 𝐸𝐸(𝑡) = 𝑖=1 𝑚 𝐸[𝑚𝑎𝑥(𝑀𝑡𝑀𝑖(𝑡); 0)]  La stima ad oggi delle esposizioni future è data dall'Expected Positive Exposure (EPE) in un intervallo temporale [0;T]: 𝐸𝑃𝐸(𝑇) = 𝑡=0 𝑇 𝐸𝐸 𝑡 ∗𝑡 𝑇 7
  • 8.
    ANALITICAMENTE (2) dall’EE edEPE all’EEE ed EEPE  PROBLEMA: L'EE e l'EPE possono sottostimare l'esposizione per transazioni a breve maturity. Questo avviene a causa dell’estinzione dei contratti di breve periodo, sebbene questi siano sostituiti con nuovi contratti la metrica non integra con i nuovi valori.  SOLUZIONE: Basilea II ha introdotto delle misure alternative (definite effettive). Si tratta di:  Effective Expected Exposure (EEE);  Effective Expected Positive Exposure (EEPE). 8
  • 9.
    ANALITICAMENTE (3) EEE, EEPE L'EEE introduce un vincolo di non decremento, tale per cui ad un dato periodo l'EE non può essere inferiore all'EEE del periodo precedente: 𝐸𝐸𝐸 𝑡 = 𝑚𝑎𝑥 𝐸𝐸 𝑡 ; 𝐸𝐸𝐸(𝑡 − 1)  L'EEPE è la media ponderata per il tempo delle EEE: 𝐸𝐸𝑃𝐸(𝑇) = 𝑡=0 𝑇 𝐸𝐸𝐸 𝑡 ∗ 𝑡 𝑇 9
  • 10.
    CASO PRATICO  Opzioniesotiche (path-dependent) considerate:  Opzione Asiatica Call  Opzione Barriera Call Up-and-Out  Opzione Barriera Call Up-and-In  Opzione Lookback Call  Opzione Lookback Put  Costruite sui seguenti indici azionari:  FTSEMIB  GDAXX  STOXX50E  S&P500  CAC40 10
  • 11.
    VALUTAZIONE DELL’ESPOSIZIONE  Il rischiorisiede nell’evoluzione del sottostante, stimata attraverso simulazioni MonteCarlo ed i cui input sono stati:  S0: valore iniziale del sottostante;  K: strike price;  r: risk-free rate;  σ: volatilità storica del sottostante  Δt: intervallo di tempo espresso in anni;  T: maturity;  m: numero di scenari Tali per cui: 𝑆𝑡 = 𝑆𝑡−1 ∗ 𝑒𝑥𝑝 𝑟 − 𝜎2 2 ∗ ∆𝑡 + 𝜎 ∗ ∆𝑡 ∗ 𝑁(0,1) 11
  • 12.
     Ottenute len*m simulazioni di 𝑆𝑡 si passa a calcolare gli m payoff per il primo time step: dove n, numero di time step, è ricavato come rapporto tra Δt e il periodo di analisi x, pari a un anno o alla maturity se questa è inferiore ad un anno. Opzione Payoff Call Asiatica 𝑚𝑎𝑥 1 𝑇 𝑡=1 𝑇 𝑆𝑡 − 𝐾; 0 Barriera Call Up-and-Out 𝑚𝑎𝑥 𝑆 𝑇 − 𝐾; 0 𝑠𝑒 𝑚𝑎𝑥𝑆𝑡 < 𝐵 0 𝑠𝑒 𝑚𝑎𝑥𝑆𝑡 > 𝐵 Barriera Call Up-and-In 𝑚𝑎𝑥 𝑆 𝑇 − 𝐾; 0 𝑠𝑒 𝑚𝑎𝑥𝑆𝑡 > 𝐵 0 𝑠𝑒 𝑚𝑎𝑥𝑆𝑡 < 𝐵 Lookback Call 𝑚𝑎𝑥 𝑆 𝑇 − 𝑚𝑖𝑛𝑆𝑡; 0 Lookback Put 𝑚𝑎𝑥 𝑚𝑎𝑥𝑆𝑡 − 𝑆 𝑇; 0 12
  • 13.
    MONTECARLO IN MONTECARLO…  Alfine di mantenere memoria delle simulazioni, ad ogni time step successivo al primo si è ripetuto MC ponendo: 𝑆0(𝑡) = 1 𝑀 𝑚=1 𝑀 𝑆 𝑚(𝑡 − 1) N.B. Di volta in volta si considera un orizzonte temporale via via decrescente.  Ad ogni nuova simulazione si riapplicano le formule di payoff, ottenendo alla fine n*m payoff. 13
  • 14.
     Ottenuti cosìgli m*n payoff, possiamo passare al calcolo delle varie misure stimanti l’esposizione. Metriche Formule EE(t) 1 𝑀 𝑚=1 𝑀 𝑝𝑎𝑦𝑜𝑓𝑓𝑚(𝑡) EPE 𝑡=0 𝑇 [𝐸𝐸(𝑡) ∗ 𝑑𝑡] 𝑇 EEE(t) max 𝐸𝐸𝐸 𝑡 − 1 ; 𝐸𝐸(𝑡) EEPE 𝑡=0 𝑇 [𝐸𝐸𝐸(𝑡) ∗ 𝑑𝑡] 𝑇 14
  • 15.
  • 16.
    ESEMPIO DI CODICE:Call Asiatica 1/12 Abbiamo nominato la macro e dichiarato le variabili principali: Sub Asiancall() Dim sigma As Double, S0 As Double, K As Long, r As Currency Dim q As Double, n As Integer, T As Double, sum As Long Dim dt As Double, x As Double 16
  • 17.
    ESEMPIO DI CODICE:Call Asiatica 2/12 Con i seguenti codici istruiamo VBA riguardo le celle di Excel in cui trovare i valori input delle variabili: S0 = Foglio2.Cells(7, 3) K = Foglio2.Cells(8, 3) r = Foglio2.Cells(9, 3) sigma = Foglio2.Cells(10, 3) dt = Foglio2.Cells(11, 3) T = Foglio2.Cells(14, 3) m = Foglio2.Cells(12, 3) 17
  • 18.
    ESEMPIO DI CODICE:Call Asiatica 3/12 In questa sezione di codice ricaviamo n (numero di time step) dopo aver definito x (orizzonte temporale non superiore a un anno). L’ultima riga ordina a VBA di inserire il valore nella specifica cella di Excel. dt = dt / 360 If T > 1 Then x = 1 Else x = T End If w = x / dt n = Fix(w) Foglio2.Cells(13, 3) = n 18
  • 19.
    ESEMPIO DI CODICE:Call Asiatica 4/12 Indicazioni delle dimensioni delle matrici e definizione delle variabili ‘accessorie’ utili per i passaggi successivi. ReDim s(1 To m, 1 To n) ReDim array_po(1 To m, 1 To n) ReDim EE(1, 1 To n) ReDim EEE(1, 0 To n) Dim p As Integer Dim i As Integer Dim j As Integer Dim Y As Currency Dim S1 As Double Dim sum_s As Double Dim med_s As Double 19
  • 20.
    ESEMPIO DI CODICE:Call Asiatica 5/12 Inizializzazione degli indici e delle variabili. L’ultimo comando permette la creazione di valori casuali non ripetuti. j = 1 i = 1 p = 0 sum_s = 0 EE_tot = 0 EEE_tot = 0 Randomize 20
  • 21.
    ESEMPIO DI CODICE:Call Asiatica 6/12 Successivamente sono stati iniziati due cicli, con il primo vogliamo ottenere i payoff per ogni time step. Con il ciclo più interno, invece, simuliamo i valori del sottostante al fine di calcolare il payoff per uno specifico time step. Entrambi avvengono per m scenari. Abbiamo utilizzato due cicli validi finché la condizione non risulti falsa. Do … Do … Loop Until i > m Loop Until j > n 21
  • 22.
    ESEMPIO DI CODICE:Call Asiatica 7/12 All’inizio del ciclo più interno le seguenti istruzioni definiscono 𝑆0 per le simulazioni successivi alla prima. Y = Application.WorksheetFunction.NormSInv(Rnd) s(i, p) = S0 * Exp((r - ((sigma ^ 2) / 2) - q) * dt + sigma * (dt ^ (1 / 2)) * Y) sum_s = s(i, p) 22 Do If j > 1 Then S0 = S1_m End If Di seguito viene calcolata la simulazione del sottostante per il primo time step di ogni simulazione.
  • 23.
    ESEMPIO DI CODICE:Call Asiatica 8/12 Successivamente si esegue il ciclo per calcolare il sottostante nei rimanenti time step. Il ciclo è valido fino a che la condizione indicata risulta vera. Do While p < n p = p + 1 Y = Application.WorksheetFunction.NormSInv(Rnd) s(i, p) = s(i, (p - 1)) * Exp((r - ((sigma ^ 2) / 2) - q) * dt + sigma * (dt ^ (1 / 2)) * Y) sum_s = sum_s + s(i, p) Loop 23
  • 24.
    ESEMPIO DI CODICE:Call Asiatica 9/12 Abbiamo poi calcolato il payoff. Nel caso dell’opzione asiatica, occorre determinare la media dei valori del sottostante e a questa sottrarre il valore dello strike. Si è poi scelto di determinare il massimo tra il valore ottenuto e 0 attraverso l’istruzione ‘If…Then…Else’. med_s = sum_s / (p - j + 1) payoff_s = med_s – K If payoff_s >= 0 Then array_po(i, j) = payoff_s Else array_po(i, j) = 0 End If 24
  • 25.
    ESEMPIO DI CODICE:Call Asiatica 10/12 Terminiamo questo primo ciclo calcolando la somma dei payoff per periodo e la somma dei valori del sottostante al primo periodo delle rispettive simulazioni. Quest’ultimo permette di calcolare la media dei sottostanti al primo periodo, tale valore diventerà 𝑆0 alla successiva ripetizione del ciclo. p = tpp S1 = S1 + s(i, p) po_sum = po_sum + array_po(i, j) i = i + 1 Loop Until i > m S1_m = S1 / m 25
  • 26.
    ESEMPIO DI CODICE:Call Asiatica 11/12 Possiamo ora calcolare due delle misure sopraindicate: l’EE e l’EEE. Queste vengono poi mostrate sul foglio Excel. EE(1, j) = po_sum / m Foglio2.Cells(5, 5 + j) = EE(1, j) If j = 1 Then EEE(1, j) = EE(1, j) Else EEE(1, j) = Application.WorksheetFunction.Max(EE(1, j), EEE(1, j - 1)) End If Foglio2.Cells(7, 5 + j) = EEE(1, j) EE_tot = EE_tot + EE(1, j) * dt EEE_tot = EEE_tot + EEE(1, j) * dt 26
  • 27.
    ESEMPIO DI CODICE:Call Asiatica 12/12 Infine, chiuso il secondo ciclo, calcoliamo le altre due misure: l’EPE e l’EEPE, mostrandole sul foglio Excel. EE_tot = EE_tot + EE(1, j) * dt EEE_tot = EEE_tot + EEE(1, j) * dt … Loop Until j > n EPE = EE_tot / x EEPE = EEE_tot / x Foglio2.Cells(6, 6) = EPE Foglio2.Cells(8, 6) = EEPE End Sub 27
  • 28.