420 Matlab 103071470 Oil bond function price latticeoilbondP
4/20 Matlab作業 103071470 石磊
Oil bond • • • • function [price, lattice]=oilbond(P 0, r, T, sigma, N) • for i=N-1: 0 delta. T=T/N; • for j=0: i u=exp(sigma*sqrt(delta. T)); • lattice(i+1, j+1)=exp(-r*delta. T)*… d=1/u; (p*lattice(i+2, j+2)+(1 -p)*lattice(i+2, j+1)); p=(exp(r*delta. T)-d)/(u-d); • end lattice=zeros(N+1, N+1); • end for j=0: N • price=lattice(1, 1); if P 0*(u^j)*(d^(N-j))>40; lattice(N+1, j+1)=1000+(40 -25)*170; elseif P 0*(u^j)*(d^(N-j))<25; lattice(N+1, j+1)=1000; else P 0*(u^j)*(d^(N-j))>=25 & P 0*(u^j)*(d^(N-j))<=40; lattice(N+1, j+1)=1000+(P 0*(u^j)*(d^(N-j))-25)*170; end
Oil bond • >> sigma=0. 2; • r=0. 02; • P 0=30; • N=10; • T=1; • >> [price, lattice]=oilbond(P 0, r, T, sigma, N) • price = • 1. 9464 e+03
Oil bond • lattice = • • • 1. 0 e+03 * 1. 9464 0 1. 7034 2. 1972 1. 4794 1. 9342 1. 2902 1. 6745 1. 1471 1. 4385 1. 0541 1. 2446 1. 0072 1. 1053 0. 9940 1. 0243 0. 9960 0. 9980 1. 0000 0 0 2. 4689 2. 2016 1. 9173 1. 6381 1. 3890 1. 1906 1. 0568 0. 9980 1. 0000 0 2. 7462 2. 4948 2. 2041 1. 8939 1. 5929 1. 3292 1. 1198 1. 0000 0 0 3. 0086 2. 7954 2. 5230 2. 2024 1. 8630 1. 5439 1. 2440 0 0 3. 2337 3. 0790 2. 8538 2. 5507 2. 1895 1. 8500 0 0 0 3. 4014 3. 3165 3. 1683 2. 9220 2. 5377 0 0 0 0 0 0 0 3. 4999 0 0 0 3. 4781 3. 5358 0 0 3. 4272 3. 5429 0 3. 3181 3. 5500
Index Currency Option Notes • function [price, lattice]=Lattice. Currency. Option. Notes(P 0, r, T, sigma, N ) • delta. T=T/N; • u=exp(sigma*sqrt(delta. T)); • d=1/u; • p=(exp(r*delta. T)-d)/(u-d); • lattice=zeros(N+1, N+1); • for j=0: N • if P 0*(u^j)*(d^(N-j))>=169; • lattice(N+1, j+1)=1000; • end • if P 0*(u^j)*(d^(N-j))<=84. 5; • lattice(N+1, j+1)=0; • end • if P 0*(u^j)*(d^(N-j))>84. 5 & P 0*(u^j)*(d^(N-j))<169; • lattice(N+1, j+1)=1000 -(1000/(P 0*(u^j)*(d^(N-j))-1)); • end • for i=N-1: 0 • for j=0: i • lattice(i+1, N+1 -j)=exp(-r*delta. T)*. . . (p*lattice(i+2, N+1 -j)+(1 -p)*lattice(i+2, N-j)); • end • price=lattice(1, N+1);
Index Currency Option Notes • >> sigma=0. 5; • r=0. 02; • P 0=100; • N=10; • T=1; • >> [price, lattice]=Lattice. Currency. Option. Notes(P 0, r, T, sigma, N) • price = • 524. 9573
Index Currency Option Notes • lattice = • • • 1. 0 e+03 * 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0. 0217 0. 0467 0. 1001 0. 2149 0. 4612 0. 9899 0 0 0. 0795 0. 1459 0. 2599 0. 4434 0. 7063 0. 9892 0. 9927 0 0. 1718 0. 2779 0. 4299 0. 6258 0. 8368 0. 9895 0. 9941 1. 0000 0 0 0. 2864 0. 4184 0. 5806 0. 7553 0. 9063 0. 9896 0. 9939 0. 9980 1. 0000 0 0. 4083 0. 5492 0. 7009 0. 8413 0. 9431 0. 9892 0. 9929 0. 9960 0. 9980 1. 0000 0. 5250 0. 6605 0. 7904 0. 8960 0. 9623 0. 9882 0. 9914 0. 9940 0. 9960 0. 9980 1. 0000
HW 2 Binary option(二元選擇權) • function [Price, CI]=Binary. MC(S 0, X, r, T, sigma, NRepl) • nu. T=(r-0. 5*sigma^2)*T; • si. T=sigma*sqrt(T); • Veps=randn(NRepl, 1); • Payoff 1=S 0*exp(nu. T+si. T*Veps); • Payoff 1(S 0*exp(nu. T+si. T*Veps)<X)=0; • Disc. Payoff =exp(-r*T)*Payoff 1; • [Price, Var. Price, CI]=normfit(Disc. Payoff);
HW 2 Binary option(二元選擇權) • function [Price, CI]=Binary. MCAV(S 0, X, r, T, sigma, NRepl) • nu. T=(r-0. 5*sigma^2)*T; • si. T=sigma*sqrt(T); • Veps=randn(NRepl, 1); • Payoff 1=S 0*exp(nu. T+si. T*Veps); • Payoff 2=S 0*exp(nu. T+si. T*(-Veps)); • Payoff 1(S 0*exp(nu. T+si. T*Veps)<X)=0; • Payoff 2(S 0*exp(nu. T+si. T*(-Veps))<X)=0; • Disc. Payoff =exp(-r*T)*0. 5*(Payoff 1+Payoff 2); • [Price, Var. Price, CI]=normfit(Disc. Payoff);
HW 2 Binary option(二元選擇權) • • • S 0=50; X=50; r=0. 1; T=5/12; sigma=0. 4; >> NRepl 1=100000; NRepl 2=200000; >> randn('seed', 0); [MC 200000, CI 1]=Binary. MC(S 0, X, r, T, sigma, NRepl 2); randn('seed', 0); [MCAV 100000, CI 2]=Binary. MCAV(S 0, X, r, T, sigma, NRepl 1);
HW 2 Binary option(二元選擇權) • >> MC 200000 • MC 200000 = • 30. 6772 • >> CI 1(2)-CI 1(1) • ans = • 0. 2701 • >> MCAV 100000 • MCAV 100000 = • 30. 7209 • >> CI 2(2)-CI 2(1) • ans = • 0. 0718
MCIntegration • • • rand('seed', 0); N=1000; k=2; meanexp=zeros(1, N); for i=1: N meanexp(i)=k*mean(exp(k*rand(1, i))); end exp=exp(2)-1 exp 10=meanexp(10) exp 100=meanexp(100) exp 1000=meanexp(1000) plot(1: N, meanexp);
MCIntegration • exp = • 6. 3891 • exp 10 = • 5. 9957 • exp 100 = • 6. 3768 • exp 1000 = • 6. 3803
Calculate π • • • >> rand('seed', 0); N=1000; meanpi=zeros(1, N); for i=1: N meanpi(i)=4*mean(sqrt(1 -rand(1, i). ^2)); end pi meanpi 10=meanpi(10) meanpi 100=meanpi(100) meanpi 1000=meanpi(1000) plot(1: N, meanpi);
Calculate π • ans = • 3. 1416 • meanpi 10 = • 3. 2407 • meanpi 100 = • 3. 1447 • meanpi 1000 = • 3. 1432
- Slides: 15