File tree 3 files changed +27
-28
lines changed
geometric-brownian-motion 3 files changed +27
-28
lines changed Original file line number Diff line number Diff line change 78
78
}
79
79
}
80
80
return 0 ;
81
- }
81
+ }
Original file line number Diff line number Diff line change 40
40
int
41
41
main ()
42
42
{
43
- int NoOfPaths = 25 ;
44
- int NoOfSteps = 500 ;
45
- int T = 1 ;
46
- double r = 0.05 ;
47
- double sigma = 0.4 ;
43
+ int NoOfPaths = 25 ;
44
+ int NoOfSteps = 500 ;
45
+ int T = 1 ;
46
+ double r = 0.05 ;
47
+ double sigma = 0.4 ;
48
48
double sigma2 = pow (sigma ,2 );
49
- int S_0 = 100 ;
49
+ int S_0 = 100 ;
50
50
double muPath = 0 ;
51
51
double sigmaPath = 1.0 ;
52
52
double dt = (double )T / NoOfSteps ;
@@ -71,15 +71,14 @@ main()
71
71
72
72
for (int j = 0 ; j < NoOfPaths ; j ++ )
73
73
{
74
- for (int i = 0 ; i < NoOfSteps ; i ++ )
75
- {
76
- Z [j ][i ] = gsl_ran_gaussian (R , sigmaPath ) + muPath ;
77
- X [j ][i + 1 ] = X [j ][i ] + b1dt + sigma * rootdt * Z [j ][i ];
78
- S [j ][i + 1 ] = exp (X [j ][i + 1 ]);
74
+ for (int i = 0 ; i < NoOfSteps ; i ++ )
75
+ {
76
+ Z [j ][i ] = gsl_ran_gaussian (R , sigmaPath ) + muPath ;
77
+ X [j ][i + 1 ] = X [j ][i ] + b1dt + sigma * rootdt * Z [j ][i ];
78
+ S [j ][i + 1 ] = exp (X [j ][i + 1 ]);
79
79
}
80
80
}
81
81
82
82
gsl_rng_free (R );
83
-
84
83
return 0 ;
85
84
}
Original file line number Diff line number Diff line change 39
39
int
40
40
main ()
41
41
{
42
- int NoOfPaths = 25 ;
43
- int NoOfSteps = 500 ;
44
- int T = 1 ;
45
- double r = 0.05 ;
46
- double sigma = 0.4 ;
42
+ int NoOfPaths = 25 ;
43
+ int NoOfSteps = 500 ;
44
+ int T = 1 ;
45
+ double r = 0.05 ;
46
+ double sigma = 0.4 ;
47
47
double sigma2 = pow (sigma,2 );
48
- int S_0 = 100 ;
48
+ int S_0 = 100 ;
49
49
double dt = (double )T / NoOfSteps;
50
50
double rootdt = pow (dt, 0.5 );
51
51
double b1 = r - 0.5 * sigma2;
52
52
double b1dt = b1*dt;
53
-
54
- std::random_device rd{};
55
- std::mt19937 gen{rd ()};
56
- std::normal_distribution<> d1{0.0 , 1.0 };
53
+
54
+ std::random_device rd{};
55
+ std::mt19937 gen{rd ()};
56
+ std::normal_distribution<> d1{0.0 , 1.0 };
57
57
58
58
double Z[NoOfPaths][NoOfSteps];
59
59
double X[NoOfPaths][NoOfSteps+1 ];
@@ -66,11 +66,11 @@ main()
66
66
67
67
for (int j = 0 ; j < NoOfPaths ; j++)
68
68
{
69
- for (int i = 0 ; i < NoOfSteps ; i++)
70
- {
71
- Z[j][i] = d1 (gen);
72
- X[j][i+1 ] = X[j][i] + b1dt + sigma * rootdt*Z[j][i];
73
- S[j][i+1 ] = exp (X[j][i+1 ]);
69
+ for (int i = 0 ; i < NoOfSteps ; i++)
70
+ {
71
+ Z[j][i] = d1 (gen);
72
+ X[j][i+1 ] = X[j][i] + b1dt + sigma * rootdt*Z[j][i];
73
+ S[j][i+1 ] = exp (X[j][i+1 ]);
74
74
}
75
75
}
76
76
return 0 ;
You can’t perform that action at this time.
0 commit comments