购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.1 国内债券常见计息基准

2.1.1 附息债券

附息债券,指债券券面上附有利率条款(即具有票息)的债券,包含固定、浮动利率债券和普通资产支持证券。

(1)实际/实际——付息频率小于或等于1年(按平均值付息)。

:起息日或上一计息计划结束日至计算日的年化时间。

:起息日或上一计息计划结束日至计算日的实际(或自然日)天数,含2月29日。

:计算日所处付息周期的自然日天数,含2月29日。

:债券的付息频率。

:按百元面值计价的债券在计算日的应计利息。

:按百元面值计价的债券年利息。

:按百元面值计价的债券在计算日剩余本金值。

【注】针对付息频率小于等于1年的情况,发行公告中很多未明确约定按照哪种方式付息,通常采用平均值付息的公式。

【实例2-2】 债券信息同实例2-1,计算该债券在2020-5-20的日间百元面值应计利息。

【分析解答】由债券信息可以计算得到:

下面采用Python编写实际/实际(按平均值付息)基准应计利息的函数(ACT_ACT_AVE)。

#加载需要使用的库
from coupon_schedule import *
#计息基准为ACT_ACT_AVE的函数
def ACT_ACT_AVE(cal_date,start_date,yearlenth,fre, coupon,m):
     '''
     :param cal_date: 计算日期;
     :param start_date: 债券的起息日;
     :param yearlenth: 债券的发行年限;
     :param fre: 债券的付息频率;
     :param coupon: 债券的百元票面利息;
     :param m: 债券的百元剩余本金;
     :return: 返回债券应计利息的计算结果。
     '''
     #寻找计算日在哪两个付息日之间
     schedule=coupon_schedule(start_date=start_date,yearlenth=yearlenth,fre=fre)
     for i in range(1, len(schedule)):
         if schedule[i] >= cal_date: break
     #实际/实际——付息频率小于等于1年(按平均值付息)
     yearfactor = (cal_date - schedule[i-1]) / ((schedule[i] - schedule[i-1]) * fre)
     AI = yearfactor * coupon * m / 100
     return AI

调用ACT_ACT_AVE函数,输入计算日、起息日、发行年限、付息频率、百元票面利息(通常为票面利率乘以100)和当前百元剩余本金进行计算。

#测试案例
ACC1=ACT_ACT_AVE(cal_date=date(2020,5,20),start_date=date(2008,2,28),
                yearlenth=15,fre=2,coupon=4.16,m=100)
print("应计利息:",round(ACC1,5))

输出结果:

【注】为方便查看,这里应计利息精度统一保留5位小数。

(2)实际/实际——付息频率小于1年(按实际天数付息)。

:起息日或上一计息计划结束日至计算日的年化时间。

:起息日或上一计息计划结束日至计算日的自然日天数,含2月29日。

:计算日所处付息周期所在计息年度的自然日天数(从起息日起计算的计算日所属的整年度,即债券本身的完整计息年度),含2月29日。

:按百元面值计价的债券在计算日的应计利息。

:按百元面值计价的债券年利息。

:按百元面值计价的债券在计算日剩余本金值。

【注】计息年度是从起息日起,每加1年(即下一年的同月同日)算一个完整的计息年度。如果该完整年度中包含2月29日,无论几次付息,该计息年度分母均按366天计算;若不包含2月29日,采用365天计算。

【实例2-3】 债券信息同实例2-1,计算该债券在2020-5-20的日间百元面值应计利息,对比实际/实际中按平均值和实际天数的计算是否存在差异。

【分析解答】依据债券信息可以计算得到:

下面采用Python编写实际/实际(按实际天数)基准应计利息的函数(ACT_ACT_ACT)。

#加载需要使用的库
from coupon_schedule import *
from dateutil import relativedelta
#计息基准为ACT_ACT_ACT的函数
def ACT_ACT_ACT(cal_date,start_date,yearlenth,fre, coupon,m):
     '''
     :param cal_date: 计算日期;
     :param start_date: 债券的起息日;
     :param yearlenth: 债券的发行年限;
     :param fre: 债券的付息频率;
     :param coupon: 债券的百元票面利息;
     :param m: 债券的百元剩余本金;
     :return: 返回债券应计利息的计算结果。
     '''
     #寻找计算日在哪两个付息日之间
     schedule=coupon_schedule(start_date=start_date,yearlenth=yearlenth,fre=fre)
     for i in range(1, len(schedule)):
         if schedule[i] >= cal_date: break
     #实际/实际——付息频率小于等于1年(按实际天数付息),包含利随本清债券
     schedule_spe = [schedule[0]]
     if yearlenth < 1:
           yearlenth = 1
     for j in range(12, int(yearlenth * 12 * 1 + 1), 12):
            schedule_spe.append(schedule[0] + relativedelta.relativedelta(months=j))
     for k in range(1, len(schedule_spe)):
           if schedule_spe[k] >= cal_date: break
     TY = schedule_spe[k] - schedule_spe[k - 1]
     yearfactor = (cal_date - schedule[i - 1]) / TY
     AI = yearfactor * coupon * m / 100
     return AI

调用ACT_ACT_ACT函数,输入计算日、起息日、发行年限、付息频率、百元票面利息(通常为票面利率乘以100)和当前百元剩余本金进行计算。

#测试案例
ACC2=ACT_ACT_ACT(cal_date=date(2020,5,20),start_date=date(2008,2,28),
                yearlenth=15,fre=2,coupon=4.16,m=100)
print("应计利息:",round(ACC2,5))

输出结果:

可以发现,计息基准不同时,即便债券其他要素及计算日期均相同,计算的结果也有所不同。

2.1.2 利随本清债券

利随本清债券指的是到期一次偿还本金和所有利息(即中途不付息)的债券。

:起息日或上一计息计划结束日至计算日的年化时间。

:起息日或上一理论付息日(从起息日起,一年为一个理论付息期)至计算日的自然日天数,含2月29日。

:计算日所处付息周期的自然日天数,含2月29日。

:按百元面值计价的债券在计算日的应计利息。

:按百元面值计价的债券年利息。

:按百元面值计价的债券在计算日剩余本金值。

:债券起息日至计算日的整年数。

【实例2-4】 20新滨江PPN002债券的基本信息如表2-3所示,计算该债券在2022-4-28的日间百元面值应计利息。

表2-3 20新滨江PPN002债券的基本信息

数据来源:中国货币网

【分析解答】依据债券信息可以计算得到:

调用coupon_schedule函数并输入相关参数,生成计息计划日期;调用ACT_ACT_ACT函数并输入相关参数,计算债券的应计利息:

#加载需要使用的库
from coupon_schedule import *
from ACT_ACT_ACT import *
from dateutil import relativedelta
#测试案例
ACT_sch=coupon_schedule(start_date=date(2020,12,4),yearlenth=3,fre=0)
print("计息间隔计划:",ACT_sch)
ACC3=ACT_ACT_ACT(cal_date=date(2022,4,28),start_date=date(2020,12,4),
                  yearlenth=3,fre=0,coupon=6.5,m=100)
print("应计利息:",round(ACC3,5))

输出结果:

2.1.3 贴现、零息债券

贴现、零息债券均以低于面值的价格发行,到期时再按面值偿还本金。因此,贴现、零息债券的利息实际上隐含在发行时的价格和面值的差价中。具体的计算方法如下:

:起息日至计算日的年化时间。

:起息日至计算日的自然日天数,含2月29日。

:起息日至到期兑付日的自然日天数,含2月29日。

:按百元面值计价的债券在计算日的应计利息。

:每百元面值到期兑付额。

:债券发行价。

【实例2-5】 表2-4给出了22青岛农商行CD039债券的基本信息,计算该债券在2022-4-28的日间百元面值应计利息。

表2-4 22青岛农商行CD039债券的基本信息

数据来源:中国货币网

【分析解答】依据债券信息可以计算得到:

下面采用Python编写计算贴现、零息债券应计利息的函数(ACT_ACT_ZERO)。

#加载需要使用的库
from coupon_schedule import *
#计息基准为ACT_ACT_ZERO的函数
def ACT_ACT_ZERO(cal_date,start_date,yearlenth,fre, issue_price):
     '''
     :param cal_date: 计算日期;
     :param start_date: 债券的起息日;
     :param yearlenth: 债券的发行年限;
     :param fre: 债券的付息频率;
     :param issue_price: 债券的发行价格;
     :return: 返回债券应计利息计算结果。
     '''
     #寻找计算日在哪两个付息日之间
     schedule=coupon_schedule(start_date=start_date,yearlenth=yearlenth,fre=fre)
     for i in range(1, len(schedule)):
         if schedule[i] >= cal_date: break
     #零息债券利息的计算
     yearfactor = (cal_date - schedule[0]) / (schedule[i] - schedule[i - 1])
     AI = yearfactor * (100 - issue_price)
     return AI

调用coupon_schedule函数输入相关参数,生成计息计划日期;调用ACT_ACT_ZERO函数并输入相关参数,计算债券的应计利息。

#测试案例
zero_sch=coupon_schedule(start_date=date(2022,3,14),yearlenth=1,fre=0)
print("计息间隔计划:",zero_sch)
ACC4=ACT_ACT_ZERO(cal_date=date(2022,4,28),start_date=date(2022,3,14),
                  yearlenth=1,fre=0,issue_price=97.3710)
print("应计利息:",ACC4)

输出结果: PRzBclPHMG/rIYvKH4XonIJeXsvyY3Z5z6t/nMfZm3atruVgqOmvs0AC9RLRxmT4

点击中间区域
呼出菜单
上一章
目录
下一章
×