压力测试下QuantLib债券定价与Excel YIELD、PRICE函数计算差异疑问
债券定价偏差成因分析
以下是导致Excel与QuantLib计算结果出现差异的核心原因,压力测试下差异放大是因为收益率大幅上行后,微小的规则差异会被贴现计算指数级放大:
- 日计数基准的隐性差异
你代码中PRICE、YIELD函数最后一个参数设为0,对应Excel的US (NASD) 30/360规则,和QuantLib中ql.Thirty360(ql.Thirty360.USA)理论上一致,但二者在非月首日、跨2月等特殊日期的计息天数计算逻辑存在未公开的细微差异,低收益率下该差异对价格影响不足0.1%,收益率上行662bp后差异被放大至1%以上。 - 节假日与付息日调整规则差异
QuantLib代码中你设置了ql.UnitedStates()美国节假日日历,付息日采用ql.Following遇节假日顺延规则,但Excel的PRICE/YIELD函数默认不处理节假日,所有付息日按自然日固定计算。若债券付息周期内存在美国节假日,QuantLib生成的现金流时间点与Excel不一致,高收益率下不同时间点的现金流贴现差值会被明显放大。 - 收益率复利规则对齐偏差
Excel的YIELD函数返回的是债券等价收益率(BEY),而QuantLib的bondYield方法指定ql.Compounded和每年4次付息参数时,返回的是名义季复利收益率,二者在低收益率下差异可忽略,但收益率超过10%后,复利计算逻辑的差异会导致价格偏差快速扩大。 - 迭代求解精度差异
Excel的YIELD函数采用内置迭代逻辑,默认迭代精度与QuantLib设置的1.0e-8存在微小差异,基础收益率求解的微小误差叠加662bp的冲击后,会进一步传导至压力测试价格的计算结果。
内容的提问来源于stack exchange,提问作者MandyChen622
相关产品推荐
相关产品推荐

