[閒聊] 財風管好難
難得提供我的意見:
h1
clear
S = 3;
E = 2;
T = 1;
r = 0.05;
sigma = 0.3;
M = 400;
dt = T/M;
p =0.5;
u = exp(r*dt)*(1+sqrt(exp((sigma^2)*dt)-1));
d = exp(r*dt)*(1-sqrt(exp((sigma^2)*dt)-1));
W = max(S*d.^([M:-1:0]').*u.^([0:M]')-E,0);
for i = M:-1:1
W = exp(-r*dt)*(p*W(2:i+1) + (1-p)*W(1:i));
end
disp('Option value is'), disp(W)
h2
clear
S = 3;
E = 2;
T = 1;
r = 0.05;
sigma = 0.3;
M = 400;
dt = T/M;
p =0.5;
u = exp(r*dt)*(1+sqrt(exp((sigma^2)*dt)-1));
d = exp(r*dt)*(1-sqrt(exp((sigma^2)*dt)-1));
WT = max(S*u.^([M:-1:0]').*d.^([0:M]')-E,0);
WW = zeros(M+1,1);
for i = 0:1:M
WW(i+1)=nchoosek(M,i)*p^(i)*(1-p)^(M-i)*WT(i+1);
end
W0 = exp(-r*(dt*M))*sum(WW(:));
disp('Option value is'), disp(W0)
h3
clear
S = 3;
E = 2;
T = 1;
r = 0.05;
sigma = 0.3;
M = 400;
dt = T/M;
u = exp(sigma*sqrt(dt));
d = exp(-sigma*sqrt(dt));
p = (exp(r*dt)-d)/(u-d);
[PR,OPT1]=binprice(S,E,r,T,dt,sigma,1);
OPT2=zeros(M+1,M+1);
OPT2(:,M+1)=OPT1(:,M+1);
for i = M:-1:1
OPT2(1:i,i) = exp(-r*dt)*(p*OPT2(1:i,i+1) + (1-p)*OPT2(2:i+1,i+1));
if OPT2(1:i,i) >= max(PR(1:i,i)-E,0);
OPT2(1:i,i) = OPT2(1:i,i);
else
OPT2(1:i,i) = max(PR(1:i,i)-E,0);
end
end
disp('Option value is'), disp(OPT2(1,1))
第一題跟第二題答案跑出來一樣
我發現
binprice 是算美式的option value
可以用訂價講義的例子證明之 結果會一模一樣
所以第三題的for迴圈其實可以不用寫
答案就直接是binprice算出來的第一期call value
老師的例子
似乎從頭到尾都不會提早執行...
而且有個巧合
就是第三題的u d p 跟前兩題不一樣
但答案卻剛好一樣
也太巧...
有錯請更正~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.230.77.143
※ 編輯: hysy 來自: 61.230.72.190 (05/21 19:40)