3. 收益率曲线构建入门

在利率衍生品定价中,收益率曲线不是一张“参考图”,而是定价引擎的核心输入。它决定了贴现因子、远期利率、互换利率之间的映射关系。本节从曲线类型出发,讲清引导(bootstrap)逻辑,再落到 QuantLib 的曲线对象与可视化验证,帮助你建立可复用的曲线构建流程。

一、核心原理:曲线类型与报价体系

收益率曲线按用途可分为三类:贴现曲线(用于折现未来现金流)、远期曲线(用于预测浮动利率)和互换曲线(用于互换定价)。在单曲线框架下,一条曲线同时承担贴现与预测;在多曲线框架下,OIS 曲线负责贴现,IBOR 曲线负责预测,二者通过基差互换关联。

曲线构建的本质是:给定一组市场可观测的工具报价(存款、FRA、利率期货、利率互换),求解出一条满足无套利关系的期限结构。常见插值方法包括线性插值、对数线性插值、三次样条和单调凸插值。不同插值对曲线形状和远期利率稳定性影响显著,尤其在曲线短端。

实务建议:短端优先使用对数线性插值,中长端可考虑单调凸插值,避免远期利率出现剧烈震荡。

二、引导方法:从报价到曲线

引导(Bootstrap)是逐段求解曲线节点的过程。以互换曲线为例,流程如下:

  1. 选取最短期限的存款利率,直接确定曲线起点。
  2. 用 FRA 或期货报价确定 3M、6M 等短端节点。
  3. 按期限从短到长,依次用互换报价求解每个新节点。
  4. 每个节点求解时,令该工具的理论价格等于市场报价,解出对应期限的贴现因子。
  5. 重复直至覆盖全部关键期限,形成完整曲线。

引导的关键在于“顺序”和“一致性”:每个新节点只依赖已确定的短端节点,避免循环依赖。若使用多曲线框架,还需先构建 OIS 贴现曲线,再构建 IBOR 预测曲线。

三、QuantLib 曲线对象与代码示例

QuantLib 提供了丰富的曲线对象。常用类包括:FlatForward、PiecewiseYieldCurve、InterpolatedDiscountCurve、InterpolatedZeroCurve 和 InterpolatedForwardCurve。其中 PiecewiseYieldCurve 是最常用的引导曲线对象,支持多种插值和迭代器。

import QuantLib as ql

# 1. 设置评估日与日历
today = ql.Date(15, 1, 2025)
ql.Settings.instance().evaluationDate = today
calendar = ql.China()

# 2. 定义市场报价:存款与互换利率
deposit_rate = ql.QuoteHandle(ql.SimpleQuote(0.018))
swap_rates = [
    (ql.Period(1, ql.Years), 0.020),
    (ql.Period(2, ql.Years), 0.022),
    (ql.Period(3, ql.Years), 0.024),
    (ql.Period(5, ql.Years), 0.027),
]

# 3. 构建互换利率助手
helpers = [ql.DepositRateHelper(deposit_rate,
             ql.Period(3, ql.Months), 2, calendar,
             ql.ModifiedFollowing, True, ql.Actual360())]
for tenor, rate in swap_rates:
    helpers.append(ql.SwapRateHelper(
        ql.QuoteHandle(ql.SimpleQuote(rate)),
        tenor, calendar, ql.Annual, ql.ModifiedFollowing,
        ql.Actual360(), ql.Euribor6M()))

# 4. 构建分段收益率曲线
curve = ql.PiecewiseLogLinearDiscount(
    today, helpers, ql.Actual360())

# 5. 查询贴现因子与零息利率
print("DF 1Y:", curve.discount(ql.Date(15, 1, 2026)))
print("Zero 2Y:", curve.zeroRate(ql.Date(15, 1, 2027),
      ql.Actual360(), ql.Continuous))

上述代码展示了从报价到曲线的完整链路。注意 PiecewiseLogLinearDiscount 表示对贴现因子做对数线性插值,这是短端常用的稳健选择。

四、可视化验证与常见误区

曲线构建完成后,必须进行可视化验证。建议绘制三条曲线:贴现因子曲线、零息利率曲线和远期利率曲线。若远期利率出现负值或剧烈跳跃,通常意味着插值方法不当或报价节点过少。

验证项 正常表现 异常信号 可能原因
贴现因子 单调递减,接近 1 非单调或大于 1 报价方向错误或插值震荡
零息利率 平滑变化 锯齿状跳变 节点过少或插值不当
远期利率 正数且连续 负值或尖峰 曲线末端外推不合理
常见误区:直接用一条曲线同时做贴现和预测,在 2008 年后已不适用。多曲线框架下,OIS 与 IBOR 的基差不可忽略,否则互换和期权定价会出现系统性偏差。
收益率曲线构建:从市场报价到 QuantLib 曲线对象 市场报价 存款 3M FRA / 期货 互换 1Y–5Y 互换 7Y–10Y 基差互换 引导过程 1. 短端存款 2. FRA / 期货 3. 逐段求解互换 4. 无套利校验 5. 输出曲线节点 QuantLib 曲线对象 PiecewiseYieldCurve InterpolatedDiscountCurve InterpolatedZeroCurve InterpolatedForwardCurve FlatForward 可视化验证:贴现因子单调递减 · 零息利率平滑 · 远期利率连续为正

复盘时建议固定一套检查清单:报价日期是否与评估日一致、日历与天数计算是否正确、插值方法是否匹配期限结构、曲线末端外推是否合理。只有通过可视化与数值双重验证,曲线才能进入定价环节。