Modèle de Black-Scholes-Merton en Python

Le modèle Black-Scholes ou modèle Black-Scholes-Merton qui est un modèle mathématique du marché pour une action, dans lequel le prix de l’action est un processus stochastique en temps continu ; par opposition au modèle Cox Ross-Rubinstein (présenté ici) qui suit un processus stochastique en temps discret.

Ce modèle repose sur les hypothèses suivantes :

  • Il n’y a pas d’opportunités d’arbitrage ;
  • Le temps est une fonction continue ;
  • Il est possible d’effectuer des ventes à découvert ;
  • Il n’y a pas de coûts de transactions ;
  • Il existe un taux d’intérêt sans risque, connu à l’avance et constant ;
  • Tous les sous-jacents sont parfaitement divisibles (on peut par exemple acheter 1/100e d’action) ;
  • Dans le cas d’une action, celle-ci ne paie pas de dividendes* entre le moment de l’évaluation de l’option et l’échéance de celle-ci.

Après avoir implémenté le modèle CRR, il était pour moi impossible de ne pas faire de même pour le modèle de Black-Scholes-Merton !

* Une extension du modèle permet de prendre en compte les dividendes, elle a été implémenté également.

CRR Pricer

En finance, le modèle binomial (ou modèle CRR du nom de ses auteurs) fournit une méthode numérique pour l’évaluation des options. Il a été proposé pour la première fois par Cox, Ross et Rubinstein (1979).

La méthode binomiale utilise un « cadre à temps discret » pour retracer l’évolution de l’actif sous-jacent, via un arbre, pour un nombre donné de « pas » qui correspond au temps entre la date d’évaluation et celle de l’expiration de l’option. Chaque nœud de l’arbre (intersection entre deux branches de l’arbre) est un prix possible du sous-jacent à un moment précis dans le temps. Cette évolution des prix constitue la base de l’évaluation des options.

p, la probabilité risque-neutre, u pour up, d pour down.

Le processus d’évaluation est itératif. On part du nœud final de chaque branche et ensuite on « remonte » jusqu’au premier nœud (date d’évaluation), où le résultat du calcul est la valeur de l’option.

Je me suis amusé à implémenter ce pricer (Pour les options européennes) en Python, le code visible ci-dessous.

Le pricer fournit le prix à la fois pour un Call, et pour un Put .

Problème de Monty Hall

Le problème de Monty Hall est un casse-tête probabiliste librement inspiré du jeu télévisé américain Let’s Make a Deal.

Il porte le nom de celui qui a présenté ce jeu aux États-Unis pendant treize ans, Monty Hall.

Le jeu oppose un présentateur à un candidat (le joueur). Ce joueur est placé devant trois portes fermées. Derrière l’une d’elles se trouve une voiture et derrière chacune des deux autres se trouve une chèvre. Il doit tout d’abord désigner une porte. Puis le présentateur doit ouvrir une porte qui n’est ni celle choisie par le candidat, ni celle cachant la voiture (le présentateur sait quelle est la bonne porte dès le début). Le candidat a alors le droit d’ouvrir la porte qu’il a choisie initialement, ou d’ouvrir la troisième porte.

Illustration du problème de Mounty Hall

Les questions qui se posent au candidat sont :

  • Que doit-il faire ?
  • Quelles sont ses chances de gagner la voiture ?

Les stratégies :

Initialement, le joueur peut choisir entre deux stratégies :

  • Changer de porte 
  • Ne pas changer de porte

Au début, on pourrait penser qu’en changeant de porte, on se ramène au jeu initiale mais avec uniquement 2 choix (donc 2 portes) ce qui fait une probabilité de 1/2 de gagner, peu importe le choix.

Cette réflexion est consultable ici.

Néanmoins, on peut démontrer mathématiquement, et de plusieurs manières, que le joueur en changeant de porte, augmente et voit ses chances de gagner passer de 1/3 à 2/3

Aussi contre-intuitif que cela puisse paraître, c’est bien vrai, et on peut s’en convaincre de façon informatique, en simulant des milliers de parties jouées !

Ce bout de code Python, illustre le propos précédent, en changeant de porte le joueur gagne deux fois plus souvent qu’en gardant son choix initial.

Le code source peut être consulté dans son intégralité sur mon compte GitHub

La démonstration mathématique est rigoureusement bien faite sur Wikipédia