Evaluation d'options avec incertitude sur la volatilité

Dans ce projet on a étudié le problème de l'évaluation des options dans le cadre du modèle de Black-Scholes, lors qu'on ne connaît pas exactement la valeur de la volatilité du sous-jacent: on connait uniquement une borne supérieure et une borne inférieure, à l'intérieur des quelles elle peut se balader.

Il existe une méthode naïve qui permet aux traders (c'est eux qui décident le prix auquel on achètera ou on vendra) de gérer ce problème (on fait le cas de la vente d'un call).

Si la volatilité augmente, le prix d'un call augmente!

Alors, un trader qui connaît uniquement la borne supérieure, pour ne pas avoir de mauvaises surprises, utilisera sans doute cette valeur-ci pour évaluer l'option: le vrai prix ne peut être inférieur et donc il ne va pas perdre de l'argent.

Avec cette méthode il est très simple d'analyser ce qui se passe lors que ce même trader veut vendre un call spread (achat d'un call strike K1 et vente d'un call strike K2).

Prix de vente du call spread = prix de vente du call K1 - prix d'achat du call K2

Le but de ce trader est celui de ne pas perdre de l'argent pour toute volatilité (bien sur, à l'intérieur des bornes): il utilisera la borne supérieure pour le prix de vente du call K1 et la borne inférieure pour le prix d'achat du call K2.

Avec ce prix le trader est sûr de couvrir (même de surcouvrir) la vente du call spread!

lacoste

Les lignes jaune et rouge sont les prix d'achat et de vente du call spread, calculés avec la méthode naïve. On a un bid-ask spread très important et des prix qui parfois ne permettent pas de vendre ou acheter le produit (lors que la ligne jaune passe en dessous de 0 ou que la ligne rouge dépasse 0.20).

Non convexité du portefeuille

Comme la convexité de ce portefeuille (le payoff) n'est pas constante, on pourrait essayer d'améliorer ce prix: c'est à dire trouver des prix d'achat et de vente plus proches entre eux (= réduire le bid-ask spread) qui permettent quand même une couverture.

Dans l'article on étudie une méthode de réduir le bid-ask spread, tout en gardant la couverture et la cohérence des prix: au lieu de calculer les deux prix séparément on considère le payoff global du call spread et on utilise à la fois la borne supérieure et à la fois la borne inférieure selon la convexité du payoff. On ne pourra plus utiliser la formule fermée de Black-Scholes, mais on devra résoudre une EDP où le coefficient de volatilité dépend de la valeur du sous-jacent (ou mieux de sa convexité).

Barrière

On a utilisé la même méthode pour analyser des options avec barrières, notamment le cas d'un call up&out. On a comparé le hedging basé sur le delta standard (option plain vanilla) et lors qu'on on utilise le vrai delta (celui du prix barrière).

On a vu les résultats les plus interessants pour des trajectoires du sous-jacent qui se rapprochent de la barrière, mais qui ne la depassent pas. C'est là que le gap entre les 2 deltas est le plus important.

Résultats

lacoste

On a vu que la méthode étudiée permet de réduir le bid-ask spread (lignes bleu et violet dans la première image) sans perdre la couverture

lacoste

La ligne bleue représente la couverture traditionnelle à partir du prix naïve: elle surcouvre beaucoup, mais (comme on a déjà vu) cela grâce à des prix trop chers.

Source code

Le source code en C++ (j'ai utilisé Borland C++ 5.5) sert uniquement pour voir et étudier l'implémentation informatique des méthodes étudiées: il n'y a aucune interface graphique. Je crois que dans quelque temps j'écrirai une interface graphique (peut-être avec GTK+ ou Qt pour Linux), mais comme il y a pas mal de calculs à faire, il me faut un ordinateur puissant...

Les deux versions (Linux et Win9x) ontété modifiées de facon à lire les paramètres d'un fichier. Dans l'archive zip il y a un fichier de configuration qui peut vous servir comme example (la méthode est différente dans les deux OS). Il faut que tous les paramètres soient présents. On utilise ce programme: options ficher_parametres et il stocke les résultats dans les fichiers spread.txt et hedge.txt.

Essayez de voir ce qui se passe si vous créez un portefeuille ou vous étes long d'un call et short du meme call...

[calls]
1.00=1
1.00=-1

Download  
Article en format DVI options.zip
Article en format PDF options.pdf
Code en C++ (C++ Builder) options.src.zip
Code en C++ (GCC) options.tar.gz

Il faut que je remercie Rémy Ripoll qui a travaillé avec moi sur ce projet. (PS: essaye de me contacter!)