#include #include #include "var_alea.hpp" #include #include struct option_param { double r; double T; double S0; double V; int d; }; std::vector path_gen(std::vector X, option_param *p){ std::vector S(p->d); S[0]= p->S0; for(int i=1;id;i++){ S[i]=S[i-1]*exp((p->r-p->V*p->V/2)*(p->T/p->d)+p->V*sqrt(p->T/p->d)*X[i]); } return S; } double mean_monte_carl(option_param* p, int N){ double moyenne=0; gaussian G; std::vector S(p->d); std::vector X(p->d); for(int i=1; id;i++){ X[i]=G(); } S=path_gen(X, p); moyenne+=std::accumulate(S.begin(), S.end(), 0 ); } return moyenne/N; } int main(){ init_alea(0); option_param* p = {.r=0.05, .T=1.0, .S0=50.0, .V=0.1, .d=16}; int N=1000000; double moyenne = mean_monte_carl(p, N); std::cout<