matlab关于期权二叉树定价的问题

img


这个代码是针对当T=2时的,如果要计算T=2,3,4,5时期权的价格,该怎么改写这个代码,也就是定义一个function,T是这个function的输入值,然后再用for-loop调用完成不同T值下期权价格的计算,以及该如何画出期权价格和时间T的图像?

你好,请把代码粘贴一下我帮你弄成function形式,其实很好弄的,你看一遍就会

function main()
T = 2:5;
C = zeros(size(T));
for i = 1:1:numel(T)
C(i) =  myfun(T(i));
end
plot(T,C)
end


function c = myfun(T)
s0=6;
u=2.5;
d=2;
rf=0.03;
k=7;
S=zeros(T+1,T+1);
for i=1:T+1
    S(1,i)=s0+u*(i-1);
end
for i=2:T+1
    for j=2:i
        S(j,i)=S(j-1,i)-u-d;
    end
end
c=max(S-k,0);
for i=T:-1:1
    for j=1:i
        delta=(c(j,i+1)-c(j+1,i+1))/(S(j,i+1)-S(j+1,i+1));
        B=(c(j+1,i+1)-S(j+1,i+1)*delta)/(1+rf);
        c(j,i)=S(j,i)*delta+B;
    end
end
C=c(1,1);
end

img


s0=6;
u=2.5;
d=2;
rf=0.03;
k=7;
T=2;
S=zeros(T+1,T+1);
for i=1:T+1
    S(1,i)=s0+u*(i-1);
end
for i=2:T+1
    for j=2:i
        S(j,i)=S(j-1,i)-u-d;
    end
end
c=max(S-k,0);
for i=T:-1:1
    for j=1:i
        delta=(c(j,i+1)-c(j+1,i+1))/(S(j,i+1)-S(j+1,i+1));
        B=(c(j+1,i+1)-S(j+1,i+1)*delta)/(1+rf);
        c(j,i)=S(j,i)*delta+B;
    end
end