在matlab中计算利率树

在matlab中计算利率树,matlab,optimization,finance,numerical-methods,quantitative-finance,Matlab,Optimization,Finance,Numerical Methods,Quantitative Finance,我想使用matlab中的优化工具校准利率树。做这件事需要一些指导 利率树如下所示: 工作原理: 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中进行优化 到目前为止我试过什么 InterestTr

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

利率树如下所示:

工作原理:

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));

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

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

如果是后者,有两种方法。第一种方法是使用闭式表达式对树进行建模,将2.5%替换为
x
,这在树中是可能的。Matlab中提供了非线性优化工具箱(例如更多),但我已经很久没有这样做了,无法给出更详细的答案

秒是我马上要做的方法。我在解释你给出的例子,所以我使用的方程可能不正确-但是,使用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)中。

但这不是有效的,对吗?我的意思是,搜索不需要的值会浪费很多时间。考虑到在Matlab中使用优化工具,我希望这棵树能够生长。。。编辑示例使其与图表相同。是的,效率不高,但编码和运行速度都非常快。这棵树长得怎么样?如果多个节点,那么哪个方向?您可能需要递归地执行此操作,或者基于求和导出封闭形式的解决方案。它是一个二叉树,因此对于每个时间间隔,在该时间间隔有n+1个节点。考虑过使用优化工具,但不确定如何使用..好的。选项()也做了类似的事情。因为循环在那里工作很好。