Dans la même veine que pour le modèle binomial, l'utilisation de VBA pour programmer ce
modèle trinomial et obtenir facilement un résultat.
I - Le code
Public Function TT(AmeEurFlag As String, CallPutFlag As String, S As Double, X As Double, T As Double, r As Double, b As Double, v As Double, n As Integer) As Variant
Dim OptionValue() As Double
ReDim OptionValue(0 To n * 2 + 1)
Dim ReturnValue(3) As Double
Dim dt As Double, u As Double, d As Double
Dim pu As Double, pd As Double, pm As Double, Df As Double
Dim i As Long, j As Long, z As Integer
If CallPutFlag = "c" Then
z = 1
ElseIf CallPutFlag = "p" Then
z = -1
End If
dt = T / n
u = Exp(v * Sqr(2 * dt))
d = Exp(-v * Sqr(2 * dt))
pu = ((Exp(b * dt / 2) - Exp(-v * Sqr(dt / 2))) / (Exp(v * Sqr(dt / 2)) - Exp(-v * Sqr(dt / 2)))) ^ 2
pd = ((Exp(v * Sqr(dt / 2)) - Exp(b * dt / 2)) / (Exp(v * Sqr(dt / 2)) - Exp(-v * Sqr(dt / 2)))) ^ 2
pm = 1 - pu - pd
Df = Exp(-r * dt)
For i = 0 To (2 * n)
OptionValue(i) = Application.Max(0, z * (S * u ^ Application.Max(i - n, 0) * d ^ Application.Max(n - i, 0) - X))
Next
For j = n - 1 To 0 Step -1
For i = 0 To (j * 2)
OptionValue(i) = (pu * OptionValue(i + 2) _
+ pm * OptionValue(i + 1) + pd * OptionValue(i)) * Df
If AmeEurFlag = "a" Then
OptionValue(i) = Application.Max(z * (S * u ^ Application.Max(i - j, 0) _
* d ^ Application.Max(j - i, 0) - X), OptionValue(i))
End If
Next
Next
TT = OptionValue(0)
End Function
II - Utilisation
Pour calculer un call sur une valeur sans dividende par exemple
Il suffit d'ouvrir une feuille Excel vierge, et d'entrer dans une cellule :
"=TT(
"a";"c";100;110;1;0.05;0.05;0.30;200)"
pour obtenir la valeur
- d'une option de type américain (
"a")
- d'un call (
"c")
- pour un spot égale à
100
- de strike
110
- ayant une maturité d'
1 an
- avec un
taux d'intérêt de
0.05 (5%)
- avec un portage de
0.05 (cela correspond au taux d'intérêt - le taux de dividende, soit 0.05 - 0)
- avec une
volatilité de
0.3 (30%)
- pour
200 périodes
La cellule donne alors le résultat de 10.02051
Pour calculer un put de type européen sur une valeur avec dividende de 0.03% par exemple
Il suffit d'ouvrir une feuille Excel vierge, et d'entrer dans une cellule :
"=TT(
"e";"p";100;110;1;0.05;0.02;0.30;250)"
pour obtenir la valeur
- une option de type européen(
"e")
- d'un put (
"p")
- pour un spot égale à
100
- de strike
110
- ayant une maturité d'
1 an
- avec un
taux d'intérêt de
0.05 (5%)
- avec un portage de
0.02 (cela correspond au taux d'intérêt - le taux de dividende, soit 0.05 - 0.03)
- avec une
volatilité de
0.3 (30%)
- pour
250 périodes
La cellule donne alors le résultat de 16.1981
La suite :
Black & Scholes : Une Première Approche
Précédent :
Modèle Trinomial : American Style - Version Détaillée - On Price !
MODELE D'EVALUATION D'OPTIONS - INDEX
MODELE D'EVALUATION D'OPTIONS - CHAPITRE I
MODELE D'EVALUATION D'OPTIONS - CHAPITRE II
MODELE D'EVALUATION D'OPTIONS - CHAPITRE III Strategies Options