Pricing d'options barrières Pb de matching BS/MC

Bonjour,

Je ne parviens pas à matcher le prix d'options à barrières de type Call Up and In avec les formules de type BS et la méthode de MC.

Voyez vous mon erreur?

Cf fichier en attachment

Cdt.

Ludovic

Sub CUIPRICE()
Dim Barrierefranchise As Integer
GetData
Dim Stinit As Double
Stinit = St
Dim moyenneCUI As Double
Dim unif As Double
moyenneCUI = 0
If St < L Then
    Dim Stplusdt As Double
    Dim i As Long
    Dim j As Long
    For i = 1 To N
        Barrierefranchise = 0
        For j = partieentiere(t * 260) To partieentiere((M * 260))
            Randomize
            unif = Rnd
            z = WorksheetFunction.Norm_Inv(unif, 0, 1)
            Stplusdt = St * (1 + z * sigma * WorksheetFunction.Power((M - t) / 260, 0.5) + (r - div) * ((M - t) / 260))
            St = Stplusdt
            If Stplusdt > L Then
                Barrierefranchise = 1
            End If
        Next
        moyenneCUI = moyenneCUI + Barrierefranchise * partiepositive(St * Exp((r - div - 0.5 * WorksheetFunction.Power(sigma, 2)) * (M - t) + sigma * WorksheetFunction.Power(M - t, 0.5) * z) - K)
        St = Stinit
    Next
ElseIf St > L Then
    moyenneCUI = 0
End If
Worksheets("Feuil1").Cells(17, 4) = Exp(-r * (M - t)) * moyenneCUI / N
End Sub
Function CUIPRICE(St As Double, t As Double, K As Double, r As Double, M As Double, sigma As Double, L As Double) As Double
If St < L Then
    If K > L Then
        CUIPRICE = function1(1, St, div, M, r, sigma, t, K)
    ElseIf K < L Then
        CUIPRICE = function2(1, St, div, M, r, sigma, t, K, L) - function3(1, -1, St, div, M, r, sigma, t, K, L) + function4(1, -1, St, div, M, r, sigma, t, K, L)
    End If
ElseIf St > L Then
    CUIPRICE = 0
End If
End Function
Function mu(r As Double, div As Double, sigma As Double) As Double
mu = r - div - 0.5 * WorksheetFunction.Power(sigma, 2)
End Function
Function eps(sigma As Double) As Double
eps = (mu(r, div, sigma) / WorksheetFunction.Power(sigma, 2)) + 1
End Function
Function x(St As Double, t As Double, M As Double, K As Double) As Double
x = (WorksheetFunction.Ln(St / K) / (sigma * WorksheetFunction.Power(M - t, 0.5))) + eps(sigma) * sigma * WorksheetFunction.Power((M - t), 0.5)
End Function
Function x1(St As Double, t As Double, M As Double, L As Double) As Double
x1 = (WorksheetFunction.Ln(St / L) / (sigma * WorksheetFunction.Power(M - t, 0.5))) + eps(sigma) * sigma * WorksheetFunction.Power((M - t), 0.5)
End Function
Function y(St As Double, t As Double, M As Double, L As Double) As Double
y = (WorksheetFunction.Ln(WorksheetFunction.Power(L, 2) / (St * K)) / (sigma * WorksheetFunction.Power(M - t, 0.5))) + eps(sigma) * sigma * WorksheetFunction.Power(M, 0.5)
End Function
Function y1(St As Double, t As Double, M As Double, L As Double) As Double
y1 = (WorksheetFunction.Ln(L / St) / (sigma * WorksheetFunction.Power(M - t, 0.5))) + eps(sigma) * sigma * WorksheetFunction.Power(M, 0.5)
End Function
Function function1(fi As Double, St As Double, div As Double, M As Double, r As Double, sigma As Double, t As Double, K As Double) As Double
function1 = fi * St * Exp(-div * (M - t)) * WorksheetFunction.Norm_Dist(fi * x(St, t, M, K), 0, 1, True) - fi * K * Exp(r * (M - t)) * WorksheetFunction.Norm_Dist(fi * x(St, t, M, K) - fi * sigma * WorksheetFunction.Power((M - t), 0.5), 0, 1, True)
End Function
Function function2(fi As Double, St As Double, div As Double, M As Double, r As Double, sigma As Double, t As Double, K As Double, L As Double) As Double
function2 = fi * St * Exp(-div * (M - t)) * WorksheetFunction.Norm_Dist(fi * x1(St, t, M, L), 0, 1, True) - fi * K * Exp(r * (M - t)) * WorksheetFunction.Norm_Dist(fi * x1(St, t, M, L) - fi * sigma * WorksheetFunction.Power((M - t), 0.5), 0, 1, True)
End Function
Function function3(fi As Double, nu As Double, St As Double, div As Double, M As Double, r As Double, sigma As Double, t As Double, K As Double, L As Double) As Double
function3 = fi * St * Exp(-div * (M - t)) * WorksheetFunction.Power((L / St), 2 * eps(sigma)) * WorksheetFunction.Norm_Dist(nu * y(St, t, M, L), 0, 1, True) - fi * K * Exp(r * (M - t)) * WorksheetFunction.Power((L / St), 2 * (eps(sigma) - 1)) * WorksheetFunction.Norm_Dist(nu * y(St, t, M, L) - nu * sigma * WorksheetFunction.Power((M - t), 0.5), 0, 1, True)
End Function
Function function4(fi As Double, nu As Double, St As Double, div As Double, M As Double, r As Double, sigma As Double, t As Double, K As Double, L As Double) As Double
function4 = fi * St * Exp(-div * (M - t)) * WorksheetFunction.Power((L / St), 2 * eps(sigma)) * WorksheetFunction.Norm_Dist(nu * y1(St, t, M, L), 0, 1, True) - fi * K * Exp(r * (M - t)) * WorksheetFunction.Power((L / St), 2 * (eps(sigma) - 1)) * WorksheetFunction.Norm_Dist(nu * y1(St, t, M, L) - nu * sigma * WorksheetFunction.Power((M - t), 0.5), 0, 1, True)
End Function
ob
Rechercher des sujets similaires à "pricing options barrieres matching"