基于 DolphinDB 构建收益率曲线与波动率曲面的最佳实践
文章提供标题、作者与发布日期等文章信息。
Source: https://dolphindb.cn/blogs/298
What this page covers
- 曲线/曲面构建的重要性与 DolphinDB 内置函数概览。
- 债券收益率曲线:Bootstrap、NS、NSS 方法与示例。
- 单货币利率互换曲线:定义、构建与示例。
- 外币隐含利率曲线:工具选择、推导与示例。
- 外汇期权波动率曲面:delta→strike、SVI/SABR 与示例。
- 工具函数:curvePredict 与 optionVolPredict。
- 总结、后续扩展方向与脚本下载。
技能认证特训营第二期报名提示
页面顶部提供活动提示与限时报名链接入口。
- 提供“技能认证特训营第二期”的报名入口信息。
- 报名链接指向指定的 H5 页面。
基于 DolphinDB 构建收益率曲线与波动率曲面的最佳实践(文章信息)
页面给出文章标题、作者与发布日期信息。
- 作者署名为 Luxing。
- 发布日期为 2025-12-23。
前言与内置函数概览
阐述曲线/曲面构建的重要性,并列出 DolphinDB V3.00.4 提供的四个市场数据构建函数及模型。
- 收益率曲线与波动率曲面构建是金融工程与定量分析的核心环节。
- DolphinDB V3.00.4 提供四个市场数据构建函数。
- bondYieldCurveBuilder 支持 Bootstrap、NS、NSS 模型。
- fxVolatilitySurfaceBuilder 支持 SVI、SABR、Linear、CubicSpline。
- irSingleCurrencyCurveBuilder 与 irCrossCurrencyCurveBuilder 均支持 Bootstrap。
债券收益率曲线构建
介绍即期曲线的用途,并说明债券收益率曲线从到期收益率到即期利率的构建方法与模型。
- 描述从到期收益率构建到即期利率的思路。
- 提及债券收益率曲线的构建模型与方法选择。
- 该部分聚焦即期曲线相关用途。
债券曲线:Bootstrap 方法
解释使用 Bootstrap 从债券价格/收益率推导即期利率的核心算法流程,并给出与 CFETS 曲线对比结果描述。
- bondCalculator 可由样本券到期收益率(YTM)报价得到债券全价(dirty)。
- 示例使用 2025-08-18 收盘数据(基于 2025 年 8 月份基准债券列表)。
- Bootstrap 与 CFETS 对比:所有期限误差均小于 0.5 bp。
- Bootstrap 与 CFETS 对比:20Y 期限最大误差为 0.4964 bp。
债券曲线:Nelson-Siegel(NS)模型
给出 NS 模型的参数含义、瞬时远期利率与即期利率关系,并描述通过最小化目标函数拟合参数的流程。
- NS 模型包含四个参数:β0、β1、β2、λ(且 λ>0)。
- β0 控制 level(利率水平)。
- β1 控制 slope(短端影响更大)。
- β2 控制 curvature(中端影响更大)。
- 该部分描述通过最小化目标函数拟合参数的流程。
债券曲线:Nelson-Siegel-Svensson(NSS)模型
说明 NSS 在 NS 基础上增加参数以模拟更多 hump,并给出瞬时远期利率与即期利率形式及构建流程概述。
- NSS 为模拟一个额外 hump 形状而增加两个参数(Svensson 1994)。
- 该部分给出瞬时远期利率与即期利率的形式。
- 该部分概述 NSS 曲线构建流程。
债券曲线构建示例(代码)
提供基于 2025-08-18 国债数据的 bondYieldCurveBuilder 使用示例,演示 Bootstrap/NS/NSS 三种方法调用。
- 示例演示 bondYieldCurveBuilder 的 method='Bootstrap' 调用。
- 示例演示 bondYieldCurveBuilder 的 method='NS' 调用。
- 示例演示 bondYieldCurveBuilder 的 method='NSS' 调用。
- 示例数据日期为 2025-08-18 收盘数据。
单货币利率互换曲线构建概述
定义利率互换(IRS)及其定价所需的互换曲线,并列出构建所用市场工具类型。
- IRS 为双方基于相同名义本金交换利息现金流的交易。
- IRS 通常为固定对浮动的利息交换。
- IRS 通常不交换本金。
- 构建工具类型包括 Depo、FRA、Futures、Swaps。
单货币互换曲线:市场数据示意
展示用于单货币利率互换曲线构建的市场数据终端界面示意与说明。
- 该部分包含市场数据终端界面示意。
- 该部分用于说明互换曲线构建所需的市场数据展示方式。
单货币互换曲线:Bootstrap 结果与对比
说明国内市场选用 Depo 与 Swaps 的 Bootstrap 构建,并给出 CNY_FR_007 与 CNY_SHIBOR_3M 的对比结论与误差描述。
- 国内市场示例选取 Depo 和 Swaps 作为构建工具。
- CNY_FR_007 曲线对比基准即期曲线的误差几乎为零(2021-05-26)。
- CNY_SHIBOR_3M 曲线对比:最大误差为 1M 期 1.0539 bp(2021-05-26)。
- CNY_SHIBOR_3M 曲线对比:其余期限误差均小于 0.5 bp(2021-05-26)。
单货币互换曲线构建示例(代码)
给出 irSingleCurrencyCurveBuilder 的两段示例代码:CNY_FR_007 与 CNY_SHIBOR_3M。
- 示例包含曲线名称(curveName)为 CNY_FR_007。
- 示例 referenceDate 为 2021.05.26。
- 该部分提供 CNY_SHIBOR_3M 的示例代码。
外币隐含利率曲线构建概述
说明外汇产品定价需要两币种即期曲线,并列出用于构建外币隐含利率曲线的工具类型。
- 外汇产品定价需要两币种即期曲线。
- FxSwap 提供短期利率信息。
- CrossCurrencySwap 提供中期到远期利率信息。
外币隐含利率曲线:Bootstrap 与利率平价推导
基于外汇掉期与即期报价使用利率平价公式推导外币零息利率,并展示 USD_USDCNY_FX 结果与 CFETS 对比描述。
- 采用 FxSwap 和外汇即期报价,通过利率平价公式推导外币隐含零息利率曲线。
- USD_USDCNY_FX 与 CFETS 对比:误差几乎可以忽略不计。
- USD_USDCNY_FX 示例:1Y 最大误差为 0.0090 bp。
外币隐含利率曲线构建示例(代码)
提供 irCrossCurrencyCurveBuilder 的 USDCNY 示例代码,包括交易日历、期限、掉期点与本币曲线输入。
- 示例 refDate 为 2025.08.18。
- 示例 spot 为 7.1627。
- 示例为 USDCNY 相关的 irCrossCurrencyCurveBuilder 调用。
外汇期权波动率曲面构建概述(delta→strike)
说明外汇期权波动率曲面从 delta-vol 报价转换为 strike-vol,并给出计算示例与参数含义说明。
- 外汇期权市场报价形式为 delta-vol。
- 构建流程包含 delta 转 strike 的步骤。
- 可先由 ATM/BF/RR 得到各 delta 的 vol。
- 可由 Black-Scholes delta 反推 strike。
SVI 模型
定义 SVI 总方差模型的参数与目标函数,并说明可用 Levenberg-Marquardt 等算法拟合微笑曲线。
- SVI 参数包含 a、b、ρ、m、σ。
- SVI 使用总方差 ω(k)=σ²_imp×T。
- SVI 使用 k=ln(K/F)。
- 拟合可用 Levenberg-Marquardt 等算法最小化目标函数求参数。
SABR 模型
给出 SABR 隐含波动率近似公式、参数含义与目标函数,并说明用数值算法拟合参数以得到 smile。
- SABR 参数包含 α、β、ρ、υ。
- β 取值范围为 [0,1]。
- SABR 使用 K、F、T 作为输入变量。
- 拟合可用 Levenberg-Marquardt 等算法最小化目标函数求参数。
波动率曲面构建示例(SVI 与 USDCNY 数据)
展示 2025-08-18 USDCNY 市场报价与 SVI 拟合曲面示意,并给出 fxVolatilitySurfaceBuilder 的完整示例代码。
- 示例使用 2025 年 8 月 18 日的市场数据(外汇交易中心数据)。
- 示例 ccyPair 为 USDCNY。
- 示例给出 fxVolatilitySurfaceBuilder 的完整调用代码。
- 示例展示 USDCNY 市场报价与 SVI 拟合曲面示意。
工具函数:curvePredict
介绍 curvePredict 用于在曲线构建后获取任意时间点/期限的曲线值,并给出调用示例与输出。
- curvePredict 用于获取任意时间的曲线值。
- curvePredict(curve, 2025.10.18) 示例输出为 0.0156。
- curvePredict(curve, 1.0) 示例输出为 0.0160。
工具函数:optionVolPredict
介绍 optionVolPredict 用于获取指定日期与执行价的曲面波动率,并给出多种输入形式的示例与输出。
- optionVolPredict 用于获取指定时间和执行价时曲面上的波动率。
- optionVolPredict(surf, 2025.10.18, 7) 示例输出为 0.035427722673281。
- optionVolPredict 支持日期与执行价的数组输入形式。
- 示例在 2026.10.18:7.1 对应 0.042188693924168。
- 示例在 2026.10.18:7.2 对应 0.044408563755123。
总结与展望
概述教程内容、对比基准结果,并列出后续计划扩展更多曲线/曲面函数与支持更多标的曲线。
- irSingleCurrencyCurveBuilder 目前仅支持 CNY_FR_007 和 CNY_SHIBOR_3M。
- 计划新增:商品远期曲线。
- 计划新增:CDS 信用利差曲线。
- 计划新增:商品期权波动率曲面。
- 计划增加 USD_SOFR / EUR_ESTR 等曲线。
参考文献
列出与曲线构建与波动率微笑/曲面相关的参考链接与文献条目。
- 该部分提供参考链接与文献条目列表。
- 参考内容覆盖曲线构建与波动率微笑/曲面主题。
附录:脚本下载
提供示例脚本 curve_volsurf_builder.dos 的下载链接。
- 脚本文件名为 curve_volsurf_builder.dos。
- 脚本链接位于 https://docs.dolphindb.cn/zh/tutorials/script/curve_surface_builder/curve_volsurf_builder.dos 。
Facts Index
| Entity | Attribute | Value | Confidence |
|---|---|---|---|
| 技能认证特训营第二期 | 报名链接 | https://www.qingsuyun.com/h5/e/217471/5/ | high |
| 基于 DolphinDB 构建收益率曲线与波动率曲面的最佳实践 | 发布日期 | 2025-12-23 | high |
| 基于 DolphinDB 构建收益率曲线与波动率曲面的最佳实践 | 作者署名 | Luxing | high |
| DolphinDB V3.00.4 | 推出的市场数据构建函数数量 | 四个市场数据构建函数 | high |
| bondYieldCurveBuilder | 支持模型 | Bootstrap/NS/NSS | high |
| bondYieldCurveBuilder | 用途/描述 | 债券收益率曲线构建 | high |
| irSingleCurrencyCurveBuilder | 支持模型 | Bootstrap | high |
| irSingleCurrencyCurveBuilder | 用途/描述 | 单货币利率互换曲线构建 | high |
| irCrossCurrencyCurveBuilder | 支持模型 | Bootstrap | high |
| irCrossCurrencyCurveBuilder | 用途/描述 | 交叉货币利率互换曲线构建(外币隐含利率曲线构建) | high |
| fxVolatilitySurfaceBuilder | 支持模型 | SVI/SABR/Linear/CubicSpline | high |
| fxVolatilitySurfaceBuilder | 用途/描述 | 外汇期权波动率曲面构建 | high |
| 收益率曲线与期权波动率曲面构建 | 重要性/作用 | 金融工程和定量分析的核心环节,确保定价精确性一致性,并为风险管理和交易决策提供基础;微小误差可能导致数百万甚至数亿的定价偏差或风险误判 | medium |
| 市场发展对曲线/曲面构建的影响 | 复杂化驱动因素举例 | LIBOR 向 SOFR 过渡、结构性产品复杂化使曲线/曲面模型与技术更复杂且更重要 | medium |
| bondCalculator | 在 Bootstrap/NS 曲线构建中的用途 | 根据样本券到期收益率(YTM)报价得到债券全价(dirty) | high |
| 2025-08 国债即期曲线(Bootstrap vs CFETS) | 最大误差 | 20Y 期限 0.4964 bp;所有期限误差均小于 0.5 bp | medium |
| 国债收益率曲线 Bootstrap 示例 | 使用的数据日期 | 2025-08-18 收盘数据(基于 2025 年 8 月份基准债券列表) | medium |
| Nelson-Siegel (NS) 模型 | 参数数量与名称 | 四个参数:β0、β1、β2、λ(且 λ>0) | high |
| NS 模型参数经济含义(β0/β1/β2) | 控制因素 | β0 控制 level(利率水平);β1 控制 slope(短端影响更大);β2 控制 curvature(中端影响更大) | high |
| Nelson-Siegel-Svensson(NSS)模型 | 相对 NS 的改进 | 为多模拟一个 hump 形状而增加两个参数(Svensson 1994) | high |
| bondYieldCurveBuilder 示例 | 演示的方法参数 | method='Bootstrap'、method='NS'、method='NSS' | high |
| 利率互换(IRS) | 定义要点 | 交易双方在约定时期内基于相同名义本金、不同利率计算方式交换利息现金流;通常固定对浮动;不交换本金 | high |
| 单货币利率互换曲线构建 | 涉及工具类型 | 存款利率(Depo)、远期利率协议(FRA)、利率期货(Futures)、利率互换(Swaps) | high |
| 国内市场单货币互换曲线 Bootstrap 构建 | 选用的工具 | 选取 Depo 和 Swaps 作为构建工具 | high |
| CNY_FR_007 曲线(2021-05-26) | 与基准即期曲线误差 | 误差几乎为零(对比国内某大型机构 Benchmark Zero Rate) | medium |
| CNY_SHIBOR_3M 曲线(2021-05-26) | 最大误差与其他期限误差 | 最大误差为 1M 期 1.0539 bp,其余期限误差均小于 0.5 bp | medium |
| irSingleCurrencyCurveBuilder 示例 1 | 曲线名称(curveName) | CNY_FR_007 | high |
| irSingleCurrencyCurveBuilder 示例 | referenceDate | 2021.05.26 | high |
| 外币隐含利率曲线构建 | 常用工具 | 外汇掉期(FxSwap)提供短期利率信息;货币交叉互换(CrossCurrencySwap)提供中期到远期利率信息 | high |
| 国内市场外币隐含利率曲线 Bootstrap 推导 | 输入与方法 | 采用 FxSwap 和外汇即期报价,通过利率平价公式推导外币隐含零息利率曲线 | high |
| USD_USDCNY_FX 隐含收益率曲线(2025-08-18) | 与 CFETS 对比误差 | 误差几乎可以忽略不计(示例:1Y 最大误差 0.0090 bp) | medium |
| USDCNY 隐含收益率曲线示例 | refDate | 2025.08.18 | high |
| USDCNY 隐含收益率曲线示例 | spot | 7.1627 | high |
| 外汇期权波动率曲面构建 | 报价形式与步骤 | 外汇期权报价采用 delta-vol;第一步为 delta 转 strike(先由 ATM/BF/RR 得到各 delta 的 vol,再由 Black-Scholes delta 反推 strike) | high |
| SVI 模型 | 参数集合 | a、b、ρ、m、σ(并使用总方差 ω(k)=σ^2_imp×T 与 k=ln(K/F)) | high |
| SVI 模型拟合方法 | 优化算法示例 | 可采用 Levenberg-Marquardt 等算法最小化目标函数求出五个参数 | medium |
| SABR 模型 | 参数集合与范围 | α、β(取值范围[0,1])、ρ、υ;并使用 K、F、T 作为输入变量 | high |
| SABR 模型拟合方法 | 优化算法示例 | 采用 Levenberg-Marquardt 等算法最小化目标函数求出四个参数 | medium |
| USDCNY 波动率曲面示例(SVI) | 使用的市场数据日期 | 2025 年 8 月 18 日(外汇交易中心数据) | high |
| fxVolatilitySurfaceBuilder 示例 | ccyPair | USDCNY | high |
| curvePredict | 用途 | 获取任意时间的曲线值 | high |
| curvePredict 示例输出 | curvePredict(curve, 2025.10.18) | 0.0156 | high |
| curvePredict 示例输出 | curvePredict(curve, 1.0) | 0.0160 | high |
| optionVolPredict | 用途 | 获取指定时间和执行价时曲面上的波动率 | high |
| optionVolPredict 示例输出 | optionVolPredict(surf, 2025.10.18, 7) | 0.035427722673281 | high |
| optionVolPredict 示例输出 | optionVolPredict(surf, [2025.10.18, 2026.10.18], [7.1, 7.2]) 在 2026.10.18 的结果 | 7.1: 0.042188693924168;7.2: 0.044408563755123 | high |
| irSingleCurrencyCurveBuilder | 当前支持的曲线范围 | 目前仅支持 CNY_FR_007 和 CNY_SHIBOR_3M | high |
| 后续迭代方向 | 计划新增的曲线/曲面类型 | 商品远期曲线、CDS 信用利差曲线、商品期权波动率曲面等 | medium |
| 后续迭代方向 | 计划扩展的单货币互换曲线标的 | 后续会增加 USD_SOFR / EUR_ESTR 等曲线 | medium |
| 附录脚本 | 文件名与链接 | curve_volsurf_builder.dos:https://docs.dolphindb.cn/zh/tutorials/script/curve_surface_builder/curve_volsurf_builder.dos | high |