aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorBertrand <bertrand.horel@gmail.com>2016-04-21 00:23:19 +0200
committerBertrand <bertrand.horel@gmail.com>2016-04-21 00:23:19 +0200
commit778a4f66c76a02a2c800e0d4bb8b05a03b14497f (patch)
tree5f49cb5b44f12cdd966c854e9bb308c9d486ed65 /src
parent4e47ed01199bf1fa6d76228a85f87929db46bee3 (diff)
downloadprojet_C++-778a4f66c76a02a2c800e0d4bb8b05a03b14497f.tar.gz
modif argmax
Diffstat (limited to 'src')
-rw-r--r--src/opti.cpp2
-rw-r--r--src/projet.cpp25
2 files changed, 15 insertions, 12 deletions
diff --git a/src/opti.cpp b/src/opti.cpp
index 7f838e9..efe5643 100644
--- a/src/opti.cpp
+++ b/src/opti.cpp
@@ -34,7 +34,7 @@ std::vector<double> argmax(double r, double T, double S0, double V, double K, in
opt.set_xtol_rel(1e-4);
- std::vector<double> x(d,0);
+ std::vector<double> x(d,1);
std::vector<double> g(0);
double maxf;
diff --git a/src/projet.cpp b/src/projet.cpp
index 205e362..241ab0b 100644
--- a/src/projet.cpp
+++ b/src/projet.cpp
@@ -77,33 +77,37 @@ std::vector<double> normalize (std::vector<double> mu) {
vector <vector<double> > exemple2_stratified (int d){
std::vector<double> mu(d);
- vector<int> K = {45, 50, 55};
+ vector<double> K = {45, 50, 55};
vector<int> N = {100000, 400000, 500000};
vector< vector<double> > data(3);
+ vector<double> q = quantile_norm(100, 1);
+ vector<double> p(100, 0.01);
+ double r = 0.05;
+ double T = 1.0;
+ double S0 = 50;
+ double V = 0.1;
+ typedef compose_t<exponential_tilt<asian_option>, multi_gaussian_truncated> tilted_option;
for (int i=0; i<3; i++){
- mu = argmax(0.05, 1.0, 50, 0.1, K[i], d);
+ mu = argmax(r, T, S0, V, K[i], d);
std::vector<double> u(d);
u = normalize(mu);
- vector<double> q = quantile_norm(100, 1);
- vector<double> p(100, 0.01);
- asian_option A(0.05, 1.0, 50, 0.1, K[i], true);
+ asian_option A(r, T, S0, V, K[i], true);
exponential_tilt<asian_option> G(mu, A);
- typedef compose_t<exponential_tilt<asian_option>, multi_gaussian_truncated> tilted_option;
std::vector<tilted_option> X;
X.push_back(compose(G, multi_gaussian_truncated(GSL_NEGINF,q[0], u)));
- for(int j=1; j<100; i++) {
+ for(int j=1; j<100; j++) {
X.push_back(compose(G, multi_gaussian_truncated(q[j-1],q[j], u)));
}
stratified_sampling<tilted_option> S(p, X);
vector<double> r(3, 0);
- for (int j=0; j<3; i++){
+ for (int j=0; j<3; j++){
S.draw(N[j]);
}
r[0] = K[i];
r[1] = S.estimator().first;
r[2] = S.estimator().second;
data[i] = r;
- for(int j=0; i<3; i++){cout<<data[i][j]<<endl;};
+ for(int j=0; j<3; j++){cout<<data[i][j]<<endl;};
}
return data;
}
@@ -111,7 +115,6 @@ std::vector<double> normalize (std::vector<double> mu) {
void exemple2_rqmc(int d) {
asian_option A(0.05, 1.0, 50.0, 0.1, 45,true);
int N= 10000;
-
std::vector<double> result(3);
result = monte_carlo(100, quasi_mean<asian_option, sobol> (N, d, A));
@@ -143,7 +146,7 @@ int make_table1(vector< vector<double> > data1, vector< vector<double> > data2)
int main()
{
- init_alea(1);
+ init_alea(2);
//~ cout<<gsl_cdf_gaussian_Pinv(0.975,1)<<endl;
//~ cout<<"Stratified_sampling sur l'exemple 1 de la normale"<<endl;
//~ vector< vector<double> > data1 = exemple1_stratified();