callableFixedRateBondDirtyPrice
语法
callableFixedRateBondDirtyPrice(settlement, issue, maturity, redemption,
coupon, riskFree, volatility, reversion, type, exerciseDates, exercisePrices,
calendar, frequency, [basis=1], [convention='Following'], [method='HullWhite'],
[kwargs])
详情
计算含权固息债每 100 面值的含息价格。
含权债券(Bonds with Embedded Options)是一种特殊类型的债券,在其基础债券合约中嵌入了期权(Option),允许债券的发行人或持有人在特定条件下行使某些权利。根据期权的不同,含权债券主要分为可赎回债券(Callable Bonds)和可回售债券(Putable Bonds):
- 可赎回债券:赋予债券发行人在债券到期前按特定价格(赎回价格)提前赎回债券的权利。
- 可回售债券:赋予债券持有人在债券到期前按特定价格(回售价格)将债券卖回给发行人的权利。
返回值DOUBLE 类型的标量或向量。
参数
settlement DATE 类型标量或向量,表示债券的结算日。
issue DATE 类型标量或向量,表示债券的发行日。
maturity DATE 类型标量或向量,表示债券的到期日。
redemption 数值型标量或向量,表示债券的赎回价格。
coupon 数值型标量或向量,表示债券的年息票利率。
riskFree 数值标量或向量,表示无风险利率。
volatility 数值标量或向量,表示波动率。
reversion 数值标量或向量,表示利率的均值回归率。
type 字符串类型标量或向量,表示含权债的类型。可选值为:
- 'call':表示可赎回债券(Callable Bonds)。
- 'put':表示可回售债券(Putable Bonds)。
exerciseDates DATE 类型向量或数组向量,表示约定的提前赎回或回售债券的日期。
exercisePrices 数值型向量或数组向量,表示约定的提前赎回或回售债券的价格。
calendar 字符串类型标量或向量,表示使用的市场日历类型,请参阅交易日历。
frequencyINT 类型或 Duration 类型的标量或向量,表示年付息频率。可选值为:
可选值 | 含义 |
---|---|
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':选择离给定假日最近的工作日。如果前后工作日距离相同,则默认选择后一个工作日。
method 可选参数,字符串标量,表示使用的估值方法,目前只支持 'HullWhite', 即使用 Hull–White 模型进行估值。
kwargs 可选参数,一个字典,表示估值的其他参数,不同的估值方法有不同的参数要求。具体参数要求如下
- method = 'HullWhite' 时,kwargs 应包含成员 'timeSteps',其值是 INT 类型标量或向量,表示对 Hull–White 模型进行离散化时使用的时间间隔数,默认值为 50。
例子
现有八年期含权固息债券,发行日期为 2024 年 9 月 16 日,到期日期为 2032 年 9 月 15 日。当前的交易日为 2026 年 8 月 16 日,债券的赎回价格为 100,年息票利率为 2.5%,并且每三个月支付一次利息。合约约定自 2026 年 9 月 15 日起,债券发行人有权每隔三个月以 100 的价格赎回债券。市场无风险利率为 4.65%,波动率为 20%,利率的均值回归率为 6%。该债券采用 Actual/365 日计数基准,非工作日调整方法为 Following,且交易日历为上海证券交易所(XSHG)。计算该债券的含息价格。
issue = 2024.09.16
settlement = 2026.08.16
maturity = 2032.09.15
redemption = 100
riskFree = 0.0465
reversion = 0.06
volatility = 0.20
convention = `Following
calendar = `SSE
frequency = 3M
coupon = 0.025
basis = 3
type="call"
callDate = 2026.09.15
exerciseDates = array(DATE, 0);
for (i in 1..24) {
exerciseDates.append!(callDate)
callDate = temporalAdd(callDate, frequency, `Null)
}
exercisePrices = take([100.0], 24)
res = callableFixedRateBondDirtyPrice(settlement, issue, maturity, redemption, coupon, riskFree, volatility, reversion, type, exerciseDates, exercisePrices, calendar, frequency, basis, convention)
res
// output:53.603309242600587