From 97936197c500283db5e73959ef2d2c69b05a5ac3 Mon Sep 17 00:00:00 2001 From: Bertrand Date: Sun, 14 Feb 2016 18:17:56 +0000 Subject: réécriture avec une structure paramètres MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- option.cpp | 42 +++++++++++++++++++----------------------- 1 file changed, 19 insertions(+), 23 deletions(-) diff --git a/option.cpp b/option.cpp index 5caf23f..87aeca6 100644 --- a/option.cpp +++ b/option.cpp @@ -4,32 +4,33 @@ #include #include -double r; -double T; -double S0; -double V; -int d; +struct option_param { + double r; + double T; + double S0; + double V; + int d; +}; -std::vector path_gen(std::vector X){ - d=X.size(); - std::vector S(d); - S[0]= S0; - for(int i=1;i 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(double r, double T, double S0, double V, int N, int d){ +double mean_monte_carl(option_param* p, int N){ double moyenne=0; gaussian G; - std::vector S(d); - std::vector X(d); + std::vector S(p->d); + std::vector X(p->d); for(int i=1; id;i++){ X[i]=G(); } - S=path_gen(X); + S=path_gen(X, p); moyenne+=std::accumulate(S.begin(), S.end(), 0 ); } return moyenne/N; @@ -37,15 +38,10 @@ double mean_monte_carl(double r, double T, double S0, double V, int N, int d){ int main(){ init_alea(0); - double r=0.05; - double T=1.0; - double S0=50.0; - double V=0.1; - int d=16; + 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(r, T, S0, V, N, d); + double moyenne = mean_monte_carl(p, N); std::cout<