Vous êtes sur la page 1sur 20

FINANCE & RISK MANAGEMENT

TRAVAIL VBA BLACK & SCHOLES


Pierre Landolt
Thierry Lacte

TABLE DES MATIRES


1.

La formule de Black and Scholes

3-4

2.

Les Grecques

4-7

2.1

Le Delta

4-5

2.2

Le Gamma

2.3

Le Thta

2.4

Le Vga

2.5

Le Rh

3.

Black and Scholes sur VBA

4.

Sources

9-13
14

Annexe 1 : Code Black & Scholes


Annexe 2 : Code VBA

1. La formule de Black and Scholes


Au dbut des annes 1970, Fischer Black, Myron Scholes et Robert Merton ont fait une
dcouverte capitale sur le prix des options en dveloppant le modle connu aujourdhui
sous le nom du modle de Black and Scholes (Black et Scholes, 1973). Ce modle a eu
une influence considrable sur lingnierie financire. En 1997, limportance de leur
modle a t reconnue quand Myron Scholes et Robert Merton ont reu le prix Nobel
deconomie. Pour la petite histoire Fischer Black ne la pas reu parce quil est dcd
prcdemment (en 1995). Le modle de rfrence est le modle de Black and Scholes
(1973). Pour obtenir le prix de loption, les auteurs font les hypothses suivantes quils
appellent les conditions idales :
a)
b)
c)
d)
e)
f)

Le taux sans risque R, est constant quelque soit la maturit.


Le march fonctionne en continu.
Il ny a pas de dividende pendant la dure de loption.
Loption est europenne , elle ne peut donc tre exerce qu son chance.
Le march est dit sans friction. Il ny a ni impts, ni frais de transaction. De plus
chaque titre est parfaitement divisible.
La vente dcouvert de titres est autorise.

La formule de Black-Scholes permet de calculer la valeur thorique d'une option partir


des cinq donnes suivantes :
la valeur actuelle de l'action sous-jacente
le temps qui reste l'option avant son chance (exprim en annes)
le prix d'exercice fix par l'option
le taux d'intrt sans risque
la volatilit du prix de laction
Le prix thorique d'une option d'achat (call), qui donne le droit mais pas l'obligation
d'acheter l'actif S la valeur K la date T, est caractris par son payoff :

Le prix de l'option est donn par l'esprance sous probabilit risque neutre du payoff
terminal actualis
, soit la formule de Black-Scholes :

Le prix thorique d'une option de vente (put), de payoff :


est donn par :

Avec comme donnes :

la fonction de rpartition de la loi normale centre rduite

2. Les Grecques
Une institution financire qui commercialise des options ou dautres produits drivs
un client en dehors du march financier se trouve face un problme pour grer ce
risque. Si la mme option est cote sur un march, il peut aisment neutraliser son
risque. Il vend loption son client et achte la mme sur le march, il ralise juste une
opration de courtage. Mais un contrat peut tre vendu pour rpondre un besoin du
client sans quil y ait forcment de contrat standard cot sur un march qui lui
corresponde. Le risque support par linstitution financire devient plus difficile de grer.
Par une stratgie de couverture qui utilise le sous-jacent, linstitution financire peut
neutraliser son risque.
La sensibilit de loption peut tre mesure par cinq paramtres : le Delta mesure la
sensibilit de la valeur dune option par rapport aux variations du prix du sous-jacent, le
Gamma mesure la sensibilit de loption aux variations du Delta, le Thta mesure la
sensibilit dune option au temps restant courir jusqu lchance, le Vega mesure la
sensibilit de loption par rapport la volatilit enfin le Rh mesure la sensibilit dune
option au taux dintrt court terme.

2.1 Le Delta
Il reprsente la variation de loption lorsque le sous-jacent varie dune unit montaire. Il
fournit une information sur la variabilit de loption mais aussi sur la probabilit dexercer
loption. Enfin, il nous donne le nombre dactions utiliser pour couvrir une option. Il
suffit de multiplier ce Delta par la quotit pour obtenir la position globale.
4

Pour loption dachat :

Pour loption de vente :

2.2 Le Gamma
Le Gamma reprsente la variation du delta dune option dachat ou dune option de
vente lorsque lactif sous-jacent varie dune unit montaire.
Il est identique pour loption dachat et loption de vente :

La connaissance du Gamma est trs importante dans une stratgie delta neutre. Si le
Gamma est lev, les stratgies de rquilibrage seront nombreuses car il y aura une
forte instabilit de la couverture. Idalement, la position globale devra avoir un delta nul
mais galement un Gamma proche de 0.

2.3 Le Thta
Il donne la sensibilit de loption par rapport au temps. La valeur dune option diminue
avec le temps. Le rsultat est toujours ngatif.
Pour loption dachat :

Pour loption de vente :

2.4 Le Vga
Il mesure la sensibilit du prix de loption par rapport aux variations de la volatilit du
sous-jacent.
Pour loption dachat et de vente :

La valeur de loption dachat est une fonction croissante de la volatilit du sous-jacent.


En effet, une volatilit forte augmente les chances dexercer loption et augmente donc
son prix.
Dans le cas du modle Black and Scholes cette quantit prsente peu dintrt car la
volatilit est suppose constante.

2.5 Le Rh
Il mesure la sensibilit du prix de loption par rapport au taux dintrt continu. Elle
permet de mesure les risques des options lis lvolution des taux dintrts court
terme. Ce paramtre est peu utilis car les taux sont normalement constants et varient
peu durant la vie de loption.
Pour loption dachat :

Pour loption de vente :

3. Black and Scholes sur VBA


Dans le but de proposer un outil facile dutilisation, nous avons opt pour une interface
claire et visuelle. Dans cette optique nous avons mis les variables pouvant tre
modifies pas lutilisateur sur une seule UserForm :

Cette UserForm est accessible partir du bouton :

Afin de faire apparatre la UserForm au moment du clic sur le bouton nous avons
introduit le codage suivant :

Black_and_Scholes tant le nom de la UserForm et le Show permet de lafficher lors


du clic.

Nous allons maintenant effectuer une dmonstration de lutilisation du programme cr


grce lexemple que nous avions vu en cours. Commenons par entrer les diffrentes
valeurs dans les cases (Current stock price / Option striking price / Free interest rate /
Time until option expiration / Volatility) prvues cet effet. Il convient de prciser que
seul des valeurs numriques peuvent tre entres dans ces cases et que si tel nest pas
le cas le message derreur suivant apparat :

Le titre correspond lentre o


lerreur sest produite

Comme vous pouvez le constater il y a un bouton nomm Days ct de lentre


Time until option expiration :

Ce bouton permet daccder une autre UserForm nomme Days qui peut tre
utile afin de connatre le nombre de jours restant jusqu lexpiration de loption (si
lutilisateur connat dj cette information il peut sans autre la mettre directement dans le
champ prvu cet effet). Pour cela il suffit de rentrer la date dachat et la date
dchance de loption puis de cliquer sur le bouton Execute .

Le nombre de jours reporter dans la case est affich dans la cellule H9 (cellule au fond
rouge) tandis que la date de dbut saffiche en cellule F9 et la date dexpiration en G9 :

Cela est possible grce au code suivant :

Une fois que toutes les valeurs ont t entres il suffit dappuyer sur le bouton
Execute de la UserForm Black and Scholes pour quapparaissent les diffrentes
valeurs (d1 / d2 / N(d1) / N(d2) / N(-d1) / N(-d2) / N(d1)) relatives au calcul du call et du
put dune option.

10

Comme vous pouvez le constater la valeur du Time until option expiration ne


correspond pas au nombre de jours entrs dans la case correspondante, car pour le
calcul il faut que cette valeur soit exprime en annes. Le code permettant de raliser
cette opration se trouve en annexe 1.
Les diffrentes cases cocher sur la UserForm Black and Scholes permettent
dobtenir des informations sur les Grecs (Delta / Gamma / Vga / Thta / Rh).

Pour cela il suffit de cocher la case correspondant linformation souhaite pour que
cette dernire apparaisse sur la feuille Excel.

11

Pour le calcul du Thta il convient de prciser que nous avons fix un taux dintrt sans
risque 4%.

Comme vous pouvez le constater il y a des petits boutons dinformation ct des


diffrents grecs :

Ces boutons vous permettent daccder un message qui vous donne une brve
description de lutilit de chaque grec.

Pour les diffrents codes relatifs aux grecs veuillez vous rfrer lannexe 1.
Une fois que vous avez fini il vous suffit de cliquer sur le bouton Close de la
UserForm Balck and Scholes . Un message vous demandera si vous voulez
rellement quitter :

12

Une fois que vous aurez cliqu sur oui il ne restera plus que la feuille Excel avec toutes
les diffrentes informations :

Le bouton Delete vous permet de rinitialiser la feuille Excel (mais vous ntes pas
oblig de lutiliser si vous voulez faire un calcul avec de nouvelles donnes, pour cela il
vous suffit dappuyer nouveau sur le bouton Black & Scholes ). Le code relatif ce
bouton se trouve sur lannexe 2.

13

4. Sources

Le Quick Guide Dveloppeur Alain Darseuil Campus Press

Coder-en-stock - Alain Darseuil Campus Press

Votre premier programme Visual Basic Rmy Lanzer CEM

http://www.vbnumericalmethods.com/

www.riskglossary.com

http://fr.wikipedia.org

http://www.euria.infini.fr/

http://eprints.cdlr.strath.ac.uk/57/

http://cbernand.free.fr/bourse/option.html

http://adsabs.harvard.edu

14

Annexe 1 : Code Black & Scholes


Private Sub form_load()
End Sub
Private Sub BT_calcul_Click()
Range("c3").Select
ActiveCell.FormulaR1C1 = Val(s)
If IsNumeric(s) = False Then
variable = MsgBox("Wrong input" & vbLf & "Numerical only" & vbLf & "The value 1
was attributed by default", vbExclamation + vbOKOnly, "Current stock price")
s.SetFocus
s.Text = "1"
End If
Range("c4").Select
ActiveCell.FormulaR1C1 = Val(k)
If IsNumeric(k) = False Then
variable = MsgBox("Wrong input" & vbLf & "Numerical only" & vbLf & "The value 1
was attributed by default", vbExclamation + vbOKOnly, "Option striking price")
k.SetFocus
k.Text = "1"
End If
Range("c5").Select
ActiveCell.FormulaR1C1 = (Val(r) / 100)
If IsNumeric(r) = False Then
variable = MsgBox("Wrong input" & vbLf & "Numerical only" & vbLf & "The value 1
was attributed by default", vbExclamation + vbOKOnly, "Free interest rate")
r.SetFocus
r.Text = "1"
End If
Range("c7").Select
ActiveCell.FormulaR1C1 = (Val(v) / 100)
If IsNumeric(v) = False Then
variable = MsgBox("Wrong input" & vbLf & "Numerical only" & vbLf & "The value 1
was attributed by default", vbExclamation + vbOKOnly, "Volatility")
v.SetFocus
v.Text = "1"

15

End If
Range("c6").Select
ActiveCell.FormulaR1C1 = (Val(t) / 360)
If IsNumeric(t) = False Then
variable = MsgBox("Wrong input" & vbLf & "Numerical only" & vbLf & "The value 1
was attributed by default", vbExclamation + vbOKOnly, "Time until option expiration")
t.SetFocus
t.Text = "1"
End If
Range("B9").Select
ActiveCell.FormulaR1C1 = "d1"
Range("C9").Select
ActiveCell.FormulaR1C1 = (Log((Val(s)) / (Val(k))) + ((Val(r) / 100) + (1 / 2) * (Val(v) /
100) * (Val(v) / 100)) * (Val(t) / 360)) / ((Val(v) / 100) * ((Val(t) / 360) ^ (1 / 2)))
'"=(ln(s/k)+(r+1/2*v^2)*t)/(v*t^1/2)"
Range("B10").Select
ActiveCell.FormulaR1C1 = "d2"
Range("C10").Select
ActiveCell.FormulaR1C1 = (Log((Val(s)) / (Val(k))) + ((Val(r) / 100) + (1 / 2) * (Val(v) /
100) * (Val(v) / 100)) * (Val(t) / 360)) / ((Val(v) / 100) * ((Val(t) / 360) ^ (1 / 2))) - (Val(v) /
100) * (Val(t) / 360) ^ (1 / 2)
'd1-v*t^1/2
Range("b12").Select
ActiveCell.FormulaR1C1 = "N(d1)"
Range("c12").Select
ActiveCell.FormulaR1C1 = "=NORMDIST(R[-3]C,0,1,TRUE)"
Range("b13").Select
ActiveCell.FormulaR1C1 = "N(d2)"
Range("c13").Select
ActiveCell.FormulaR1C1 = "=NORMDIST(R[-3]C,0,1,TRUE)"
Range("d12").Select
ActiveCell.FormulaR1C1 = "N(-d1)"
Range("e12").Select
ActiveCell.FormulaR1C1 = "=NORMDIST(-R[-3]C[-2],0,1,TRUE)"
Range("d13").Select
ActiveCell.FormulaR1C1 = "N(-d2)"
Range("e13").Select
ActiveCell.FormulaR1C1 = "=NORMDIST(-R[-3]C[-2],0,1,TRUE)"
Range("b15").Select
ActiveCell.FormulaR1C1 = "N'(d1)"
Range("c15").Select

16

ActiveCell.FormulaR1C1 = "=(1/((2*PI())^(1/2))*EXP((-R[-6]C)^2/2))"
Range("b17").Select
ActiveCell.FormulaR1C1 = "Call"
Range("c17").Select
ActiveCell.FormulaR1C1 = "=R[-14]C*R[-5]C-R[-13]C*EXP(-R[-12]C*R[-11]C)*R[-4]C"
's*N(d1)-k*exp(-r*t)*N(d2)
'"=8570*R[-3]C[-1]+9050*R[-2]C[-1]"
Range("b18").Select
ActiveCell.FormulaR1C1 = "Put"
Range("c18").Select
ActiveCell.FormulaR1C1 = "=R[-14]C*EXP(-R[-13]C*R[-12]C)*R[-5]C[2]-R[-15]C*R[6]C[2]"
'k*exp(-r*t)*N(-d2)-S*N(-d1)
Range("c3").Select
End Sub
Private Sub BT_delta_Click()
Range("c21").Select
ActiveCell.FormulaR1C1 = "=R[-9]C"
Range("d21").Select
ActiveCell.FormulaR1C1 = "=R[-9]C[-1]-1"
End Sub
Private Sub BT_fermer_Click()
If MsgBox("Leave the sheet?", vbQuestion + vbYesNo, "Attention") = vbYes Then
End
Else
Cancel = True
End If
End Sub
Private Sub BT_gamma_Click()
Const pi As Single = 3.14159265358979
y = (Log((Val(s)) / (Val(k))) + ((Val(r)) + (1 / 2) * (Val(v)) * (Val(v))) * (Val(t))) / ((Val(v))
* ((Val(t)) ^ (1 / 2)))
x = (1 / ((2 * pi) ^ (1 / 2)) * Exp(-y ^ 2 / 2))
Range("c22").Select
ActiveCell.FormulaR1C1 = "=R[-7]C/(R[-15]C*R[-19]C*(R[-16]C^(1/2)))"
'N'(d1)/(v*s*t^1/2)
Range("d22").Select
ActiveCell.FormulaR1C1 = "=RC[-1]"
End Sub

17

Private Sub BT_rho_Click()


Range("c25").Select
ActiveCell.FormulaR1C1 = "=R[-21]C*R[-19]C*EXP(-R[-20]C*R[-19]C)*R[-12]C"
Range("d25").Select
ActiveCell.FormulaR1C1 = "=-R[-21]C[-1]*R[-19]C[-1]*EXP(-R[-20]C[-1]*R[-19]C[1])*R[-12]C[1]"
End Sub
Private Sub BT_theta_Click()
Range("c24").Select
ActiveCell.FormulaR1C1 = _
"=(-(R[-21]C*R[-9]C*R[-17]C*EXP(-RC[5]*R[-18]C))/(2*(R[-18]C^(1/2))))+(RC[5]*R[21]C*R[-12]C*EXP(-RC[5]*R[-18]C)-(R[-19]C*R[-20]C*EXP(-R[-19]C*R[-18]C)*R[11]C))"
Range("d24").Select
ActiveCell.FormulaR1C1 = "=RC[-1]"
End Sub
Private Sub BT_vega_Click()
Range("c23").Select
ActiveCell.FormulaR1C1 = "=R[-20]C*R[-17]C^(1/2)*R[-8]C"
Range("d23").Select
ActiveCell.FormulaR1C1 = "=RC[-1]"
End Sub

Private Sub CommandButton1_Click()


Days.Show
End Sub
Private Sub Info_Delta_Click()
variable = MsgBox("The DELTA measures sensitivity to price." & vbLf & "DELTA of an
instrument is the mathematical derivate of the value function with respect to the
underlying price.", vbInformation + vbOKOnly, "DELTA")
End Sub
Private Sub Info_gamma_Click()
variable = MsgBox("The GAMMA measures second order sensitivity to price." & vbLf &
"GAMMA is the second derivative of the value function with respect to the underlying
price.", vbInformation + vbOKOnly, "GAMMA")
End Sub

18

Private Sub Info_Rho_Click()


variable = MsgBox("The RHO measures sensitivity to the applicable interest rate." &
vbLf & "RHO is the derivate of the option value with respect to the risk free rate",
vbInformation + vbOKOnly, "RHO")
End Sub
Private Sub Info_Theta_Click()
variable = MsgBox("The THETA measures sensitivity to the passage of time." & vbLf &
"THETA is minus the derivate of the option value with respect to the amount of time to
expiry of the option", vbInformation + vbOKOnly, "THETA")
End Sub
Private Sub Info_Vega_Click()
variable = MsgBox("The VEGA measures sensitivity to volatility." & vbLf & "VEGA is the
derivate of the option value with the respect to the volatility", vbInformation + vbOKOnly,
"VEGA")
End Sub

19

Annexe 2 : Code VBA


Private Sub CommandButton2_Click()
If MsgBox("Erase?", vbQuestion + vbYesNo, "Attention") = vbYes Then
Range("C3:C7").Select
Selection.ClearContents
Range("C9:C10").Select
Selection.ClearContents
Range("C12:C13").Select
Selection.ClearContents
Range("E12:E13").Select
Selection.ClearContents
Range("C15").Select
Selection.ClearContents
Range("C17:C18").Select
Selection.ClearContents
Range("C21:D25").Select
Selection.ClearContents
Range("F9").Select
Selection.ClearContents
Range("G9").Select
Selection.ClearContents
Range("H9").Select
Selection.ClearContents
Range("C3").Select
End
Else
Cancel = True
End If
End Sub

20