amortizingFixedRateBondDirtyPrice

语法

amortizingFixedRateBondDirtyPrice(settlement, maturity, notionals, coupon, yield, calendar, frequency, [basis=1], [convention=`Following])

详情

amortizingFixedRateBondDirtyPrice 函数计算摊还本金固息债券的含息价格(每 100 面值)。

摊还本金固息债券是一种特殊的固定利率债券。这类债券采用分期还本付息的方式,本金(面值)不是在到期时一次性偿还,而是在债券存续期内按票息支付时间表逐步归还。每期利息支付额会随着未偿还本金的减少而逐渐降低,因为利息计算基于当期的未偿还本金余额。

返回值 DOUBLE 类型标量。

参数

注: 如果输入参数中,部分为标量,其余为向量时,则会将标量当作与向量长度相同,所有元素值等于该标量的向量。所有向量的长度必须一致。

settlement DATE 类型标量或向量,表示债券结算日,即债券交易完成并支付金额的日期。

maturity DATE 类型标量或向量,表示债券到期日,即债券有效期截止时的日期。

notionals 数值向量或数组向量,表示债券每期剩余的本金金额,与每个息票期的数量相同。

coupon 数值标量或向量,表示债券的年息票利率。

yield 数值标量或向量,表示债券的年收益率。

calendar 字符串标量或向量,表示使用的交易日历。具体使用说明请参阅交易日历

frequency 用于指定债券的年付息频率。支持以下两种输入类型:

  • 整型标量或向量:表示每年的付息次数,如 1 表示每年付息 1 次;

  • DURATION 标量或向量:表示间隔多长时间进行一次付息,如 3M,表示每 3 个月付息一次。

可选值 含义
1 / 1y 表示每年付息 1 次
2 / 6M 表示每年付息 2 次 / 每 6 个月付息 1 次
3 / 4M 表示每年付息 3 次 / 每 4 个月付息 1 次
4 / 3M 表示每年付息 4 次 / 每 3 个月付息 1 次
6 / 2M 表示每年付息 6 次 / 每 2 个月付息 1 次
12 / 1M 表示每年付息 12 次 / 每月付息 1 次
13 / 4w 表示每年付息 13 次 / 每 4 周付息 1 次
26 / 2w 表示每年付息 26 次 / 每 2 周付息 1 次
52 / 1w 表示每年付息 52 次 / 每周付息 1 次
365 / 1d 表示每年付息 365 次 / 每天付息 1 次

basis 可选参数。整型或者字符串标量或向量,表示要使用的日计数基准类型。可选值为:

basis 日计数基准
0 / ‘Thirty360US’ US (NASD) 30/360
1 / 'ActualActual' (默认值) 实际/实际
2 / 'Actual360' 实际/360
3 / 'Actual365' 实际/365
4 / 'Thirty360EU' 欧洲 30/360

convention 可选参数。字符串标量或向量,用于指定如何调整落在非工作日的现金流支付日期。可选值为:

  • 'Following' (默认值):表示选择给定假日后的第一个工作日;
  • 'ModifiedFollowing':表示选择给定假日后的第一个工作日。如果该工作日属于不同的月份,则选择假日前的第一个工作日;
  • 'Preceding':表示选择给定假日前的第一个工作日;
  • 'ModifiedPreceding':表示选择给定假日前的第一个工作日。如果该工作日属于不同的月份,则选择假日后的第一个工作日;
  • 'Unadjusted':表示不作调整;
  • 'HalfMonthModifiedFollowing':表示选择给定假日后的第一个工作日。如果该工作日跨越了月中(15日)或月末,则选择假日前的第一个工作日;
  • 'Nearest':表示选择离给定假日最近的工作日。如果前后工作日距离相同,则默认选择后一个工作日。

例子

假设购买日期为 2018 年 1 月 25 日,到期日期为 2022 年 1 月 25 日,债券本金为 100,年息票利率为 3%,年收益率为 2.55%,付息频率为每年一次,且在第 3 个付息期偿还本金 50。债券采用 US (NASD) 30/360 日计数基准,并使用上海证券交易所(XSHG)交易日历进行计算。

settlement = 2018.01.25
maturity = 2022.01.25
notionals = [100,100,100,50]
coupon = 0.03
yield = 0.0255
calendar = `XSHG
frequency = 1
basis = 0
res = amortizingFixedRateBondDirtyPrice(settlement, maturity, notionals, coupon, yield, calendar, frequency, basis)
res;
// 101.487354765248