QuantLib · TermStructures

QuantLib收益率曲线与期限结构:YieldTermStructure 构建

期限结构是衍生品定价的地基:QuantLib 的 TermStructures 模块提供收益率曲线(FlatForward/ZeroCurve/DiscountCurve)、波动率曲面(BlackVolTermStructure)与计息约定(Actual/360、30/360 等),为期权、债券、掉期的折现与定价提供利率基准。

收益率曲线
YieldTermStructure
波动率曲面
VolTermStructure
计息约定
DayCounter

QuantLib 期限结构示意;基于 QuantLib TermStructures,非官方曲线图。

Term structure types

期限结构类型对照表

依据 QuantLib TermStructures 模块(以官方文档为准)。

类型QuantLib 类用途注意点
平坦利率FlatForward单一恒定利率,快速起步/示例不反映真实期限结构,仅教学/简单场景
零息曲线ZeroCurve由市场零息利率点构建需给定日期与利率序列
折现曲线DiscountCurve直接给定折现因子折现因子需单调非增
波动率曲面BlackVolTermStructure期权定价的隐含波动率输入按期限+行权价二维插值
分段曲线PiecewiseYieldCurve多段插值拟合市场数据需指定插值方式与节点
远期曲线ForwardCurve远期利率/远期价格由即期曲线隐含推导
Steps

收益率曲线构建分步流程

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

计息约定(DayCounter)对照表

约定含义适用场景
Actual/360实际天数 / 每年 360 天货币市场、短期利率
Actual/365实际天数 / 每年 365 天英镑市场等
Actual/Actual实际天数 / 实际年长(含闰年)国债、债券
30/360每月 30 天 / 每年 360 天公司债、抵押
30/360 US美国规则 30/360美国公司债
SimpleDayCounter简单日差非计息场景
注意:计息约定直接影响折现因子与票息计提,选错会导致定价偏差;具体约定清单以 QuantLib 官方文档为准。
Volatility surface

波动率曲面说明

要点说明
BlackVolTermStructure期权定价的标准波动率曲面输入,供 Black-Scholes 类引擎使用。
二维维度波动率随「期限」与「行权价」两个维度变化,可表达波动率微笑/偏斜。
与收益率曲线配合期权定价需同时提供收益率曲线(折现)与波动率曲面(波动率)。
插值曲面内部对非网格点的期限/行权价做插值,具体插值方式以官方文档为准。
Decision

选型决策:什么场景用什么曲线/约定

场景推荐选择理由
快速验证/教学示例FlatForward单一恒定利率,代码最简,聚焦定价逻辑
有市场零息利率数据ZeroCurve / PiecewiseYieldCurve按真实利率点拟合,反映真实期限结构
直接给定折现因子DiscountCurve跳过利率换算,直接折现
期权定价BlackVolTermStructure提供隐含波动率,配合收益率曲线定价
债券票息Actual/Actual 或 30/360国债用 Actual/Actual,公司债常用 30/360
货币市场短期利率Actual/360货币市场惯例
FAQ

常见问题

收益率曲线是什么?

收益率曲线描述不同期限下利率(或折现因子)的关系,是衍生品定价、折现现金流的基础输入;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 的期限结构模块是独立路线。

曲线建好后,看利率模型

收益率曲线是利率模型的地基,继续了解 Hull-White、Vasicek、CIR、Heston 等模型怎么用。