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

Y compris Power BI, Power Query et toute autre question en lien avec Excel
c
curveater
Jeune membre
Jeune membre
Messages : 37
Inscrit le : 18 décembre 2018
Version d'Excel : Office 2013

Message par curveater » 22 décembre 2018, 12:06

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
Pricer d'options vanilles.xlsm
(60.7 Kio) Téléchargé 9 fois
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.JPG
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message
  • Pricing
    par So91 » 5 octobre 2017, 11:22 » dans Excel - VBA
    5 Réponses
    165 Vues
    Dernier message par So91
    5 octobre 2017, 15:06
  • matching
    par grobib » 10 septembre 2016, 14:33 » dans Excel - VBA
    1 Réponses
    85 Vues
    Dernier message par patrick1957
    11 septembre 2016, 19:57
  • Matching-RechercheV
    par Davbis » 8 juillet 2019, 11:37 » dans Excel - VBA
    9 Réponses
    71 Vues
    Dernier message par Davbis
    8 juillet 2019, 14:18
  • Matching contenu cellule
    par Ch@p1Ch@p0 » 31 mars 2016, 11:22 » dans Excel - VBA
    2 Réponses
    140 Vues
    Dernier message par Ch@p1Ch@p0
    31 mars 2016, 11:39
  • Matching de deux bases de données
    par didoudd » 4 février 2014, 17:12 » dans Excel - VBA
    2 Réponses
    636 Vues
    Dernier message par didoudd
    4 février 2014, 18:16
  • code vba qui fait le matching
    par malina » 28 août 2015, 16:00 » dans Excel - VBA
    1 Réponses
    173 Vues
    Dernier message par Yvouille
    28 août 2015, 18:42