第十五章:曲面回测框架:历史数据回测、策略绩效评估、参数敏感性分析
做期权做市这么多年,我踩过最大的坑是什么?
不是模型不够复杂,而是回测框架没搭好。你想想看,一个策略在历史数据上跑得漂漂亮亮,一上实盘就崩,这种经历我至少经历过三次。后来我明白了——回测框架不是简单的“跑一遍历史”,它是一套完整的验证体系。
15.1 回测框架的核心架构
我个人习惯把回测框架拆成三个模块:数据层、策略层、评估层。说白了,就是“喂什么数据”、“怎么交易”、“结果如何”。
先看数据层。曲面回测需要的数据比普通回测多得多。除了行情数据,你还需要隐含波动率曲面、期限结构、偏斜度这些。我建议至少准备以下字段:
| 数据类别 | 具体字段 | 频率要求 |
|---|---|---|
| 行情数据 | 标的物价格、成交量、持仓量 | 分钟级 |
| 期权数据 | 各合约的买一卖一价、隐含波动率 | 秒级(做市需要) |
| 曲面数据 | 波动率曲面网格、期限结构 | 分钟级重建 |
| 市场微观结构 | 买卖价差、订单簿深度 | 事件驱动 |
嗯,这里要注意:很多新手只拿日线数据回测,结果做市策略的回测曲线漂亮得不像话。为什么?因为做市赚的是买卖价差和波动率预测的钱,日线数据根本捕捉不到这些信号。
关键点:曲面回测必须使用 tick 级或至少秒级数据。我曾在项目中用分钟级数据回测,结果实盘第一天就亏了2个点——因为高频的价差变化被平滑掉了。
15.2 策略绩效评估:别只看夏普比率
评估做市策略,我一般看五个维度。你光看夏普比率,很容易被误导。
- 收益指标:年化收益率、最大回撤、收益回撤比
- 风险指标:VaR(95%/99%)、CVaR、尾部风险暴露
- 做市专属指标:买卖价差捕获率、库存周转率、Gamma盈亏比
- 稳定性指标:月度胜率、连续亏损天数、策略容量
- 市场环境适应性:不同波动率环境下的表现
我曾经见过一个策略,夏普比率高达3.5,但最大回撤只有2%。听起来完美对吧?结果一查,它在低波动率市场里表现极好,但一旦波动率飙升,回撤直接到15%。这就是典型的“过拟合”。
我的习惯:每次回测完,我会把策略在不同波动率分位数下的表现单独列出来。如果某个分位数下表现异常好,我就要怀疑是不是数据泄露了。
15.3 参数敏感性分析:找到你的“甜蜜点”
做市策略的参数通常很多:报价宽度、库存上限、对冲频率、波动率预测窗口等等。参数敏感性分析,说白了就是看看这些参数变了,策略表现会不会崩。
我常用的方法有三种:
- 单参数扫描:固定其他参数,改变一个参数,看绩效变化曲线
- 网格搜索:对2-3个关键参数做网格扫描,找最优组合
- 随机扰动测试:给参数加随机噪声,看策略的鲁棒性
举个例子,报价宽度这个参数。太窄了,成交多但赚不到价差;太宽了,价差大但成交少。我习惯的做法是:先做一次单参数扫描,找到绩效曲线的“平台区”——就是参数在一定范围内变化,绩效波动不大的区域。这个区域就是你的“甜蜜点”。
避坑指南:我曾经在网格搜索中找到一组“最优参数”,回测绩效比默认参数高出30%。结果实盘一周就亏回去了。为什么?因为那组参数恰好拟合了历史数据中的某个特殊模式。后来我学乖了:参数敏感性分析一定要做“样本外测试”。
15.4 回测框架的SVG结构图
下面这张图是我自己设计的回测框架结构。你可以看到,数据层、策略层、评估层是串行的,但参数敏感性分析会反馈回策略层,形成一个闭环。
15.5 实战中的回测陷阱
最后聊几个我踩过的坑,希望能帮你省点学费。
陷阱一:前视偏差。 回测时用了未来的数据。比如用当天的收盘价来生成当天的交易信号。我见过最离谱的案例:有人用未来5天的波动率均值来做参数优化,回测绩效好得吓人。
陷阱二:忽略交易成本。 做市策略的交易频率很高,手续费和滑点的影响巨大。我建议至少按双边万三来估算成本,如果做的是深度虚值合约,成本还要更高。
陷阱三:幸存者偏差。 只回测了存续期较长的合约,忽略了那些提前退市的合约。这会导致回测结果偏乐观。
我的建议:每次回测完,先做一次“反向测试”——把策略逻辑反过来跑一遍。如果反向策略也能赚钱,那你的策略大概率有问题。这招帮我排除了至少三个看似完美的策略。
好了,关于曲面回测框架就聊这么多。记住:回测不是为了证明策略有多好,而是为了发现策略在什么情况下会死。找到那个边界,你才算真正理解了你的策略。
公众号:蓝海数据掘金营,微信deep3321