pythonで学ぶ金融工学(3項ツリー_リスク中立確率の算出)

前回の記事で2項ツリーを作成したが、その拡張として3項ツリーがある。一般的には3のほうが精度が高く、実務でも好まれる(らしい)。ので今日は3項ツリーの作成を試みる。

まず2項ツリーは、下記のように次の時点は上昇か下降のみ。

3項の場合には、これに現在と同じ水準を加える。

このとき、上昇(u)、変化なし(m)、下降(d)の3つがあるので、それぞれの変動率をu、m、d、リスク中立確率をPu、Pm、Pdとすると、いくつかの条件を満たす必要がある。

まず、確率の和は1なので、Pu+Pm+Pd=1。次に、期待値が無リスク資産の上昇率と等しくなければいけないので、u×Pu+m×Pm+d×Pd=(r-0.5sigma^2)dt。最後に、分散に関してV(x)=E(x^2)-{E(x)}^2より、u^2×Pu+m^2×Pm+d^2×Pd-(r-0.5sigma^2)^2=sigma^2dt。見づらいのではてなTeXを使って真面目に書くと、

P_u+P_m+P_d=1
uP_u+mP_m+dP_d={(r-0.5\sigma^2)dt}
u^2P_u+m^2P_m+d^2P_d-{(r-0.5\sigma^2)^2}dt^2=\sigma^2dt

ただし、これだと5変数(u,d,Pu,Pm,Pd。mは実質的に0)に対して3つしか式がないので解けない。そこで、どれかを与えてやる必要があるが、u=\sigma sqrt{3dt}とするのが一般的らしい。これを用いて方程式を解き、リスク中立確率を得る。あとは実装だけ…基本的な考え方は変わらないが、実装にあたっては大きく分けて(多分)2点変更が必要。

・ノード数
当然ながら3項になるとノード数が変わる。2だと、nステップ後はn+1のノードが並んでいるが、3だと2n+1コ並んでいるはず。
・後ろから戻ってくるときの確率
上記の話から、1期前に戻すときにかけ合わせる確率の部分がことなる。

なのでこれらさえ変更すれば、3の場合の実装も容易なハズ・・・だけどそちらは次回。