2015/4/13 10:56 0 0.1 http://cm.hit-u.ac.jp/~kobayashi/lecture/ 0.2 C C C C John C. Hull,, Steven E. Shreve, (1, Peter E. Kloeden, Eckhard Platen Numerical Solution of Stochastic Differential Equations, Springer,,,,,,, 1
0.3 C C++ C C++ Borland C++ Compiler http://www.embarcadero.com/jp/products/cbuilder/free-compiler MinGW Visual Studio Cygwin Windows Linux C++ Linux Open Watcom C/C++ Digital Mars C/C++ Compilers Mac Windows Linux 0.4 gnuplot http://www.gnuplot.info/ Download from SourceForge Download 32bit gp***-win32-setup.exe 64 gp***-win64-setup.exe *** 2
0.5 Windows Terapad 3
1 µ, σ 2 X 1, X 2, S n = X 1 + X 2 + + X n nµ nσ 2 σ 2 lim P a n ( Sn nµ nσ = 1 2π a e x2 /2 dx 2 X, Y f X, f Y Z = X + Y f Z f Z f X f Y f Z (x = f X (tf Y (x tdt 1.1 X Y h Z = X + Y Fourier f X Fourier φ X (z = e izx f X (xdx Fourier izx Y Z Fourier φ Z (z = φ X (zφ Y (z Z Z Fourier X Fourier Y Fourier 1.2 4
e izx f X (xdx e izx X E[e izx ] X φ X (z = E[e izx ] X E[e izz ] = E[e iz(x+y ] = E[e izx e izx ] = E[e izx ]E[e izy ] φ Z (z = φ X (zφ Y (z 1.3 P (X = 0 = p, P (X = 1 = q = 1 p Bernoulli 1.4 [0, 1] 1.5 X 1, X 2, µ, σ 2 Y n = S n nµ nσ E[e izyn ] = E[e iz(sn nµ/( nσ ] n = E[e iz(x k µ/( nσ ] k=1 ( = E[e iz(x 1 µ/( n nσ ] ( [ = E 1 + iz(x ] 1 µ z2 (X 1 µ 2 n + R nσ 2nσ 2 n n = (1 z2 2n + ER n e z2 /2 R n n 3/2 1.6 5
2 2.1 r S S 0 S 0 1 99 S H 1 S L V V 1 S S H V H 1 S S L V L V 0 V 0 V 99 V H 0 V H V H 1 + r 0 S V H V L S HV L S L V H S H S L (1 + r(s H S L V 0 V H V L S 0 + S HV L S L V H S H S L (1 + r(s H S L V 0 V 0 S V 0 V 0 = 1 1 + r ( (1 + rs0 S L V H + S H (1 + rs 0 V L S H S L S H S L V 0 p = (1 + rs 0 S L S H S L q = S H (1 + rs 0 1 r S H S L S ps H + qs L = (1 + rs 0 S L S H S L S H + S H (1 + rs 0 S H S L S L = (1 + rs 0 6
2.2 x M > 0 f(x < M g(x f(x = O(g(x O( cos x = O(1 sin x = O(x e x 1 x = O(x 2 x 3 = O(x 2 1 1 + x = 1 x + x2 + O(x 3 O(x s x s 2.3 1 σ t = 0 t = T r 7
M = T M, t m = m S p us q = 1 p ds u > 1 > d > 0 d = 1/u p, u r e r pu + qd = e r p + q = 1 p = er d u d, q = u er u d log S σ 2 p(log u r 2 + q(log d r 2 = σ 2 p, q (e r d(log u r 2 + (u e r (log d r 2 = (u dσ 2 log u = ε, log d = ε (e r e ε (ε r 2 + (e ε e r ( ε r 2 = (e ε e ε σ 2 2(e ε + e ε 2e r εr = (e ε e ε (σ 2 r 2 2 ε 2 ε 2(ε 2 2r + O(ε 4 + O( 2 εr = (2ε + ε3 3 + O(ε5 (σ 2 ε 2 + O( 2 2ε 2 r = 2σ 2 (2 + O(ε 2 + O(ε 4 + O( 2 ε 2 = σ2 + O(ε 4 + O( 2 1 + O( = σ 2 + O(ε 4 + O( 2 8
ε = σ 2 + O(ε 4 + O( 2 = σ + O( 1/2 ε 4 + O( 3/2 ε = σ O( 1/2 ε 4 + O( 3/2 = O( 3/2 ε O( x x x x x u = e σ, d = e σ, p = er d u d, q = u er u d Cox, Ross and Rubinstein(1979 O( Taylor 2.1 d = 1/u p = q = 1 u d 2 S n = S 0 e nσ t m = m S n Y m,n t = t m t = t m+1 Y m,n = e r (py m+1,n+1 + qy m+1,n 1 t = t M t = 0 Y m,n t = 0 S N S N t = M S (M+N S M+N 2.2 t = 0 9
2.3 t = 0 t = 0 1 2 1 t = 0 2 t 1 Y 1, 1 Y 1,1 Y 1,0 C double yy[1001]; double *y; y = yy + 500; y[-500] y[500] t = t m t = t m+1 f(s ( Y m,n = max e r (py m+1,n+1 + qy m+1,n 1, f(s n 2.4 t = 0 2.5 t = 0 10
3 a n a n = a + cλ n + o(λ n a n = λa n+1 a n λ 1 a n = a + o(λ n Richardson Richardson Richardson λ λ Aitken 3.1 π 4 = 1 1 3 + 1 5 1 7 + 1 9 a n = 4 2 n k=0 ( 1 k 2k + 1 a 0, a 16 Richardson π 3.2 Richardson 2 n a n λ 2 4 2 1 4 1 Richardson 4 Black-Scholes Y m,n = e r (py m+1,n+1 + qy m+1,n 1 11
Y m+1,n Y m,n = Y m+1,n e r (py m+1,n+1 + qy m+1,n 1 ( 1 = Y m+1,n e r 2 (Y m+1,n+1 + Y m+1,n 1 + p q 2 (Y m+1,n+1 Y m+1,n 1 = (1 e r Y m+1,n ( 1 e r 2 (Y m+1,n+1 2Y m+1,n + Y m+1,n 1 + p q 2 (Y m+1,n+1 Y m+1,n 1 Y m+1,n Y m,n = 1 e r Y m+1,n e r ( 1 2 (Y m+1,n+1 2Y m+1,n + Y m+1,n 1 + p q 2 (Y m+1,n+1 Y m+1,n 1 s = log S 0 Y m+1,n Y m,n Y t 1 e r Y m+1,n ry 1 2 (Y m+1,n+1 2Y m+1,n + Y m+1,n 1 = σ2 2 Ym+1,n+1 2Y m+1,n + Y m+1,n 1 (σ 2 σ2 2 2 Y s = σ2 S 2 2 Y 2 2 p q 2 (Y m+1,n+1 Y m+1,n 1 = S + σ2 S 2 2 Y S (p qσ = (2er u dσ (u d Ym+1,n+1 Y m+1,n 1 2(σ (r σ2 Y (r 2 s = σ2 S Y 2 S Ym+1,n+1 Y m+1,n 1 2(σ 2 Y t = S 2 σ2 2 2 Y Y rs S2 S + ry Black-Scholes Black-Scholes 12
5 5.1 S n = S 0 e nσ t m = m S n1 S n2 Y m,n1,n 2 n 1 n 2 { e r (py m+1,n1 +1,n 1 +1 + qy m+1,n1 1,n 1 (n 1 = n 2 Y m,n1,n 2 = e r (py m+1,n1 +1,n 2 + qy m+1,n1 1,n 2 (n 1 < n 2 t = 0 S N S N t = M S (M+N S M+N 0 S N S M+N 5.1 t = 0 2 int main({ double yy[2000][2000];... } 13
double yy[2000][2000]; int main({... } int main({ static double yy[2000][2000];... } static C int m; double *a; m = 1000; a = (double*malloc(m*sizeof(double; // a[0] a[m-1] free(a; // 1 int i; int m, n; double **a; m = 1000; n = 1000; a = (double**malloc(m*sizeof(double*; a[0] = (double*malloc(m*n*sizeof(double; for (i=1; i<m; i++{ a[i] = a[i-1] + n;} // a[0][0] a[m-1][n-1] free(a[0]; // free(a; 14
2 C++ 1 int m; double *a; m = 1000; a = new double[m]; // a[0] a[m-1] delete[] a; // 2 int i; int m, n; double **a; m = 1000; n = 1000; a = new double*[m]; a[0] = new double[m*n]; for (i=1; i<m; i++{ a[i] = a[i-1] + n;} // a[0][0] a[m-1][n-1] delete[] a[0]; // delete[] a; C++.cpp 15
5.2 S n = S 0 e nσ 0 t m = m S n1 S n2 Y m,n1,n 2 t m = m S n1 S n2 t m+1 = (m + 1 p S n1 +1 q S n1 1 p A = (m + 1S n 2 + S n1 +1 q B = (m + 1S n 2 + S n1 1 m + 2 m + 2 A B t m t m+1 t m+1 ( Y m,n1,n 2 = e {p r Sna+1 A Y m+1,n1 +1,n S na+1 S a + na +q ( Snb +1 B S nb +1 S nb Y m+1,n1 1,n b + A S n a S na+1 S na Y m+1,n1 +1,n a+1 A = (m + 1S n 2 + S n1 +1, S na A < S na+1, m + 2 B = (m + 1S n 2 + S n1 1, S nb B < S nb +1. m + 2 B S n b S nb +1 S nb Y m+1,n1 1,n b +1 }, t = 0 S N S N t = M S (M+N S M+N 0 S M+N S M+N 5.2 t = 0 16
6 U V U V σ 1, σ 2 U, V U n = U 0 e nσ 1, V n = V 0 e nσ 2 t m = m U n1, V n2 Y m,n1,n 2 U p 1 q 1 V p 2 q 2 u 1 = e σ 1, d 1 = e σ 1, p 1 = er d 1, q 1 = u 1 e r u 1 d 1 u 1 d 1 u 2 = e σ 2, d 2 = e σ 1, p 2 = er d 2, q 2 = u 2 e r u 2 d 2 u 2 d 2 Y m,n1,n 2 = e r (p 1 p 2 Y m+1,n1 +1,n 2 +1 + p 1 q 2 Y m+1,n1 +1,n 2 1 + q 1 p 2 Y m+1,n1 1,n 2 +1 + q 1 q 2 Y m+1,n1 1,n 2 1 t = 0 U N1 U N1 V N2 V N2 t = M U (M+N1 U M+N1 V (M+N2 V M+N2 6.1 2 t = 0 6.2 t = 0 6.3 t = T/2 t = 0 17
7 2 Black-Scholes Y t = S 2 σ2 2 2 Y Y rs S2 S + ry s = log S Y s Y S = Y s ds ds = 1 S Y s 2 Y S = ( 1 2 S S Y = 1 s S Y 2 s + 1 S 2 Y s 2 ds ds = 1 S 2 Y s + 1 S 2 2 Y s 2 Y t = σ2 2 2 Y s 2 (r σ2 Y 2 s + ry s Y (m, n s Y m,n Y Y m+1,n, Y t Y m+1,n Y m,n, Y s Y m+1,n+1 Y m+1,n 1, 2 s 2 Y s Y m+1,n+1 2Y m+1,n + Y m+1,n 1, 2 s 2 Black-Scholes Y m+1,n Y m,n = σ2 2 Ym+1,n+1 2Y m+1,n + Y m+1,n 1 s 2 (r σ2 Ym+1,n+1 Y m+1,n 1 2 2 s + ry m+1,n Y m,n Y m+1,n 1, Y m+1,n, Y m+1,n+1 0 7.1 18
7.2 t = 0 7.3 s ry m+1,n ry m,n s = σ (1 + ry m,n = ( 1 2 + 2σ (r ( σ2 1 Y m+1,n+1 + 2 2 2σ (r σ2 Y m+1,n+1 2 Y m+1,n ( 1 n ε Y m,n (Y m+1,n + ( 1 n ε (Y m,n + η = σ2 2 (Y m+1,n+1 + ( 1 n+1 ε 2(Y m+1,n + ( 1 n ε + (Y m+1,n 1 + ( 1 n 1 ε s 2 (r σ2 (Ym+1,n+1 + ( 1 n+1 ε (Y m+1,n+1 + ( 1 n 1 ε + r(y m+1,n + ( 1 n ε 2 2 s η η = ( 1 r 2σ2 ( 1 n ε s 2 2σ 2 s 2 < 2 r 19
s 2 < 1 σ 2 ry m+1,n ry m,n η = ( 1 1 2σ2 ( 1 n ε 1 + r s 2 2σ 2 < 2 + r s 2 2 t m Y m, Y m+1,n Y m,n = σ2 2 Ym,n+1 2Y m,n + Y m,n 1 s 2 (r σ2 Ym,n+1 Y m,n 1 2 2 s + ry m,n s 7.4 3 3 7.5 O( Y m+1,n Y m,n t = t m t = t m+1 t = (t m + t m+1 /2 t = (t m + t m+1 /2 20
t = t m t = t m+1 t = (t m + t m+1 /2 Y m+1,n Y m,n = 1 { σ2 2 2 Ym,n+1 2Y m,n + Y m,n 1 s 2 (r σ2 Ym,n+1 Y m,n 1 + ry m,n 2 2 s σ2 2 Ym+1,n+1 2Y m+1,n + Y m+1,n 1 s 2 } (r σ2 Ym+1,n+1 Y m+1,n 1 + ry m+1,n 2 2 s 7.6 2 { Y m,n1,n 2 = e r py m+1,n1 +1,n a + qy m+1,n1 1,n b }, ( ( (m + 1Sn2 + S n1 +1 (m + 1Sn2 + S n1 1 n a = 1 σ log Y m+1,n1,n 2 Y m,n1,n 2 (m + 2S 0 = 1 e r Y m+1,n1,n 2, n b = 1 σ log e r ( 1 2 (Y m+1,n 1 +1,n 2 2Y m+1,n1,n 2 + Y m+1,n1 1,n 2 e r ( p Ym+1,n 1 +1,n a Y m+1,n1 +1,n 2 + p q 2 (Y m+1,n 1 +1,n 2 Y m+1,n1 1,n 2 (m + 2S 0 + q Ym+1,n 1 1,n b Y m+1,n1 1,n 2, 3 Black-Scholes 1 U t u = log U Y m+1,n1 +1,n a Y m+1,n1 +1,n 2 = Y m+1,n 1 +1,n a Y m+1,n1 +1,n 2 log S na log S n2 log S n a log S n2 21
Y m+1,n1 +1,n a Y m+1,n1 +1,n 2 Y log S na log S n2 u log S na log S n2 = 1 ( ( (m + 1Sn2 + S n1 +1 log log S n2 m + 2 = 1 ( log 1 + S n 1 +1 S n2 S U (m + 2S n2 tu Y m+1,n1 +1,n a Y m+1,n1 +1,n 2 Y m+1,n1 1,n b Y m+1,n1 1,n 2 Y t = S 2 σ2 2 Y u S U tu Y u S U tu 2 Y Y rs S2 S S U t Y U + ry Y U t V = tu V V t t, S, V Z(t, S, V Y (t, S, U = Z(t, S, tu Z Y t = Z t + U Z V, Y U = t Z V Y Z t = S 2 σ2 2 2 Z Z rs S2 S S Z V + rz s = log S Z t = σ2 2 2 Z (r s σ2 Z 2 2 s es Z V + ry 7.7 22
7.8 7.9 8 [0, 1] rand( 0 RAND_MAX ( rand( + 0.5 / ( RAND_MAX + 1 [0, 1] RAND_MAX ( rand( + ( rand( + 0.5 / ( RAND_MAX + 1 / ( RAND_MAX + 1 8.1 [0, 1] 100 Box-Muller U 1, U 2 [0, 1] Z 1 = 2 log U 1 cos 2πU 2 Z 2 = 2 log U 1 sin 2πU 2 Z 1, Z 2 0 1 23
8.2 Box-Muller (, + 8.3 Box-Muller 24