基于 DolphinDB 构建收益率曲线与波动率曲面的最佳实践
本页说明收益率曲线与波动率曲面构建的重要性,并概览 DolphinDB V3.00.4 提供的市场数据构建函数与相关示例。
What this page covers
- 曲线与曲面构建的重要性与函数概览
- 债券收益率曲线构建(Bootstrap/NS/NSS)与示例
- 单货币 IRS 曲线构建(工具范围、对比结果、示例)
- 外币隐含利率曲线构建(利率平价、示例)
- 外汇期权波动率曲面构建(delta→strike、SVI/SABR、示例)
- 工具函数(curvePredict、optionVolPredict)
- 总结、后续迭代方向与支持范围
技能认证特训营第二期报名活动 (cta)
页面顶部提供限时报名入口,并提示专属福利优惠。
- 活动状态为“正式开启”。
- 报名为限时形式。
- 页面提示有专属福利优惠。
新闻栏目与文章标题/日期 (navigation)
该区域呈现新闻栏目标识、文章标题与发布日期信息。
- 文章标题为“基于 DolphinDB 构建收益率曲线与波动率曲面的最佳实践”。
- 页面提供发布日期信息。
前言:曲线与曲面构建的重要性与 DolphinDB 新增函数概览 (product_overview)
本节说明曲线/曲面构建在金融工程中的重要性,并概览 DolphinDB V3.00.4 的新增构建函数。
- 收益率曲线与期权波动率曲面构建是金融工程与定量分析的核心环节。
- 该构建为定价一致性、风险管理与交易决策提供基础。
- 曲线构建误差可能导致较大的定价偏差或风险误判(低置信度表述)。
- DolphinDB V3.00.4 推出四个市场数据构建函数。
- LIBOR 向 SOFR 过渡与结构性产品复杂化使模型与技术更复杂且更重要。
债券收益率曲线构建:Bootstrap/NS/NSS 理论与示例 (how_it_works)
本节介绍债券即期曲线构建用途,涵盖 Bootstrap、Nelson-Siegel(NS)与 Nelson-Siegel-Svensson(NSS)方法,并提供示例代码。
- bondYieldCurveBuilder 支持 Bootstrap、NS、NSS 三种模型。
- bondYieldCurveBuilder 的用途为债券收益率曲线构建。
- bondCalculator 可用于根据样本券 YTM 报价计算债券全价(dirty)。
- Bootstrap 流程从剩余期限最小的样本券开始迭代构建即期曲线。
- 2025-08-18 国债即期曲线对比:最大误差为 20Y 期限 0.4964 bp,且所有期限误差均小于 0.5 bp。
单货币利率互换曲线构建:工具范围、Bootstrap 结果与示例 (how_it_works)
本节解释 IRS 曲线构建使用的金融工具范围,展示 CNY_FR_007 与 CNY_SHIBOR_3M 的 Bootstrap 构建对比结果,并提供示例代码。
- 利率互换(IRS)通常为固定与浮动利率交换且不交换本金。
- 单货币 IRS 曲线构建可包含 Depo、FRA、Futures、Swaps 等工具类型。
- 国内市场单货币 IRS 曲线示例选取 Depo 与 Swaps,并采用 Bootstrap 方法。
- 2021-05-26 CNY_FR_007 曲线对比:与某大型机构基准即期利率对比,误差几乎为零。
- 2021-05-26 CNY_SHIBOR_3M 曲线对比:最大误差为 1M 期限 1.0539 bp,其余期限误差小于 0.5 bp。
外币隐含利率曲线构建:利率平价与 Bootstrap 示例 (how_it_works)
本节说明通过 FxSwap 与即期报价结合利率平价推导外币零息利率,并展示 USD_USDCNY_FX 构建结果与代码示例。
- 外汇产品定价需要输入两种货币的即期曲线以表示资金成本。
- 外币隐含利率曲线构建可使用 FxSwap 与 CrossCurrencySwap。
- 示例采用 FxSwap 与外汇即期报价,通过利率平价公式推导外币隐含利率曲线。
- USD_USDCNY_FX 示例参考日期为 2025.08.18。
- 推导出的 Zero Rate 与 CFETS 官方美元即期利率高度吻合,误差几乎为零。
外汇期权波动率曲面构建:delta→strike、SVI/SABR 与示例 (how_it_works)
本节介绍外汇期权 delta-vol 报价转换到 strike-vol 的步骤,并说明 SVI 与 SABR 模型拟合及曲面示例与代码。
- 外汇期权定价需要波动率输入。
- 单个期权波动率可从波动率曲面按执行价与剩余期限插值获得。
- 外汇期权市场采用 delta-vol 报价而非 strike-vol。
- 曲面构建第一步为将 delta 转换为 strike。
- SVI 模型由 Jim Gatheral 提出。
- SABR 参数可通过最小化目标函数的算法(如 Levenberg-Marquardt)求解。
- 示例使用 CFETS 2025-08-18 USDCNY 外汇期权 delta 报价矩阵,并用 SVI 拟合波动率微笑得到曲面。
- 示例输入包含 spot、期限范围、报价名列表,以及 domesticCurve 与 foreignCurve。
工具函数:curvePredict 与 optionVolPredict (feature_list)
本节给出曲线插值/预测与曲面波动率查询的工具函数用法示例。
- curvePredict 的用途为获取任意时间的曲线值。
- 示例给出 curvePredict(curve, 2025.10.18) 的输出为 0.0156。
- 示例给出 curvePredict(curve, 1.0) 的输出为 0.0160。
- optionVolPredict 的用途为获取指定时间与执行价对应的曲面波动率。
- 示例给出 optionVolPredict(surf, 2025.10.18, 7) 的输出值(表格中)为 0.035427722673281。
总结与展望:后续迭代方向与支持范围 (misc)
本节总结教程并列出未来拟增加的曲线/曲面类型与标的品种支持计划。
- 后续计划增加更多曲线/曲面构建函数(如商品远期曲线、CDS 信用利差曲线等)。
- irSingleCurrencyCurveBuilder 目前仅支持 CNY_FR_007 与 CNY_SHIBOR_3M。
- irSingleCurrencyCurveBuilder 后续计划增加 USD_SOFR / EUR_ESTR 等曲线(规划性表述)。
- 提及中间市场数据是定价与风控前提,并可为量化策略提供帮助(低置信度表述)。
参考文献 (misc)
本节列出与曲线构建、波动率微笑/曲面相关的参考资料。
- 页面提供参考文献列表,用于支撑相关方法与公式。
- 参考文献覆盖曲线构建与波动率曲面相关主题。
附录:脚本下载 (misc)
本节提供教程对应的 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 |
|---|---|---|---|
| 技能认证特训营第二期 | status | 正式开启(限时报名,享专属福利优惠) | medium |
| 技能认证特训营第二期限时报名 | url | https://www.qingsuyun.com/h5/e/217471/5/ | high |
| 基于 DolphinDB 构建收益率曲线与波动率曲面的最佳实践 | publish_date | 2025.12.23 | high |
| DolphinDB V3.00.4 | released_functions_count | 推出四个市场数据构建函数 | high |
| bondYieldCurveBuilder | supported_models | Bootstrap/NS/NSS | high |
| bondYieldCurveBuilder | purpose | 债券收益率曲线构建 | high |
| bondYieldCurveBuilder | documentation_url | https://docs.dolphindb.cn/zh/funcs/b/bondYieldCurveBuilder.html | high |
| irSingleCurrencyCurveBuilder | supported_models | Bootstrap | high |
| irSingleCurrencyCurveBuilder | purpose | 单货币利率互换曲线构建 | high |
| irSingleCurrencyCurveBuilder | documentation_url | https://docs.dolphindb.cn/zh/funcs/i/irSingleCurrencyCurveBuilder.html | high |
| irCrossCurrencyCurveBuilder | supported_models | Bootstrap | high |
| irCrossCurrencyCurveBuilder | purpose | 交叉货币利率互换曲线构建(外币隐含利率曲线构建) | high |
| irCrossCurrencyCurveBuilder | documentation_url | https://docs.dolphindb.cn/zh/funcs/i/irCrossCurrencyCurveBuilder.html | high |
| fxVolatilitySurfaceBuilder | supported_models | SVI/SABR/Linear/CubicSpline | high |
| fxVolatilitySurfaceBuilder | purpose | 外汇期权波动率曲面构建 | high |
| fxVolatilitySurfaceBuilder | documentation_url | https://docs.dolphindb.cn/zh/funcs/f/fxVolatilitySurfaceBuilder.html | high |
| 收益率曲线与期权波动率曲面构建 | importance | 是金融工程和定量分析的核心环节,为定价一致性、风险管理与交易决策提供基础 | medium |
| 曲线构建误差影响 | impact | 微小误差可能导致数百万甚至数亿的定价偏差或风险误判 | low |
| 市场与产品变化对曲线/曲面构建的影响 | drivers | LIBOR 向 SOFR 过渡与结构性产品复杂化使模型和技术更复杂且更重要 | medium |
| bondCalculator | usage_in_process | 用于根据样本券 YTM 报价计算债券全价(dirty) | high |
| bondCalculator | documentation_url | https://docs.dolphindb.cn/zh/funcs/b/bondCalculator.html | high |
| Bootstrap 债券即期曲线构建流程 | method_description | 从剩余期限最小样本券开始,基于 YTM 得到 dirty,调整即期利率使 npv 与 dirty 误差小于阈值以得到对应期限即期利率,迭代得到整条曲线 | high |
| 2025-08-18 国债即期曲线对比(Bootstrap vs CFETS) | max_error | 最大误差为 20Y 期限 0.4964 bp;所有期限误差均小于 0.5 bp | medium |
| 债券收益率曲线构建 | data_source | 参考 CFETS 2025 年 8 月份国债收益率曲线构建基准债券列表并选取 2025 年 8 月 18 日收盘数据 | medium |
| Nelson-Siegel(NS)模型 | origin | 由 Nelson 和 Siegel 于 1987 年提出 | high |
| NS 模型参数 | parameter_set | β0, β1, β2, λ(其中 λ>0,τ=T-t) | high |
| NS 模型参数含义:β0 | interpretation | 控制利率水平(level),对所有期限影响相同,变化使收益率曲线水平上下移动 | high |
| NS 模型参数含义:β1 | interpretation | 控制曲线斜率(slope),因子载荷单调递减,对短端利率影响较大 | high |
| NS 模型参数含义:β2 | interpretation | 控制曲线曲率(curvature),因子载荷先增后减,对中端影响较大 | high |
| NS 模型参数含义:τ/衰减速度 | interpretation | τ 值越大衰减越快(描述 β1 与 β2 因子载荷衰减速度) | high |
| NS 模型构建流程 | calibration_objective | 基于样本券 YTM 计算 dirty,使用假设即期曲线对债券定价得 npv,最小化目标函数以得到四个参数 | high |
| Nelson-Siegel-Svensson(NSS)模型 | origin | Svensson 于 1994 年在 NS 基础上改进,增加两个参数以多模拟一个 hump 形状 | high |
| NSS 模型构建流程 | relationship_to_NS | 与 NS 类似,仅即期曲线的解析式不同 | high |
| bondYieldCurveBuilder 示例 | reference_date | 2025.08.18(国债收益率曲线构建示例) | high |
| bondYieldCurveBuilder 示例 | methods_used | method='Bootstrap';method='NS';method='NSS' | high |
| irSingleCurrencyCurveBuilder | example_reference_date | 2021.05.26(示例中用于构建 CNY_FR_007 与 CNY_SHIBOR_3M 曲线) | high |
| 利率互换(IRS) | definition | 交易双方在约定时期内基于相同名义本金与不同利率计算方式交换利息现金流,通常为固定与浮动利率交换且不交换本金 | high |
| 单货币利率互换曲线构建 | instrument_types_included | Depo、FRA、Futures、Swaps | high |
| 国内市场单货币 IRS 曲线构建 | selected_instruments | 选取 Depo 和 Swaps 作为构建工具,采用 Bootstrap 方法 | high |
| 2021-05-26 CNY_FR_007 曲线对比 | error_vs_benchmark | 与国内某大型机构的基准即期利率对比,误差几乎为零 | medium |
| 2021-05-26 CNY_SHIBOR_3M 曲线对比 | max_error | 误差最大为 1M 期限的 1.0539 bp;其余期限误差均小于 0.5 bp | medium |
| irSingleCurrencyCurveBuilder 示例(例1) | curve_name | curveName="CNY_FR_007" | high |
| irSingleCurrencyCurveBuilder 示例(例1) | day_count_convention | Actual365 | high |
| irSingleCurrencyCurveBuilder 示例(例2) | target_curve | 以人民币计价、参考 SHIBOR_3M 浮动利率的利率互换曲线 | high |
| 外币隐含利率曲线构建 | importance_reason | 外汇产品定价需要输入两种货币的即期曲线以表示各自资金成本 | high |
| 外币隐含利率曲线构建 | instrument_types_included | FxSwap 与 CrossCurrencySwap | high |
| 国内市场外币隐含利率曲线 Bootstrap 方法 | approach | 采用 FxSwap 与外汇即期报价,通过利率平价公式推导外币隐含利率曲线 | high |
| USD_USDCNY_FX 美元隐含收益率曲线示例 | reference_date | 2025.08.18 | medium |
| 2025-08-18 USD_USDCNY_FX 曲线对比 | error_vs_cfets | 推导出的 Zero Rate 与 CFETS 官方美元即期利率高度吻合,误差几乎为零 | medium |
| irCrossCurrencyCurveBuilder 示例 | inputs_used | refDate=2025.08.18;instTypes="FxSwap";ccyPair="USDCNY";spot=7.1627;dayCountConvention="Actual365";compounding="Continuous"(作为参数出现) | high |
| 外汇期权波动率曲面构建 | pricing_dependency | 外汇期权定价需要波动率;单个期权波动率需要按执行价与剩余期限从波动率曲面插值 | high |
| 外汇期权市场报价形式 | quote_convention | 采用 delta-vol 报价而非 strike-vol;曲面构建第一步为 delta 转 strike | high |
| delta→vol 计算(示例公式) | sigma_25c | sigma_25c = sigma_atm + bf_25 + 0.5 * rr_25 | high |
| delta→vol 计算(示例公式) | sigma_25p | sigma_25p = sigma_atm + bf_25 - 0.5 * rr_25 | high |
| delta→vol 计算(示例公式) | sigma_10c | sigma_10c = sigma_atm + bf_10 + 0.5 * rr_10 | high |
| delta→vol 计算(示例公式) | sigma_10p | sigma_10p = sigma_atm + bf_10 - 0.5 * rr_10 | high |
| delta→strike 转换 | method | 根据 Black-Scholes 的 delta 公式反推 strike(细节参考文献[5]) | high |
| SVI 模型 | inventor | 由 Jim Gatheral 提出 | high |
| SVI 模型变量定义 | k_definition | k=ln(K/F)(k 为对数 moneyness;K 为行权价;F 为远期汇率) | high |
| SVI 模型变量定义 | omega_definition | ω(k)=σ^2_imp × T(ω 为总方差;σ^2_imp 为隐含波动率平方;T 为到期时间) | high |
| SVI 参数含义 | parameter_meanings | a(最小总方差/基准水平)、b(倾斜)、ρ(对称性,取值[-1,1]且通常为负)、m(中心位置)、σ(宽带) | high |
| SVI 参数求解方法 | calibration_method | 可用 Levenberg-Marquardt 等算法最小化目标函数以求得五个参数 | high |
| SABR 模型参数 | parameter_set | α, β(取值[0,1]), ρ, υ(vol-of-vol),并使用 K(行权价), F(远期汇率), T(到期时间) | high |
| SABR 参数求解方法 | calibration_method | 采用 Levenberg-Marquardt 等算法最小化目标函数以求得四个参数 | high |
| USDCNY 外汇期权波动率曲面示例 | reference_date_and_method | 以 CFETS 2025 年 8 月 18 日 USDCNY 外汇期权 delta 报价矩阵为参数,使用 SVI 模型拟合波动率微笑并得到波动率曲面,可用于外汇期权定价 | medium |
| fxVolatilitySurfaceBuilder 示例 | key_inputs | refDate=2025.08.18;ccyPair="USDCNY";quoteNames=["ATM","D25_RR","D25_BF","D10_RR","D10_BF"];quoteTerms 从 1d 到 3y;spot=7.1627;输入 domesticCurve 与 foreignCurve | high |
| curvePredict | purpose | 获取任意时间的曲线值 | high |
| curvePredict | documentation_url | https://docs.dolphindb.cn/zh/funcs/c/curvePredict.html | high |
| curvePredict 示例输出 | curvePredict(curve, 2025.10.18) | output: 0.0156 | high |
| curvePredict 示例输出 | curvePredict(curve, 1.0) | output: 0.0160 | high |
| optionVolPredict | purpose | 获取指定时间与执行价时曲面上的波动率 | high |
| optionVolPredict | documentation_url | https://docs.dolphindb.cn/zh/funcs/o/optionVolPredict.html | high |
| optionVolPredict 示例输出 | optionVolPredict(surf, 2025.10.18, 7) | 0.035427722673281(在输出表格中) | high |
| optionVolPredict 示例输出 | optionVolPredict(surf, 2025.10.18, [7.1,7.2]) | 7.1: 0.029466799513362;7.2: 0.029268084254983(在输出表格中) | high |
| 后续迭代方向 | planned_additions | 增加更多曲线/曲面构建函数:商品远期曲线、CDS 信用利差曲线、商品期权波动率曲面等 | medium |
| irSingleCurrencyCurveBuilder | current_support | 目前仅支持 CNY_FR_007 和 CNY_SHIBOR_3M | high |
| irSingleCurrencyCurveBuilder | planned_support | 后续会增加 USD_SOFR / EUR_ESTR 等曲线 | medium |
| 收益率曲线与波动率曲面构建 | role_in_quant | 中间市场数据是定价与风控前提,也为量化策略提供帮助(提及参考[6]) | low |
| 附录脚本 | download | curve_volsurf_builder.dos | high |
| curve_volsurf_builder.dos | url | https://docs.dolphindb.cn/zh/tutorials/script/curve_surface_builder/curve_volsurf_builder.dos | high |