1. 计算公式
1.1. 债券价格计算 [3]
1) 一次还本付息债券的定价公式
(1)
其中,P为债券面值,V为债券价格,r为到期收益率,
为票面利率,T是债券期限。
2) 附息债券的定价公式
(2)
其中,P为债券面值,V为债券价格,r为到期收益率,
为票面利率,T是债券期限(以年为单位),n为年付息次数。
1.2. 到期收益率计算 [4]
到期收益率是指使得债券未来现金流的现值正好等于债券当前的市场价格的贴现率 [1]。到期收益率考虑了货币的时间价值,是按复利计算的收益率,能够较好地反映债券的实际收益。
1) 零息债券的到期收益率
零息债券只有到期时得到面值,中间不支付利息,到期收益率计算公式为:
(3)
式中,P和V分别为债券面值和债券的市场价格,T是距离到期日的年数,
是到期收益率。
2) 附息债券的到期收益率
在付息日购买的债券的到期收益率计算公式为:
(4)
上式也适用n = 1,即每年支付一次利息的情形。
2. Matlab计算
2.1. 债券价格计算
Matlab的Financial Toolbox提供了计算债券价格的bndprice函数,该函数既可用于计算付息日交割的债券价格,也适用于计算两个付息日之间交割的债券价格 [5] [6] [7] [8]。
[例1]债券A:面值为100,票面利率5%,到期收益率为4%,年付息2次,交割日为2019年6月1日,到期日为2021年6月1日。
债券B:面值为100,票面利率4%,到期收益率为4%,年付息2次,交割日为2019年3月1日,到期日为2021年6月1日。
债券C:面值为100,票面利率5%,到期收益率为4%,年付息2次,交割日为2021年3月1日,到期日为2021年6月1日。
分别求债券A、B和C的净价和应计利息。
解:债券A交割日在付息日,债券B交割日在多于1个付息期的两次付息日之间,债券C交割日在不足1个付息期的两次付息日之间。
在 MatlabR2016a 运行环境下,输入计算代码如下:
Yield=0.04;
CouponRate=0.05;
Settle_A='01-Jun-2019'; Settle_B='01-Mar-2019'; Settle_C='01-Mar-2021';
Maturity='01-Jun-2021';
[Price_A,Accured_A]=bndprice(Yield,CouponRate,Settle_A, Maturity);
[Price_B,Accured_B]=bndprice(Yield,CouponRate,Settle_B, Maturity);
[Price_C,Accured_C]=bndprice(Yield,CouponRate,Settle_C, Maturity);
Price=[Price_A;Price_B;Price_C]
Accured=[Accured_A;Accured_B;Accured_C]
计算结果如下:
Price = [101.9039, 102.1277, 100.2428];
Accured =[ 0, 1.2363, 1.2363].
2.2. 到期收益率计算
Matlab的Financial Toolbox提供了债券到期收益率的计算函数bndyield。该函数既可用于在付息日交割的债券到期收益率计算,也适用于在两个付息日之间交割的债券到期收益率计算 [9] [10] [11] [12]。
[例2]债券A:面值为100元,票面利率为6%,每年付息两次(6月底和12月底),交割日为2017年12月31日,到期日为2022年 6月30日,净价为106.81元。
债券B:面值为100元,票面利率为6%,每年付息两次(6月底和12月底),交割日为2018年12月31日,到期日为2022年6月30日,净价为97.43元。
债券C:面值为100元,票面利率为6%,每年付息两次(6月底和12月底),交割日为2019年1月20日,到期日为2022年6月30日,净价为100.99元。
分别求债券 A、B和C的到期收益率。
解:在MatlabR2016a环境下,输入计算代码如下:
CouponRate=0.06;
Price_A=106.81;Price_B=97.43;Price_C=100.99;
Settle_A='31-Dec-2017'; Settle_B ='20-Jan-2018';Settle_C ='20-Jan-2019 ';
Maturity='30-Jun-2022';
Yield_A=bndyield(Price_A,CouponRate,Settle_A, Maturity)
Yield_B=bndyield(Price_B,CouponRate,Settle_B, Maturity)
Yield_C=bndyield(Price_C,CouponRate,Settle_C , Maturity)
可得计算结果如下:
Yield_A =0.0432;Yield_B =0.0668;Yield_C =0.0568.
3. 结语
固定收益证券这门课知识点较多,计算公式多而复杂,很多计算是无法用笔能完成的,因此需要学生熟悉计算软件,具备一定的编程能力。这就要求授课教师不能光讲理论,必须教授学生如何编程解决具体的计算问题,提高学生的实践动手能力,有利于学生毕业时找工作。
基金项目
国家自然科学基金项目(11561028,11801238),江西理工大学本科教学工程项目(XZG-16-01-05);江西理工大学大学生创新创业训练计划项目(DC2018-072)。