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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
| Sub CPPI()
' Paramétrage du sous-jacent
S0 = 100
mu = -0.08
sigma = 0.3
' Monétaire
rf = 0.03
Plancher = 90
Tolérance = 0.3
Mstar = 20
' Paramètres de simulation
Nb_Points = 252
dt = 1 / Nb_Points
Nb_Simuls = 1
ReDim Perf(Nb_Simuls, 1) As Double
ReDim Valo(Nb_Points, 1) As Double
ReDim cours(Nb_Points, 1) As Double
ReDim pourcent_actions(Nb_Points, 1) As Double
ReDim couss(Nb_Points, 1) As Double
For i = 1 To 1
coussin = S0 - Plancher
Position_Actions = Mstar * coussin
Position_Obligs = S0 - Position_Actions
Valo_Position = S0
Spot = S0
For j = 1 To Nb_Points
Taux_Renta = Taux_Renta_Action(mu, sigma, dt)
Spot = Spot * Exp(Taux_Renta)
Position_Actions = Position_Actions * Exp(Taux_Renta)
Position_Obligs = Position_Obligs * Exp(rf * dt)
Valo_Position = Position_Actions + Position_Obligs
pourcent_actions(j, 1) = Position_Actions / Valo_Position
Valo(j, 1) = Valo_Position
cours(j, 1) = Spot
coussin = Valo_Position - Plancher
couss(j, 1) = coussin
Multiple = Position_Actions / coussin
If Multiple >= Mstar * (1 + Tolérance) Or Multiple <= Mstar * (1 - Tolérance) Then
Position_Actions = Mstar * coussin
Position_Obligs = Valo_Position - Position_Actions
End If
Next j
Perf(i, 1) = Valo_Position
Next i
' Worksheets("Feuil1").Activate
' Range(Cells(2, 1), Cells(Nb_Simuls + 1, 1)).Value = Perf
' Call Noyau.Noyau_Gaussien
Worksheets("Feuil2").Activate
Range("A1:A252").Value = Valo
Range("B1:B252").Value = cours
Range("C1:C252").Value = pourcent_actions
Range("D1:D252").Value = couss
End Sub
Function Taux_Renta_Action(mu, sigma, dt)
epsilon = WorksheetFunction.NormSInv(Rnd)
Taux_Renta_Action = (mu - sigma ^ 2 / 2) * dt + sigma * epsilon * Sqr(dt)
End Function |
Partager