Bonjour,
J'ai un examen en VBA ce lundi et le sujet va porter sur la simulation MONTE CARLO en VBA.
Bref, j'ai un exo à faire dont j'ai commencé mais je n'arrive pas à le finir. je vous demande de bien m'aider à le faire, ça prends pas bcp de temps.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
Option Explicit
Sub procIC_MC()
 
 
'procédure calculant l'interv de conf à différents horizons _
    par la méthode de MC
 
 
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
'%Déclaration des variables %
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
Dim Er As Double            'rendement moyen
Dim vol As Double           'volatilité
Dim nbreSeuils As Integer   'nombre de seuils(périodes des stats)
Dim seuils() As Variant     'seuils + (plage)
 
Dim samples() As Variant    'variant contenant les échantillons _
                             des rendements cumulés
 
Dim rc() As Double          'vecteur générique des rend cumulés.
 
Dim horizon As Integer      'nombre de périodes d'une trajectoire
Dim nbreSimul As Long       'nombre de trajectoires à créer
 
 
Dim c As Double             'cours du titre
Dim r As Double             'rendement
Dim p As Double             'probabilité
 
 
 
Dim i As Integer            'compteur
 
 
 
 
 
 
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
'% I.Définitions des paramètres %
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 
'récupération du rendement moyen et de la volatilité
 
With ThisWorkbook.Worksheets(1)
     Er = .Cells(2, 3).Value
     vol = .Cells(3, 3).Value
     nbreSeuils = .Cells(.Rows.Count, 1).End(xlUp).Row - 10
     seuils = .Cells(11, 1).Resize(nbreSeuils, 1).Value
End With
 
'récupération de la valeur de horizon
horizon = seuils(nbreSeuils, 1)
 
'fixation du nombre de trajectoire
nbreSimul = InputBox("Tapez le nombre de trajectoires souhaitées.", , 10000)
 
'redimensionnement des vecteurs
 
ReDim rc(1 To nbreSimul)  'par défaut zéro pour chaque élément
ReDim samples(1 To nbreSeuils) 'par défaut, valeur "vide"
 
For i = 1 To nbreSeuils
    samples(i) = rc
Next i
 
 
 
 
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
'% II.Simulation des trajectoires %
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 
'boucle sur les trajectoires (de 1 à nbreSimul)
 
   'initialisation du cours à 1
 
 
   'boucle sur les périodes (de 1 à horiszon)
 
 
       'tirage de p(avec Randomize et Rnd)
 
 
       'gestion des valeurs incompatibles avec la loi normale
 
 
       'calcul du rendement r (avec NomrInv)
 
 
       'calcul du nouveau cours
 
 
       'récupération de c-1 si période est un seuil
 
 
   'fin de la boucle sur les périodes
 
 
'fin de la boucle sur les trajectoires
 
 
 
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
'% III.Calcul des statistiques %
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 
End Sub