Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- double* Option::Pricer() {
- int n = 100;
- double r = this->r;
- double sigma = this->sigma;
- double K = this->K;
- double T = this->T;
- double S = this->S;
- double q = this->q;
- OptionType Type = this->Type;
- double* S_Array = new double[n];
- double* P_Array = new double[n];
- double* Time = new double[n];
- double deltaT = T / 100;
- double t = 0;
- for (int i = 0; i < n; i++) {
- Time[i] = t;
- t += deltaT;
- }
- S_Array[0] = S;
- for (int i = 1; i < n; i++) {
- double RAND = ((double)rand()) / ((double)RAND_MAX);
- double RANDN = sqrt(-2.0 * log(RAND)) * cos(2 * M_PI * RAND);
- double Z = RANDN;
- double Coefficient = (r - (pow(sigma, 2) / 2)) * (Time[i] - Time[i - 1]) + (sigma * sqrt(Time[i] - Time[i - 1]) * Z);
- S_Array[i] = S_Array[i - 1] * exp(Coefficient);
- }
- for (int i = 0; i < n; i++) {
- P_Array[i] = this->Payoff(S_Array[i]);
- }
- delete[] S_Array;
- delete[] Time;
- return P_Array;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement