上級編 1. イールドカーブ
1.1 Interpolation
1.1.4 Cubic Spline Interpolation (3次スプライン補間)
1.1.4.1 イントロダクション
Cubic Spline法は、各Pillarの値を、区間毎に3次関数で繫ぐ方法です。Zero Rateを繫ぐのが一般的ですが、Zero Rateに期間をかけた値を繫ぐ方法もあります。
各Pillarを \( t_i,\ i=1,2,…,n\) とし、各Pillarにおける\(Zero\ Rates\ r(t_i):=r_i,\ i=1,2,…,n\) がBootstrappingのアルゴリズムにより既に判っているとします。(注:実際には、一定の推定値を置いて、Interpolation法のアルゴリズムと組合せ、Solverにより求める。)Pillar間の任意の時間を \( t, t_i \lt t \lt t_{i+1}\) とし、その時点の\(Zero\ Rate\ r(t)\) を3次関数で表現すると
\[ r(t)=a_i+b_i(t-t_i)+c_i(t-t_i)^2+d_i(t-t_i )^3, \tag{1.1.5} \]この式の両辺をtで、1階、2階、3階、それぞれ微分すると以下のようになります。
\[ r'(t)=b_i+2c_i(t-t_i )+3d_i(t-t_i)^2 \] \[ r''(t)=2c_i+6d_i(t-t_i)2 \] \[ r'''(t)=6d_i \]この3次関数の係数は、単純に考えると、特定のPillar \(t_{i-1},\ t_i,\ t_{i+1},\ t_{i+2}\) の4点の値が判れば、その4点を通る3次式として一意に特定できます。この3次式を、真ん中の区間[τ_i,τ_(i+1)]にのみ使い、Pillarをひとつずつずらして行けば、最初と最後の区間を除いたすべての区間について連続な3次式で結んでいけそうです。最初と最後の区間も、一定の境界条件を決めれば3次式を特定でき、イールドカーブ全体の曲線が出来そうです。しかし、この方法をイールドカーブ構築に使うと、各Pillarで連続ではあるものの微分不可能になります。また、最初に述べた“好ましい性質”という点で局所性は優れているものの、フォワードカーブの形状で劣ります。 そこで、より望ましいカーブの性質を導き出す為に、係数 \(a_i,\ b_i,\ c_i,\ d_i\) の決め方に工夫を加える訳ですが、その方法にいくつかのバリエーションがあります。
まず、イールドカーブの望ましい形状から、いくつかの制約条件が考えられます。各Pillar間の期間を \(h_i=t_{i+1}-t_i\) とおくと
- まず、各Pillarにおいて、Zero Rateがベンチマーク商品の市場価格にExact Fitしなければなりません。すなわち、各PillarのZero Rateから導出されるDiscount Factorを使って、原データとなるベンチマーク商品の現在価値を計算すると、それが市場価格と完全に一致する必要があります。そうすると、
\[ a_i=r_i,\ i=1,2,…,n-1 \tag{1.1.6}\] \[ a_{n-1}+b_{n-1}h_{n-1}+c_{n-1}h^2_{n-1}+d_{n-1}h^3_{n-1}=r_n ∶= a_n \tag{1.1.7} \] - カーブは各Pillar間で連続でなければなりません。そうすると
\[ a_{i+1}=a_i+b_i h_i+c_i h^2_i+d_i h^3_i,\ i=1,2,…,n-2 \tag{1.1.8} \] - カーブは各Pillarにおいて、導関数も連続であって欲しい。そうすると
\[ b_{i+1}=b_i+2c_i h_i+3d_i h^2_i,\ i=1,2,…,n-2 \tag{1.1.9} \]
瞬間フォワード金利は、Zero Rateに期間をかけた値を期間で微分した値になります。そこで 1.1.5式にtをかけて、それをtで微分すると、
\[ f(t)=\frac{\partial r(t)t}{\partial t}=\{a_i t+b_i (t-t_i )t+c_i (t-t_i )^2 t+d_i (t-t_i )^3 t\}' \] \[ =a_i+b_i(2t-t_i)+c_i(t-t_i)(3t-t_i)+d_i(t-t_i )^2 (4t-t_i) \tag{1.1.10} \]この式から解る通り、\(f(t)\)はPillar上でZero Rateと一致し、Pillar間ではZero Rateとは異なる3次関数の経路を取ります。
以上の制約条件で、未知数が4n−4個(n-1個の区間にそれぞれ対応する3次式を特定するには、係数が4個ずつ、合計4n−4個必要になる)に対し、方程式が3n−4本、用意できました。まだ式がn本足りません。そこで必要な式を、追加の制約条件を課すことによって補充しますが、その方法が幾つか発表されています。
Hagan-West (2006)の論文では、Bessel (Hermite) Cubic Spline, Natural Cubic Spline、Financial Cubic Splineなどの方法が紹介されています。それ以外にも、原カーブの単調性を維持する為の修正を加えた方法(Monotone Preserving Cubic Spline)も紹介されています。
このように紹介されている様々なCubic Spline法を大きく分けると、
- 各Pillarで一階微分可能とする方法(Bessel (Hermite) Cubic Spline,)
- 各Pillarで二階微分可能とする方法 (Natural Cubic Spline, Financial Cubic Spline)
- 不自然な波を消す為に修正を加える方法(Monotone Preserving Cubic Spline)
(i)の方法は、Spline関数の係数の内、\(b_i\) を、差分法を使って外生的に与える事で不足している式の数を足します。アルゴリズムは比較的簡単で、局所性も確保できますが、瞬間フォワードカーブがPillarにおいて(連続ではあるものの)微分不可能になります。(ii)の方法は、2階微分可能とすることで、瞬間フォワードカーブも滑らか(微分可能)になりますが、不自然な波が発生する可能性が高くなります。また、係数を求めるアルゴリズムが連立方程式を解く形になり、Pillar全体のZero Rateが各係数に影響を及ぼす為、局所性で劣ります。(iii)の方法は、(i) (ii)の欠点を修正するような方法ですが、かなり技巧的で、アルゴリズムが相当複雑になります。
以下に、(i)の例として、Catmull-Rom Cubic Spline法と、Hagan-Westの論文で紹介されている方法(de Boorが紹介した方法)、(ii)の例としてFinancial Cubic Spline法、を紹介します。(iii)についても簡単に説明しますが、詳しい技法はHymanの論文(”Accurate Monotonicity Preserving Cubic Interpolation” J. M. Hyman 1983)が詳しいので、それを参照して下さい。単調性を維持する為の技法としては、瞬間フォワード金利のカーブで似たような方法を使う、Monotone Convex Spline法が、Hagan-Westの論文で紹介されており、そちらの方を詳しく、1.1.6以降で紹介したいと思います。
1.1.4.2 Bessel (Hermite) Cubic Spline法 (各Pillarで1階微分可能)
この方法は、Zero Rateの3次スプライン関数(1.1.5式)のPillarにおける傾きを外生的に与える事で、連立方程式で不足する式の数を補充します。Interpolator(補間関数)を t で微分し、\(t=t_i\) 時の微分係数を求めると \(b_i\) になります。
\[ r'(t_i)=b_i+2c_i(t-t_i)+3d_i(t-t_i)^2 |_{t=t_i}=b_i,\ \ i=1,2,…,n\]この \(b_i\) を、例えば差分で求めて、外生的に与える方法が考えられます。
<Catmull-Rom Cubic Spline法>
この内、Catmull-Rom Cubic Spline法と呼ばれている方法は、\(b_i\) を、下記のように、\(t_i\) の両側のPillarを直線で結び、その傾きで求める方法です。
\[ b_i=\frac{r_{i+1}-r_{i-1}}{t_{i+1}-t_{i-1}} \tag{1.1.11} \]但し、左端と、右端は、それぞれ前進差分と後退差分を使って計算します。そうすると、Interpolatorが、\(r_i\) と\(t_i\) の情報だけを使って、下記のような行列形式で表現できます。
\[ r(t)= {\bf D(t)_i^T∙[A]_i}∙ \left( \begin{array}{c} r_{i-1}\\ r_i\\ r_{i+1}\\ r_{i+2}\\ \end{array} \right) =(δ_i^3,δ_i^2,δ_i^1,1)∙ \left( \begin{array}{cccc} -α_i & 2-β_i & 2+α_i &β_i\\ 2α_i & β_i-3 & 3-2α_i & -β_i\\ -α_i & 0 & α_i & 0\\ 0 & 1 & 0 & 0\\ \end{array} \right) \left( \begin{array}{c} r_{i-1}\\ r_i\\ r_{i+1}\\ r_{i+2}\\ \end{array} \right) \tag{1.1.12} \] 但し、
\( i=2, 3, …, n-2\)
各PillarにおけるZero Rate:\(r_i\)
各Pillarの間隔 \(h_i=t_{i+1}-t_i\)
時間tのPillar間での相対位置 \(δ_i=\frac{t-t_i}{h_i}\)
\(α_i=\frac{t_{i+1}-t_i}{t_{i+1}-t_{i-1}}=\frac{h_i}{h_i+h_{i-1}},\ \ β_i=\frac{t_{i+1}-t_i}{t_{i+2}-t_i}=\frac{h_i}{h_{i+1}+h_i} \)
ここで、両端における傾き \(b_1,\ b_n\) をそれぞれ前進差分、後退差分で導出して、下記のとおり \(\bf [A]_1\) と \( \bf [A]_{n-1} \) を補充すれば、すべての区間において補間関数が特定できます。
\[ \bf [A]_1= \left( \begin{array}{cccc} 0 & 1-β_1 & -1 &β_i\\ 0 & -1+β_1 & -1 & -β_i\\ 0 & -1 & α_1 & 0\\ 0 & 1 & 0 & 0\\ \end{array} \right),\ \ {\bf [A]_{n-1}}= \left( \begin{array}{cccc} -α_{n-1} & 1 & -1+α_{n-1} & 0\\ 2α_{n-1} & -2 & 2-2α_{n-1} & 0\\ -α_{n-1} & 0 & α_{n-1} & 0\\ 0 & 1 & 0 & 0\\ \end{array} \right) \]<別の\(b_i\) の求め方>
別の\(b_i\) の求め方として、Hagan-Westの論文では、\(b_i,\ i=1,2,…,n\) を、\(t_{i-1},\ t_i,\ t_{i+1}\) の3点を通る2次関数の傾きで求める方法を紹介しています。この方法で、解析的に各\(b_i\) を求めた結果だけを示します。
\[ b_1=\frac{1}{t_3-t_1}\left[ \frac{(t_3+t_2-2t_1)(r_2-r_1)}{t_2-t_1}-\frac{(t_2-t_1)(r_3-r_2)}{t_3-t_2}\right],\ \ i=1 \tag{1.1.13} \] \[ b_i=\frac{1}{t_{i+1}-t_{i-1}}\left[ \frac{(t_{i+1}-t_i)(r_i-r_{i-1})}{t_i-t_{i-1}}+\frac{(t_i-t_{i-1})(r_{i+1}-r_i)}{t_{i+1}-t_i} \right],\ 1\lt i\lt n \tag{1.1.14} \] \[ b_n=\frac{1}{t_n-t_{n-2}} \left[ \frac{(t_n-t_{n-1})(r_{n-1}-r_{n-2})}{t_{n-1}-t_{n-2}}-\frac{(2t_n-t_{n-1}-t_{n-2})(r_n-r_{n-1})}{t_n-t_{n+1}} \right] ,\ i=n \tag{1.1.15} \]\(b_i\) が特定されれば、\(c_i,\ d_i\) は、下記式で導出できます。
\[ c_i=\frac{3m_i-b_{i+1}-2b_i}{h_i},\ \tag{1.1.16}\] \[ d_i=\frac{b_{i+1}+b_i-2m_i}{h_i^2},\ tag{1.1.17}\]但し、
\[ m_i=\frac{a_{i+1}-a_i}{h_i}, \]こうすると、比較的簡単なアルゴリズムで、3次スプライン関数の係数行列が求まります。
この方法でZero RateのSpline関数を求めると、そこから導出される瞬間フォワードカーブは、各Pillarで連続ではあるものの、微分不可能で、角のあるカーブになります。一方で、各係数が、そのPillarに隣接しているPillarのZero Coupon Rateの値だけで求まるので、局所性は次の2階微分可能なCubic Spline法より優れています。
1.1.4.3 2階微分が可能な Cubic Spline法
構築される3次スプライン関数が、各Pillarにおいて2階微分可能になるという制約条件をかけます。そうすると、各Pillarにおいて、1階導関数が連続になるので、次の様な式が導出できます。
\[ c_{i+1}=c_i+3d_i h_i,\ for\ i=1,2,…,n-2 \tag{1.1.18} \]これで、新たにn-2本の方程式が立てられます。(1.1.6)~(1.1.9)の制約条件の式と加えて、4n―6本の方程式が用意できました。未知数の数4n−4個に対して、まだ足りない2本は、カーブの両端の境界条件を決めて、補充します。その境界条件の決め方として、次の様な方法があります。
- 両端の2階微分を0にする方法(Natural Cubic Spline)
- 左端の2階微分を0、右端の1階微分を0にする方法(Financial Cubic Spline)
前者は、カーブの右端での2階微分を0とするので、イールドカーブをExtrapolationする際、若干問題になります。すなわち、右端のZero Rateを、右端の区間の傾きの直線をそのまま伸ばす事になり、傾きが正であれば無限遠で+∞になり、傾きが負なら−∞になってしまいます。一方後者は、右端だけ1階微分を0にするので、右端のRateが、その値のまま無限遠までExtrapolationされます。金融で使われる方法としては、後者の方がより自然と考えられます。従って、ここでは、後者の方法で、各Pillarにおける係数 \(a_i,\ b_i,\ c_i,\ d_i\) の求め方を説明します。
未知数 a_i は、a_i=r_i として、外生的に与えられるので、最初から既知数として扱い、未知数が3n-3、式の数が3n-3の連立方程式として、行列形式で表示してみます。
\[ \left[ \begin{array}{cccccccccc} 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & \ldots & 0\\ h_1 & h_1^2 & h_1^3 & 0 & 0 & 0 & 0 & 0 & \ldots & 0\\ 1 & 2h_1 & 3h_1^2 & -1 & 0 & 0 & 0 & 0 & \ldots & 0\\ 0 & 1 & 3h_1 & 0 & -1 & 0 & 0 & 0 & \ldots & 0\\ 0 & 0 & 0 & h_2 & h_2^2 & h_2^3 & 0 & 0 & \ldots & 0\\ 0 & 0 & 0 & 1 & 2h_2 & 3h_2^2 & -1 & 0 & \ldots & 0\\ - & - & - & - & - & - & - & - & \ldots & 0\\ 0 & \ldots & - & - & - & - & - & - & - & 0 \\ 0 & \ldots & 0 & 0 & 0 & 1 & 3h_{n-2} & 0 & -1 & 0 \\ 0 & \ldots & 0 & 0 & 0 & 0 & 0 & h_{n-1} & h_{n-1}^2 & h_{n-1}^3\\ 0 & \ldots & 0 & 0 & 0 & 0 & 0 & 1 & 2h_{n-1} & 3h_{n-1}^2\\ \end{array} \right] \left( \begin{array}{c} b_1\\c_1\\d_1\\b_2\\c_2\\d_2\\ \vdots \\ \vdots \\b_{n-1}\\c_{n-1}\\d_{n-1} \end{array} \right) = \left( \begin{array}{c} 0\\a_2-a_1\\0\\0\\a_3-a_2\\0\\ \vdots \\ \vdots \\0\\a_n-a_{n-1}\\0 \end{array} \right) \]各行の意味は
- 1行目の式は \(c_1=0\) で左端の2階微分が 0 という境界条件
- 2行目は、Interpolatorが各Pillarで連続という条件式
- 3行目は1階微分が、各Pillarで連続という条件式
- 4行目は2階微分が、各Pillarで連続という条件式
- 5行目以降は、Pillarをひとつだけずらして、同様の方程式の繰り返し
- 最後の行は \(b_{n-1}+2c_{n-1} h_{n-1}+3d_{n-1}h^2_{n-1}=0\) で、右端の1階微分が 0 という境界条件を示す
この行列演算は、2×1幅(下対角が2列、上対角が1列の4重対角行列)のBand Matrix(帯行列)の形にしたアルゴリズムが使え、比較的高速で解(Interpolatorの係数)が求まります。
この方法は、Bessel(Hermite) Cubic Spline法と比較して、瞬間フォワードカーブを滑らかにする事ができます。一方で、Pillarで急カーブが発生する場合(2階微分値が大きい場合)、カーブの形状に、不自然な局所最大値、局所最小値が発生したり、カーブに大きな“たわみ(too much convexity/concavity)”が発生したりします。また、Sensitivitiesを計算する際に、局所性でも劣ります。
1.1.4.4 Monotone Preserving Cubic Spline法
通常のCubic Spline法では、連続する3点のPillarの値が、\(r_{i-1}\lt r_i\lt r_{i+1},\) あるいは、\(r_{i-1}\gt r_i\gt r_{i+1},\) のように、単調増加・単調減少していても、この区間のどこかで、局所的な最大値や最小値が発生し、単調性が失われる事があります。そうすると経済現象として、やや不自然な感があり、これを修正して単調性を失わないようにする方法が提案されています。
この方法は、Hymanの論文(”Accurate Monotonicity Preserving Cubic Interpolation” J.M. Hyman, 1983)で紹介され、Hagan-Westの論文でもそれを若干修正した方法が解説されています。具体的には、単調性を維持する為に、各Pillarにおける傾き \(b_i\) を、一定の範囲内に押し込めるような調整をします。その導出過程の詳細については、Hymanの論文が詳しいので、それを参考にして下さい。ここでは、簡単に結論だけ説明します。
連続する3点のPillar \(t_{i-1},\ t_i,\ t_{i+1}\) における、Zero Coupon Rateが \( r_{i-1},\ r_i,\ r_{i+1}\) であったとします。 この3点で挟まれた2区間におけるZero Coupon Rateを直線で結び、その傾きをそれぞれ、\( m_{i-1},\ m_i \) とおくと、
\[ m_{i-1}=\frac{r_i-r_{i-1}}{t_i-t_{i-1}},\ \ m_i=\frac{r_{i+1}-r_i}{t_{i+1}-t_i} \]この3点でZero Coupon Rateが単調増加、あるいは単調減少している場合、\( m_{i-1} \times m_i \gt 0\) になります。この場合、\(t_i\) におけるCubic Spline関数の傾き \(b_i\) を次の様に定義します。(なぜそうなるかは、Hymanの論文を参照して下さい)
\[ b_i=\frac{3m_{i-1}\times m_i}{max(m_{i-1},m_i)+2min(m_{i-1},m_i)} \tag{1.1.20} \]また、カーブの両端の時点 \(t_1,\ t_n\) における傾きは、\(b_1=b_n=0\) とします。(Hymanは異なる値を使っていますが、それだと最初の区間と最後の区間で単調性が失われる可能性があり、Hagan-Westの論文では、このように修正しています)
このように傾きを設定すれば、概ね区間内での単調性は維持されますが、\(b_i\) の絶対値が、\(m_{i-1},\ m_i\) の絶対値の小さい方の3倍より大きい場合は、3倍以内になるよう修正をします。すなわち、
\[ b_i= \begin{cases} min (max(b_i,0),\ 3min(m_{i-1},\ m_i)),\ if\ r_{i-1} \lt r_i \lt r_{i+1}\\ max (max(b_i,\ 0),\ 3min(m_{i-1},\ m_i)),\ if\ r_{i-1}\lt r_i\lt r_{i+1} \end{cases} \]この方法は、単調性を維持できるだけでなく、b_i を、前後の区間の傾きだけを使って外生的に与えるので、局所性が維持でき、かつ計算アルゴリズムもシンプルです。一方で、各Pillarにおいて微分不可能になります。