samedi 25 avril 2009

Le modèle CRR: Cox, Ross et Rubinstein

Le modèle CRR, du nom de ses auteurs : Cox, Ross et Rubinstein, (ou le modèle binomial) fournit une méthode numérique pour l'évaluation des options. Il a été proposé pour la première fois en 1979. L'évaluation de l'option se fait par l’application de probabilité risque neutre, pour laquelle, les prix actualisés sont des processus aléatoires et dynamiques. Le modèle est couramment utilisé, car il permet la manipulation d’une variété de conditions que d’autres modèles auraient de la difficulté à appliquer. Sa popularité émane du fait que le modèle CRR modélise l’instrument sous-jacent dans le temps. Le modèle peut donc s’avérer efficace dans l’évaluation d’option américaine ou bermudienne. Sa popularité relève également de sa simplicité mathématique.

Quoique moins rapide que la Black-Scholes, le modèle est considéré plus exact, particulièrement pour les options étalées sur de longues échéances et les options sur titres portant dividendes.

Le modèle binomial opère en temps discret pour évaluer l’évolution de la variable clé du sous-jacent par l’utilisation d’un arbre binomial. Chaque nœud dans l’arbre représente un prix possible pour le sous-jacent à un point particulier dans le temps. L’évolution du prix est à la base de l’évaluation de l’option. Le processus d’évaluation est itératif; en commençant par le dernier nœud, on descend l’arbre jusqu’au premier nœud qui constitue la date d’évaluation et dont la valeur extirpée est celle de l’option.

L’arbre binomial

L’arbre est produit en travaillant de la date d’évaluation à la date d’expiration. À chaque étape, on présume que le sous-jacent va soit bouger vers le haut (up) ou le bas (down) d’un facteur spécifique (u ou d). Par définition nous obtenons u³1 et 0

Su= S×u ou Sd= S×d.

Les facteurs up et down sont calculés en utilisant la volatilité du sous-jacent, s, et la durée d’une branche de l’arbre, t, mesurée en année.

Dans le modèle de CRR, lorsque le sous-jacent subit une hausse, suivi d’une baisse (u,d), le prix sera le même que s’il avait d’abord connu la baisse et ensuite la hausse (d,u), les deux se fusionnent ou se combinent. Cette propriété réduit significativement le nombre de nœuds dans l’arbre et donc accélère le calcul du prix de l’option.

Calcul selon la méthode CRR

Nous avons au départ les informations suivantes pour calculer le put d’une option sans dividendes:

1. Le prix Spot (S): 91$
2. Le prix d’exercice (X) : 101$
3. Le taux sans risque (rf) : 6%
4. L’échéance (T) : 6 mois
5. La volatilité (sigma) : 30%
6. Le nombre d’essais (n) : 100

Voici maintenant le résultat obtenu



Nous avons programmé dans VBA une fonction qui nous permet d’utiliser la méthode CRR à son plein potentiel. Tout d’abord, à la première ligne l’on choisi le type d’option. L’on note p s’il s’agit d’un put (option de vente) et l’on note c s’il s’agit d’un call (option d’achat).

À la seconde ligne, l’on inscrit l’échéance de l’option. On note un e s’il s’agit d’une option de type européen et l’on note a s’il s’agit d’une option de type américaine.


Finalement, nous insérons chacune des données relatives à l’évaluation.


Pour trouver la valeur finale du put européen sans dividendes, l’on insère dans Excel à la cellule H12 cette formule :


La programmation dans VBA fut la suivante :
________________________________________________________________________
Function CRR_Put(CallPutFlag, S, X, T, rf, sigma, ExerciseType, n) As Double

S0 = S
If CallPutFlag = "c" Then
CallPutFlag = 1
Else
CallPutFlag = -1
End If
dt = T / n
u = Exp(sigma * dt ^ 0.5)
d = Exp(-sigma * dt ^ 0.5)
p1 = (u - Exp(rf * dt)) / (u - d)
p2 = 1 - p1
ReDim Smat(1 To n + 1, 1 To n + 1)
Smat(1, 1) = S0
For i = 1 To UBound(Smat, 1) - 1
Smat(1, i + 1) = Smat(1, i) * Exp(sigma * dt ^ 0.5)
For j = 2 To i + 1
Smat(j, i + 1) = Smat(j - 1, i) * Exp(-sigma * dt ^ 0.5)
Next j
Next i
ReDim Cmat(1 To n + 1, 1 To n + 1)
For i = 1 To n + 1
Cmat(i, n + 1) = Application.Max(CallPutFlag * (Smat(i, n + 1) - X), 0)
Next i
For i = UBound(Smat, 2) - 1 To 1 Step -1
For j = 1 To i
present_value = Exp(-rf * dt) * (p2 * Cmat(j, i + 1) + p1 * Cmat(j + 1, i + 1))
immediate_val = CallPutFlag * (Smat(j, i) - X)
If ExerciseType = "a" Then
Cmat(j, i) = Application.Max(present_value, immediate_val)
Else
Cmat(j, i) = Application.Max(present_value, 0)
End If
Next j
Next i
CRR_Put = Cmat(1, 1)
End Function
______________________________________________________________________________

1 commentaire: