金融产品定价的基础:Bootstrap构建零息债券曲线和远期利率曲线
曲线是金融产品定价的基础,本文将介绍利用平价债券(Par Bond)和Bootstrap方法构建曲线的过程。我们将结合Excel表格和数学推导,逐步说明如何构建零息债券曲线(Zero Rate Curve)和远期利率曲线(Forward Rate Curve)。
本文中用到零息债券曲线和即期利率曲线(Spot Rate Curve)两个概念,因为零息债券只有到期现金流,因此其YTM和即期利率相等,所以本文中零息利率和即期利率为相同的概念
即期利率曲线和到期收益率曲线
在使用bootstrap构建曲线之前,我们需要了解即期利率和到期收益率曲线(Yield-To-Maturity Curve)两个概念。
到期收益率(YTM)曲线是不同期限债券的到期收益率构建的曲线,在债券定价中,每一期的现金流都以到期收益率进行再投资,也意味着在计算债券的现值时,都是以到期收益收益率作为折现因子,在债券的定价公式中所有的现金流都是以$r$进行折现。
\begin{equation} \frac{C}{(1+r)^{1}}+\frac{C}{(1+r)^{2}}+\ldots+\frac{P+C}{(1+r)^{n}}= 100 \end{equation}
另一方面,除了使用到期收益率$r$进行折现外,还可以使用不同期限的即期利率进行折现,下面的公式中$s_1,s_2, \ldots, s_n$,分别表示不同期限的即期利率,可以用来计算不同期限的折现因子(discount factor)。
\begin{equation} \frac{C}{(1+s_1)^{1}}+\frac{C}{(1+s_2)^{2}}+\ldots+\frac{P+C}{(1+s_n)^{n}}= 100 \end{equation}
本文就是利用不同期限的债券的到期收益率,通过Bootstrap方式不断进行迭代,计算即期收益率曲线和远期利率曲线,其计算的流程如下:
本文以每年付息4次,现值为100的不同期限平价债券作为示例
处理缺失的期限点
在给定的平价债券中,存在着一些关键期限点的缺失。我们首先通过插值的方法来填补这些缺失的期限点。例如,我们可以利用线性插值,通过已知的1年和2年到期债券来推导出1.25年到期债券的信息。具体的插值公式如下:
\begin{alignat}{2} &\frac{y-y_1}{x-x-1} = \frac{y_2 - y}{x_2-x} \\ &y = \frac{y_2(x-x_1)+y_1(x_2-x)}{x_2 - x_1} \end{alignat}
剥离债券的现金流
首先通过表格构建债券的票息(Coupon)和本金(principal),付息日的票息为:$\text{Face Value} * \text{Rates} / \text{Payment Method}$,到期日除了票息收入有有本金的收入:$\text{Face Value} * (1 + \text{Rates}/\text{Payment Method}$,比如0.5年的现金流分为两部分如下:
- $ CF_{0.25}= 100 * \frac{3.88\%}{4} = 0.97 $
- $CF_{0.5} = 100 * (1 + \frac{3.88\%}{4}) = 100.97$
构建的表格如下:
使用到期收益率折现债券现金流
债券的价格公式为:
\begin{equation} \text{Bond value} =\sum_{t=1}^{T} \frac{\text { Coupon }}{(1+r)^{t}}+\frac{\text { Par value }}{(1+r)^{T}} \end{equation}
按照这个公式折现每一个期限的现金流,比如0.5年的折现的现金流为:
- $ CF_{0.25} = \frac{100*\frac{3.88\%}{4}}{(1+\frac{3.88\%}{4})^{4*0.25}} =0.9607 $
- $ CF_{0.5} = \frac{(100+100*\frac{3.88\%}{4})}{(1+\frac{3.88\%}{4})^{4*0.0.5}} = 99.0393 $
0.5年两个现金流相加等于债券的面值($0.9607 + 99.0393 = 100$), 其他的期限也是如此,最终构建折现后的现金流表格如下:
构建即期利率曲线
即期利率曲线构建的利率基础为:平价债券通过到期收益率折现得到的PV和使用即期利率构建折现的PV应该相等,例如一个2年到期的债券,其理论的依据的数学公式应为:
\begin{equation} \frac{\text { Coupon }}{(1+YTM)^{1}}+\frac{\text { Coupon } + \text { Par value }}{(1+YTM)^{2}}= \frac{\text { Coupon }}{(1+ZC_1)^{1}}+\frac{\text { Coupon } + \text { Par value }}{(1+ZC_2)^{2}} \end{equation}
上述$ZC_1$和$ZC_2$分别为1年和2年的即期利率(Spot Rate or Zero Coupon Rate)。
在本文的例子中,0.25年到期的平价债券,因为中间没有票息收益,因此即期利率和到期收益率相等,因此0.25年的即期利率求解的公式为:
\begin{equation} 100 = \frac{101.0075}{(1 + \frac{ZC_{0.25}}{4} )^{4*0.25}} \end{equation}
根据上述公式,0.25年的折现因子为:
\begin{equation} \frac{1}{(1 + \frac{ZC_{0.25}}{4} )^{4*0.25}} = \frac{100}{101.0075} = 0.9900 \end{equation}
计算完初始的折现因子后,可以开始求解0.5年的折现因子,0.5年到期的债券分别在0.25年和0.5年两笔现金流,对于0.25年的现金流,可以通过上述求得的折现因子进行折现,即:$0.9900 * 0.9700 = 0.9603$, 那么0.5年的现金流在现值为$100 - 0.9603 = 99.0397$,这里也就意味着在0.5时刻现金流100.9700在0时刻的价值为99.0397,因此可以得到0.5时刻的折现因子为:$\frac{99.0397}{100.9700} = 0.9809$。
构建远期利率曲线
获取了零息率曲线,可以使用以下公式计算远期利率(forward rate): \begin{alignat}{2} (1 + r_{n})^{n} = (1 + r_{0})^{0} \times (1 + f_{01})^{1} \times (1 + f_{02})^{2} \times \ldots \times (1 + f_{0n})^{n} \end{alignat}
比如计算0.25年到0.5年的远期利率,
\begin{alignat}{2} (1 + \frac{r_{0.5}}{4})^{4 \times 0.5} &= (1 + \frac{r_{0.25}}{4})^{4 \times 0.25} \times (1 + \frac{f_{0.5}}{4})^{4 \times 0.25} \\ f_{0.5} &= [\frac{(1 + \frac{r_{0.5}}{4})^{4 \times 0.5}}{(1 + \frac{r_{0.25}}{4})^{4 \times 0.25}} - 1] \times 4 \end{alignat}
最后我们得到的零息债券曲线和远期利率曲线如下