1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| Sub simopt()
'Début de boucle ici
Range("d4:iv6000").ClearContents
Range("option1").ClearContents
Dim iopt1, s1, x1, rf1, q1, t1, sigma1, nsigma1, pas
Dim rnmutg, sigtg, sumg, randnsg, S1g, payoff1g, sigsum, sigmoyenne
Dim i As Integer
Dim j As Integer
iopt1 = -1
s1 = 79
x1 = 86
rf1 = 0.05
q1 = 0
t1 = 1
sigma1 = 0.27
pas = 100
nsimg1 = 115
rnmutg = (rf1 - q1 - 0.5 * sigma1 ^ 2) * (t1 / pas)
sigtg = sigma1 * Sqr(t1 / pas)
sumg = 0
For i = 1 To nsimg1
S1g = s1
sigsum = 0
For j = 1 To pas
Randomize
randnsg = Application.NormSInv(Rnd)
S1g = S1g * Exp(rnmutg + randnsg * sigtg)
'Range("prix1").Offset(j - 1, i - 1) = S1g
sigsum = sigsum + S1g
Next j
sigmoyenne = sigsum / pas
'Range("prix").Offset(i - 1, 0) = sigmoyenne
payoff1g = Application.Max(iopt1 * (sigmoyenne - x1), 0)
'Range("cash").Offset(i - 1, 0) = payoff1g
sumg = sumg + payoff1g
Next i
option1 = Exp(-rf1 * t1) * sumg / nsimg1
Range("option1").Value = option1 (Résultat à stocker)
'Fin de boucle
End Sub |
Partager