330 Matlab 103071470 Lattice Eur Call Div P
3/30 Matlab作業 103071470 石磊
• • • • • • Lattice. Eur. Call. Div. P function [price, lattice] = Lattice. Eur. Call. Div. P(S 0, X, r, T, sigma, N, div, tau) 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 lattice(N+1, j+1)=max(0, S 0*(u^j)*(d^(N-j))*(1 -div)-X); end for i=N-1: tau for j=0: i lattice(i+1, j+1)=exp(-r*delta. T)*(p*lattice(i+2, j+2)+(1 -p)*lattice(i+2, j+1)); end for i=tau-1: 0 for j=0: i lattice(i+1, j+1)=exp(-r*delta. T)*(p*lattice(i+2, j+2)+(1 -p)*lattice(i+2, j+1)); end price=lattice(1, 1); end
• • • • • • Lattice. Am. Call. Div. P function [price, lattice] = Lattice. Am. Call. Div. P(S 0, X, r, T, sigma, N, div, tau) 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 lattice(N+1, j+1)=max(0, S 0*(u^j)*(d^(N-j))*(1 -div)-X); end for i=N-1: tau for j=0: i lattice(i+1, j+1)=max(S 0*u^j*d^(i-j)*(1 -div)-X, exp(-r*delta. T)*(p*lattice(i+2, j+2)+(1 -p)*lattice(i+2, j+1))); end for i=tau-1: 0 for j=0: i lattice(i+1, j+1)=max(S 0*u^j*d^(i-j)-X, exp(-r*delta. T)*(p*lattice(i+2, j+2)+(1 -p)*lattice(i+2, j+1))); end price=lattice(1, 1); end
Lattice. Eur. Call. Div. P vs. Lattice. Am. Call. Div. P • >> Lattice. Eur. Call. Div. P(50, 0. 02, 1, 0. 2, 10, 0. 1, 3) • ans = • 2. 0767 • >> Lattice. Am. Call. Div. P(50, 0. 02, 1, 0. 2, 10, 0. 1, 3) • ans = • 2. 6130 • 有股利的歐式買權比有股利的美式買權便宜,因為有股利的美式 買權可以提前執行
當股票股利div超過多少時美式買權和歐式買權的價格不同 • • • • S 0=50; X=50; r=0. 02; T=1; sigma=0. 2; N=10; tau=3; for div=0: 0. 00001: 0. 1 [price. Eur. Call, lattice 1]=Lattice. Eur. Call. Div. P(S 0, X, r, T, sigma, N, div, tau); [price. Am. Call, lattice 2]=Lattice. Am. Call. Div. P(S 0, X, r, T, sigma, N, div, tau); if price. Eur. Call~=price. Am. Call div break end
• >> Lattice. Eur. Call. Div. Pvs. Lattice. Am. Call. Div. P • div = • 0. 0460
Lattice. Eur. Put. Div. P • • • • • • function [price, lattice] = Lattice. Eur. Put. Div. P(S 0, X, r, T, sigma, N, div, tau) 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 lattice(N+1, j+1)=max(0, X-S 0*(u^j)*(d^(N-j))*(1 -div)); end for i=N-1: tau for j=0: i lattice(i+1, j+1)=exp(-r*delta. T)*(p*lattice(i+2, j+2)+(1 -p)*lattice(i+2, j+1)); end for i=tau-1: 0 for j=0: i lattice(i+1, j+1)=exp(-r*delta. T)*(p*lattice(i+2, j+2)+(1 -p)*lattice(i+2, j+1)); end price=lattice(1, 1); end
Lattice. Eur. Put. Div. P • >> Lattice. Eur. Put. Div. P(50, 0. 02, 1, 0. 2, 10, 0. 1, 3) • ans = • 6. 0867
Lattice. Eur. Call. Div. D • • • • • • function [price, lattice] = Lattice. Eur. Call. Div. D(S 0, X, r, T, sigma, N, D, tau) delta. T=T/N; u=exp(sigma*sqrt(delta. T)); d=1/u; p=(exp(r*delta. T)-d)/(u-d); S 0 a=S 0 -D*exp(-r*tau*delta. T); lattice=zeros(N+1, N+1); for j=0: N lattice(N+1, j+1)=max(0, S 0 a*(u^j)*(d^(N-j))-X); end for i=N-1: tau for j=0: i lattice(i+1, j+1)=exp(-r*delta. T)*(p*lattice(i+2, j+2)+(1 -p)*lattice(i+2, j+1)); end for i=tau-1: 0 for j=0: i lattice(i+1, j+1)=exp(-r*delta. T)*(p*lattice(i+2, j+2)+(1 -p)*lattice(i+2, j+1)); end price=lattice(1, 1); end
Lattice. Am. Call. Div. D • • • • • • function [price, lattice] = Lattice. Am. Call. Div. D(S 0, X, r, T, sigma, N, D, tau) delta. T=T/N; u=exp(sigma*sqrt(delta. T)); d=1/u; p=(exp(r*delta. T)-d)/(u-d); S 0 a=S 0 -D*exp(-r*tau*delta. T); lattice=zeros(N+1, N+1); for j=0: N lattice(N+1, j+1)=max(0, S 0 a*(u^j)*(d^(N-j))-X); end for i=N-1: tau for j=0: i lattice(i+1, j+1)=max(S 0 a*u^j*d^(i-j)-X, exp(-r*delta. T)*(p*lattice(i+2, j+2)+(1 -p)*lattice(i+2, j+1))); end for i=tau-1: 0 for j=0: i lattice(i+1, j+1)=max(S 0 a*u^j*d^(i-j)-X+D*exp(-r*(tau-i)*delta. T), exp(-r*delta. T)*(p*lattice(i+2, j+2)+(1 -p)*lattice(i+2, j+1))); end price=lattice(1, 1);
Lattice. Eur. Call. Div. D vs. Lattice. Am. Call. Div. D • >> Lattice. Eur. Call. Div. D(50, 0. 02, 1, 0. 2, 10, 5, 3) • ans = • 2. 0904 • >> Lattice. Am. Call. Div. D(50, 0. 02, 1, 0. 2, 10, 5, 3) • ans = • 2. 4588
當现金股利D超過多少時美式買權和歐式買權的價格不同 • • • • S 0=50; X=50; r=0. 02; T=1; sigma=0. 2; N=10; tau=3; for D=0: 0. 001: 5 [price. Eur. Call, lattice 1]=Lattice. Eur. Call. Div. D(S 0, X, r, T, sigma, N, D, tau); [price. Am. Call, lattice 2]=Lattice. Am. Call. Div. D(S 0, X, r, T, sigma, N, D, tau); if price. Eur. Call~=price. Am. Call D break end
• >> Lattice. Eur. Call. Div. Dvs. Lattice. Am. Call. Div. D • D= • 2. 7700
Lattice. Eur. Put. Div. D • • • • • • function [price, lattice] = Lattice. Eur. Put. Div. D(S 0, X, r, T, sigma, N, D, tau) delta. T=T/N; u=exp(sigma*sqrt(delta. T)); d=1/u; p=(exp(r*delta. T)-d)/(u-d); S 0 a=S 0 -D*exp(-r*tau*delta. T); lattice=zeros(N+1, N+1); for j=0: N lattice(N+1, j+1)=max(0, X-S 0 a*(u^j)*(d^(N-j))); end for i=N-1: tau for j=0: i lattice(i+1, j+1)=exp(-r*delta. T)*(p*lattice(i+2, j+2)+(1 -p)*lattice(i+2, j+1)); end for i=tau-1: 0 for j=0: i lattice(i+1, j+1)=exp(-r*delta. T)*(p*lattice(i+2, j+2)+(1 -p)*lattice(i+2, j+1)); end price=lattice(1, 1); end
Lattice. Eur. Put. Div. D • >> Lattice. Eur. Put. Div. D(50, 0. 02, 1, 0. 2, 10, 5, 3) • ans = • 6. 0704
- Slides: 15