互联网行业的 A/B 测试是黄金标准:把用户随机分成两组,同时跑新旧版本,比较转化率。量化研究者的处境要尴尬得多——市场不允许我们平行实验:2024 年 5 月只有一个,策略新版本跑在 5 月、旧版本也跑在 5 月,得到的却是同一段行情。本篇讨论在「样本不可复制、环境不可控制」的约束下,如何科学地评估一次策略改动。
为什么教科书 A/B 在金融里失灵
三个结构性差异:
- 没有平行宇宙。无法同时观察「有这个因子」和「没有这个因子」的两种市场——因果推断最干净的工具直接缺席;
- 环境漂移比用户行为快。A/B 假设两组环境一致,而市场 regime 数周就切换:新旧版本先后各跑三个月,绩效差异可能 80% 来自行情差异而非改动本身;
- 一次实现,样本极小。日频策略一年只有 252 个观测,且彼此不独立(波动聚集、自相关),有效样本量远小于名义值。
所以量化的「实验」必须绕道:用历史数据构造反事实,用统计检验处理单路径问题。
改动评估的正确流程
第一步:明确假设与「最不许动的部分」
改动前写下:改什么(如「止损从 5% 收紧到 3%」)、预期机制(「截断左尾,代价是被洗出频率上升」)、主要评价指标(夏普?MDD?换手?)、以及不许动的控制变量(回测区间、成本模型、其余参数冻结)。没有预先注册的假设,事后解释自由度无限大——这是 p-hacking 的温床(见避免 p-hacking )。
第二步:历史配对比较,而非「重跑一次回测」
新旧版本在同一段历史上运行,逐日(或逐笔)配对收益差 Δrₜ = rₜ(新) − rₜ(旧)。检验 H₀: mean(Δr) = 0 用配对 t 检验,并用 Newey-West 修正自相关下的标准误——因为 Δrₜ 几乎必然自相关。同时报告 Δr 的分布而非只有均值:收紧止损这类改动常常「大多数日子略差 + 少数灾难日大幅更好」,只看均值会误杀。
第三步:置换检验,绕开正态假设
Δr 的分布歪斜且有厚尾,t 检验的前提可疑时用置换检验:随机翻转 10000 次 Δrₜ 的正负号,构造「改动纯随机」下的均值分布,看真实均值落在分布的哪个分位。落在 95% 分位之外,才承认改动有真实效果。它对小样本、厚尾都稳健,是量化改动评估的默认推荐。
第四步:多维评价与稳健性
改动几乎总在「用一类风险换另一类」,评估矩阵至少包含:夏普、最大回撤、回撤持续时间、换手与成本、容量影响、分年度稳定性(是不是只有 2015 年牛市里更好)、以及参数邻域敏感性。任何单一指标的显著改善都不构成上线理由。
模拟盘与实盘的「准实验」
历史检验通过后,进入前向验证——这是量化里最接近真 A/B 的部分:
- 模拟盘并行期:新版本在模拟环境跑实盘信号(不真实成交),与在跑版本同环境对照 4–8 周。虽然环境仍相同、无平行分组,但前向数据没有经过你的研究过程,能杀掉大部分历史过拟合(见仿真盘 );
- 资金灰度:用 10% 资金跑新版本,观察「实盘 vs 模拟」与「实盘 vs 旧版本」两条差异序列,达标后逐步放量(10% → 30% → 100%)。灰度期同时是执行成本的实测(见灰度与放量 );
- 执行算法的 A/B:同一调仓日的订单流一半走 VWAP、一半走 TWAP,比较实现差额(implementation shortfall)——这是量化里少数能真·随机分组的场景(见执行算法 )。
常见的伪实验设计
| 伪实验 | 问题 | 正确做法 |
|---|---|---|
| 新版本只回测近 3 年,旧版本历史全期 | 区间不一致,差异混入行情效应 | 同区间配对比较 |
| 改 5 个参数后绩效提升 | 无法归因给谁 | 单变量改动,或做正交设计 |
| 挑「表现最好」的 6 个月展示 | 选择性汇报 | 全区间 + 分年度 |
| 模拟盘跑 5 天就下结论 | 噪声主导(t ≈ 0.3) | 预先注册的最小样本量(如 20 个交易日) |
| 「这次改动很小,直接上实盘」 | 小改动也有不可预期交互 | 一切改动走同一流程 |
关联阅读:统计推断 提供本篇用到的全部检验工具;蒙特卡洛 的置换与 bootstrap 是反事实构造的机器;策略上线流程 把实验结论变成生产变更。