QuantLib · TermStructures
QuantLib收益率曲线与期限结构:YieldTermStructure 构建
期限结构是衍生品定价的地基:QuantLib 的 TermStructures 模块提供收益率曲线(FlatForward/ZeroCurve/DiscountCurve)、波动率曲面(BlackVolTermStructure)与计息约定(Actual/360、30/360 等),为期权、债券、掉期的折现与定价提供利率基准。
YieldTermStructure
VolTermStructure
DayCounter
QuantLib 期限结构示意;基于 QuantLib TermStructures,非官方曲线图。
期限结构类型对照表
依据 QuantLib TermStructures 模块(以官方文档为准)。
| 类型 | QuantLib 类 | 用途 | 注意点 |
|---|---|---|---|
| 平坦利率 | FlatForward | 单一恒定利率,快速起步/示例 | 不反映真实期限结构,仅教学/简单场景 |
| 零息曲线 | ZeroCurve | 由市场零息利率点构建 | 需给定日期与利率序列 |
| 折现曲线 | DiscountCurve | 直接给定折现因子 | 折现因子需单调非增 |
| 波动率曲面 | BlackVolTermStructure | 期权定价的隐含波动率输入 | 按期限+行权价二维插值 |
| 分段曲线 | PiecewiseYieldCurve | 多段插值拟合市场数据 | 需指定插值方式与节点 |
| 远期曲线 | ForwardCurve | 远期利率/远期价格 | 由即期曲线隐含推导 |
收益率曲线构建分步流程
1. 设置评估日与日历:import QuantLib as ql; today = ql.Date(15, 6, 2023); ql.Settings.instance().evaluationDate = today —— 说明:所有曲线都以评估日为基准点。
2. 设置计息约定:day_count = ql.Actual360() —— 说明:选择计息天数约定,影响折现因子计算。
3. 构建平坦收益率曲线:rate = ql.QuoteHandle(ql.SimpleQuote(0.05)); curve = ql.FlatForward(today, rate, day_count) —— 说明:5% 恒定利率,用于快速验证。
4. 用于折现定价:engine = ql.DiscountingBondEngine(ql.YieldTermStructureHandle(curve)) —— 说明:把曲线挂到债券/工具定价引擎上。
计息约定(DayCounter)对照表
| 约定 | 含义 | 适用场景 |
|---|---|---|
| Actual/360 | 实际天数 / 每年 360 天 | 货币市场、短期利率 |
| Actual/365 | 实际天数 / 每年 365 天 | 英镑市场等 |
| Actual/Actual | 实际天数 / 实际年长(含闰年) | 国债、债券 |
| 30/360 | 每月 30 天 / 每年 360 天 | 公司债、抵押 |
| 30/360 US | 美国规则 30/360 | 美国公司债 |
| SimpleDayCounter | 简单日差 | 非计息场景 |
波动率曲面说明
| 要点 | 说明 |
|---|---|
| BlackVolTermStructure | 期权定价的标准波动率曲面输入,供 Black-Scholes 类引擎使用。 |
| 二维维度 | 波动率随「期限」与「行权价」两个维度变化,可表达波动率微笑/偏斜。 |
| 与收益率曲线配合 | 期权定价需同时提供收益率曲线(折现)与波动率曲面(波动率)。 |
| 插值 | 曲面内部对非网格点的期限/行权价做插值,具体插值方式以官方文档为准。 |
选型决策:什么场景用什么曲线/约定
| 场景 | 推荐选择 | 理由 |
|---|---|---|
| 快速验证/教学示例 | FlatForward | 单一恒定利率,代码最简,聚焦定价逻辑 |
| 有市场零息利率数据 | ZeroCurve / PiecewiseYieldCurve | 按真实利率点拟合,反映真实期限结构 |
| 直接给定折现因子 | DiscountCurve | 跳过利率换算,直接折现 |
| 期权定价 | BlackVolTermStructure | 提供隐含波动率,配合收益率曲线定价 |
| 债券票息 | Actual/Actual 或 30/360 | 国债用 Actual/Actual,公司债常用 30/360 |
| 货币市场短期利率 | Actual/360 | 货币市场惯例 |
常见问题
收益率曲线是什么?
收益率曲线描述不同期限下利率(或折现因子)的关系,是衍生品定价、折现现金流的基础输入;QuantLib 用 YieldTermStructure 类族表达,具体以官方文档为准。
FlatForward 和 ZeroCurve 有什么区别?
FlatForward 是恒定平坦利率(整条曲线一个利率值),ZeroCurve 由多个零息利率点构建(随期限变化)。教学示例常用 FlatForward,真实定价多用 ZeroCurve/PiecewiseYieldCurve,以官方文档为准。
计息约定 DayCounter 选错会怎样?
计息约定直接影响折现因子与票息计提,选错会导致定价结果偏差;债券常用 Actual/Actual 或 30/360,货币市场常用 Actual/360,具体以官方文档为准。
波动率曲面和收益率曲线是一回事吗?
不是。收益率曲线用于折现(无风险利率),波动率曲面(BlackVolTermStructure)提供期权定价的隐含波动率,两者配合使用,以官方文档为准。
QuantLib 的期限结构和 EasyClaw 有关系吗?
无已证实集成。QuantLib 是自建 C++/Python 库,EasyClaw 的 quant-analyst 技能虽含期权定价,但定位是免部署量化研究,与 QuantLib 的期限结构模块是独立路线。