第十五章:曲面回测框架:历史数据回测、策略绩效评估、参数敏感性分析

做期权做市这么多年,我踩过最大的坑是什么?

不是模型不够复杂,而是回测框架没搭好。你想想看,一个策略在历史数据上跑得漂漂亮亮,一上实盘就崩,这种经历我至少经历过三次。后来我明白了——回测框架不是简单的“跑一遍历史”,它是一套完整的验证体系。

15.1 回测框架的核心架构

我个人习惯把回测框架拆成三个模块:数据层、策略层、评估层。说白了,就是“喂什么数据”、“怎么交易”、“结果如何”。

先看数据层。曲面回测需要的数据比普通回测多得多。除了行情数据,你还需要隐含波动率曲面、期限结构、偏斜度这些。我建议至少准备以下字段:

数据类别 具体字段 频率要求
行情数据 标的物价格、成交量、持仓量 分钟级
期权数据 各合约的买一卖一价、隐含波动率 秒级(做市需要)
曲面数据 波动率曲面网格、期限结构 分钟级重建
市场微观结构 买卖价差、订单簿深度 事件驱动

嗯,这里要注意:很多新手只拿日线数据回测,结果做市策略的回测曲线漂亮得不像话。为什么?因为做市赚的是买卖价差和波动率预测的钱,日线数据根本捕捉不到这些信号。

关键点:曲面回测必须使用 tick 级或至少秒级数据。我曾在项目中用分钟级数据回测,结果实盘第一天就亏了2个点——因为高频的价差变化被平滑掉了。

15.2 策略绩效评估:别只看夏普比率

评估做市策略,我一般看五个维度。你光看夏普比率,很容易被误导。

  1. 收益指标:年化收益率、最大回撤、收益回撤比
  2. 风险指标:VaR(95%/99%)、CVaR、尾部风险暴露
  3. 做市专属指标:买卖价差捕获率、库存周转率、Gamma盈亏比
  4. 稳定性指标:月度胜率、连续亏损天数、策略容量
  5. 市场环境适应性:不同波动率环境下的表现

我曾经见过一个策略,夏普比率高达3.5,但最大回撤只有2%。听起来完美对吧?结果一查,它在低波动率市场里表现极好,但一旦波动率飙升,回撤直接到15%。这就是典型的“过拟合”。

我的习惯:每次回测完,我会把策略在不同波动率分位数下的表现单独列出来。如果某个分位数下表现异常好,我就要怀疑是不是数据泄露了。

15.3 参数敏感性分析:找到你的“甜蜜点”

做市策略的参数通常很多:报价宽度、库存上限、对冲频率、波动率预测窗口等等。参数敏感性分析,说白了就是看看这些参数变了,策略表现会不会崩。

我常用的方法有三种:

  • 单参数扫描:固定其他参数,改变一个参数,看绩效变化曲线
  • 网格搜索:对2-3个关键参数做网格扫描,找最优组合
  • 随机扰动测试:给参数加随机噪声,看策略的鲁棒性

举个例子,报价宽度这个参数。太窄了,成交多但赚不到价差;太宽了,价差大但成交少。我习惯的做法是:先做一次单参数扫描,找到绩效曲线的“平台区”——就是参数在一定范围内变化,绩效波动不大的区域。这个区域就是你的“甜蜜点”。

避坑指南:我曾经在网格搜索中找到一组“最优参数”,回测绩效比默认参数高出30%。结果实盘一周就亏回去了。为什么?因为那组参数恰好拟合了历史数据中的某个特殊模式。后来我学乖了:参数敏感性分析一定要做“样本外测试”。

15.4 回测框架的SVG结构图

下面这张图是我自己设计的回测框架结构。你可以看到,数据层、策略层、评估层是串行的,但参数敏感性分析会反馈回策略层,形成一个闭环。

曲面回测框架结构图 数据层 行情数据 曲面数据 微观结构数据 策略层 报价策略 对冲策略 库存管理 评估层 收益风险指标 做市专属指标 稳定性分析 参数敏感性分析反馈 参数敏感性分析 单参数扫描 | 网格搜索 | 随机扰动测试 找到参数“甜蜜点” 样本外测试验证 避免过拟合,确保策略鲁棒性

15.5 实战中的回测陷阱

最后聊几个我踩过的坑,希望能帮你省点学费。

陷阱一:前视偏差。 回测时用了未来的数据。比如用当天的收盘价来生成当天的交易信号。我见过最离谱的案例:有人用未来5天的波动率均值来做参数优化,回测绩效好得吓人。

陷阱二:忽略交易成本。 做市策略的交易频率很高,手续费和滑点的影响巨大。我建议至少按双边万三来估算成本,如果做的是深度虚值合约,成本还要更高。

陷阱三:幸存者偏差。 只回测了存续期较长的合约,忽略了那些提前退市的合约。这会导致回测结果偏乐观。

我的建议:每次回测完,先做一次“反向测试”——把策略逻辑反过来跑一遍。如果反向策略也能赚钱,那你的策略大概率有问题。这招帮我排除了至少三个看似完美的策略。

好了,关于曲面回测框架就聊这么多。记住:回测不是为了证明策略有多好,而是为了发现策略在什么情况下会死。找到那个边界,你才算真正理解了你的策略。


公众号:蓝海数据掘金营,微信deep3321