债券报价中的小陷阱

来源:https://uqer.io/community/share/55361dc2f9f06c392662104e

投资者习惯于使用到期收益率作为衡量债券投资价值的标杆,倾向于买入收益率高的债券,卖出收益率低的债券。这里有一个隐含的假设,所有债券的到期收益率都是由同一算法计算而得。但是事实上,真的是这样吗?

上图是在2015年4月21日截取的中债登的实时行情。我们取其中一个债券做示例:

  • 代码:080014
  • 净价:100.363
  • 全价:103.214
  • 票息:4.23%
  • 到期收益率:3.019% 这个债券是2015年8月18日到期,还有一次付息。存续期不超过1年,为119天,0.326027年

1. 债券的例子

  1. testBond = BuildBond('080014.XIBE')
  2. testBond.bondProfile()
080014.XIBE
securityID080014.XIBE
issuer财政部
issueDate2008-08-18
exchangeXIBE
shortName08国债14
maturity7Y
startDate2008-08-18
maturityDate2015-08-18
settlementDays1
coupon0.0423
frequency1
dayCounterActual/Actual (ISMA)
  1. cleanPrice = 100.363
  2. settlementDate = Date(2015,4,21)

2. 简单利率算法

  1. print u'到期收益率:%.4f' % (testBond.yieldFromCleanPrice(cleanPrice,'Actual/Actual (ISMA)', Compounding.Simple, Frequency.Annual, settlementDate)*100)
  2. print u'应计利息 :%.4f' % testBond.accruedAmount(Date(2015,4,21))
  3. 到期收益率:3.0196
  4. 应计利息 2.8509

3. 复利算法

  1. print u'到期收益率:%.4f' % (testBond.yieldFromCleanPrice(cleanPrice,'Actual/Actual (ISMA)', Compounding.Compounded, Frequency.Annual, settlementDate)*100)
  2. print u'应计利息 :%.4f' % testBond.accruedAmount(settlementDate)
  3. 到期收益率:3.0504
  4. 应计利息 2.8509

4. 总结

现阶段大多数行情软件的报价也都是依照中债登类似的做法。存续期少于1年的债券使用简单利率算法,大于1年的债券使用复利算法。同样的债券价格,使用不同的算法,获得的到期收益率会有些微的差异。这个差异在某个债券即将到期是特别明显(可能差几十个bp甚至上一个百分点)。所以投资者在使用到期收益率作为债券投资价值评估标准的时候,要注意这些差异。