Erreur 1004
Résolu
Monte_Carlo
Messages postés
8
Statut
Membre
-
Monte_Carlo Messages postés 8 Statut Membre -
Monte_Carlo Messages postés 8 Statut Membre -
Bonjour,
J'ai une erreur de type 1004 en excécutant le code suivant : Sub Prix_Monte_Carlo_Americain()
'Calcul le prix de l'option par la méthode de Monte Carlo
'Définitions des variables
Dim Stock() As Double
'On stock les valeurs de S0
Dim StockS0() As Double
'On stock les payoff
Dim StockPrix()
'On stock les payoff actualisés
Dim StockPrixAct() As Double
'Valeur de continuation
Dim Cont As Integer
Dim ColX() As Variant
Dim ColY() As Variant
Dim Reg As Integer
Dim Moy As Double
Dim StD As Double
Dim BornInf As Double
Dim BornSup As Double
'Lecture des paramètres dans la feuille
t = Feuil1.Cells(9, 4).Value
sigma = Feuil1.Cells(8, 4).Value
mu = Feuil1.Cells(7, 4).Value
K = Feuil1.Cells(6, 4).Value
Npas = Feuil1.Cells(10, 4).Value
CP = Feuil1.Cells(11, 4)
Nsims = Feuil1.Cells(3, 4)
'Longueur d'un pas de temps
dt = t / Npas
'Calcul les paramètres de S
Trend = (mu - 0.5 * sigma ^ 2) * dt
Sto = sigma * Sqr(dt)
'Calcul du Z-score pour l'intervalle de confiance
zscore = Application.WorksheetFunction.NormSInv(0.975)
'On stoque les tirages de MC pour calculer l'écart-type
ReDim Stock(1 To Nsims)
ReDim StockS0(0 To Npas - 1, 0 To Nsims - 1)
ReDim StockPrix(0 To Npas - 1, 0 To Nsims - 1)
ReDim StockPrixAct(0 To Npas - 1, 0 To Nsims - 1)
'On enclenche les itérations dont le nombre vaut Nsims
For nsim = 1 To Nsims
'On récupère la valeur de départ de l'ASJ
S0 = Feuil1.Cells(5, 4).Value
'On calcule le prix de l'ASJ au bout de la trajectoire
For i = 1 To Npas
'on génère une variable aléatoire epsilon dans N(0,1)
eps = BoxMuller()
'on calcule le prix de l'action à Maturité
S0 = S0 * Exp(Trend + Sto * eps)
StockS0(i - 1, nsim - 1) = S0
Feuil2.Cells(i, nsim) = StockS0(i - 1, nsim - 1)
StockPrix(i - 1, nsim - 1) = Maximum(S0 - K, 0)
StockPrixAct(i - 1, nsim - 1) = StockPrix(i - 1, nsim - 1) * Exp(-mu * t)
Feuil3.Cells(i, nsim) = StockPrixAct(i - 1, nsim - 1)
Next i
Next nsim
ReDim ColX(0 To Npas - 1)
ReDim ColY(0 To Npas - 1)
For j = Nsims To 0 Step -1
For i = Npas To 0 Step -1
'If j = 0 Then Stop
ColX(j) = Application.WorksheetFunction.Index(StockS0, i, j)
'ColY(j) = Application.WorksheetFunction.Index(StockPrixAct, 0 ,j)
Feuil2.Cells(i, 10) = ColX(3)
Feuil2.Cells(i, 11) = ColX(2)
Next i
'Reg = Application.WorksheetFunction.LinEst(ColY(j), ColX(j))
Next j
End Sub
Le problème se situe à partir de
For j = Nsims To 0 Step -1
For i = Npas To 0 Step -1
Je n'arrive pas à le faire retourner sur la boucle de j une fois que la première boucle i est finie.
Merci d'avance
J'ai une erreur de type 1004 en excécutant le code suivant : Sub Prix_Monte_Carlo_Americain()
'Calcul le prix de l'option par la méthode de Monte Carlo
'Définitions des variables
Dim Stock() As Double
'On stock les valeurs de S0
Dim StockS0() As Double
'On stock les payoff
Dim StockPrix()
'On stock les payoff actualisés
Dim StockPrixAct() As Double
'Valeur de continuation
Dim Cont As Integer
Dim ColX() As Variant
Dim ColY() As Variant
Dim Reg As Integer
Dim Moy As Double
Dim StD As Double
Dim BornInf As Double
Dim BornSup As Double
'Lecture des paramètres dans la feuille
t = Feuil1.Cells(9, 4).Value
sigma = Feuil1.Cells(8, 4).Value
mu = Feuil1.Cells(7, 4).Value
K = Feuil1.Cells(6, 4).Value
Npas = Feuil1.Cells(10, 4).Value
CP = Feuil1.Cells(11, 4)
Nsims = Feuil1.Cells(3, 4)
'Longueur d'un pas de temps
dt = t / Npas
'Calcul les paramètres de S
Trend = (mu - 0.5 * sigma ^ 2) * dt
Sto = sigma * Sqr(dt)
'Calcul du Z-score pour l'intervalle de confiance
zscore = Application.WorksheetFunction.NormSInv(0.975)
'On stoque les tirages de MC pour calculer l'écart-type
ReDim Stock(1 To Nsims)
ReDim StockS0(0 To Npas - 1, 0 To Nsims - 1)
ReDim StockPrix(0 To Npas - 1, 0 To Nsims - 1)
ReDim StockPrixAct(0 To Npas - 1, 0 To Nsims - 1)
'On enclenche les itérations dont le nombre vaut Nsims
For nsim = 1 To Nsims
'On récupère la valeur de départ de l'ASJ
S0 = Feuil1.Cells(5, 4).Value
'On calcule le prix de l'ASJ au bout de la trajectoire
For i = 1 To Npas
'on génère une variable aléatoire epsilon dans N(0,1)
eps = BoxMuller()
'on calcule le prix de l'action à Maturité
S0 = S0 * Exp(Trend + Sto * eps)
StockS0(i - 1, nsim - 1) = S0
Feuil2.Cells(i, nsim) = StockS0(i - 1, nsim - 1)
StockPrix(i - 1, nsim - 1) = Maximum(S0 - K, 0)
StockPrixAct(i - 1, nsim - 1) = StockPrix(i - 1, nsim - 1) * Exp(-mu * t)
Feuil3.Cells(i, nsim) = StockPrixAct(i - 1, nsim - 1)
Next i
Next nsim
ReDim ColX(0 To Npas - 1)
ReDim ColY(0 To Npas - 1)
For j = Nsims To 0 Step -1
For i = Npas To 0 Step -1
'If j = 0 Then Stop
ColX(j) = Application.WorksheetFunction.Index(StockS0, i, j)
'ColY(j) = Application.WorksheetFunction.Index(StockPrixAct, 0 ,j)
Feuil2.Cells(i, 10) = ColX(3)
Feuil2.Cells(i, 11) = ColX(2)
Next i
'Reg = Application.WorksheetFunction.LinEst(ColY(j), ColX(j))
Next j
End Sub
Le problème se situe à partir de
For j = Nsims To 0 Step -1
For i = Npas To 0 Step -1
Je n'arrive pas à le faire retourner sur la boucle de j une fois que la première boucle i est finie.
Merci d'avance
A voir également:
- Erreur 1004
- Erreur 0x80070643 - Accueil - Windows
- Erreur 4201 france tv ✓ - Forum Réseaux sociaux
- Erreur 4101 france tv - Forum Lecteurs et supports vidéo
- J'aime par erreur facebook notification - Forum Facebook
- Code erreur f3500-31 ✓ - Forum Bbox Bouygues