也许你对下述论断已经耳熟能详:
若收益率大于息票率,则债券折价销售;相反地,若收益率小于息票率,则债券溢价销售; 而当收益率与票面利率相等时,债券的价格等于面值。
果真如此?未必是!请看如下例子:
我们假想中的债券面值100元,票面利率为9%,每年12月31日支付一次利息,2017年年底到期。假设 估值日为2013年4月12日,在这一天市场对该债券要求的收益率等于票面利率,为9%。
利用R, 我们估计估值日的应计利息、净价和全价。
par <- 100
coupon <- 0.09
freq <- 1 # annual
maturity <- as.Date("2017-12-31")
yld <- 0.09
settlement <- as.Date("2013-04-12")
# day counter convention: ActualActual
last2next <- as.numeric(as.Date("2013-12-31") - as.Date("2012-12-31"))
last2settle <- as.numeric(settlement - as.Date("2012-12-31"))
# which is 102
settle2next <- last2next - last2settle
# or settle2next <- as.numeric(as.Date('2013-12-31') - settlement)
AI <- round(par * coupon * last2settle/last2next, 3)
t0 <- settle2next/last2next
# number of year between settlement day to the nearest next coupon payment
# day coupon payment dates since settlement day: 2013-12-31, 2014-12-31,
# 2015-12-31, 2016-12-31, 2017-12-31
tt <- t0 + 0:4
fullPrc <- sum(par * coupon/(1 + yld)^tt) + par/(1 + yld)^tt[5]
# full price equals to 102.4375
cleanPrc <- fullPrc - AI
# clean price equals to 99.92, not exactly equals to 100, the par.
results <- c(coupon, yld, par, cleanPrc)
names(results) <- c("coupon", "yield", "par", "cleanPrice")
print(results, digits = 4)
coupon yield par cleanPrice
0.09 0.09 100.00 99.92
当收益率等于票面利率时,净价或脏价未必完全等于面值。这是因为应计利息按单利计算, 而价格是以复利为基础计算的。
By Rho (rhozhanghz at gmail.com), Mar. 21, 2013.