在matlab中计算利率树

时间:2014-02-06 17:55:18

标签: matlab optimization finance numerical-methods quantitative-finance

我想使用matlab中的优化工具来校准利率树。需要一些指导。

利率树如下所示:

enter image description here

工作原理:

3.73%= 2.5%* exp(2 * 0.2)

96.40453 =(0.5 * 100 + 0.5 * 100)/(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));

但我不确定如何进行优化。有任何改进代码的建议,请告诉我..需要一些指导......

1 个答案:

答案 0 :(得分:0)

您是否期望树的大小增加?或者您只是优化“2.5%”参数的值?

如果是后者,有两种方法。第一种是使用封闭的表单表达式对树进行建模,方法是将2.5%替换为x,这可以通过树来实现。 Matlab中提供了非线性优化工具箱(例如更多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)。