0

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*volatility (ここでは 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));

しかし、最適化の方法がわかりません。コードを改善するための提案があれば教えてください..これに関するガイダンスが必要です..

4

1 に答える 1

0

ツリーのサイズが大きくなると思いますか? それとも、「2.5%」パラメータの値を最適化しているだけですか?

後者の場合、2 つの方法があります。1 つ目は、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) にあります。

于 2014-02-07T03:22:28.520 に答える