SlideShare ist ein Scribd-Unternehmen logo
1 von 15
Downloaden Sie, um offline zu lesen
Résolution numérique de l’équation de
Black-Scholes en Python par différence
finie
SIDIBE Ali Broma 1
Financial Market and Risk Management.
Juillet, 2019
1
bromasidibe@gmail.com
Contents
1 Introduction 2
2 Méthodes des différences finies 2
2.1 Approximation des dérivées . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.1.1 Dérivée première . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.1.2 Dérivée seconde . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2 Types de schéma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2.1 Euler explicite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2.2 Euler implicite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2.3 Crank Nicolson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.3 Propriétés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.3.1 Consistance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.3.2 Convergence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3.3 Stabilité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.4 Choix du schéma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3 Discrétisation 8
3.1 Equation différentielle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.2 Methode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.3 Condition aux bords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
4 Implémentation en Python 10
4.1 Schéma explicite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.1.1 Equation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.1.2 Stabilité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.1.3 Implémentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1
1 Introduction
D’une manière générale, la résolution analytique fournit traditionnellement une solution
exacte aux modèles mathématiques. Souvent certains modèles dûs à leur complexité
peuvent ne pas avoir des solutions analytiques. Aussi la précision peut ne pas être un
critère fondamentale dans certains cas. Il s’avère alors utile de procéder par une solu-
tion approchées du problème d’où l’intérêt des méthodes numériques. Les méthodes des
différences finies sont un moyen d’obtenir des solutions numériques. C’est une technique
courante de recherche de solutions approchées d’équations aux dérivées partielles qui con-
siste à résoudre un système de relations (schéma numérique) liant les valeurs des fonctions
inconnues en certains points suffisamment proches les uns des autres.
Dans ce présent travail, nous allons appliquer la méthode numérique pour l’équation dif-
férentielle vérifiée par le prix d’une option en finance, communément appelé l’équation
de Black-Scholes. La formule de Black-Scholes lie le prix d’une option à ses caractéris-
tique par une équation différentielle partielle non linéaire. Elle s’est imposée comme une
référence en termes de valorisation des options.
L’intérêt de ce présent travail est de résoudre cette équation différentielle par la méthode
des différences finies (bien que la solution analytique existe) et l’implémenter en python.
Pour cela, nous commencerons par présenter la méthode des différences finies dans un
premier temps. Ensuite dans la deuxième partie, nous discrétiserons l’équation de black-
scholes à l’aide des différentes schéma et pour finir l’implémentation en python en troisième
partie.
2 Méthodes des différences finies
2.1 Approximation des dérivées
Nous allons appliquer la formule de Taylor pour donner une approximation des dérivés
d’une fonction en un point x0. En mathématiques, plus précisément en analyse, le
théorème de Taylor (ou formule de Taylor), du nom du mathématicien anglais Brook
Taylor montre qu’une fonction suffisamment dérivable au voisinage d’un point peut être
approchée par une fonction polynomiale dont les coefficients dépendent uniquement des
dérivées de la fonction en ce point.
Théoreme 1. Soient I un intervalle de R, x0 un point de I et f : I −→ R une fonction
de classe Cn
sur I. Alors pour tout h ∈ R tel que x0 + h ∈ I, on a
f(x0 + h) = f(x0) + hf (x0) +
h2
2!
f .... + hn
(h)
=
n
i=0
hi
i!
f(i)
(x0) + hn
(h)
(2.1.1)
Resolution numérique de l’equation de Black Schole en Python 2
2.1.1 Dérivée première
Par le développement de Taylor à l’ordre 1 de f au voisinage de x0 nous avons f(x0 +h) =
f(x0) + hf (x0) + h (h) Il en résulte immédiatement que:
f (x0) =
f(x0 + h) − f(x0)
h
+ (h) (2.1.2)
2.1.2 Dérivée seconde
De même lorsqu’on fait le développement à l’ordre 2, nous obtenons f(x0 + h) = f(x0) +
hf (x0) + h2
2
f (x0) + h2
(h2
) lorsque nous faisons le développement limité au point xo + h
et f(x0 −h) = f(x0)−hf (x0)+ h2
2
f (x0)+h2
(h2
) lorsque nous faisons le développement
limité au point xo − h En faisant la somme de chaque terme de ces deux égalités, on
a
f (x0) =
f(x0 + h) − 2f(x0) + f(x0 − h)
2h
+ (h2
) (2.1.3)
2.2 Types de schéma
On considère un problème à deux dimensions:spatiale et temps, de la forme
∂f
∂t
= F f, t, x,
∂f
∂x
,
∂2
f
∂x2
Nous souhaitons évaluer les valeurs au points (tn, xj) avec le pas spatiale δx et δt le pas
en temps. On note fn,j = f(nδt, jδx)
2.2.1 Euler explicite
Le schéma explicite est la plus facile et la plus rapide des types de méthodes de différences
finie. Elle calcule le prix des options pour chaque instant t à partir des pas instants
précédents. Dans la méthode d’Euler explicite, la valeur approchée à l’instant tn+1 est
obtenue à partir de la précédente c’est à dire l’instant tn déjà connu.
fn+1,j − fn,j
δt
= Fn
j f, t, x,
∂f
∂x
,
∂2
f
∂x2
Formellement, elle s’écrit comme une combinaison linéaire de la forme suivante:
fn+1,j = afn,j+1 + bfn,j−1 + cfn,j
Une condition de la stabilité est que a > 0, b > 0 et c > 0. Afin que cette méthodes
converge, les valeurs à l’instant tn+1 doivent être supérieurs aux instants tn
fn,j
fn+1,j
< 1
Resolution numérique de l’equation de Black Schole en Python 3
Figure 1: Différent types de schéma
2.2.2 Euler implicite
fn+1,j − fn,j
δt
= Fn+1
j f, t, x,
∂f
∂x
,
∂2
f
∂x2
Le schéma implicite réclame un travail numérique supplémentaire par rapport au schéma
explicite. En contrepartie, il n’impose aucune condition sur le choix de a et b et c. Ce
bénéfice est tellement important que l’approximation par schéma de différences finies
implicite est presque toujours préféré à l’approximation par différences finies explicite
dans les cas pratiques.
2.2.3 Crank Nicolson
La méthode de Crank-Nicolson est un algorithme simple permettant de résoudre des
systèmes d’équations aux dérivées partielles. Cette méthode utilise les différences finies
pour approcher une solution du problème : elle est numériquement stable et quadratique
pour le temps. La méthode de Crank-Nicolson s’obtient en faisant la moyenne des deux
Resolution numérique de l’equation de Black Schole en Python 4
égalités précédentes (explicite et implicite) :
fn+1,j − fn,j
δt
=
1
2
Fn+1
i f, t, x,
∂f
∂x
,
∂2
f
∂x2
+ Fn
i f, t, x,
∂f
∂x
,
∂2
f
∂x2
La méthode est considérée comme implicite, car elle nécessite la résolution d’équations
algébriques (correspondant au second membre de la méthode d’Euler régressive). Elle
est inconditionnellement stable, mais nécessite certaines conditions de régularité sur les
équations à résoudre pour que le résultat ait une précision satisfaisante.
2.3 Propriétés
Un certain nombre de notion est nécessaire lors de la résolution d’équations aux dérivées
partielles (EDP) au moyen des méthodes de différences finies. Les trois principales sont
la convergence, la stabilité et la consistance. Ces trois propriétés permettent de relier la
solution exacte des équations continues à la solution exacte des équations discrétisées et à
la solution numérique. Le respect de ces propriétés est nécessaire pour la crédibilité d’un
schéma numérique.
Figure 2: Les propriétés d’un schéma numérique
2.3.1 Consistance
C’est la propriété qui assure que la solution exacte des équations discrétisées tende vers
la solution exacte des équations continues lorsque les pas discrétisations tendent vers
zéro.
Resolution numérique de l’equation de Black Schole en Python 5
Definition 1. Soient A(.t, x) = 0, une équation différentielle, u une solution analytique
de A et F(.) = 0 un schéma discrétisant l’équation A(t, x) = 0 de pas δ Le schéma F(.)
est dit consistant si
lim
δ→0
F(u)) = 0
Autrement dit, si on remplace la discrétisation par la solution exacte, alors l’erreur temps
vers 0.
2.3.2 Convergence
La convergence d’un schéma aux différences finies est une propriété naturelle qui assure
que, pour des valeurs suffisamment petites des pas de discretisation, la solution numérique
calculée sera proche de la solution exacte du problème de départ. C’est la propriété qui
assure que la solution numérique tende vers la (ou une) solution exacte des équations
continues.
Definition 2. Soit A(t, x) = 0 une équation différentielle et F(un
j ) = 0 un schéma dis-
crétisant l’équation A(t, x) = 0 est dit consistant si
lim
dx→0,dt→0
F(u(tj, xn) = 0
si et seulement si u(t, x) est solution.
Autrement dit, si on remplace la discrétisation par la solution exacte, alors l’erreur temps
vers 0.
2.3.3 Stabilité
D’une façon plus général, un problème est dit stable, très sensible ou mal conditionné
si une petite variation des données ou des paramètres entraîne une grande variation des
résultats. Pour un schéma numérique, c’est la propriété qui assure que la différence
entre la solution numérique obtenue et la solution exacte des équations discrétisées est
bornée.
Definition 3. On considère la norme discrète suivante
un
2 =
N
j=1
∆x|un
j |2
1
2
(2.3.1)
Un schéma est dit stable par rapport à cette norme, s’il existe une constante K > 0
indépendante des pas discretisation tel que pour tout n entier positif.
un
< K u0
Resolution numérique de l’equation de Black Schole en Python 6
Figure 3: Stabilité d’un schéma numérique
2.4 Choix du schéma
Le choix d’un schéma numérique pour la résolution d’une équation différentielle doit
idéalement tenir compte de notamment d’une part le respect des propriétés précédentes
d’autres part sur les contraintes techniques (puissances de la machine) et de la complexité
de son implémentation informatique. Le schéma centré bien qu’apparaît comme un juste
milieu entre le schéma explicite et implicite est totalement instable, par cette raison, nous
l’ignorons totalement.
Le schéma explicite est très facile à implémenter de manière informatique mais sa stabilité
impose des choix sur les pas de discretisation. Nous pouvons respecter ces choix et se
lancer tenter.
Le dernier schéma est le schéma implicite, bien que difficile à implémenter il est incondi-
tionnellement stable.
Notre choix sur le schéma implicite se justifie par le fait que nous aimerons avoir une plus
grande liberté sur le choix de nos pas de discretisation.
Resolution numérique de l’equation de Black Schole en Python 7
3 Discrétisation
3.1 Equation différentielle
Soit une option de maturité T, de prix d’exercice K, du taux sans risque r, de volatilité σ
et du sous-jacent St, alors d’après l’équation de Black-Scholes, le prix f d’une telle option
vérifie l’équation différentielle suivantes



∂f(t, St)
∂t
+ rS
∂f(t, St)
∂S
+
1
2
S2
σ2 ∂2
f(t, St)
∂S2
= rf(t, St)
f(T, ST ) = max(ST − K)
(3.1.1)
Nous avons pris une option de type call.
3.2 Methode
Le prix d’une option f (3.1.1) dépend de deux paramètres le temps t et le sous-jacent St
que nous noterons x pour simplification.
Figure 4: Discrétisation
La maturité T est connue, elle est la limite de notre discretisation, nous divisons l’intervalle
[0, T] en N pas constant δt = T
N
. L’intervalle discrétisé est alors de la forme suivante:
[t0 = 0, t0 + δt, t0 + 2δt. . . , t0 + nδt. . . Nδt = T]
[t0 = 0, t1, t2. . . , tn. . . tN = T]
Resolution numérique de l’equation de Black Schole en Python 8
De même, pour discrétiser, le prix du sous-jacent x c’est à dire St, nous supposons qu’il
possède une limite supérieur. Cette limitation du prix du sous-jacent est évidemment co-
hérente avec la réalité financière. Si le sous-jacent est une action, ou une matière première,
nous savons que leur prix ne tend pas vers l’infini dans la réalité. Soit Smax un nombre
suffisamment grand symbolisant cette limite, on note δx le pas de discretisation.
δx =
Smax
M
[x0 = 0, x0 + δx, x0 + 2δx. . . , x0 + jδx. . . Mδx = Smax]
[x0 = 0, x1, x2. . . , xj. . . xM = Smax]
Le pas de déplacement en espace et temps pour tout entier positif n et tout entier relatif
j se notera comme suivant:
xj = jδx
tn = nδt
fn,j = f(tn, xj)
3.3 Condition aux bords
Une équation différentielle sans conditions de bord peut avoir une ou plusieurs solutions ou
sans solution d’où la nécessité de spécifier les conditions de bord pour notre équation. Les
payoffs des options call et put à la maturité sont données respectivement par max(ST −
K, 0) et max(K − ST , 0).
Lorsque t = T (autrement dit à la maturité), on à n = N,
fN,j = max(K − jδx, 0)
Lorsque S = Smax , par la relation de parité on a
fn,0 = x − Ke−r(N−n)δt
Lorsque S = 0, on a fn,j = 0
Resolution numérique de l’equation de Black Schole en Python 9
4 Implémentation en Python
4.1 Schéma explicite
4.1.1 Equation
La plupart des équations différentielles possèdes des conditions initiales. Les étapes suiv-
antes sont alors déterminée par une approximations en discrétisant le temps par une
approche "forward." Dans le cadre des options, c’est la valeur terminale qui est connue
c’est pour cela nous utilisons le backward pour le time.
Pour le schéma explicite, nous ferons le schéma centré sur le sous-jacent du premier ordre
et symétrique sur le second ordre. Pour des raisons de stabilités,
Pour la dérivée première par rapport au temps au point tn on applique Taylor à tn − δt
on aura alors
∂f
∂t
(tn, xj) =
f(tn, xj) − f(tn − δt, xj)
δt
=
fn,j − fn−1,j
δt
(4.1.1)
Il faut noter ici que pour une option, nous connaissons la valeur terminale, notre objectif
est de déterminer la valeur à l’instant zéro.
Pour la dérivée première par rapport au sous-jacent au point xj, nous utilisons une ap-
proximation centrée. Ce qui se justifie par le fait que l’option peut augmenter à Sj+1 ou
descendre à Sj−1 on a
∂f
∂x
(tn, xj) =
f(tn, xj + δx) − f(tn, xj − δx)
2δx
==
fn,j+1 − fn,j−1
2δx
(4.1.2)
Pour la dérivée seconde par rapport au sous-jacent au point xj on a
∂2
f
∂x2
(tn, xj) =
f(tn, xj + δx) − 2f(tn, xj) + f(tn, xj − δx)
(δx)2
=
fn,j+1 − 2fn,j + fn,j−1
(δx)2
(4.1.3)
En remplaçant les termes (4.1.2), (4.1.3) et (4.1.1) par leur valeurs dans l’équation 3.1.1,
nous aurons
fn,j − fn−1,j
δt
+ rxj
fn,j+1 − fn,j−1
2δx
+
1
2
x2
j σ2 fn,j+1 − 2fn,j + fn,j−1
(δx)2
− rfn,j = 0
Sachant que xj = jδx, on peut ramener cette équation numérique sous la forme suiv-
ante
fn−1,j = ajfn,j+1 + bjfn,j−1 + cjfn,j (4.1.4)
Resolution numérique de l’equation de Black Schole en Python 10
Avec
aj =
1
2
j2
σ2
δt +
1
2
jδt
bj =
1
2
j2
σ2
δt −
1
2
jδt
cj = 1 − j2
σ2
δt − rδt
Les valeurs aj,bj et cj sont des valeurs de probabilité de transitions.On remarque qu’ils
sont positives et leur somme est égale à 1. Par construction.
fn−1,1 = a1fn,2 + b1fn,1 + c1fn,0
fn−1,2 = a2fn,3 + b2fn,2 + c2fn,1
fn−1,3 = a3fn,4 + b3fn,3 + c3fn,2
... =
...
fn−1,M−1 = aM−1fn,M−2 + b1fn,M−1 + c1fn,M−2
(4.1.5)
En posant
Fn =




















fn−1,1
fn−1,2
...
fn−1,j
...
fn−1,M−1




















A =




















b1 a1 0 0 · · · 0
c2 b2 a2 0 · · · 0
0 c3 b3 a3 · · · 0
... 0 0
...
...
...
...
... 0
... ... aM−2
0 0 · · · 0 cM−1 bM−1




















on a
Fn−1 = AFn
Nous connaissons la valeur terminale par fN,j = max(K − jδx, 0), par cette suite, nous
pouvons nous ramener facilement la valeur à l’instant t = 0
4.1.2 Stabilité
On peut aussi démontrer que pour que le schéma explicite devient stable il faut que
δt
(δs)2
<
1
ρ
Avec ρ = max(σ2
Sj, j = 1... . . . M − 1)
Resolution numérique de l’equation de Black Schole en Python 11
4.1.3 Implémentation
1 import math
2 import numpy as np
3 from matplotlib import cm
4 from matplotlib import pyplot as plt
5 import matplotlib
6 from mpl_toolkits.mplot3d import Axes3D
7 import numpy as np
8 from matplotlib import cm
9 from matplotlib import pyplot as plt
10 class FiniteEngine:
11
12 def __init__(self):
13 self.strike = 0.5
14 self.maturity = 1.0
15 self.risk_free_rate = 0.05
16 self.volatility = 0.2
17 self.stockMax = 1
18 self.Ms = 20
19 self.Nt = 20
20 self.dt = self.stockMax/(float(self.Ms))
21 self.dx = self.maturity/(float(self.Nt))
22
23 def compute_explicite(self):
24 previous = np.zeros(self.Ms)
25 xvalues = np.zeros(self.Ms)
26 for x in range(self.Ms):
27 xvalues[x] =x*self.dx
28 previous[x] = max(xvalues[x]- self.strike,0)
29 result = np.zeros(self.Ms)
30 output1 = list()
31 output2 = list()
32 output3 = list()
33
34 prev_t = 0
35 for ti in range(self.Nt):
36 cur_t = prev_t + self.dt
37 result[0] = 0
38 result[self.Ms - 1] = (xvalues[self.Ms - 1] - self.strike) *
math.exp(-self.risk_free_rate * self.dt * (self.maturity - prev_t))→
39 for xi in range(1, self.Ms - 1, 1):
40 result[xi] = self.coef_a(xi) * previous[xi + 1] + self.coef_b(xi) *
previous[xi] + self.coef_c(xi) * previous[xi - 1]→
41 for xi in range(self.Ms):
42 output1.append(xvalues[xi])
43 output2.append(prev_t)
44 output3.append(result[xi])
Resolution numérique de l’equation de Black Schole en Python 12
45 previous = result
46 prev_t = cur_t
47
48 self.plot_option(xvalues,result)
49 self.plot_surface(output1,output2,output3)
50
51 def plot_option(self,x_values,c_values):
52 fig, ax = plt.subplots()
53 ax.plot(x_values,c_values)
54 ax.set_xlabel('Stock')
55 ax.set_ylabel('Option')
56 ax.set_title('Finite Model price')
57 plt.show()
58
59 def plot_surface(self, output1, output2,output3):
60 X = np.reshape(output1, (self.Ms, self.Nt))
61 Y = np.reshape(output2, (self.Ms, self.Nt))
62 Z = np.reshape(output3, (self.Ms, self.Nt))
63 fig = plt.figure()
64 ax = fig.add_subplot(111, projection='3d')
65
66 ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.YlGnBu_r)
67 ax.set_zlim3d(0, 1.0)
68 ax.set_xlabel(r'$S$')
69 ax.set_ylabel(r'$T-t$')
70 ax.set_zlabel(r'$C(S,t)$')
71 plt.show()
72
73 def coef_a(self, i):
74 return 0.5 * i * i * self.dt * (self.volatility ** 2) + 0.5 * i * self.dt
75
76 def coef_b(self, i):
77 return 1 - i * i * self.volatility * self.volatility * self.dt -
self.risk_free_rate * self.dt→
78
79 def coef_c(self, i):
80 return 0.5 * i * i * self.dt * (self.volatility ** 2) - 0.5 * i * self.dt
Avec les paramêtres definies dans le code, nous avons
Resolution numérique de l’equation de Black Schole en Python 13
Figure 5: Surface de prix d’option call
Resolution numérique de l’equation de Black Schole en Python 14

Weitere ähnliche Inhalte

Was ist angesagt?

Analyse de régression multiple
Analyse de régression multipleAnalyse de régression multiple
Analyse de régression multipleAdad Med Chérif
 
NOTION DE L'UTILTITE ESPEREE ET COMPORTEMENT FACE AU RISQUE
NOTION DE L'UTILTITE ESPEREE ET COMPORTEMENT FACE AU RISQUENOTION DE L'UTILTITE ESPEREE ET COMPORTEMENT FACE AU RISQUE
NOTION DE L'UTILTITE ESPEREE ET COMPORTEMENT FACE AU RISQUEDavid Yvan Loïc Damoh
 
Cours de gestion de portefeuille et des risques Pr Falloul
Cours de gestion de portefeuille et des risques Pr Falloul Cours de gestion de portefeuille et des risques Pr Falloul
Cours de gestion de portefeuille et des risques Pr Falloul Professeur Falloul
 
Sélection de contrôles avec correction
Sélection de contrôles avec correctionSélection de contrôles avec correction
Sélection de contrôles avec correctionJaouad Dabounou
 
Chap 9 Choix Dun Portefeuille
Chap 9 Choix Dun PortefeuilleChap 9 Choix Dun Portefeuille
Chap 9 Choix Dun PortefeuilleLouis Pinto
 
GP Chapitre 2 : Les méthodes de prévision
GP Chapitre 2 : Les méthodes de prévision GP Chapitre 2 : Les méthodes de prévision
GP Chapitre 2 : Les méthodes de prévision ibtissam el hassani
 
Donnees de panel
Donnees de panelDonnees de panel
Donnees de panelzizou36
 
Chap i couvertue sur le marché à terme
Chap i couvertue sur le marché à termeChap i couvertue sur le marché à terme
Chap i couvertue sur le marché à termeLotfi TALEB, ESSECT
 
Gestion de portefeuille d'action
Gestion de portefeuille d'actionGestion de portefeuille d'action
Gestion de portefeuille d'actionHicham Talbi
 
Regression lineaire simple
Regression lineaire simpleRegression lineaire simple
Regression lineaire simpleMehdi Rajawi
 
IV Gestion risque de change
IV Gestion risque de changeIV Gestion risque de change
IV Gestion risque de changeJérémy Morvan
 
تمارين وحلول خاصة ببرمجة Ladder et instructions automates
تمارين وحلول خاصة ببرمجة Ladder et instructions automatesتمارين وحلول خاصة ببرمجة Ladder et instructions automates
تمارين وحلول خاصة ببرمجة Ladder et instructions automateselectrolouhla
 
La gestion des risques
La gestion des risquesLa gestion des risques
La gestion des risquesMariem SELLAMI
 
METROLOGIE ET CONTROLE QUALITE
METROLOGIE ET CONTROLE QUALITEMETROLOGIE ET CONTROLE QUALITE
METROLOGIE ET CONTROLE QUALITEMounir Frija
 
Exercice corrigé méthode de séléction des fournisseurs
Exercice corrigé méthode de séléction des fournisseursExercice corrigé méthode de séléction des fournisseurs
Exercice corrigé méthode de séléction des fournisseursessa1988
 
Tps exercices corriges de mecanique des sols
Tps    exercices corriges de mecanique des solsTps    exercices corriges de mecanique des sols
Tps exercices corriges de mecanique des solsabdelkrim abdellaoui
 
Tous les exercices_-_electromagnétisme_pcsi_mpsi
Tous les exercices_-_electromagnétisme_pcsi_mpsiTous les exercices_-_electromagnétisme_pcsi_mpsi
Tous les exercices_-_electromagnétisme_pcsi_mpsiSmee Kaem Chann
 

Was ist angesagt? (20)

Analyse de régression multiple
Analyse de régression multipleAnalyse de régression multiple
Analyse de régression multiple
 
NOTION DE L'UTILTITE ESPEREE ET COMPORTEMENT FACE AU RISQUE
NOTION DE L'UTILTITE ESPEREE ET COMPORTEMENT FACE AU RISQUENOTION DE L'UTILTITE ESPEREE ET COMPORTEMENT FACE AU RISQUE
NOTION DE L'UTILTITE ESPEREE ET COMPORTEMENT FACE AU RISQUE
 
Cours de gestion de portefeuille et des risques Pr Falloul
Cours de gestion de portefeuille et des risques Pr Falloul Cours de gestion de portefeuille et des risques Pr Falloul
Cours de gestion de portefeuille et des risques Pr Falloul
 
Sélection de contrôles avec correction
Sélection de contrôles avec correctionSélection de contrôles avec correction
Sélection de contrôles avec correction
 
Chap 9 Choix Dun Portefeuille
Chap 9 Choix Dun PortefeuilleChap 9 Choix Dun Portefeuille
Chap 9 Choix Dun Portefeuille
 
Langage vhdl
Langage vhdlLangage vhdl
Langage vhdl
 
GP Chapitre 2 : Les méthodes de prévision
GP Chapitre 2 : Les méthodes de prévision GP Chapitre 2 : Les méthodes de prévision
GP Chapitre 2 : Les méthodes de prévision
 
Donnees de panel
Donnees de panelDonnees de panel
Donnees de panel
 
Chap i couvertue sur le marché à terme
Chap i couvertue sur le marché à termeChap i couvertue sur le marché à terme
Chap i couvertue sur le marché à terme
 
Gestion de portefeuille d'action
Gestion de portefeuille d'actionGestion de portefeuille d'action
Gestion de portefeuille d'action
 
Regression lineaire simple
Regression lineaire simpleRegression lineaire simple
Regression lineaire simple
 
IV Gestion risque de change
IV Gestion risque de changeIV Gestion risque de change
IV Gestion risque de change
 
تمارين وحلول خاصة ببرمجة Ladder et instructions automates
تمارين وحلول خاصة ببرمجة Ladder et instructions automatesتمارين وحلول خاصة ببرمجة Ladder et instructions automates
تمارين وحلول خاصة ببرمجة Ladder et instructions automates
 
La gestion des risques
La gestion des risquesLa gestion des risques
La gestion des risques
 
Finance de marche
Finance de marche Finance de marche
Finance de marche
 
METROLOGIE ET CONTROLE QUALITE
METROLOGIE ET CONTROLE QUALITEMETROLOGIE ET CONTROLE QUALITE
METROLOGIE ET CONTROLE QUALITE
 
Exercice corrigé méthode de séléction des fournisseurs
Exercice corrigé méthode de séléction des fournisseursExercice corrigé méthode de séléction des fournisseurs
Exercice corrigé méthode de séléction des fournisseurs
 
Tps exercices corriges de mecanique des sols
Tps    exercices corriges de mecanique des solsTps    exercices corriges de mecanique des sols
Tps exercices corriges de mecanique des sols
 
Tous les exercices_-_electromagnétisme_pcsi_mpsi
Tous les exercices_-_electromagnétisme_pcsi_mpsiTous les exercices_-_electromagnétisme_pcsi_mpsi
Tous les exercices_-_electromagnétisme_pcsi_mpsi
 
TRI Automatique.pdf
TRI Automatique.pdfTRI Automatique.pdf
TRI Automatique.pdf
 

Ähnlich wie Résolution numérique de l'équation de Black Scholes en python

Projet d'Analyse Numérique
Projet d'Analyse NumériqueProjet d'Analyse Numérique
Projet d'Analyse NumériqueYassineElaroui2
 
Analyse2 00 (1)
Analyse2 00 (1)Analyse2 00 (1)
Analyse2 00 (1)Dj-malik
 
fctusuelle-1.pdf
fctusuelle-1.pdffctusuelle-1.pdf
fctusuelle-1.pdfTARIQBARKI3
 
Cours-maths3-2eme-Annee-ST.pdf
Cours-maths3-2eme-Annee-ST.pdfCours-maths3-2eme-Annee-ST.pdf
Cours-maths3-2eme-Annee-ST.pdfArsalanTlm
 
signal f_sur
signal f_sursignal f_sur
signal f_surWafa Ben
 
livre-algorithmes.pdf
livre-algorithmes.pdflivre-algorithmes.pdf
livre-algorithmes.pdfDurelDonfack
 
Cours derive d'une fonctions
Cours  derive d'une fonctionsCours  derive d'une fonctions
Cours derive d'une fonctionsbades12
 
M2 An 1986 20 3 371 0
M2 An 1986  20 3 371 0M2 An 1986  20 3 371 0
M2 An 1986 20 3 371 0guest8b8369
 
Conception d'algorithmes pour l'approximation de la "Cut-Norm" avec l'inégali...
Conception d'algorithmes pour l'approximation de la "Cut-Norm" avec l'inégali...Conception d'algorithmes pour l'approximation de la "Cut-Norm" avec l'inégali...
Conception d'algorithmes pour l'approximation de la "Cut-Norm" avec l'inégali...ImadBerkani1
 
Cours arithmetique
Cours arithmetiqueCours arithmetique
Cours arithmetiquebades12
 
Algorithmes récursifs : une introduction pragmatique pour un enseignement au ...
Algorithmes récursifs : une introduction pragmatique pour un enseignement au ...Algorithmes récursifs : une introduction pragmatique pour un enseignement au ...
Algorithmes récursifs : une introduction pragmatique pour un enseignement au ...RichardTerrat1
 
Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite completChahrawoods Dmz
 
Cours algorithmique et complexite
Cours algorithmique et complexite Cours algorithmique et complexite
Cours algorithmique et complexite Saddem Chikh
 
Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite completChahrawoods Dmz
 

Ähnlich wie Résolution numérique de l'équation de Black Scholes en python (20)

Théorie des distributions
Théorie des distributionsThéorie des distributions
Théorie des distributions
 
Projet d'Analyse Numérique
Projet d'Analyse NumériqueProjet d'Analyse Numérique
Projet d'Analyse Numérique
 
Analyse2 00 (1)
Analyse2 00 (1)Analyse2 00 (1)
Analyse2 00 (1)
 
fctusuelle-1.pdf
fctusuelle-1.pdffctusuelle-1.pdf
fctusuelle-1.pdf
 
Cours-maths3-2eme-Annee-ST.pdf
Cours-maths3-2eme-Annee-ST.pdfCours-maths3-2eme-Annee-ST.pdf
Cours-maths3-2eme-Annee-ST.pdf
 
RapportComplet
RapportCompletRapportComplet
RapportComplet
 
signal f_sur
signal f_sursignal f_sur
signal f_sur
 
SIGNAL
SIGNAL SIGNAL
SIGNAL
 
livre-algorithmes.pdf
livre-algorithmes.pdflivre-algorithmes.pdf
livre-algorithmes.pdf
 
Cours derive d'une fonctions
Cours  derive d'une fonctionsCours  derive d'une fonctions
Cours derive d'une fonctions
 
Startimes2
Startimes2Startimes2
Startimes2
 
Memoire.PDF
Memoire.PDFMemoire.PDF
Memoire.PDF
 
Les Séries de Fourier
Les Séries de FourierLes Séries de Fourier
Les Séries de Fourier
 
M2 An 1986 20 3 371 0
M2 An 1986  20 3 371 0M2 An 1986  20 3 371 0
M2 An 1986 20 3 371 0
 
Conception d'algorithmes pour l'approximation de la "Cut-Norm" avec l'inégali...
Conception d'algorithmes pour l'approximation de la "Cut-Norm" avec l'inégali...Conception d'algorithmes pour l'approximation de la "Cut-Norm" avec l'inégali...
Conception d'algorithmes pour l'approximation de la "Cut-Norm" avec l'inégali...
 
Cours arithmetique
Cours arithmetiqueCours arithmetique
Cours arithmetique
 
Algorithmes récursifs : une introduction pragmatique pour un enseignement au ...
Algorithmes récursifs : une introduction pragmatique pour un enseignement au ...Algorithmes récursifs : une introduction pragmatique pour un enseignement au ...
Algorithmes récursifs : une introduction pragmatique pour un enseignement au ...
 
Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite complet
 
Cours algorithmique et complexite
Cours algorithmique et complexite Cours algorithmique et complexite
Cours algorithmique et complexite
 
Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite complet
 

Résolution numérique de l'équation de Black Scholes en python

  • 1. Résolution numérique de l’équation de Black-Scholes en Python par différence finie SIDIBE Ali Broma 1 Financial Market and Risk Management. Juillet, 2019 1 bromasidibe@gmail.com
  • 2. Contents 1 Introduction 2 2 Méthodes des différences finies 2 2.1 Approximation des dérivées . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2.1.1 Dérivée première . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.1.2 Dérivée seconde . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.2 Types de schéma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.2.1 Euler explicite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.2.2 Euler implicite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.2.3 Crank Nicolson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.3 Propriétés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.3.1 Consistance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.3.2 Convergence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.3.3 Stabilité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.4 Choix du schéma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3 Discrétisation 8 3.1 Equation différentielle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.2 Methode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.3 Condition aux bords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 4 Implémentation en Python 10 4.1 Schéma explicite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 4.1.1 Equation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 4.1.2 Stabilité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 4.1.3 Implémentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1
  • 3. 1 Introduction D’une manière générale, la résolution analytique fournit traditionnellement une solution exacte aux modèles mathématiques. Souvent certains modèles dûs à leur complexité peuvent ne pas avoir des solutions analytiques. Aussi la précision peut ne pas être un critère fondamentale dans certains cas. Il s’avère alors utile de procéder par une solu- tion approchées du problème d’où l’intérêt des méthodes numériques. Les méthodes des différences finies sont un moyen d’obtenir des solutions numériques. C’est une technique courante de recherche de solutions approchées d’équations aux dérivées partielles qui con- siste à résoudre un système de relations (schéma numérique) liant les valeurs des fonctions inconnues en certains points suffisamment proches les uns des autres. Dans ce présent travail, nous allons appliquer la méthode numérique pour l’équation dif- férentielle vérifiée par le prix d’une option en finance, communément appelé l’équation de Black-Scholes. La formule de Black-Scholes lie le prix d’une option à ses caractéris- tique par une équation différentielle partielle non linéaire. Elle s’est imposée comme une référence en termes de valorisation des options. L’intérêt de ce présent travail est de résoudre cette équation différentielle par la méthode des différences finies (bien que la solution analytique existe) et l’implémenter en python. Pour cela, nous commencerons par présenter la méthode des différences finies dans un premier temps. Ensuite dans la deuxième partie, nous discrétiserons l’équation de black- scholes à l’aide des différentes schéma et pour finir l’implémentation en python en troisième partie. 2 Méthodes des différences finies 2.1 Approximation des dérivées Nous allons appliquer la formule de Taylor pour donner une approximation des dérivés d’une fonction en un point x0. En mathématiques, plus précisément en analyse, le théorème de Taylor (ou formule de Taylor), du nom du mathématicien anglais Brook Taylor montre qu’une fonction suffisamment dérivable au voisinage d’un point peut être approchée par une fonction polynomiale dont les coefficients dépendent uniquement des dérivées de la fonction en ce point. Théoreme 1. Soient I un intervalle de R, x0 un point de I et f : I −→ R une fonction de classe Cn sur I. Alors pour tout h ∈ R tel que x0 + h ∈ I, on a f(x0 + h) = f(x0) + hf (x0) + h2 2! f .... + hn (h) = n i=0 hi i! f(i) (x0) + hn (h) (2.1.1) Resolution numérique de l’equation de Black Schole en Python 2
  • 4. 2.1.1 Dérivée première Par le développement de Taylor à l’ordre 1 de f au voisinage de x0 nous avons f(x0 +h) = f(x0) + hf (x0) + h (h) Il en résulte immédiatement que: f (x0) = f(x0 + h) − f(x0) h + (h) (2.1.2) 2.1.2 Dérivée seconde De même lorsqu’on fait le développement à l’ordre 2, nous obtenons f(x0 + h) = f(x0) + hf (x0) + h2 2 f (x0) + h2 (h2 ) lorsque nous faisons le développement limité au point xo + h et f(x0 −h) = f(x0)−hf (x0)+ h2 2 f (x0)+h2 (h2 ) lorsque nous faisons le développement limité au point xo − h En faisant la somme de chaque terme de ces deux égalités, on a f (x0) = f(x0 + h) − 2f(x0) + f(x0 − h) 2h + (h2 ) (2.1.3) 2.2 Types de schéma On considère un problème à deux dimensions:spatiale et temps, de la forme ∂f ∂t = F f, t, x, ∂f ∂x , ∂2 f ∂x2 Nous souhaitons évaluer les valeurs au points (tn, xj) avec le pas spatiale δx et δt le pas en temps. On note fn,j = f(nδt, jδx) 2.2.1 Euler explicite Le schéma explicite est la plus facile et la plus rapide des types de méthodes de différences finie. Elle calcule le prix des options pour chaque instant t à partir des pas instants précédents. Dans la méthode d’Euler explicite, la valeur approchée à l’instant tn+1 est obtenue à partir de la précédente c’est à dire l’instant tn déjà connu. fn+1,j − fn,j δt = Fn j f, t, x, ∂f ∂x , ∂2 f ∂x2 Formellement, elle s’écrit comme une combinaison linéaire de la forme suivante: fn+1,j = afn,j+1 + bfn,j−1 + cfn,j Une condition de la stabilité est que a > 0, b > 0 et c > 0. Afin que cette méthodes converge, les valeurs à l’instant tn+1 doivent être supérieurs aux instants tn fn,j fn+1,j < 1 Resolution numérique de l’equation de Black Schole en Python 3
  • 5. Figure 1: Différent types de schéma 2.2.2 Euler implicite fn+1,j − fn,j δt = Fn+1 j f, t, x, ∂f ∂x , ∂2 f ∂x2 Le schéma implicite réclame un travail numérique supplémentaire par rapport au schéma explicite. En contrepartie, il n’impose aucune condition sur le choix de a et b et c. Ce bénéfice est tellement important que l’approximation par schéma de différences finies implicite est presque toujours préféré à l’approximation par différences finies explicite dans les cas pratiques. 2.2.3 Crank Nicolson La méthode de Crank-Nicolson est un algorithme simple permettant de résoudre des systèmes d’équations aux dérivées partielles. Cette méthode utilise les différences finies pour approcher une solution du problème : elle est numériquement stable et quadratique pour le temps. La méthode de Crank-Nicolson s’obtient en faisant la moyenne des deux Resolution numérique de l’equation de Black Schole en Python 4
  • 6. égalités précédentes (explicite et implicite) : fn+1,j − fn,j δt = 1 2 Fn+1 i f, t, x, ∂f ∂x , ∂2 f ∂x2 + Fn i f, t, x, ∂f ∂x , ∂2 f ∂x2 La méthode est considérée comme implicite, car elle nécessite la résolution d’équations algébriques (correspondant au second membre de la méthode d’Euler régressive). Elle est inconditionnellement stable, mais nécessite certaines conditions de régularité sur les équations à résoudre pour que le résultat ait une précision satisfaisante. 2.3 Propriétés Un certain nombre de notion est nécessaire lors de la résolution d’équations aux dérivées partielles (EDP) au moyen des méthodes de différences finies. Les trois principales sont la convergence, la stabilité et la consistance. Ces trois propriétés permettent de relier la solution exacte des équations continues à la solution exacte des équations discrétisées et à la solution numérique. Le respect de ces propriétés est nécessaire pour la crédibilité d’un schéma numérique. Figure 2: Les propriétés d’un schéma numérique 2.3.1 Consistance C’est la propriété qui assure que la solution exacte des équations discrétisées tende vers la solution exacte des équations continues lorsque les pas discrétisations tendent vers zéro. Resolution numérique de l’equation de Black Schole en Python 5
  • 7. Definition 1. Soient A(.t, x) = 0, une équation différentielle, u une solution analytique de A et F(.) = 0 un schéma discrétisant l’équation A(t, x) = 0 de pas δ Le schéma F(.) est dit consistant si lim δ→0 F(u)) = 0 Autrement dit, si on remplace la discrétisation par la solution exacte, alors l’erreur temps vers 0. 2.3.2 Convergence La convergence d’un schéma aux différences finies est une propriété naturelle qui assure que, pour des valeurs suffisamment petites des pas de discretisation, la solution numérique calculée sera proche de la solution exacte du problème de départ. C’est la propriété qui assure que la solution numérique tende vers la (ou une) solution exacte des équations continues. Definition 2. Soit A(t, x) = 0 une équation différentielle et F(un j ) = 0 un schéma dis- crétisant l’équation A(t, x) = 0 est dit consistant si lim dx→0,dt→0 F(u(tj, xn) = 0 si et seulement si u(t, x) est solution. Autrement dit, si on remplace la discrétisation par la solution exacte, alors l’erreur temps vers 0. 2.3.3 Stabilité D’une façon plus général, un problème est dit stable, très sensible ou mal conditionné si une petite variation des données ou des paramètres entraîne une grande variation des résultats. Pour un schéma numérique, c’est la propriété qui assure que la différence entre la solution numérique obtenue et la solution exacte des équations discrétisées est bornée. Definition 3. On considère la norme discrète suivante un 2 = N j=1 ∆x|un j |2 1 2 (2.3.1) Un schéma est dit stable par rapport à cette norme, s’il existe une constante K > 0 indépendante des pas discretisation tel que pour tout n entier positif. un < K u0 Resolution numérique de l’equation de Black Schole en Python 6
  • 8. Figure 3: Stabilité d’un schéma numérique 2.4 Choix du schéma Le choix d’un schéma numérique pour la résolution d’une équation différentielle doit idéalement tenir compte de notamment d’une part le respect des propriétés précédentes d’autres part sur les contraintes techniques (puissances de la machine) et de la complexité de son implémentation informatique. Le schéma centré bien qu’apparaît comme un juste milieu entre le schéma explicite et implicite est totalement instable, par cette raison, nous l’ignorons totalement. Le schéma explicite est très facile à implémenter de manière informatique mais sa stabilité impose des choix sur les pas de discretisation. Nous pouvons respecter ces choix et se lancer tenter. Le dernier schéma est le schéma implicite, bien que difficile à implémenter il est incondi- tionnellement stable. Notre choix sur le schéma implicite se justifie par le fait que nous aimerons avoir une plus grande liberté sur le choix de nos pas de discretisation. Resolution numérique de l’equation de Black Schole en Python 7
  • 9. 3 Discrétisation 3.1 Equation différentielle Soit une option de maturité T, de prix d’exercice K, du taux sans risque r, de volatilité σ et du sous-jacent St, alors d’après l’équation de Black-Scholes, le prix f d’une telle option vérifie l’équation différentielle suivantes    ∂f(t, St) ∂t + rS ∂f(t, St) ∂S + 1 2 S2 σ2 ∂2 f(t, St) ∂S2 = rf(t, St) f(T, ST ) = max(ST − K) (3.1.1) Nous avons pris une option de type call. 3.2 Methode Le prix d’une option f (3.1.1) dépend de deux paramètres le temps t et le sous-jacent St que nous noterons x pour simplification. Figure 4: Discrétisation La maturité T est connue, elle est la limite de notre discretisation, nous divisons l’intervalle [0, T] en N pas constant δt = T N . L’intervalle discrétisé est alors de la forme suivante: [t0 = 0, t0 + δt, t0 + 2δt. . . , t0 + nδt. . . Nδt = T] [t0 = 0, t1, t2. . . , tn. . . tN = T] Resolution numérique de l’equation de Black Schole en Python 8
  • 10. De même, pour discrétiser, le prix du sous-jacent x c’est à dire St, nous supposons qu’il possède une limite supérieur. Cette limitation du prix du sous-jacent est évidemment co- hérente avec la réalité financière. Si le sous-jacent est une action, ou une matière première, nous savons que leur prix ne tend pas vers l’infini dans la réalité. Soit Smax un nombre suffisamment grand symbolisant cette limite, on note δx le pas de discretisation. δx = Smax M [x0 = 0, x0 + δx, x0 + 2δx. . . , x0 + jδx. . . Mδx = Smax] [x0 = 0, x1, x2. . . , xj. . . xM = Smax] Le pas de déplacement en espace et temps pour tout entier positif n et tout entier relatif j se notera comme suivant: xj = jδx tn = nδt fn,j = f(tn, xj) 3.3 Condition aux bords Une équation différentielle sans conditions de bord peut avoir une ou plusieurs solutions ou sans solution d’où la nécessité de spécifier les conditions de bord pour notre équation. Les payoffs des options call et put à la maturité sont données respectivement par max(ST − K, 0) et max(K − ST , 0). Lorsque t = T (autrement dit à la maturité), on à n = N, fN,j = max(K − jδx, 0) Lorsque S = Smax , par la relation de parité on a fn,0 = x − Ke−r(N−n)δt Lorsque S = 0, on a fn,j = 0 Resolution numérique de l’equation de Black Schole en Python 9
  • 11. 4 Implémentation en Python 4.1 Schéma explicite 4.1.1 Equation La plupart des équations différentielles possèdes des conditions initiales. Les étapes suiv- antes sont alors déterminée par une approximations en discrétisant le temps par une approche "forward." Dans le cadre des options, c’est la valeur terminale qui est connue c’est pour cela nous utilisons le backward pour le time. Pour le schéma explicite, nous ferons le schéma centré sur le sous-jacent du premier ordre et symétrique sur le second ordre. Pour des raisons de stabilités, Pour la dérivée première par rapport au temps au point tn on applique Taylor à tn − δt on aura alors ∂f ∂t (tn, xj) = f(tn, xj) − f(tn − δt, xj) δt = fn,j − fn−1,j δt (4.1.1) Il faut noter ici que pour une option, nous connaissons la valeur terminale, notre objectif est de déterminer la valeur à l’instant zéro. Pour la dérivée première par rapport au sous-jacent au point xj, nous utilisons une ap- proximation centrée. Ce qui se justifie par le fait que l’option peut augmenter à Sj+1 ou descendre à Sj−1 on a ∂f ∂x (tn, xj) = f(tn, xj + δx) − f(tn, xj − δx) 2δx == fn,j+1 − fn,j−1 2δx (4.1.2) Pour la dérivée seconde par rapport au sous-jacent au point xj on a ∂2 f ∂x2 (tn, xj) = f(tn, xj + δx) − 2f(tn, xj) + f(tn, xj − δx) (δx)2 = fn,j+1 − 2fn,j + fn,j−1 (δx)2 (4.1.3) En remplaçant les termes (4.1.2), (4.1.3) et (4.1.1) par leur valeurs dans l’équation 3.1.1, nous aurons fn,j − fn−1,j δt + rxj fn,j+1 − fn,j−1 2δx + 1 2 x2 j σ2 fn,j+1 − 2fn,j + fn,j−1 (δx)2 − rfn,j = 0 Sachant que xj = jδx, on peut ramener cette équation numérique sous la forme suiv- ante fn−1,j = ajfn,j+1 + bjfn,j−1 + cjfn,j (4.1.4) Resolution numérique de l’equation de Black Schole en Python 10
  • 12. Avec aj = 1 2 j2 σ2 δt + 1 2 jδt bj = 1 2 j2 σ2 δt − 1 2 jδt cj = 1 − j2 σ2 δt − rδt Les valeurs aj,bj et cj sont des valeurs de probabilité de transitions.On remarque qu’ils sont positives et leur somme est égale à 1. Par construction. fn−1,1 = a1fn,2 + b1fn,1 + c1fn,0 fn−1,2 = a2fn,3 + b2fn,2 + c2fn,1 fn−1,3 = a3fn,4 + b3fn,3 + c3fn,2 ... = ... fn−1,M−1 = aM−1fn,M−2 + b1fn,M−1 + c1fn,M−2 (4.1.5) En posant Fn =                     fn−1,1 fn−1,2 ... fn−1,j ... fn−1,M−1                     A =                     b1 a1 0 0 · · · 0 c2 b2 a2 0 · · · 0 0 c3 b3 a3 · · · 0 ... 0 0 ... ... ... ... ... 0 ... ... aM−2 0 0 · · · 0 cM−1 bM−1                     on a Fn−1 = AFn Nous connaissons la valeur terminale par fN,j = max(K − jδx, 0), par cette suite, nous pouvons nous ramener facilement la valeur à l’instant t = 0 4.1.2 Stabilité On peut aussi démontrer que pour que le schéma explicite devient stable il faut que δt (δs)2 < 1 ρ Avec ρ = max(σ2 Sj, j = 1... . . . M − 1) Resolution numérique de l’equation de Black Schole en Python 11
  • 13. 4.1.3 Implémentation 1 import math 2 import numpy as np 3 from matplotlib import cm 4 from matplotlib import pyplot as plt 5 import matplotlib 6 from mpl_toolkits.mplot3d import Axes3D 7 import numpy as np 8 from matplotlib import cm 9 from matplotlib import pyplot as plt 10 class FiniteEngine: 11 12 def __init__(self): 13 self.strike = 0.5 14 self.maturity = 1.0 15 self.risk_free_rate = 0.05 16 self.volatility = 0.2 17 self.stockMax = 1 18 self.Ms = 20 19 self.Nt = 20 20 self.dt = self.stockMax/(float(self.Ms)) 21 self.dx = self.maturity/(float(self.Nt)) 22 23 def compute_explicite(self): 24 previous = np.zeros(self.Ms) 25 xvalues = np.zeros(self.Ms) 26 for x in range(self.Ms): 27 xvalues[x] =x*self.dx 28 previous[x] = max(xvalues[x]- self.strike,0) 29 result = np.zeros(self.Ms) 30 output1 = list() 31 output2 = list() 32 output3 = list() 33 34 prev_t = 0 35 for ti in range(self.Nt): 36 cur_t = prev_t + self.dt 37 result[0] = 0 38 result[self.Ms - 1] = (xvalues[self.Ms - 1] - self.strike) * math.exp(-self.risk_free_rate * self.dt * (self.maturity - prev_t))→ 39 for xi in range(1, self.Ms - 1, 1): 40 result[xi] = self.coef_a(xi) * previous[xi + 1] + self.coef_b(xi) * previous[xi] + self.coef_c(xi) * previous[xi - 1]→ 41 for xi in range(self.Ms): 42 output1.append(xvalues[xi]) 43 output2.append(prev_t) 44 output3.append(result[xi]) Resolution numérique de l’equation de Black Schole en Python 12
  • 14. 45 previous = result 46 prev_t = cur_t 47 48 self.plot_option(xvalues,result) 49 self.plot_surface(output1,output2,output3) 50 51 def plot_option(self,x_values,c_values): 52 fig, ax = plt.subplots() 53 ax.plot(x_values,c_values) 54 ax.set_xlabel('Stock') 55 ax.set_ylabel('Option') 56 ax.set_title('Finite Model price') 57 plt.show() 58 59 def plot_surface(self, output1, output2,output3): 60 X = np.reshape(output1, (self.Ms, self.Nt)) 61 Y = np.reshape(output2, (self.Ms, self.Nt)) 62 Z = np.reshape(output3, (self.Ms, self.Nt)) 63 fig = plt.figure() 64 ax = fig.add_subplot(111, projection='3d') 65 66 ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.YlGnBu_r) 67 ax.set_zlim3d(0, 1.0) 68 ax.set_xlabel(r'$S$') 69 ax.set_ylabel(r'$T-t$') 70 ax.set_zlabel(r'$C(S,t)$') 71 plt.show() 72 73 def coef_a(self, i): 74 return 0.5 * i * i * self.dt * (self.volatility ** 2) + 0.5 * i * self.dt 75 76 def coef_b(self, i): 77 return 1 - i * i * self.volatility * self.volatility * self.dt - self.risk_free_rate * self.dt→ 78 79 def coef_c(self, i): 80 return 0.5 * i * i * self.dt * (self.volatility ** 2) - 0.5 * i * self.dt Avec les paramêtres definies dans le code, nous avons Resolution numérique de l’equation de Black Schole en Python 13
  • 15. Figure 5: Surface de prix d’option call Resolution numérique de l’equation de Black Schole en Python 14