diff options
| author | Guillaume Horel <guillaume.horel@serenitascapital.com> | 2016-02-18 18:12:05 -0500 |
|---|---|---|
| committer | Guillaume Horel <guillaume.horel@serenitascapital.com> | 2016-02-19 14:58:18 -0500 |
| commit | 34996b9f0db9b665661380946f3acf4997bac7b0 (patch) | |
| tree | e006060adc17a8f56e4ac00f7a780a308b270a71 | |
| parent | 27bc125063b58fb5d271ec124340dd3fcac44145 (diff) | |
| download | projet_C++-34996b9f0db9b665661380946f3acf4997bac7b0.tar.gz | |
reorganize repo
| -rw-r--r-- | src/option.cpp | 24 |
1 files changed, 7 insertions, 17 deletions
diff --git a/src/option.cpp b/src/option.cpp index 0e5a56c..38c91ff 100644 --- a/src/option.cpp +++ b/src/option.cpp @@ -15,7 +15,7 @@ struct asian_option : public std::unary_function<std::vector<double>, double> { asian_option(double r, double T, double S0, double V, int d, double K) : r(r), T(T), S0(S0), V(V), d(d), K(K) {}; - + double operator()(std::vector<double> X) const { std::vector<double> S(d); S[0]= S0*exp((r-V*V/2)*(T/d)+V*sqrt(T/d)*X[0]); @@ -25,7 +25,7 @@ struct asian_option : public std::unary_function<std::vector<double>, double> double temp = std::accumulate(S.begin(), S.end(), 0.)/d; return exp(-r*T)*pos(temp-K); }; - + private: double r; double T; @@ -34,8 +34,8 @@ struct asian_option : public std::unary_function<std::vector<double>, double> int d; double K; }; - - + + template <typename Fct, typename LDS> @@ -51,7 +51,7 @@ struct quasi_option : public generator<typename Fct::result_type> } return sum/n; }; - + private: int n, d; Fct payoff; @@ -60,7 +60,8 @@ struct quasi_option : public generator<typename Fct::result_type> int main(){ init_alea(1); - asian_option A(0.05, 1.0, 50.0, 0.1, 16, 45); + int d = 64; + asian_option A(0.05, 1.0, 50., 0.1, d, 45); int N= 10000; int d =16; @@ -77,16 +78,5 @@ int main(){ for(int i =0; i<3; i++){ std::cout<<result[i]<<std::endl; } - - - return 0; } - - - - - - - - |
