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 - Black Scholes en C++ 

Option Pricing - Black Scholes en C++

Publié le 22 Juillet 2019 par MAW
icone rss


Évaluer une option de type européen en C++

Un premier jet pour pricer une option de type européen en utilisant le C++ en utilisant Code:: Blocks par exemple (il y a bien d'autres IDE).
L'intérêt d'utiliser C++ est le fait de pouvoir par la suite créer des DLL afin de laisser C++ calculer et utiliser les résultats via Excel par exemple, on aura l'occasion d'y revenir.


#include < iostream >
#include < cmath >


double norm_pdf(const double& x) {
return (1.0/(pow(2*M_PI,0.5)))*exp(-0.5*x*x);

}

double norm_cdf(const double& x) {
double k = 1.0/(1.0 + 0.2316419*x);
double k_sum = k*(0.319381530 + k*(-0.356563782 + k*(1.781477937 + k*(-1.821255978 + 1.330274429*k))));

if (x >= 0.0) {
return (1.0 - (1.0/(pow(2*M_PI,0.5)))*exp(-0.5*x*x) * k_sum);

} else {
return 1.0 - norm_cdf(-x);

}

}

double d_j(const int& j, const double& S, const double& K, const double& r, const double& v, const double& T) {
return (log(S/K) + (r + (pow(-1,j-1))*0.5*v*v)*T)/(v*(pow(T,0.5)));

}

double call_price(const double& S, const double& K, const double& r, const double& v, const double& T) {
return S * norm_cdf(d_j(1, S, K, r, v, T))-K*exp(-r*T) * norm_cdf(d_j(2, S, K, r, v, T));

}

double put_price(const double& S, const double& K, const double& r, const double& v, const double& T) {
return -S*norm_cdf(-d_j(1, S, K, r, v, T))+K*exp(-r*T) * norm_cdf(-d_j(2, S, K, r, v, T));

}

int main(int argc, char **argv) {

double S = 100.0;
double K = 100.0;
double r = 0.06;
double v = 0.25;
double T = 1.0;

double call = call_price(S, K, r, v, T);
double put = put_price(S, K, r, v, T);

std::cout << "Sous-jacent: " << S << std::endl;
std::cout << "Prix d'exercice: " << K << std::endl;
std::cout << "Taux sans risque: " << r << std::endl;
std::cout << "Volat: " << v << std::endl;
std::cout << "Mat: " << T << std::endl;

std::cout << "Le Call vaut: " << call << std::endl;
std::cout << "Le Put vaut: " << put << std::endl;

return 0;

}


Le résultat donne :

Sous-jacent:100
Prix d'exercice:100
Taux sans risque:0.05
Volat:0.3
Mat:1
Le Call vaut:14.2312
Le Put vaut:9.35419




La suite : Option Pricing - Black Scholes En Python ou Option Pricing - Modele Trinomial En Python ou Option Pricing - Black Scholes En Java

MAW
D'autres Fiches
CAC 40 : risk-reversal delta-hedge suivi 3
- Les Stratégies Options sur Actions et Indices -
CAC 40 : risk-reversal delta-hedge suivi 3
- 4 % cette semaine et notre risk reversal delta hedgé a subi moins les variations de l'indice CAC 40 que les décalages des volatilités implicites.
Le strangle
- Stratégies Options Fondamentales -
Le strangle
Le strangle est une variante logique du straddle
Interprétation de N(d2) dans le modèle de Black-Scholes
- Modèles d'évaluation d'options -
Interprétation de N(d2) dans le modèle de Black-Scholes
Que signifie N(d2) dans le modèle Black & Scholes
Les turbo warrants pour les Nuls
- Warrants, Turbos, Options Binaires -
Les turbo warrants pour les Nuls
Les turbo warrants expliqués aux débutants
Arbitrage de volatilité : une première approche
- Stratégies Options Avancées -
Arbitrage de volatilité : une première approche
L'arbitrage de volatilité est un des types de trading à la base de la gestion alternative, des Hedge funds.
Gamma hedging : une première approche
- Hedging -
Gamma hedging : une première approche
Le delta hedging, permet d’immuniser un portefeuille d'options pour de petites variations du spot. Ce n'est pas forcément suffisant pour des variations plus grandes.