Voici le code :
#include "stdafx.h" #include<iostream> #include <stdio.h> #include <stdlib.h> #include <time.h> #include <math.h> using namespace std; double monte_carlo(double , double , double, double, double ); int main() { double vol,d,prix,strike,nb_traj; cout<<"Entrer la valeur du prix actuel"<<endl; cin>>prix; cout<<"Entrer la vol"<<endl; cin>>vol; cout<<"Entrer la date d'expiration"<<endl; cin>>d; cout<<"entrer le strike"<<endl; cin>>strike; cout<<"Entrer le nombre d'iterations souhaitees : "<<endl; cin>>nb_traj; cout<<monte_carlo(vol,d,prix,strike,nb_traj)<<endl; return 0; } double monte_carlo(double vol, double date_expiration, double prix_actu,double strike,double nb_traj ) { int compteur=0; double date=date_expiration/365,call; float moy; long double Sum=0.0; while(compteur<=nb_traj) { double u1,u2,z1,w1,s1; u1=(rand() % 101)/100.0; u2=(rand() % 101)/100.0; z1=sqrt(-2*log(u1))*cos(2*3.1415926535897932384*u2); w1=z1*sqrt(date); s1=prix_actu*exp((-vol*vol*date*0.5)+vol*w1); if(s1-strike>0) { call=s1-strike; } else { call=0.0; } Sum+=call; compteur+=1; } return Sum/nb_traj; }
|