实验16 利率期限结构分析

一、实验目的

通过上机实验,使学生充分理解利率期限结构的含义和债券到期收益率曲线的计算方法和原理,在利用Excel 2007软件的过程中,掌握债券到期收益率曲线的计算方法。

二、预备知识

2.1债券到期收益率的计算公式

(1) Windows操作系统的常用操作;

(2)数据库的基础知识;

(3)Excel软件的基本操作;

(4)债券到期收益率模型的理论知识。

$$P V=\sum_{i=1}^{T} \frac{C}{(1+y)^{i}}+\frac{F}{(1+y)^{T}}$$  (1)

其中:PV是债券的现值,即通常的交易价格;

C是每期债券的利息支付额,一般的每期支付额相同;

y是债券到期收益率,这是需要计算的量;

T是债券现金流的期数;

F是债券的面值。

2.2债券到期收益率的期限结构的含义

  • 利率期限结构(term structure):某个时点不同期限的即期利率与期限所组成的一条曲线。因为在某个时点,零息票债券的到期收益率等于该时期的即期利率,所以利率期限结构也可以表示为某个时点零息票债券的收益率曲线。
  • 收益率曲线(yield curve):通常是指付息债券的到期收益率与期限之间的关系曲线。
  • 因此,这两个概念是有区别的。因为即期利率不一定等于到期收益率。在描述利率期限结构的时候,为什么不用到期收益率曲线来描述的原因是因为到期收益率存在“息票效应”。
  • 息票效应(coupon effect),是指到期日相同的附息债券,由于票面利率的不相同而使得到期收益率存在差异的现象。息票效应的存在使得到期收益率曲线不唯一。
  • 尽管利率期限结构收益率曲线的概念是有区别的,但实际上应用的效果却相差不大,因为市场套利的成本通常大于这两者之间的差别。另外,由于我国债券市场零息票债券发行较少,并且纯贴现债券市场不发达,因此,要得到零息债券的到期收益率只能通过一些技术上的方法来解决,比如解鞋带法(Bootstrapping method)等,但这些方法超出了本实验的要求,因此本实验近似地以债券到期收益率为输入变量,求出中国上证交易所在某时点的收益率曲线。

2.3多项式样条模型(Polynomial Splines Model)

MoCulloch(1971, 1975)通过对债券定价公式中的折现率函数进行假设,然后通过回归方法得出相应的参数,进而反过来求出折现率函数,从而推导出即期利率曲线。债券定价公式为:

$$P=100 \delta\left(m_{0}\right)+\sum_{i=0}^{n} C \delta\left(m_{i}\right)$$  (2)

δ(m)是期限为m的单位零息债券的贴现函数。m是债券的到期日期,mi 是利息的支付日。C 是利息额。假设债券的面值为100.

如果假设:

$$\delta(m)=a_{0}+\sum_{j=1}^{k} a_{j} f_{j}(m) $$  (3)

则有:

$$a_{0}=1, f_{j}(0)=0$$  (4)

将(3)式带入(2)式中,得:

$$\begin{array}{l}
P=100\left[1+\sum_{j=1}^{k} a_{j} f_{j}\left(m_{0}\right)\right]+C \sum_{i=0}^{n}\left[1+\sum_{j=1}^{k} a_{j} f_{j}\left(m_{i}\right)\right] \\
=100+C(n+1)+\sum_{j=1}^{k} a_{j}\left[100 f_{j}\left(m_{0}\right)+C \sum_{i=0}^{n} f_{j}\left(m_{i}\right)\right.
\end{array}$$  (5)

令: y=P-100-C(n+1)  (6)

$$x_{j}=100 f_{j}\left(m_{0}\right)+C \sum_{i=0}^{n} f_{j}\left(m_{i}\right)$$  (7)

则有:$$y=\sum_{j=1}^{k} a_{j} x_{j} $$  (8)

这样,我们就可以通过对如下模型进行回归,求出相应的参数。

$$y=\sum_{j=1}^{k} a_{j} x_{j}+\varepsilon$$  (9)

而通常地,我们令:

$$f_{j}(m)=m^{j}$$  (10)

所以,在某个时点t,我们就可以通过对fj(m)和k进行假设,这样,就可以求出任何时期的折现值。而k值通常可以根据所谓的“平方根法则” (s是债券样本个数)求得,一般地选k=2,3较为合适。

通过前面的回归方程我们可以得到参数aj,在已知假设

$$f_{j}(m)=m^{j}$$

的情况下,我们可以得到折现率函数,

$$\delta(m)=1+\sum_{j=1}^{k} a_{j} f_{j}(m)$$  (11)

然后再由折现率与即期利率之间的关系:

$$y(m)=-\frac{1}{m} \ln \delta(m)$$  (12)

这样,我们在理论上就可以得到即期利率与到期期限的关系

在推导了多项式样条模型的基础上,我们就可以用Excel函数来完成利率期限结构的计算。

三、实验内容

启动Excel,并输入相关数据,然后按照实验步骤,计算债券利率期限结构。这里,我们采用多项式样条法和息票剥离法来求利率期限结构。

四、实验步骤

4.1输入实验数据

根据债券现值的计算公式,我们会很容易发现,要计算债券的到期收益率,就必须知道相关的数据:

  1. 债券的交易日期,也叫结算日期;
  2. 债券的到期日期,有了这两个数据才可以计算出债券现金流的期数;
  3. 债券的息票率,即债券的票面利率;
  4. 债券的面值,即债券到期日支付的本金;
  5. 债券每年计息次数;
  6. 债券的结算价格,即交易价格。

本实验以我国上海证券交易所交易的国债为例,介绍债券到期收益率的计算方法。这些数据的来源可以从相关的财经网站上获得,或者从证券交易行情软件上下载。

表1:2008年11月19日上海证券交易所国债交易数据

codepricesettlematuritycouponperiodprincipal
009908100.7211-19-0809-23-090.03301100
010107111.9811-19-0807-31-210.04262100
010110101.0111-19-0809-25-110.02951100
010112101.4511-19-0810-30-110.03052100
010115100.0211-19-0812-18-080.03001100
01020399.8011-19-0804-18-120.02541100
01021099.9211-19-0808-16-090.02391100
01021397.2411-19-0809-20-170.02602100
010215100.4211-19-0812-06-090.02931100
010301100.2111-19-0802-19-100.02661100
010303101.9011-19-0804-17-230.03402100
010307100.2011-19-0808-20-100.02661100
010308100.6511-19-0809-17-130.03021100
010311102.1011-19-0811-19-100.03501100
010403100.8111-19-0804-19-090.04421100
010404106.3011-19-0805-25-110.04891100
010407106.0611-19-0808-25-110.04711100
010408101.6211-19-0810-20-090.04301100
010410107.0011-19-0811-25-110.04861100
010501108.2011-19-0802-28-150.04442100
010503101.0011-19-0804-26-100.03301100
010504110.3411-19-0805-15-250.04112100
010505103.0011-19-0805-25-120.03371100
010509100.8011-19-0808-25-120.02831100
01051199.1611-19-0810-20-100.02141100
010512103.4911-19-0811-15-200.03652100
010513101.1611-19-0811-25-120.03011100
01060199.0211-19-0802-17-130.02511100
01060397.8011-19-0803-27-160.02802100
1060499.9311-19-0804-17-090.02121100
1060599.5411-19-0805-16-110.02401100

将这些数据输入Excel表格中,如图1所示。

图1:在Excel表格中输入相关数据

4.2计算债券到期收益率

参考实验债券到期收益率的实验步骤,用Yield函数可以很容易得到债券到期收益率,如图2所示。

图2:债券收益率的计算结果

4.3计算债券到期时间

我们在单元格I1输入“Year”,表示某债券从购买日到到期日的时间有多长,我们可以用函数“YEARFRAC”来计算。在这里,我们依然采用先计算其中某债券的到期时间、然后再用填充柄复制的方法。如图3所示,我们首先将光标放在单元格I2中,然后点击插入函数图标fx,在对话框“插入函数”的“或选择类别”输入框中,选择“日期与时间”函数,在“选择函数”输入框中,选择“YEARFRAC”函数,单击确定,我们得到图4。在自变量“start-date”中输入“C2”;在自变量“end-date”中输入“D2”;在自变量“Basis”中输入“3”,表示按实际上天数计算,一年按365天计算。如果不清楚函数中各个变量的使用情况,可以点击对话框“函数参数”左下角的“有关该函数的帮助”,在该“帮助”的指导下,很容易得出债券到期有多少年。在得到了某债券的到期年数后,我们将光标放在单元格I2的右下方,这时,屏幕上会出现一个实心的十字“+”,用鼠标按住“+”,一直往下托,直至I列中所有的单元格全部自动填列出相应的数值。如图5所示,债券的到期时间就全部计算出来了。

图3:输入函数“YEARFRAC”的示意图
图4:在函数“YEARFRAC”中输入自变量
图5:债券到期时间的计算

4.4利用“多项式样条法”构建利率期限结构模型

在有了利率和到期时间的数据之后,我们就可以利用“立方多项式样条法”来构建利率期限结构模型。由于该模型的理论部分已经介绍完了,因此,接下来的主要介绍实际操作的问题。主要分为两个部分:第一部分是将相关的散点图做出来;第二部分是在散点图上加上多项式样条法趋势线。

单击“工具栏”上的“插入”→“散点图”,选择最简单的散点图。此时,在Excel的表格中会出现图表区,将鼠标放在图表区,单击右键,点击“选择数据”,然后在对话框“选择数据源”中,单击“添加”。如图6所示,在Excel的表格中会出现“编辑数据系列”的对话框,在“系列名称中”输入“利率期限结构(立方多项式样条法)”;在“x轴系列值”中输入“=Sheet1!$I$2:$I$32”;在“Y轴系列值”中输入“=Sheet1!$H$2:$H$32”;然后单击确定,就可以得到利率和期限的散点图,如图6所示。

将光标定在散点图上,单击右键,选择“增加趋势线”,就会出现图7,在图7的“设置趋势线格式”的对话框中,选择“多项式”,将“顺序”设定为3,在对话框底部的设置中选择“显示公式”和“显示R平方”,这样我们就可以利用立方多项式样条法得到利率期限结构图。对该图进一步调整外观可以得到如图8所示的利率期限结构图。

这样,我们就可以得到2008年11月19日我国上海证券交易所国债的利率期限结构模型的表达式:

y = -5×10-6x3 + 9×10-5x2 + 0.000x + 0.024

R² = 0.842

其中:

y表示利率;

x表示期限;

R² = 0.842,说明立方多项式样条法可以解释程度大约为84.2%,这个拟合效果还是较为理想的。

图6:利率与期限的“XY散点图”制作示意图
图7:在XY散点图上增加多项式趋势线
图8:我国上证国债利率期限结构

4.5用“息票剥离法”构建利率期限结构模型

1.息票剥离法的介绍。

前面介绍的多项式样条法实际上是一种拟合方法,根据经验,这种方法的拟合优度较高,是一种较为成熟的方法。下面要介绍的也是一种很普遍性的方法,这种方法被称为息票剥离法。息票剥离法,顾名思义,就是将附息债券的每期现金流剥离出来,从而使得附息债券变成了多期零息票债券的方法。由于零息票债券的到期收益率是真正意义上的即期收益率,因此如果能够将附息债券剥离成多期零息债券,那么根据零息票债券到期收益率的方法,就可以计算出多期的即期收益率,从而可以够造出完整意义上的利率期限结构。但是由于我国交易的债券种类与规模有限,并且这些债券的到期时间和支付方式并不一定能够变得十分有规律,这样息票剥离法就存在着技术上障碍,为了将一些到期时间不规律的债券的收益率求出来,我们采用了“插值法”,因此,息票剥离法也只能保证一定意义上的利率期限结构。在我国,由于债券市场不够发达,因此息票剥离法的精确度就更难保证了。而在发达国家,如美国,不仅存在高度发达、充满流动性的债券市场,而且有专门的息票债券交易市场,因此就能得到更为精确的利率期限结构。随着我国经济与证券市场的快速发展,债券市场的规模也越来越大,相应的各种债券衍生工具也会出现,这样,息票剥离法同样有巨大的应用价值和意义。

2.息票剥离法的原理。

前面提到过,在美国等国家存在着被剥离的息票债券市场。理所当然地,我们可能会认为,只要有不同期限的零息票债券交易价格,就可以很容易得到债券的即期利率期限结构。但是,有实践研究表明,这种方法也不合理,原因有二:其中的一个原因是,剥离零息债券的流动性不如新发行的零息票债券,因此零息票债券中包含了流动性风险溢价;另外一个原因是,剥离零息债券与新发型的零息票债券在税收处理上存在着不同。因此,不能直接用剥离出来的零息债券收益率作为即期利率。所以,我们要用那些流动性较强的债券作为研究样本,按照下面介绍的方法和步骤就可以得到即期收益率曲线。

在剥离息票时,我们要用到以下三个原理:

(1)零息票债券的到期收益率就是该期限的即期收益率。例如,一个3个月后到期的零息票债券(即期限为0.25年)的到期收益是2.5%,那么我们就认为0.25年的即期利率是2.5%。由于1年内到期的付息债券只有一次现金流,因此1年以内到期、交易活跃的债券可以看成是零息票债券,其到期收益率就是该期的即期利率(或瞬时利率)。

(2)插值法。插值法实际上是一种直线估值法。例如,假设我们已知t1期的利率为r1,tn期的利率为rn,我们要求t2期的利率r2。我们可以用如下式(13)来求r2的利率。在用息票剥离法分解时段后,经常会碰到已知前后两期的到期时间和利率,但是却要求其中某期利率的问题,我们用插值法可以很好地解决这一问题。

$$\mathrm{r}_{2}=\mathrm{r}_{1}+\frac{\mathrm{t}_{2}-\mathrm{t}_{1}}{\mathrm{t}_{\mathrm{n}}-\mathrm{t}_{1}} \times\left(\mathrm{r}_{\mathrm{n}}-\mathrm{r}_{1}\right)$$  (13)

(3)债券定价公式。例如,我们已知一个有3期现金流的债券A的到期时间分别为t1、t2、t3,前两期的到期收益率为r1和r2,债券的现值为PV,现在我们要求第3期现金流的t3的利率r3,则我们可以用如下公式(14)来求。在Excel中可以用所谓的“单变量求解”的方法来求得。

$$\frac{\mathrm{CF}_{1}}{\left(1+\mathrm{r}_{1}\right)^{\mathrm{t}_{1}}}+\frac{\mathrm{CF}_{2}}{\left(1+\mathrm{r}_{2}\right)^{\mathrm{t}_{2}}}+\frac{\mathrm{CF}_{3}}{\left(1+\mathrm{r}_{3}\right)^{\mathrm{t}_{3}}}=\mathrm{PV}$$  (14)

3.息票剥离法的实验步骤。

(1)选取债券,并作相关计算。这里我们用同样的数据,即表1的数据,用同样的方法计算出函数的剩余到期时间以及债券的到期收益率。

(2)分解时段。由于剩余到期时间不是整数,所以在对未来现金流贴现时必然会用到小数时段的即期利率,所以我们必须把这些小数时段分解并按照升序的方法排列出来。分解出来的小数段时间如表2所示共有40个时段。不仅如此,我们还需要每只债券的每期现金流支付时间,这样我们采用很好地应用公式(14)来剥离债券息票。我们将这些每期的现金流支付时间合并在一起,并按照升序排列就可以得到表3所示的时间段。有了这些时段,我们就可以针对性地考虑每只债券的息票剥离时间,从而可以应用插值法和Excel中的单变量求解法来得到利率期限结构。

表2:分解出来的小数段时间表

0.000.020.020.050.080.200.250.25
0.280.340.360.410.410.410.420.43
0.450.490.500.500.510.520.700.70
0.740.750.760.770.780.830.840.84
0.850.860.920.920.920.951.001.00

表3:债券现金流支付时段表

0.000.020.020.050.080.200.250.250.280.34
0.360.410.410.410.420.430.450.490.500.50
0.510.520.700.700.740.750.760.770.780.83
0.840.840.850.860.920.920.920.951.001.00
1.001.021.021.051.201.201.251.251.281.34
1.361.411.421.431.451.491.501.501.511.52
1.701.751.761.771.781.831.841.851.861.92
1.921.952.002.002.002.022.022.202.252.28
2.342.362.412.422.452.492.502.502.512.52
2.702.762.772.782.832.842.852.862.922.95
3.003.003.023.023.203.253.283.343.363.41
3.423.503.503.523.703.773.783.833.843.86
3.924.004.004.024.204.254.284.344.364.42
4.504.504.704.784.834.844.864.925.005.00
5.205.285.345.365.425.505.505.705.785.84
5.865.926.006.006.206.286.346.366.426.50
6.506.706.846.866.927.007.007.207.347.36
7.427.507.507.707.847.928.008.008.208.34
8.428.508.508.708.848.929.009.009.209.42
9.509.509.709.9210.0010.0010.2010.4210.5010.50
10.7010.9211.0011.0011.2011.4211.5011.5011.7011.92
12.0012.0012.2012.4212.5012.7012.9213.0013.4213.50
13.9214.0014.4214.5015.0015.5016.0016.50  

(3)求出够造出各时段的即期利率表达式。由于我们知道到期时间小于1年的附息债券到期收益率就是该期的即期利率。因此,我们根据表4就可以知道前6只债券的到期收益率就是该期的即期利率。

表4:债券基本信息表

债券到期时间收益率面值息票率付息次数息票本息和价格
0101150.079450.026731000.0313103100.02
0106040.408220.022651000.021212.12102.1299.93
0104030.41370.023811000.044214.42104.42100.81
0102100.739730.024851000.023912.39102.3999.92
0099080.843840.024171000.03313.3103.3100.72
0104080.917810.024861000.04314.3104.3101.62
0102151.046580.025161000.029312.93102.93100.42
0103011.252050.024821000.026612.66102.66100.21
0105031.432880.025731000.03313.3103.3101
0103071.750680.025381000.026612.66102.66100.2
0105111.917810.025941000.021412.14102.1499.16
01031120.024121000.03513.5103.5102.1
0106052.487670.02591000.02412.4102.499.54
0104042.512330.022761000.048914.89104.89106.3
0104072.764380.024141000.047114.71104.71106.06
0101102.849320.025761000.029512.95102.95101.01
0101122.945210.025361000.030521.525101.525101.45
0104103.016440.024231000.048614.86104.86107
0102033.41370.0261000.025412.54102.5499.8
0105053.515070.024651000.033713.37103.37103
0105093.767120.026021000.028312.83102.83100.8
0105134.019180.027011000.030113.01103.01101.16
0106014.249320.027561000.025112.51102.5199.02
0103084.830140.028731000.030213.02103.02100.65
0105016.279450.029971000.044422.22102.22108.2
0106037.356160.031371000.02821.4101.497.8
0102138.84110.029571000.02621.3101.397.24
01051211.99730.032951000.036521.825101.825103.49
01010712.70410.03111000.042622.13102.13111.98
01030314.41640.032341000.03421.7101.7101.9
01050416.49590.032921000.041122.055102.055110.34

注:在该表中,如果一年支付2次利息的债券,我们将其每期债券的利息折半,但现金流的期数增加一倍。

我们把表3中的分段时间排成一列,并输入到图9中的A列,并按升序排列,接着把表4中的6只到期时间小于1年的债券收益率输入到图9中的B列,这样我们就可以根据插值法和Excel的单变量法求解0时刻的利率。在求解过程中,分为两步,第一步我们假设要求解的是0.079452时期的利率,而把0时刻利率当成已知变量,如图9所示,我们在C6中输入插值法公式;第二步是将C6的值设为B6的值,即0.026732,把 B2当成未知变量,通过解方程的方法求得,而这一部可以通过Excel中的单变量求解来完成。单变量求解图如图10所示。

Excel中单变量求解步骤:单击工具栏中“数据”选项卡,在“数据工具”中点击“假设分析”→“单变量求解”。然后按照图10所示的输入相关变量值,“目标单元格”是输入公式的单元格C6,目标值是已知的0.026732,在“可变单元格”中填入“B2”,然后单击“确定”,就可以将0时刻的利率算出来。

chazhifa2.bmp
图9:用插值法求解0时期的即时利率
dblqj.bmp
图10单变量求解0时期的即时利率

同样用插值法,我们就可以将其他时刻的利率求出来,如图11所示,用插值法算出了其他值。

czf.bmp
图11:用插值法求出其他时期的即时利率

(4)对各债券进行价格计算。如债券010215,其未来现金流量为0.046575年后收到2.93的利息,1.046575年后收到本利和102.93。这样我们就可以按照债券定价公式(14)的方法求出债券价格,其中0.046575期的利率已经通过插值法求出来了,为0.027141.计算公式如下:

$$\frac{2.93}{(1+0.027141)^{0.046575}}+\frac{102.93}{\left(1+\mathrm{r}_{1.046575}\right)^{1.046575}}=100.42$$  (15)

同理可以给出其他债券的计算公式。

(5)单变量求解。在已知实际价格的情况下,再次利用单变量求解可以得到所有时段的即期利率,从而可以得到利率的期限结构,在这个过程中要反复利用插值法和单变量求解方法。

(6)息票剥离法的计算结果。利用息票剥离法计算的结果如图12所示。利用插值法和单变量求解算出来的利率期限结构表现出明显的波动性更大,曲线不够平滑,其主要原因是插值法认为两个利率之间的利率是线性的。而图13是多项式样条法拟合的曲线。对比两张图,可以发现,息票剥离法求出的曲线波动幅度更大,曲线不够平滑,并没有表现出明显上升型曲线;而多项式样条法拟合的曲线明显地表现出上升型形状,由于是拟合曲线,所以曲线较为平滑。具体哪种方法更为合适,那要看具体情况,理论上,如果债券品种多、市场规模大、流动性强,那么息票剥离法应该更为准确,但缺点是计算过程较为复杂,而当交易品种少、流动性弱时,多项式样条法拟合的效果可能更好。

图12:我国上证交易所08年11月19日国债利率期限结构(息票剥离法)
图13:我国上证08年11月19日国债利率期限结构(多项式样条法)

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注