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 :-)).

Précédent : Le Modèle Trinomial : VBA Code

Duchêne
D'autres Fiches
Options sur actions - Point sur la Societe Generale
- Contact -
Options sur actions - Point sur la Societe Generale
Le bien être des spreads vis à vis des shorts put.
Ratio backspread sur le CAC 40 (suivi 6)
- Les Stratégies Options sur Actions et Indices -
Ratio backspread sur le CAC 40 (suivi 6)
Et la hausse continue sur le CAC 40, et la volatilité continue à baisser sur notre Ratio.
Définition simple d'une option
- ABC des Options -
Définition simple d'une option
Des termes simples pour expliquer ce qu'est une option sur les marchés financiers
Strategie Option cac40 - Suivi 3
- Les Stratégies Options sur Actions et Indices -
Strategie Option cac40 - Suivi 3
Butterfly sur le cac40 - Ça bouge et ça bouge pas...
Eur/USD: Suivi put spread (4)
- Les Stratégies Options sur Forex -
Eur/USD: Suivi put spread (4)
L'Eurodollar avait d'abord fléchi légèrement sous 1.30, ce qui avait valorisé le put spread
Strategie Options sur Devises - USDJPY ( Suivi 1 )
- Les Stratégies Options sur Forex -
Strategie Options sur Devises - USDJPY ( Suivi 1 )
On pensait que l'USDJPY bougerait, c'est parti !