logo strategies-options Accès Site
 
panier
"Gérer, c'est prévoir"
Le site consacré aux stratégies de trading incorporant des produits dérivés, en particulier des options.
Accueil  >  Modèles d'évaluation d'options  >  Option Pricing - Modele trinomial en Python 

Option Pricing - Modele trinomial en Python

Publié le 10 Juillet 2019 par Duchêne
icone rss


La programmation du modèle trinomial en Python est très facile

Python est devenu en quelques années le langage de programmation indispensable à la finance de marché.
Ces liens avec Excel par exemple en ont fait un outil incontournable pour les personnes qui utilisent des tableurs pour valoriser des produits dérivés comme les options.


Comme nous l'avions vu précédemment, l'utilisation du modèle trinomial (et plus généralement de modèle type "différences finies") est naturelle pour qui aura besoin d'évaluer des options de type européen, à l'instar de Black & Scholes, mais aussi de type américain, exerçable à tout moment.

Vraiment très facile de programmer en Python le modèle trinomial.




import math

def Trinomialgeneral(S0, K, r, sigma, q, T,isus,iscall):

dt = 1/10000
N = round(T/dt)
M = round(5*(N**.5))
mu = r-q-.5*sigma*sigma


smax = 2*abs(mu)*(dt**.5)
smax = max(sigma * (2**.5), smax)
if smax == 0:
return -9999

C = [None] * (2*M)
pC = [None] * (2*M)
S = [None] * (2*M)

p = 0.5 * sigma * sigma / (smax * smax)
pu = p + 0.5 * mu * (dt**.5) / smax
pm = 1 - 2*p
pd = p - 0.5 * mu * (dt**.5) / smax

D = 1/(1+r*dt)
E = math.exp(smax * (dt**.5))
S[0] = S0 * math.exp(-M * smax * dt**.5)
for i in range(1, 2*M):
S[i] = S[i-1]*E


for j in range(2*M):
C[j] = max(iscall*(S[j] - K), 0)


for t in range(N):
for j in range(1, 2*M-1):
pC[j] = pu * C[j+1] + pm * C[j] + pd * C[j-1]
pC[j] = pC[j] * D


for i in range(1,2*M-1):
C[i] = max(isus*(iscall*(S[i]-K)), pC[i])

return C[M]



Par exemple, pour un sous-jacent S =100, un prix d'exercice K = 100, un taux d'intérêt (continûment composé) r = 5%, une volatilité sigma = 30%, un taux de dividende q = 0%, une maturité T = 1 an, une option de type Américain isus = 1 et une option de type put iscall = -1, on obtient :
V=Trinomialgeneral(100, 100, 0.05, 0.3, 0.0, 1,1,-1)
print(V)

le résultat est 9.869963659320902


Pour un sous-jacent S =100, un prix d'exercice K = 100, un taux d'intérêt (continûment composé) r = 5%, une volatilité sigma = 30%, un taux de dividende q = 0%, une maturité T = 1 an, une option de type Européen isus = 0 et une option de type CALL iscall = 1, on obtient :
V=Trinomialgeneral(100, 100, 0.05, 0.3, 0.0, 1,0,1)
print(V)

le résultat est 14.23110652674761




NB : dans l'exemple ci-dessus, on a pris 10000 périodes (dt = 1 / 10000 ), on peut bien sûr prendre moins de périodes et de ce fait accélérer les calculs au prix d'une moins grande précision.

A vous de jouer :-)).

La suite : Option Pricing - Black Scholes En Python
Précédent : Le Modèle Trinomial : VBA Code

Duchêne
D'autres Fiches
Café dérivés
- Cafés Dérivés - Formation Pricing en Direct -
Café dérivés
Café dérivés est une session d'un groupe de 5 personnes maximum sur Skype ou Netviewer afin de travailler en profondeur un point technique précis sur les options pendant 1h.
Calcul du VIX
- ABC des Options -
Calcul du VIX
Comment est calculé le VIX ?
Les grecs : une première approche
- ABC des Options -
Les grecs : une première approche
Les paramètres (strike, dividende, taux d'intérêt sans risque, volatilité) et variables (sous-jacent et temps) qui constituent la valeur d'une option ne l'impactent pas dans les mêmes proportions.
Strategie Options sur Devises - USDJPY ( Suivi 10 et fin )
- Les Stratégies Options sur Forex -
Strategie Options sur Devises - USDJPY ( Suivi 10 et fin )
P&L + 367267 JPY, environ + 3846 USD
Strategie Options sur Devises - USDJPY ( Suivi 8 )
- Les Stratégies Options sur Forex -
Strategie Options sur Devises - USDJPY ( Suivi 8 )
On ajuste !
Options Binaires : le delta pour les options binaires
- Warrants, Turbos, Options Binaires -
Options Binaires : le delta pour les options binaires
On a vu que la valeur d'une option binaire ressemblait "étrangement" au delta d'une option "classique". Qu'en est il de son delta ?