1. 课程导入
欢迎进入《Cap Floor与Swaption定价实战》。在动手写第一行定价代码之前,我们需要先建立一张“市场地图”:这些产品在利率衍生品体系中处于什么位置,它们各自解决什么风险,以及为什么它们的定价比普通利率互换更复杂。本章不涉及公式推导,而是为后续30章搭建统一的语言框架与认知坐标。
一、利率衍生品市场概览
利率衍生品是全球场外(OTC)市场规模最大的资产类别之一。按交易结构与风险特征,可以粗略分为三大族:
- 线性产品:利率互换(IRS)、远期利率协议(FRA)、隔夜指数互换(OIS)。它们的收益与利率呈线性关系,定价核心是贴现曲线与远期曲线的构建。
- 非线性期权类产品:利率上限/下限(Cap/Floor)、互换期权(Swaption)、利率期权(如Bermudan Swaption)。收益对利率呈非线性,定价必须引入波动率模型。
- 结构化产品:范围 accrual、CMS 利差、可赎回债券等,通常由上述基础模块组合而成。
Cap/Floor 与 Swaption 正是非线性族中最基础、流动性最好的两类。掌握它们的定价,等于拿到了利率波动率建模的“入场券”。
核心认知:线性产品定价回答“利率会走到哪里”;非线性产品定价还要回答“利率可能怎么走、波动多大”。这就是波动率曲面存在的意义。
二、Cap/Floor 与 Swaption 的定义
利率上限(Cap)是一系列欧式利率期权的组合,称为 Caplet。每个 Caplet 在付息日对参考利率与执行价(Strike)的差额进行支付:若参考利率高于 Strike,买方获得差额;否则为零。它相当于为浮动利率负债买了一份“保险”,锁定最高融资成本。
利率下限(Floor)与 Cap 对称:当参考利率低于 Strike 时向买方支付差额,用于保护浮动利率资产的收益下限。
互换期权(Swaption)是进入一份利率互换的期权。买方在到期日有权(但无义务)按约定固定利率进入一笔特定期限的互换。按行权方向分为 payer swaption(支付固定利率,看涨利率)与 receiver swaption(收取固定利率,看跌利率)。
| 产品 | 标的 | 买方权利 | 主要风险对冲 | 定价关键输入 |
|---|---|---|---|---|
| Cap | 浮动利率(如SOFR、EURIBOR) | 利率高于Strike时获赔 | 浮动利率负债成本上限 | 远期曲线、Caplet波动率 |
| Floor | 浮动利率 | 利率低于Strike时获赔 | 浮动利率资产收益下限 | 远期曲线、Floorlet波动率 |
| Payer Swaption | 付固定收浮动互换 | 到期可进入互换付固定 | 未来融资利率上升风险 | 互换远期利率、Swaption波动率 |
| Receiver Swaption | 收固定付浮动互换 | 到期可进入互换收固定 | 未来投资收益下降风险 | 互换远期利率、Swaption波动率 |
从现金流结构看,Cap/Floor 是“一串期权”,Swaption 是“一个期权进入一串现金流”。这一区别直接决定了它们的定价方法:Cap 常用 Black 模型逐 Caplet 定价,Swaption 则常用 Black 或 SABR 等模型在互换远期利率上定价。
三、学习目标与整体课程框架
本课程的目标不是“背公式”,而是建立一条从市场数据到定价结果、再到风险指标的完整链路。学完后,你应当能够:
- 理解 Cap/Floor 与 Swaption 的合约条款、现金流结构与市场报价惯例。
- 独立构建贴现曲线与远期曲线,并从中提取 Caplet 与 Swaption 定价所需的远期利率。
- 使用 Black、Bachelier、SABR 等模型对 Cap/Floor 与 Swaption 进行定价与波动率校准。
- 计算 Delta、Vega、Gamma 等希腊字母,并解释波动率微笑与偏斜对价格的影响。
- 通过 Python 实战代码复现定价流程,并完成结果验证与常见错误排查。
课程整体分为五个阶段:基础概念与市场惯例(第1–5章)、曲线构建与远期利率(第6–11章)、Cap/Floor 定价与波动率校准(第12–18章)、Swaption 定价与SABR模型(第19–25章)、风险管理与综合实战(第26–30章)。每一阶段都配有可运行的代码片段与参数清单。
学习建议:先跑通一条最小定价链路——用一条平坦曲线给一个 Caplet 定价,再逐步加入真实曲线、波动率微笑和多期结构。不要一开始就追求完整曲面校准。
四、常见误区与复盘
初学者在接触 Cap/Floor 与 Swaption 时,最容易踩以下四个坑:
- 把 Cap 当成一个期权:Cap 是一组 Caplet,每个 Caplet 的到期日、远期利率和波动率都不同,不能用一个 Black 公式一次性定价。
- 混淆 Swaption 的标的:Swaption 的标的是“互换的固定利率”,不是某个即期利率。定价时必须先确定互换远期利率与年金因子。
- 忽略波动率微笑:市场报价的隐含波动率随 Strike 变化,直接用平值波动率会给虚值期权带来显著误差。
- 曲线与波动率混用:贴现曲线、远期曲线和波动率曲面是三个独立输入,任何一处口径错误都会导致价格偏差。
复盘要点:定价结果异常时,先检查曲线日期与计息惯例,再检查波动率报价的 Strike 与到期日映射,最后才怀疑模型。多数错误来自输入数据而非模型本身。
下面给出一个最小可运行的参数清单,用于后续章节的代码实验。它定义了本节所讨论产品的核心输入字段:
# 最小定价输入参数清单(示例)
trade = {
"product": "Cap", # Cap / Floor / Swaption
"notional": 10_000_000,
"strike": 0.035,
"start": "2025-01-15",
"maturity": "2030-01-15",
"index": "SOFR",
"frequency": "quarterly",
"day_count": "ACT/360"
}
market = {
"discount_curve": "USD_OIS",
"forward_curve": "USD_SOFR_3M",
"vol_surface": "USD_CAP_SWAPTION",
"valuation_date": "2025-01-10"
}
这张“地图”已经铺开:左边是线性产品,中间是我们即将深入的非线性期权类,右边是由它们组合而成的结构化产品。接下来,我们将从合约条款与市场报价开始,一步步把这张地图变成可运行的定价代码。