我想使用matlab中的优化工具来校准利率树。需要一些指导来做这件事。
利率树如下所示:
它的工作原理:
3.73% = 2.5%*exp(2*0.2)
96.40453 =(0.5x100+0.5x100)/(1+3.73%)
94.15801 = (0.5*96.40453+ 0.5*97.56098)/(1+2.50%)
2.5%的值是任意的,上面的节点是通过乘以2*波动率的指数(这里是20%)得到的。
我需要通过改变较低节点的不同值来优化问题。
如何在Matlab中进行此优化?
到目前为止我都试了些什么?
InterestTree{1}(1,1) = 0.03;
InterestTree{3-1}(1,3-1)= 2.5/100;
InterestTree{3}(2,:) = 100;
InterestTree{3-1}(1,3-2)= (2.5*exp(2*0.2))/100;
InterestTree{3-1}(2,3-1)=(0.5*InterestTree{3}(2,3)+0.5*InterestTree{3}(2,3-1))/(1+InterestTree{3-1}(1,3-1));
j = 3-2;
InterestTree{3-1}(2,3-2)=(0.5*InterestTree{3}(2,j+1)+0.5*InterestTree{3}(2,j))/(1+InterestTree{3-1}(1,j));
InterestTree{3-2}(2,3-2)=(0.5*InterestTree{3-1}(2,j+1)+0.5*InterestTree{3-1}(2,j))/(1+InterestTree{3-2}(1,j));
但我不确定如何进行优化。任何改进代码的建议,一定要告诉me..Need一些关于这方面的指导。
发布于 2014-02-07 11:22:29
你期望这棵树会变大吗?或者你只是在优化"2.5%“参数的值?
如果是后者,有两种方法。第一种方法是使用封闭形式的表达式对树进行建模,将2.5%替换为x
,这对于树是可能的。Matlab中有一些非线性优化工具箱(例如more here),但我已经很久没有这样做了,无法给你一个更详细的答案。
秒数是我会立即做的方法。我正在解释你给出的例子,所以我使用的方程式可能是不正确的-但是,使用for循环的原理是相同的。
vol = 0.2;
maxival = 100;
val1 = zeros(1,maxival); %Preallocate
finalval = zeros(1,maxival);
for ival=1:maxival
val1(ival) = i/1000; %Use any scaling you want. This will go from 0.1% to 10%
val2=val1(ival)*exp(2*vol);
x1 = (0.5*100+0.5*100)/(1+val2); %Based on the equation you gave
x2 = (0.5*100+0.5*100)/(1+val1(ival)); %I'm assuming this is how you calculate the bottom node
finalval(ival) = x1*0.5+x2*0.5/(1+...); %The example you gave isn't clear, so replace this with whatever it should be
end
[maxval, indmaxval] = max(finalval);
最大值在maxval中,最大化它的兴趣在val1(indmaxval)中。
https://stackoverflow.com/questions/21610445
复制相似问题