上級編 5.  マルコフ汎関数モデル 

5.3   ニュメレール価格の確率分布の導出法

5.3.5   ニュメレール価格の確率分布を求めるアルゴリズム

5.3.5.1   最終期日の一期前のニュメレール価格の分布を求める

5.15 式を、時間軸の最終期日から遡及しながら求めていきます。まず、最終期日 \(T_n\) では、ニュメレール価格は、状態変数の位置にかかわらず、すべて 1 になるので、 

\[ N(T_n,T_n,x_{T_n}^{(k)})=1~~~~~for~all~k=-m,…,+m \tag{5.16} \]

となります。 

次に、その一期手前の時間軸 \(T_{n-1}\) における、各状態変数 \(x_{T_{n-1}}^{(k)}\) に対応するニュメレール価格を導出します。\(x_{T_{n-1}}^{(k)}\) は \(T_{n-1}\) 時の時間軸上に、±5~7 標準偏差の間に等間隔に設定されるのでした。5.15 式から 

\[ N(T_{n-1},T_n,x_{T_{n-1}}^{(k)})=\frac {1}{S(T_{n-1},T_{n-1},T_n,x_{T_{n-1}}^{(k)}) ~ \tau _j ~ E^{Q_N} \left[ \frac {1}{N(T_n,T_n,x_{T_n})} ~|~ x_{T_{n-1}}^{(k)} \right]+1 }~~~~~k=-m,…,+m \]

となりますが、右辺の分母にある期待値演算は、5.16 式よりすべての状態変数 \(x_n\) に対して 1 になるので、上の式は簡略化されて下記式のようになります。 

\[ N(T_{n-1},T_n,x_{T_{n-1}}^{(k)}) = \frac{1}{S \left(T_{n-1},T_{n-1},T_n,x_{T_{n-1}}^{(k)} \right)~ \tau_n+1}~~~for~~all~~k \tag{5.17} \]

右辺にあるスワップ金利 \(S \left(T_{n-1},T_{n-1},T_n,x_{T_{n-1}}^{(k)} \right)\) は、5.13 式を使って求めるのでした。5.13 式中にある Annuity はキャッシュフローが \(T_n\) 時の一期しかないので、5.13 の方程式は次のようになります。 

\[ N(0,T_n) E^{Q_N} \left[ \frac {\tau_{T_n} P(T_{n-1},T_n)}{N(T_{n-1},T_n)} I(x_{T_{n-1}} < x_{T_{n-1}}^{(k)} )~|~ x_0 \right] =\tau_{T_n} P(0,T_n) E^{Q_A} \left[I( S(T_{n-1},T_{n-1},T_n)) < K^{(k)} )| S_0 \right] \]

上の式でニュメレールは \(T_n\) 満期のゼロクーポン債価格と同じなので、さらに簡略化され 

\[ E^{Q_N} \left[ I(x_{T_{n-1}} < x_{T_{n-1}}^{(k)})~|~ x_0 \right] =E^{Q_A} \left[ I( S(T_{n-1},T_{n-1},T_n)) < K^{(k)}) ~|~ S_0 \right] \tag{5.18} \]

という方程式が導けます。この場合、\(x_K^{(k)}\) を先に決めるので、\(K^{(k)}\) が未知数になります。左辺の期待値は、x を正規化した上で標準正規累積分布関数を使えば簡単に求まります。右辺の期待値は、\(K^{(k)}\) を未知数として 5.8 式の Black の公式の \(Φ(d_2^{T_{n-1}})\) を使うか、5.11 式のヨーロピアンスワップション価格の差分式を使います。実際の計算プログラムでは、Solverを使って求めます。これで、\(T_{n-1}\) 時のフォワードスワップ金利の確率分布が、ガウス分布する状態変数 x に対応付けられました。さらにここから、5.17 式を使えば、各 \(x_{T_{n-1}}^{(k)}\) に対応するニュメレール価格 \(N(T_{n-1},T_n,x_{T_{n-1}}^{(k)})\) もすべて求まります。 

最後に、こうやって求まったニュメレール価格を Interpolation して x 軸に対して連続な値にします。Interpolation の方法は、いろいろあるでしょうが、Hunt らの文献では、Cubic Spline 法を使っています。 

これで、\(T_{n-1}\) 時のニュメレール価格の確率分布が導出できました。 

 

5.3.5.2   ニュメレール価格の確率分布を、時間を遡及しながら \(T_1\) まで導出

\(T_n~から~T_{i+1}\) までのすべての時間軸と状態変数に対応するニュメレール価格、すなわちニュメレールの確率分布が求まったとして、\(T_i~時のニュメレールの確率分布~N(T_i,T_n,x_{T_i}^{(k)})\) を求めます。やり方は同じで、まず 5.13 式を満たす \(K^{(k)}= S(x_{T_i}^{(k)})\) を求めます。これは状態変数 x に対応するフォワードスワップ金利の確率分布を求めたことになり、そこから 5.15 式を使って、ニュメレール価格の確率分布を導出します。 

(1) Annuity の事前計算と Interpolation

5.13 の方程式を解く為、まず左辺にある \(Annuity(T_i,T_i,T_n)\) のニュメレールに対する相対価格を、すべての \(x_{T_i}^{(k)}\) について事前計算しておきます。この Annuity の各項は、満期が \(T_{i+1}\) 以降のゼロクーポン債価格なので、すでに求まっている \(T_{i+1}\) 以降のニュメレールの確率分布から、以下のように 5.4 式を使って事前に求める事ができます。 

\[ \begin{align} \frac{Annuity(T_i,T_i,T_n,x_{T_i}^{(k)})} {N(T_i,T_n,x_{T_i}^{(k)})} & =\frac{ ∑_{j=i+1}^n \tau_j~P(T_i,T_j,x_{T_i}^{(k)})} {N(T_i,T_n,x_{T_i}^{(k)})} \\ &=∑_{j=i+1}^n \tau_j ~ E^{Q_N} \left[ \frac {1} {N(T_j,T_n,x_{T_j})} ~|~ x_{T_i}^{(k)} \right] \tag{5.19} \end{align} \]

右辺の期待値演算は、既に導出済の、各クーポン日 (\(T_{i+1}~から~T_n \))におけるニュメレール価格の確率分布と、\(x_{T_i}^{(k)}\) からの遷移確率密度関数を使って導出できます。x の役割は、既に述べた通り、ニュメレール価格の確率分布を、正規分布する確率変数に換算した座標(偏差値のようなもの)を提供するものです。それと同時に、ニュメレール価格の正規分布座標(偏差値)が、ガウス過程を取り拡散していく様子も記述しています。ガウス過程を取る x の遷移確率密度関数は解析的に求まるので、それを使って、実際には(対数)正規分布からは若干ずれたニュメレール価格の期待値を求める事が出来ます。ある時点の試験の偏差値(正規分布)と、次の試験のおおよその得点分布(正規分布からはずれた分布)が判っていれば、それを使って次の試験の得点の期待値を求めるようなものです。 

\(x_{T_i}^{(k)}~から、x_{T_j}\) への遷移確率は、平均が \(x_{T_i}^{(k)} 分散が~\sum_{m=i}^{j-1} σ(T_m)^2 (T_{m+1}-T_m )\) の正規分布となるので(\(σ(T_m)\) を \([T_m,T_{m+1}]\) 間の piecewise constant な関数と仮定しています)、この平均と分散を使って、\(x_{T_j}\) を下記のように正規化します。 

\[ y=\frac{x_{T_j}-x_{T_i}^{(k)}} {\sqrt {\sum_{m=i}^{j-1} σ(T_m)^2~(T_{m+1}-T_m)} } \tag{5.20} \]

すると、上記の期待値演算は、下記のように、標準正規密度関数 \(\phi(y)\) を使った積分形で求まります。 

\[ \begin{align} \frac{Annuity(T_i,T_i,T_n,x_{T_i}^{(k)})} {N(T_i,T_n,x_{T_i}^{(k)})} & =∑_{j=i+1}^n \tau_j~E^{Q_N} \left[ \frac {1} {N(T_j,T_n,x_{T_j})} ~|~ x_{T_i}^{(k)} \right] \\ & =∑_{j=i+1}^n \tau_j~∫_{-∞}^∞ \frac {1}{N(T_j,T_n,y)} \phi (y)dy \tag{5.21} \end{align} \]

この積分は、ガウス・エルミート求積法を使い、数値積分で求める事ができます。 

(注:ガウス・エルミート求積法は、被積分関数が \(f(x) e^{-x^2}\) の形をしている時に使える数値積分です。5.21 式の被積分関数は、Cubic Spline で線形補間されたニュメレール価格の3次式 と 標準正規密度関数 ϕ(y) の積なので、この方法が使えます。ガウス・エルミート求積法については、Wikiなどで確認して下さい。実務編で QuantLib による MFM の実装例を解説する予定で、アルゴリズムはそちらで説明する予定です。) 

さらに、求まった Annuity を、状態変数軸上で、Cubic Spline 法などにより線形補間すれば、\(T_i\) 時における、Annuity価格が連続した関数の形で求まります。これを使って5.13式の左辺の期待値演算を行います。 

(2) 5.13 式の左辺の計算

5.13 式の左辺の内 \(N(0,T_n )\) は当初イールドカーブから求まるので、問題は期待値計算の部分です。まず、5.13 式の左辺の期待値演算を、Payoff を確率密度関数で積分した形に書き換えます。

\[ \begin{align} E^{Q_N} & \left[ \frac {1} {N(T_i,T_n,x_{T_i})} Annuity(T_i,T_i,T_n )I(x_{T_i} < x_{T_i}^{(k)})~|~ x_0 \right] \\ & =∫_{-∞}^∞ \frac {1}{N(T_i,T_n,x_{T_i})} ~Annuity(T_i,T_i,T_n)~ I(x_{T_i} < x_{T_i}^{(k)})~ \varphi (x_{T_i})~ dx_{T_i} \\ & =∫_{-∞}^{x_{T_i}^{(k)}} \bar {Annuity_{T_i}}~ \varphi (x_{T_i})~ d x_{T_i} \tag{5.22} \end{align} \]

但し、(1)で求めた Annuity の相対価格を \(\bar {Annuity_{T_i}}\) と表記しています。また \(\varphi (x_{T_i})\) は t=0 からみた \(T_i\) 時のxの確率密度関数で、\(x_{T_i}\) を正規化すれば、下記のように標準正規密度関数を使って計算できます。

\[ \varphi (x_{T_i}) = \phi \left( \frac{x_{t_i}}{ \sqrt {\sum_{m=0}^{i-1} σ(T_m)^2~(T_{m+1}-T_m)}} \right) \]

すると、5.22 式の被積分関数は x の多項式( \(\bar {Annuity_{T_i}}\) はCubic Spline関数で表現されているのでした)と \(e^{-x^2}\) の積の形に変形できます。すると、積分範囲を離散的な \(x_{T_i}^{(k)}\) のポイントで区分された区間ごとに求める事ができます。そのアルゴリズムの説明はここでは省略させていただきますが、実務編のQuantLibでのMFMの実装の所で若干解説したいと思います。 

(3) 右辺の計算と \(K^{(k)}\) の導出

5.13 の方程式を再記します。 

\[ N(0,T_n )~E^{Q_N} \left[ \frac{Annuity(T_i,T_i,T_n)} {N(T_i,T_n)} I(x_{T_i} < x_K)~|~x_0 \right] = Annuity(t_0,T_i,T_n) E^{Q_A} \left[I(S_{T_i} < K)~|~S_0 \right] \tag{5.13} \]

この等式を使って、時間軸上のすべての状態変数 \(x_{T_i}^{(k)},~~ k=-m,…,+m ~ に対応する~ K^{(k)} \) を求めるのでした。 

左辺は、今計算した所です。目的は、この等式が成立するような右辺の K の値を探す事です。右辺は市場価格から導出されるデジタルオプション価格でした。右辺の \(Annuity(t_0,T_i,T_n)\) は現時点のイールドカーブから導出できます。\(E^{Q_A} \left[ I(S_{T_i} < K)~|~S_0 \right]\) は Black の公式を使った 5.8 式か、あるいはヨーロピアンオプションの差分から導出した 5.11 式が使えます。K を未知数とし、5.13 式を満たすように Solver を使って求める事になります。 

(4)  \(T_i\) 時間軸のニュメレール価格を導出 

このアルゴリズムを、すべての \(x_{T_i}^{(k)}\) について行えば、各 \(x_{T_i}^{(k)}\) に対応するフォワードスワップ金利 \(K^{(k)}=S(x_{T_i}^{(k)}),~~k=-m,…,+m\) が求まります。このフォワードスワップ金利から、5.15 式を使えば、すべての \(x_{T_i}^{(k)}\) に対応するニュメレール価格 \(N(T_i,T_n,x_{T_i}^{(k)})\) が求まります。最後に、各ポイントのニュメレール価格を Cubic Spline法などで線形補間をすれば、\(T_i\) 時間軸におけるニュメレール価格の確率分布が求まります。 

(5)   アルゴリズムを \(T_1\) 軸まで継続 

上記のアルゴリズムを、\(T_1\) 時間軸まで行えば、すべての時間軸におけるニュメレール価格の確率分布が求まります。\(T_0=0\) 時のニュメレール価格は、当初イールドカーブから \(T_n\) 満期のゼロクーポン債価格として1個に特定されます。 

これで、すべての時間軸における、ニュメレール価格の確率分布が求まりました。帆船の航路と、そこからのずれ具合が特定された事になります。そこから、任意の時点における任意の満期のゼロクーポン債価格が求まります。実際には、上記のアルゴリズムの中で Annuity 価格を導出する際、既に求めているので、それを使えばいいでしょう。 

さらに、ゼロクーポン債を対象とするデリバティブズ価格(金利オプション)も、5.2.4で説明した通り、ニュメレールとの相対価格の期待値として導出できます。 

上記で説明した1ファクターの MFM は、1ファクターでありながら、市場価格に内包されている Volatility Smile カーブに、非常にうまくフィットでき、なおかつ、バーミューダンオプションや CMS などのエキゾチック商品の価格を、比較的高速で計算できます。その結果、2000年代以降、実務でも使われる事になりました。 

一方で、ニュメレール価格の分布(x の汎関数)を求めるアルゴリズムの、至る所で数値計算を行っていますが、市場データが、しばしば不整合になる事から、分布の裾の所で計算が収束しない事も度々あるようです。その為、モデルを使える形に持っていくまでのデータチェックと修正の手続きがやっかいな所が問題とされています。Volatility Smile カーブの Interpolation と Extrapolation は、細心の注意を払って行う必要があり、場合によっては恣意的な修正が必要になる場合があります。この問題は、MFM に限った問題ではありませんが。 

 

5.3.5.3 当初イールドカーブとの整合性

以上のプロセスで、全時間軸でのニュメレール価格の確率分布が求まりました。ところで、このようにして導出されたイールドカーブは、”理論的には”現時点のイールドカーブと一致していなければなりません。先ほどのアルゴリズムで言えば、\(T_1\) まで遡ってニュメレール価格の分布(\(x_{T_i}^{(k)}\) に対応するニュメレール価格)を求めましたが、それを使って \(T_0\) 時のイールドカーブを求めた場合、それは当初イールドカーブと一致していなければなりません。しかし必ずしもそうなっていません。

市場のオプション価格は、Arbitrage Freeの条件で導出されており、そこから導出されたゼロクーポン債価格の確率分布も、理論的には当初イールドカーブと一致しているはずですが、導出のアルゴリズムは至る所で数値解による近似値計算を行っており、そこから発生する微妙なずれが生じています。また、ニュメレール価格の(偏差値の)拡散過程は x を通して正規分布すると仮定していますが、実際の確率分布は、市場データから導出され、(対数)正規分布からはずれた分布になっており、そこでも誤差が出ている可能性があります。

そのずれを修正するアルゴリズムが、いくつか紹介されています。修正方法は、様々なタイプの MFM で、ケースバイケースになるので、詳細は説明しません。一例をあげれば、各時間軸のニュメレール価格を、下記のように修正する方法があります。

\[ N(T_i,T_n)~~→~~N(T_i,T_n )~ \frac{P_{MFM}(0,T_i)}{P_{market}(0,T_i)} \]

但し、この修正を加えると、今度は Volatility Smile カーブへのフィティングが悪くなります。実際に当初イールドカーブとの誤差を計算してみて、軽微であれば、そのまま使ってもいいかもしれません。

 

目次

Page Top に戻る

// // //