基礎編 2. 金利の期間構造
2.4 Par CurveからDiscount CurveとForward Curveを導出する方法
2.4.2 Bootstrapping
ここでは、Bootstrappingの途中でInterpolationを行わない、簡単な例を示します。実際に実務で使われているアルゴリズムは、Interpolationも同時に行う複雑なアルゴリズムですが、まず、Par Curveと、Zero Curve、Discount Curve、Forward Curveの関係を理解するために、簡単な例を使います。また、OISスプレッドは勘案せず、かつてのLIBOR-Swapカーブの構築方法を使います。
まず、市場で次の3種類の商品の利回りが判っているとします。
- 期間1年のLIBOR: 1%p.a.
- 期間2年の金利スワップ(固定金利年1回払い、変動金利6カ月LIBOR): 1.2%p.a.
- 期間3年の金利スワップ(固定金利年1回払い、変動金利6カ月LIBOR): 1.3%p.a.
( LIBOR金利の日数計算方法は“実日数÷360日”、金利スワップの固定金利の日数計算方法は“実日数÷実日数”であったとします。)
最初のセクションで示した、金融商品の価格式をもう一度示します。
$$ 金融商品の価格 =\sum CashFlow_i (T_i) \times Probability(CashFlow_i) \times DiscountFactor(r(T_i)) $$ここで、各 \( CashFlow_i (T_i) \)は上記商品の取引き慣行で決まるので外生的に与えられ、またLIBORやSwapはオプション性が無いので、\( Probability(CashFlow_i)=1\) とします。金利は市場実勢であり、価格はPar(額面の100%)とみなせるので、左辺は100%となります。そうすると、\(DiscountFactor(r_{riskfree}(T_i))\) が未知数となる方程式が成立します。
1年物のLIBOR預金のキャッシュフローは、ゼロクーポン債と同じです。1年後に受け取る元本と利息の合計を、ゼロクーポン債の償還額とみなせます。表面利率は1%p.a.ですが、日数計算方法が365÷360なので、実際のイールドは1.0139%p.a.になります。なので、投資元本100に対し、1年後に100+(100×1%×365/360)=101.0139のキャッシュフローが返ってきます。すなわち
\begin{eqnarray*} 101.0139\times DiscountFactor(r(1.0)) &=& 100 \\ DiscountFactor(r(1.0)) &=& 0.98996 \end{eqnarray*}となります。これは、期間1年のゼロクーポン債価格に相当します。ここからさらに、
$$ ZeroCouponBond(T)=e^{-r(T)T}$$の関係式を使って、連続複利利率でのゼロクーポン債利回り、すなわち\( r(1.0) \) を求めると、
$$ r(1.0)=-\ln{ZeroCouponBond(1.0)}/1.0=1.0089\% c.c.$$となります。これで期間1年のDiscount FactorとZero Coupon Rateが求まりました。
次に、期間2年の金利Swapの固定金利と、既に求まった期間1年のDiscount Factorを使って、期間2年のDiscount FactorとZero Coupon Rateを求めます。式の簡略化のため、\( DiscountFactor(r (T_i )) \)を\( P(r(T_i )) \)と表記します。期間2年の金利スワップの固定金利にみなし元本を加えたキャッシュフローは、固定金利債券と同じキャッシュフローの形を取り、その現在価値がPar(100%)とみなせます。従って、
$$ \sum CashFlow_i(T_i)\times P(r(T_i))=1.2\times P(r(1.0))+101.2\times P(r(2.0))=100 $$という方程式が成立し、この内、\( P(r(1.0)) \)は既に求まっているので、\( P(r(2.0)) \)を求める事ができます。式を解くと、
$$ P(r(2.0))=\frac{100-1.2*0.98996}{101.2}=0.9764$$となり、期間2年のDiscount Factorが求まりました。ここから期間2年のZero Coupon Rateを求めると
$$ r(2.0)=-\ln{P(r(2.0))}/2.0=\frac{-\ln{0.9764}}{2}=1.0194\% c.c.$$となります。
さらに、期間3年の金利スワップの固定金利レートと、既に求まった期間1年と期間2年のDiscount Factorを使って、次の方程式が成立し、これを解くと、期間3年のDiscount FactorとZero Coupon Rateが求まります。
\begin{eqnarray*} \sum CashFlow_i(T_i)\times P(r(T_i)) &=&1.3\times P(r(1.0))+1.3\times P(r(2.0))+101.3\times P(r(3.0)) \\ &=& 1.3\times 0.98996+1.3\times 0.9764+101.3\times P(r(3.0))=100 \\ P(r(3.0)) &=& 0.96193 \\ r(3.0) &=& 1.2937\% c.c. \end{eqnarray*}このように、期間の短い市場金利から順番にDiscount Factorを求めていくアルゴリズムを、靴紐を通す手順に例えてBootstrappingと呼んでいます。
以上の手順を連立方程式の形にまとめると、もう少しすっきりします。n番目の金融商品のi番目のキャッシュフローを \( CF_{n,i}\ \) とおき、各CF日におけるDiscount Factorを \( P(r(T_i ))\ \) とおくと、
\[ \left\{ \begin{array}{l} CF_{1,1}×P(r(T_1 ))\ &=& 100 \\ CF_{2,1}×P(r(T_1 ))+ CF_{2,2}×P(r(T_2 ))\ &=& 100 \\ CF_{3,1}×P(r(T_1 ))+ CF_{3,2}×P(r(T_2 ))+CF_{3,3}×P(r(T_3 ))\ &=& 100 \\ ...\\ CF_{N,1}×P(r(T_1 ))+ CF_{N,2}×P(r(T_2 ))+CF_{N,3}×P(r(T_3 ))+CF_{N,M}×P(r(T_M))\ &=& 100 \end{array} \right. \]のような連立方程式が成立します。未知数は各P(・)で、各\( CF_{n,i} \)と右辺の現在価値(市場価格)は、取引慣行と市場データから外生的に与えられます。これを行列形式で表示してみます。
\[ \left( \begin{array}{ccccc} CF_{1,1} & 0 & 0 & \ldots & 0 \\ CF_{2,1} & CF_{2,2} & 0 & \ldots & 0 \\ CF_{3,1} & CF_{3,2} & CF_{3,3} & \ldots & 0 \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ CF_{N,1} & CF_{N,2} & CF_{N,3} & & \ldots & CF_{N.M} \\ \end{array} \right) \left( \begin{array}{ccccc} P(r(T_1))\\ P(r(T_2))\\ P(r(T_3))\\ \vdots \\ P(r(T_N))\\ \end{array} \right) = \left( \begin{array}{ccccc} 100\\ 100\\ 100\\ \vdots \\ 100\\ \end{array} \right) \]この連立方程式を解くには、式の数と未知数の数が一致する必要があります(N=M)。しかし、実際には市場データが限られており、式の数が足りなくなるのが普通です(N < M) 。例えば、上記の例で金利スワップの固定金利の支払い回数が年2回であった場合、期間0.5年と1.5年にもクーポンキャッシュフローが存在しています。期間0.5年については6カ月LIBORからDiscount FactorとZero Coupon Rateが求まります。しかし期間1.5年には、そのような商品がないかもしれません。
その場合、Interpolationの手法を使って、期間1.5年のレートを補間する事で対応します。BootstrappingとInterpolationのアルゴリズムは、互いに影響を及ぼし合うので、相当複雑なアルゴリズムになります。これについては別の所で説明したいと思います。
最後に、Discount CurveからForward Curveを導出する方法です。上記の例で、期間1年、2年、3年のDiscount Factorが求まりました。ここから、1年後スタートの期間1年のフォワード金利と、2年後スタートの期間1年のフォワード金利が求まります。\( F(T_i ,T_j )\) を\(T_i\)スタート、\(T_j\) エンドの期間に対応するフォワード金利(連続複利)とすると
\[ F(T_1,T_2)=\frac{-\ln{\{P(r(T_2 ))/P(r(T_1 )\}}}{(T_2 - T_1 )}=1.379\%c.c. \]\[ F(T_2,T_3)=\frac{-\ln{\{P(r(T_3 ))/P(r(T_2 )\}}}{(T_3 - T_2 )}=1.493\%c.c. \]
さらに、1年後スタートの期間2年のフォワード金利は、
\[ F(T_1,T_3)=\frac{-\ln{\{P(r(T_3 ))/P(r(T_1 )\}}}{(T_3 - T_1 )}=1.436\%c.c. \]とりあえず簡単に求まるフォワード金利はここまでです。フォワード期間は、1年後から期間0.5年とか、1.5年後から期間0.25年など、無限に選択可能です。しかし、与えられたDiscount Factorから直ちに得られるフォワード金利は、上記のみです。その他のフォワード金利は、何等かのInterpolationの方法を使わないと求まりません。但しそれは非常に慎重に行う必要があります。これについても、別の所で説明したいと思います。
以上が、Par CurveからDiscount Curve、Zero Curve, Forward Curveを導出する方法の説明でした。