Advertisement
Guest User

Untitled

a guest
Dec 5th, 2019
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.96 KB | None | 0 0
  1. double* Option::Pricer() {
  2.  
  3. int n = 100;
  4. double r = this->r;
  5. double sigma = this->sigma;
  6. double K = this->K;
  7. double T = this->T;
  8. double S = this->S;
  9. double q = this->q;
  10. OptionType Type = this->Type;
  11.  
  12. double* S_Array = new double[n];
  13. double* P_Array = new double[n];
  14. double* Time = new double[n];
  15.  
  16. double deltaT = T / 100;
  17. double t = 0;
  18. for (int i = 0; i < n; i++) {
  19.  
  20.  
  21. Time[i] = t;
  22. t += deltaT;
  23.  
  24. }
  25.  
  26. S_Array[0] = S;
  27. for (int i = 1; i < n; i++) {
  28.  
  29. double RAND = ((double)rand()) / ((double)RAND_MAX);
  30. double RANDN = sqrt(-2.0 * log(RAND)) * cos(2 * M_PI * RAND);
  31.  
  32. double Z = RANDN;
  33.  
  34. double Coefficient = (r - (pow(sigma, 2) / 2)) * (Time[i] - Time[i - 1]) + (sigma * sqrt(Time[i] - Time[i - 1]) * Z);
  35.  
  36. S_Array[i] = S_Array[i - 1] * exp(Coefficient);
  37.  
  38.  
  39. }
  40.  
  41. for (int i = 0; i < n; i++) {
  42.  
  43.  
  44. P_Array[i] = this->Payoff(S_Array[i]);
  45.  
  46. }
  47.  
  48.  
  49. delete[] S_Array;
  50. delete[] Time;
  51. return P_Array;
  52.  
  53.  
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement