[問題] 條件問題已回收
以下為部份code
Nrep=1000;
b0=90;
s0=10;
r10(1,1)=0.02;
for i=1:Nrep
bond(i,1)=b0;
end
*********************
for i=1:Nrep
for j=1:120
bond(i,j+1)=bond(i,j).*(1+r10(1,1))./12);
end
end
*********************
for i=1:Nrep
stock(i,1)=s0;
end
*********************(以下Rss lapse liability rpadd1均已知)
for i=1:Nrep
for j=1:120
stock(i,j+1)=stock.*Rss(i,j)-lapse(i,j).*liability(i,j).*rpadd1(i,j)
end
end
*********************
以上為原本code
為求簡化假設Nrep=1 並且假設只算到第7行
假設算出的
bond=[90 91 92 93 94 95 96];
stock=[10 5 3 -1 -3 -4 -5];
由stock可知在code倒數第3行
stock(i,j+1)=stock.*Rss(i,j)-lapse(i,j).*liability(i,j).*rpadd1(i,j)
後面扣掉的一長串即lapse(i,j).*liability(i,j).*rpadd1(i,j)
為d(1,j)=stock(1,j+1)-stock(1,j)
d=[5 2 4 2 1 1]
*******問題開始*****
for j=1:7
if stock(1,j)<0
stock(1,j)=0;
end
end
%得到stock=[10 5 3 0 0 0 0]
********************
而bond的部分 一旦stock(1,j)<0 bond開始改變
即在stock(1,j)>=0之前
for i=1:1
for j=1:7
bond(i,j+1)=bond(i,j).*(1+r10(1,1))./12);
end
end
但在stock(1,j)<0 之後
for i=1:1
for j=1:7
bond(i,j+1)=bond1(i,j).*(1+r10(1,1)./12)-
lapse(i,j).*liability(i,j).*rpadd1(i,j);
end
end
*******************************以上可能解釋不夠清楚 以下舉例子
bond =[90 91 92 93 94 95 96]
stock=[10 5 3 -1 -3 -4 -5 ]
d= [5 2 4 2 1 1 ]
由上可知stock(1,4)<0
因此stock=[10 5 3 0 0 0 0]
而 bond= [90 91 92 b14 b15 b16 b17]
b14 b15 b16 b17就是和原來不同的地方
首先b14=93+stock(1,4)=93-1=92
而b15 b16 b17就利用
bond(i,j+1)=bond1(i,j).*(1+r10(1,1)./12)-
lapse(i,j).*liability(i,j).*rpadd1(i,j);
就是b15=b14.*(1+r10(1,1)./12)-d4
b16=b15.*(1+r10(1,1)./12)-d5
b17=b16.*(1+r10(1,1)./12)-d6
我想問code要怎麼改才可以算出修改後的bond
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.230.16
推
04/26 09:21, , 1F
04/26 09:21, 1F
→
04/26 09:21, , 2F
04/26 09:21, 2F
推
04/26 09:24, , 3F
04/26 09:24, 3F
→
04/26 09:24, , 4F
04/26 09:24, 4F
→
04/26 09:25, , 5F
04/26 09:25, 5F
→
04/26 14:31, , 6F
04/26 14:31, 6F
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章