From d637151c4acae4a06ffef927bf7ececd77d67a44 Mon Sep 17 00:00:00 2001 From: Bertrand Date: Sun, 21 Feb 2016 16:39:57 +0000 Subject: réorganisation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/opti.hpp | 13 +++++++++++++ src/option.hpp | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 src/opti.hpp create mode 100644 src/option.hpp diff --git a/src/opti.hpp b/src/opti.hpp new file mode 100644 index 0000000..e12d544 --- /dev/null +++ b/src/opti.hpp @@ -0,0 +1,13 @@ +#include +#include +#include +#include +#include + +double pos (double x); + +double f (const std::vector &X, std::vector &grad, void *params); + +std::vector argmax(double r, double T, double S0, double V, double K, int d); + + diff --git a/src/option.hpp b/src/option.hpp new file mode 100644 index 0000000..d104bd6 --- /dev/null +++ b/src/option.hpp @@ -0,0 +1,53 @@ +#include "rqmc.hpp" + +double frac_part(double x); + +double pos (double x); + +struct asian_option : public std::unary_function, 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 X) const { + std::vector S(d); + S[0]= S0*exp((r-V*V/2)*(T/d)+V*sqrt(T/d)*X[0]); + for(int i=1;i +struct quasi_option : public generator +{ + quasi_option(int n, int d, Fct payoff) : n(n), d(d), payoff(payoff), G(d) {}; + + typename Fct::result_type operator()() { + double sum =0; + for(int i=0; i G; + }; + -- cgit v1.2.3-70-g09d2