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