回测应用:期权中高频波动率择时价差策略回测

本文围绕“期权中高频波动率择时价差策略回测”展开,并给出文章标题信息、作者/来源与发布日期等基础信息。

Source: https://dolphindb.cn/blogs/333

What this page covers

技能认证特训营第二期报名推广

页面顶部包含技能认证特训营第二期的限时报名链接与福利提示。

回测应用:期权中高频波动率择时价差策略回测(文章标题与信息)

给出文章标题、作者/来源(DolphinDB)与发布日期。

背景与动机:期权与隐含波动率、回测必要性、DolphinDB定位

解释隐含波动率在期权交易中的作用、波动率套利与价差策略思路,并说明用历史高频数据回测验证的重要性及 DolphinDB 的适用性。

中高频回测平台关键环节与挑战

描述中高频回测平台的三个关键环节及面临的性能、成交模拟与架构扩展等挑战。

DolphinDB中高频回测解决方案与模块组成

说明 DolphinDB 的中高频回测解决方案由行情回放、模拟撮合引擎插件与回测插件构成,并支持多语言与兼容外部方案。

1. 基于 DolphinDB 的期权波动率择时价差策略

介绍策略逻辑、盈亏情景分析与在 Backtest 插件中的事件化实现结构及关键代码片段。

2. 回测流程

展示使用 Backtest 插件进行期权中高频回测的数据处理全流程,包含流程图与引擎创建/执行步骤。

3. 策略评价

说明如何获取回测结果与示例成交明细,并给出性能对比、JIT注意事项与测试环境配置。

4. 总结

概述策略实现、回测流程梳理与 Backtest 插件在中高频期权回测中的适用性与价值。

5. 常见问题(FAQ)

回答数据源格式匹配与长周期回测换月逻辑处理等问题,并提供相关示例代码与说明。

附录(脚本与数据下载)

提供回测脚本与数据压缩包的下载链接。

Facts Index

Entity Attribute Value Confidence
文章发布日期date2026-03-16high
DolphinDBappears_as作者/来源标注为“DolphinDB”high
隐含波动率(IV)role_in_option_pricing作为期权定价的核心参数,其短期波动为波动率套利提供交易机会。medium
回测验证importance复杂多腿组合/高频信号/动态风控策略在实盘前需要用历史高频数据进行严谨高效回测以评估有效性与可行性。medium
DolphinDBpositioning_for_backtest依托高性能计算引擎与数据处理能力,被描述为中高频策略回测的理想选择。low
期权价格影响因素factors_listed当前标的价格(S0)、执行价格(K)、期限(T)、标的未来波动率(σ)、无风险利率(r)。high
标的未来波动率(σ)observability被描述为唯一不可直接观测的变量,因此成为期权定价与交易的核心因素。medium
隐含波动率计算method通常使用 Black-Scholes-Merton(BSM)等模型,用市场期权报价反推计算隐含波动率。medium
波动率交易者delta_neutral_portfolio可通过构建 Delta 中性组合,从波动率的绝对定价错误或相对变化中获利;例如 IV 低于预期时构建正 Vega 组合,反之构建负 Vega 组合。medium
波动率状态作为择时因子applied_to_directional_strategies温和看涨且 IV 偏低时可用牛市看涨价差;温和看跌且 IV 偏高时可用熊市看跌价差,以较低成本建立方向性头寸并限制损失。medium
本文实现的策略strategy_type融合波动率择时的垂直价差策略;结合标的方向判断与当前 IV 状态构建牛市看涨价差或熊市看跌价差组合。high
中高频量化交易策略回测平台key_components行情数据按顺序回放、委托订单撮合、策略开发与回测绩效评估。high
中高频策略回测challenges_listed海量数据对查询与计算性能要求高;应尽可能模拟真实成交与冲击等因素;引擎需灵活可扩展以支持多策略与指标。high
DolphinDB 中高频回测解决方案core_components库内行情回放、模拟撮合引擎、事件型中高频回测引擎三大核心组件。high
DolphinDB 回测解决方案supported_languages支持通过 DLang、Python 或 C++ 进行中高频策略研发和测试。high
回放功能(模块)capability支持将一个或多个不同结构的分布式表数据严格按时间或指定多列排序回放到流表中。high
模拟撮合引擎插件(模块)capability支持沪深交易所 Level-2 逐笔与快照行情,遵循“价格优先、时间优先”撮合规则,提供高精度撮合并支持多种撮合模式与参数配置。high
回测插件(模块)capability支持自定义指标,支持逐笔、快照、分钟、日频回测,输出收益/持仓/交易明细;逐笔与快照支持高精度回测,实现仿真与回测一体化验证。high
三个模块化解决方案compatibility与外部解决方案兼容性良好,可与用户已有环节融合成完整回测方案。medium
本文回测数据范围data_source_and_scope使用上期所黄金期权一个交易日中日盘的全部数据,基于 DolphinDB Backtest 回测插件实现策略回测。high
回测开始日期start2025.02.17(日盘开始)high
回测结束日期end2025.02.17(日盘结束)high
回测频率frequency快照频high
初始资金initial_cash1000000high
回测标的instrument黄金期货主力合约对应的看涨期权 & 看跌期权high
牛市看涨开仓信号entry_conditionIV 偏低且标的价格上升趋势:期权 IV < 过去 30 个快照 IV 均值 - 1.0*标准差;期货最新价 MACD > 0 且上一个快照 MACD < 0。high
熊市看跌开仓信号entry_conditionIV 偏高且标的价格下降趋势:期权 IV > 过去 30 个快照 IV 均值 + 1.0*标准差;期货最新价 MACD < 0 且上一个快照 MACD > 0。high
牛市看涨价差开仓规则position_construction做多平值 + 做空虚值二档看涨期权(对市价单双开)。high
熊市看跌价差开仓规则position_construction做多平值 + 做空虚值二档看跌期权(对市价单双开)。high
平仓信号/规则exit_condition实时监控(平值–虚值)期权对价差,对期权对市价单双平;价差相对初始值变动比例上下界为[-0.03, 0.05]。high
盈亏情景分析假设underlying_price_assumption黄金期货价格假设为 675 元/g。high
情景分析期权合约(看涨价差)contracts平值看涨 AU2503-C-672;虚值二档看涨 AU2503-C-688。high
情景分析期权合约(看跌价差)contracts平值看跌 AU2503-P-672;虚值二档看跌 AU2503-P-656。high
权利金大小关系(注释)premium_relation由于平值期权权利金 > 虚值期权权利金,因此 C1>C2,C3>C4。high
牛市看涨价差组合pnl_scenarios给出了 St 大幅下跌/区间波动/大幅上涨三种情况下多平值看涨与空虚值二档看涨及1:1组合的损益方向与公式表达。high
熊市看跌价差组合pnl_scenarios给出了 St 大幅下跌/区间波动/大幅上涨三种情况下多平值看跌与空虚值二档看跌及1:1组合的损益方向与公式表达。high
价差组合的收益风险特征总结risk_reward_characteristics最大亏损锁定为期初净支出;最大盈利上限为行权价之差减去净权利金支出;以牺牲无限潜在收益换取更低盈亏平衡点与减仓成本。medium
DolphinDB Backtest 插件event_callbacks提供事件化回调函数,包括 onSnapshot、onBar、onTrade 等;本文主要使用 onSnapshot 并结合 context 状态字典开发策略。high
context 状态变量设计(本文)variables设计 lastTimeDict、longPair & shortPair、longState & shortState 三类变量用于策略实现。high
策略结构图image_urlhttps://cdn.dolphindb.cn/resources/jYuy_Z9IH-MzD9a9aEUIb/c078ad530d6bff86e0c10a235fae7c8f.pnghigh
onSnapshot 入参parametersonSnapshot 回调函数有三个入参:context(上下文状态字典)、msg(快照行情字典)、indicator(自定义指标)。high
非主力合约过滤逻辑rule从 mainContractDict[tradeDate] 取当日主力合约列表;若合约不在列表则 return。high
期权对状态变量数据结构(本文)data_structure使用嵌套字典 <String, Dict<String, List>>;List 长度为2,保存[平值期权名称, 虚值二档期权名称]。high
longPair 与 shortPair 的填充条件(示例代码)rule当 ivSignal==1 且 trendSignal==1 时填充 longPair(direction==1 的 level==0 与 level==-2);当 ivSignal==-1 且 trendSignal==-1 时填充 shortPair(direction==2 的 level==0 与 level==-2)。high
快照截面划分assumption_and_ruletradeTime 对每合约回调单调递增;若 lastTimeDict[contract]==tradeTime 则 return,否则更新 lastTimeDict 并进入截面触发的开平仓逻辑。high
平仓触发阈值(代码示例)rule计算 state=price1-price2;若 state 突破 stateList[0] 或 stateList[1] 则触发对期权对市价双平并删除价差记录。high
开仓资金约束(代码示例)rule若 Backtest::getAvailableCash(engine) <= 100000 则 return,不开仓。high
开仓去重逻辑(代码示例)rule通过 Backtest::getPosition 检查 opt1 多仓与 opt2 空仓是否已存在;若无持仓则分别下单开多/开空各1手。high
期权回测所需数据结构文档urlhttps://docs.dolphindb.cn/zh/plugins/backtest/option.htmlhigh
回测流程图image_urlhttps://cdn.dolphindb.cn/resources/jYuy_Z9IH-MzD9a9aEUIb/c3f444ce036d7c0986e8fcda8e208c26.pnghigh
Backtest::createBacktestercore_parameters核心参数包括 eventCallbacks、config、securityReference。high
回测数据文件(教程描述)provided_as清洗完成的期权行情数据 optData 与标的基础信息表 securityReference 保存为 CSV 文件并在附件中提供下载;可用 loadText 加载。medium
引擎配置参数(代码示例)dataType_and_callbackForSnapshotconfig['dataType']=1(选择快照行情);config['callbackForSnapshot']=0(仅触发 onSnapshot)。high
引擎配置参数(代码示例)maintenanceMarginconfig['maintenanceMargin']=1.0。high
引擎配置参数(代码示例)cashconfig['cash']=1000000。high
引擎配置参数(代码示例)enableAlgoOrderconfig['enableAlgoOrder']=true(开启算法订单)。high
引擎配置参数(代码示例)outputOrderInfoconfig['outputOrderInfo']=true(输出拒单原因)。high
引擎配置参数(代码示例)matchingModeconfig['matchingMode']=3。high
引擎配置参数(代码示例)latency_msconfig['latency']=50(模拟订单延时ms)。high
主力合约配置(代码示例)main_contractmainContractDict[2025.02.17]=['AU2504']。high
期权合约基本信息表图示image_urlhttps://cdn.dolphindb.cn/resources/jYuy_Z9IH-MzD9a9aEUIb/a0e664a562534e9fc9da38998bbc68b5.pnghigh
执行回测:读取行情数据(代码示例)filter_rule仅取主力合约:where symbol.startsWith('AU2504')。high
快照频期权行情结构图image_urlhttps://cdn.dolphindb.cn/resources/jYuy_Z9IH-MzD9a9aEUIb/6908e0a99f135d36c46264c57628b633.pnghigh
期权档位标识定义encoding输出 INT 类型:0 表示平值,-k 表示虚值 k 档,k 表示实值 k 档。high
开仓信号判定(文字描述)rule当 MACD 由负转正且 IV 突破 30 根快照均值 + 标准差时为牛市看涨价差开仓信号;当 MACD 由正转负且 IV 突破 30 根快照均值 - 标准差时为熊市看跌价差开仓信号。medium
MACD 计算函数(代码示例)parametersmacdFunc 默认参数:short_=24, long_=52, m=18;macd=(dif-dea)*2 并 round(macd,4)。high
趋势信号 trendFactor(代码示例)encodingtrendFactor = 1 若 macd>0 且 prev(macd)<0;-1 若 macd<0 且 prev(macd)>0;否则 0。high
IV 阈值计算(代码示例)formulasivLongLevel = mavg(IV.ffill(),30) - mstd(IV.ffill(),30);ivShortLevel = mavg(IV.ffill(),30) + mstd(IV.ffill(),30)。high
IV 信号 ivFactor(代码示例)encodingivFactor = 1.0 若 IV < ivLongLevel;-1.0 若 IV > ivShortLevel;否则 0.0。high
signal 指标向量(代码示例)compositionsignal = fixedLengthArrayVector(double(levelRank), double(ivFactor), double(trendFactor))。high
回测结束标志(代码示例)method向引擎注入一条 symbol='END' 的数据作为回测结束标志。high
回测插件接口说明链接urlhttps://docs.dolphindb.cn/zh/plugins/backtest/interface_description.htmlhigh
回测结果查询接口(代码示例)functions_listBacktest::getContextDict, getTradeDetails, getOpenOrders, getPosition, getDailyPosition, getAvailableCash, getDailyTotalPortfolios, getReturnSummary。high
成交示例(文字描述)open_trade_time_and_spread触发牛市看涨价差信号后,9:30:25 AU2504-P-672 & AU2504-P-656 成交,价差 11.58-5.68=5.9。medium
成交示例(文字描述)close_trade_time_and_spread9:51:06 该期权对价差降至 11.1-5.4=5.7,触发价差变动幅度下限并双平。medium
策略成交订单信息图image_urlhttps://cdn.dolphindb.cn/resources/jYuy_Z9IH-MzD9a9aEUIb/55426c04ee72bc5cbf43a6734e0e9643.pnghigh
Backtest 插件 JIT 优化enablement在 Backtest::createBacktester 创建引擎时将 jit 参数设为 true 可开启 JIT 优化。high
性能对比(不开启JIT)benchmark_row注入引擎数据条数 283177;成交订单数 38;回测耗时 2.39 s;处理速率 118484 条/s。high
性能对比(开启JIT)benchmark_row注入引擎数据条数 283177;成交订单数 38;回测耗时 1.51 s;处理速率 187534 条/s。high
Backtest 插件处理速率observed_result表中结果显示处理速率均 > 10w 条/s;开启 JIT 相比不开启 JIT 的性能提升 50% 以上。medium
JIT 支持条件server_version_requirementBacktest 插件仅在 3.00.2 以上版本的 DolphinDB Server 支持开启 JIT 优化。high
JIT 开启后的回调函数限制data_structure_limit开启 JIT 后在回调函数中不能使用“表”数据结构,需要转换为字典处理。high
JIT 开启后的输入数据结构possible_adjustment_needed在部分情况下需要调整输入引擎的数据结构(指向官网相关说明)。medium
测试环境(操作方式)deployment_mode安装 DolphinDB server,并配置为集群模式。high
硬件环境kernel_cpu_memory内核 3.10.0-1160.88.1.el7.x86_64;CPU Intel(R) Xeon(R) Gold 5220R @ 2.20GHz;内存 512 GB。high
软件环境os_and_dolphindb_version操作系统 CentOS Linux 7 (Core);DolphinDB server 版本 3.00.4 2025.09.09 LINUX_JIT x86_64;license 限制 16 核 128 GB。high
总结中的策略核心逻辑描述core_logic根据期货标的价格走势与期权 IV 水平,通过牛市看涨价差与熊市看跌价差以较低成本建立方向性头寸,并实时监控期权对价差变动用于止盈止损平仓。medium
Backtest 插件能力(总结)stated_strengths该场景体现 Backtest 回测插件优异性能、丰富策略触发机制与全面回测评价结果,可为 FICC 领域中高频策略回测提供借鉴。low
FAQ:Csmar 数据源匹配what_is_provided提供将 Csmar 数据转换为 DolphinDB Backtest 所需数据格式的转换代码并封装为函数。high
FAQ 代码:目标数据库与表db_and_table_namesdbName='dfs://OptBackTest';tbName='csmar'。high
FAQ 示例日期区间start_endstartDate=2025.02.17;endDate=2025.02.17。high
FAQ:换月逻辑(金融期权)handling_guidance在 context 添加内存表记录品种-合约-剩余到期日,按剩余到期日确定主力;换月交易日需将被换月合约行情一同取出注入引擎以便执行换月平仓逻辑,其余时间仅注入主力合约行情。high
FAQ:换月逻辑(商品期权)handling_guidance可基于期货快照行情计算合约K线与主连行情确定每日主力,或使用已有主力合约表;取数逻辑同金融期权。high
附录:回测脚本download_urlhttps://docs.dolphindb.cn/zh/tutorials/script/backtest_volatility_timing_vertical_spread/%E5%9B%9E%E6%B5%8B%E8%84%9A%E6%9C%AC.doshigh
附录:所有数据download_urlhttps://docs.dolphindb.cn/zh/tutorials/data/backtest_volatility_timing_vertical_spread/data.ziphigh
技能认证特训营第二期限时报名urlhttps://www.qingsuyun.com/h5/e/217471/5/high

Referenced visual assets (URLs)