aboutsummaryrefslogtreecommitdiffstats
path: root/src/option.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/option.cpp')
-rw-r--r--src/option.cpp24
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;
}
-
-
-
-
-
-
-
-