00001 #if !defined (STOCHASTIC_PROCESS_H)
00002 #define STOCHASTIC_PROCESS_H
00003
00004 #include "distributed_data.h"
00005 #include "random_number.h"
00006
00007 class GBM{
00008 private:
00009 const int num_samples;
00010 const int dim;
00011 const double* Xo;
00012 const double* mu;
00013 const double* sigma;
00014 RandomNumber** Z;
00015 double** Zptr;
00016 double* sig_squared;
00017
00018 public:
00019 GBM(int num_samples, int dim, double* Xo, double* mu, double* cov);
00020 ~GBM();
00021 double outcome(int sample_indx, int dim_indx, double Time) const;
00022 };
00023
00024 class Option{
00025 protected:
00026 const double strike;
00027 const double time;
00028 const double r;
00029 const int dim;
00030 const double* So;
00031 const double* sigma;
00032 RandomNumber* mc_outcomes;
00033
00034 public:
00035 Option(double strike, double time, double r,
00036 int dim, double* So, double* sigma);
00037 virtual double call() {return 0;}
00038 };
00039
00040 class VanillaOption:public Option{
00041 public:
00042 VanillaOption(double strike, double time, double r, double* So, double* sigma);
00043 double call_MC(int num_samples);
00044 double call_BS();
00045 double call(){return VanillaOption::call_BS();}
00046 };
00047
00048 class BasketOption:public Option{
00049 public:
00050 double call(int num_samples);
00051 };
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073 #endif