- 一条看似合理的“砍掉老仓位”规则,回测似乎已经证明有效。经过八项独立检验,它最终以“持续监控下的建议”落地——而不是直接写进代码。
- 策略的大部分利润其实集中在少数几个极端月份;这条规则必须在每一种行情态里分别自证。
- 唯一无法用统计量验证的假设——成交质量——改用真实成交记录实测,而不是想当然。
一家运行自动化策略的做市团队有个简单的观察:持仓超过几小时的头寸,多数时候正是亏钱的那批。提出的修复方案同样简单——加一条规则,持仓一旦超过该时限就强制平仓。一次快速回测似乎证实了这一点。顺理成章的下一步,就是上线。
那天它没有上线。从“回测说可以”到“我们改了生产代码”之间,一次独立评审究竟长什么样——数字为示意,方法是真的。
为什么这很重要:几乎每一个策略供应商、每一位内部量化研究员、每一份回测,都有动机——无论自觉与否——去找出那个能支持他们本来就想做的改动的结果。独立评审方对结论没有任何利益。这就是全部价值所在。
1先审问结论,再碰数据
那个标题统计量,是一条披着“新发现”外衣的同义反复。
展开推演过程
起始统计量——“持仓超过某个阈值的头寸多数亏损”——听上去像个发现,实则更接近同义反复。快速了结的头寸,从定义上讲就是价格迅速配合的那批;留在“持仓更久”这个桶里的,本身就是被自我筛选出来的硬骨头。在跑任何一行代码之前,评审就指出这一个数字里藏着两类各自独立的风险:
- 选择偏差(selection bias)——“第X小时仍未平仓”不是随机样本,它已经按难度过滤过一遍。
- 胜率≠期望值——一条规则可以按笔数看是对的、按美元算却是错的:如果它避免亏掉的都是小钱,而留下的亏损都是大钱。
2好好量一次——用美元算账,别看胜率
换成按美元而非胜率来衡量,这条规则站住了——而胜率指的方向恰恰相反。
展开推演过程
正解不是选择相信或不相信原始结论,而是把数字真正跑一遍:以已实现盈亏为准,而不是数胜负笔数;并且扫过所有可能的截止时间,而不是某人恰好提出的那一个阈值。
在数年的tick级行情数据上,比现行规则更早地砍仓,确实带来了真实、正向的风险调整后收益改善——而且很能说明问题的是,新规则下的胜率反而下降了。这正是有用的信号:策略放弃了一些本来很容易避免的小额亏损,换来的是躲开数量少得多、但金额大得多的巨亏。单看胜率,会把这一点完全掩盖。
3先审计数据,再相信数字
第一轮结果所依赖的数据集里,藏着一段16个月的静默缺口。
展开推演过程
结果干净到这个程度,配得上的是怀疑,不是庆祝。核查底层数据集时发现,历史价格档案里有一段16个月的缺口——这段数据从生成第一轮结果所用的缓存中悄无声息地丢失了。补齐之后,缺口没有改变结论的方向,但显著改变了它的量级——而这恰恰是那种在客户或投资委员会面前,能把一个站得住的数字变成站不住的数字的问题。
4弄清钱到底是从哪儿赚来的
大部分利润集中在少数极端月份——而这条规则在每个行情态里依然分别成立。
展开推演过程
全周期数字仍然不对劲——它隐含的年化收益远高于策略实盘的真实水平。按行情态拆解(regime decomposition)——平静的低波动时段 vs 罕见的大幅价格错位事件——立刻解释了差距:策略总利润的绝大部分来自极少数几个极端月份,而不是日常运行。回测的标题数字是真的——但对策略绝大多数时间所处的平静市况而言,几乎完全不相关。
这迫使真正的问题被重新提出:这条规则在平静的日常状态下——也就是策略在任何一个普通交易日所处的状态——是否仍然有帮助?还是说它只是碰巧在罕见的剧烈事件中也有效,才显得好看?按行情态分别重跑对比之后确认:优势在两种状态下各自独立成立——这比总量数字有力得多,因为它扛过了专门设计来拆穿它的分解检验。
5留出一段规则从未见过的数据
优势在它从未被允许看到的数据上依然成立。
展开推演过程
在同一份数据上被发现、又在同一份数据上被验证的规则,不叫验证——叫拟合。最后一步把历史切成训练期和一段留出的测试期,在挑选规则的整个过程中,分析绝不允许接触后者。基于训练数据选出的规则,随后原封不动地应用于这段从未动过的时期。本案例中,改进在从未见过的数据上依然成立——这才是“这是真实优势”的达标线,而不是“这份回测很好看”。
6把它形式化:胜出的选择是真本事,还是只熬过了一次幸运切分?
数百次重采样之后,训练期选出的赢家在盲测中依然一直赢。
展开推演过程
一次训练/测试切分只是一个数据点。它回答的是“这个结果活过了一次”,回答不了“它能活多少次”。为此,评审引入了回测过拟合概率(PBO, Probability of Backtest Overfitting),通过组合对称交叉验证(CSCV)实施——这是Bailey、Borwein、López de Prado与Zhu专门为量化(而非目测)这一风险而形式化的方法。
将历史划分为若干等长区块,并枚举把这些区块分成训练一半与留出一半的所有可能组合——数百次互不相同的重采样,而不是一次。每一次重采样中,在训练半区表现最好的变体,都要对照它在从未训练过的另一半上的真实排名。PBO就是这样一个比例:在多少次重采样里,训练期选出的“赢家”在盲测中沦为低于平均水平的表现者——也就是“挑最好看的回测”等价于“随机乱挑”的频率。
在全部重采样切分中,训练期选出的方案在它从未见过的数据上同样位居最强之列——而且值得注意的是,无论给训练过程看哪一段历史,它都收敛到几乎同一个答案。一个换个训练年份就换答案的选择过程,是警报;一个在数百种不同重采样下反复落到同一个答案上的过程,恰恰相反。
有一条诚实的但书应当放在结果旁边,而不是埋进脚注:CSCV刻意忽略时间先后——某次重采样可以用较晚的历史训练、较早的历史测试,这是任何实盘部署都不可能做到的事。它回答的是“这是不是一个稳定的、与样本无关的规律”,而不是“这在事前是否可知”。正因如此,它是对第5步那种严格只向前的留出检验的补充,而非替代——一个查稳健性,一个查因果性;一项建议应当两关都过,而不是过其一即可。
7抓住那次险些误判:两份研究根本没在测同一件事
两份研究“互相矛盾”,是因为它们从来就没在测量同一件事。
展开推演过程
评审进行到一半,翻出了一份结论恰好相反的更早内部研究——同类规则几个月前测过,被判定为统计噪声。评审没有把它当成需要圆过去的矛盾,而是直接对比两边的方法论:底层标的不同、策略参数不同、日期区间不同、假定的资金成本也不同。这两份研究不是在互相矛盾——它们根本没在测量同一件事。这个区分比任何单一结果都重要:两份看起来都很专业的回测可以都是对的,却完全不可比;把它们当作同一问题的两个竞争性答案,本身就是一种悄无声息的坏决策来源。
8别再假设成交——去实测它
真实成交之后,价格持续朝仓位不利的方向漂移——而利润恰恰就藏在那里。
展开推演过程
本次评审中的每一份回测都共享一个很方便的假设:只要行情价触及挂单价位,就视为按该价位成交。这几乎永远是任何仿真里最乐观的部分——真实订单簿恰恰在最要命的时刻变薄,“价格碰到了我的价位”和“我的全部数量真的在那里成交了”完全是两回事。评审没有去争论这个缺口可能有多大,而是直接去找了能实测它的办法。
账户自身的成交历史里,恰好包含一次真实发生过的波动率错位——真实成交(fill),不是仿真。针对其中每一笔成交,评审逐tick测量了成交后的几分钟内,价格继续朝仓位不利方向又走了多远——这正是天真回测永远看不到的部分,因为成交一旦入账,它就不再关心之后发生的事。
在平静的低波动常态下,成交之后基本没有持续的不利变动——回测的“干净成交”假设在那里不花一分钱,这也与平静期回测收益紧贴实盘的表现相吻合。而恰恰在错位窗口内,真实成交之后价格持续显著地朝不利方向漂移,最差情形呈厚尾分布——证实了这个乐观假设真实存在,而且恰好集中在第4步显示的几乎全部利润所在之处。耐人寻味的是,这次逐笔实测得出的最差值,与团队几个月前通过另一条独立路径——杠杆压力测试——推出的风险估计相当接近:两种互不相关的方法,各自独立地收敛到同一个数字。
这正是PBO给不了的东西。第6步检验的是结果在重采样之下是否稳定——它对仿真的核心假设是否诚实只字未提。一份回测可以通过所有过拟合检验,却仍在恰恰产生其大部分利润的那种市况下悄悄保持乐观。只有回到真实成交才能回答这个问题,这也是本次评审中唯一没有公式可以代劳的一项检验。
没有发生的事:生产代码一行未改。评审的产出是一份经过验证的建议、一条留痕完整的审计链,以及——针对那条无法用手头历史数据验证的假设——一套持续实测的实盘监控方案。而不是第一天就盖章放行的绿灯。
可复用的检查清单
这才是真正的交付物——而不是上面那些具体数字,那些数字每个模型都不一样。任何由回测驱动的决策,在资金动用之前都应过一遍:
- 标题统计量里是否藏着选择偏差的痕迹——那个“有意思”的子集,是不是已经按你将要测量的结果预先过滤过了?
- 结果是按胜率(笔数)还是按期望值(美元)评判的?两者可能指向完全相反的方向。
- 底层数据集是否审计过缺口、幸存者偏差或静默重采样?
- 总量结果是被少数几个极端时段拉出来的,还是在各个行情态下分别独立成立?
- 规则是否在挑选过程中从未接触过的数据上完成验证——真正的样本外测试,而不是在同一窗口上再跑一遍?
- 胜出的选择在多种不同的历史重采样下是否依然站得住(如PBO/CSCV等正式的过拟合检验),还是只依赖恰好被测到的那一种切分?
- 凡是有真实成交历史的地方,是否用它实测过成交后的真实滑点——而不是一句假设带过——尤其是在策略利润最依赖的高波动时段?过拟合检验替代不了这一步;它们跑在同一份可能偏乐观的仿真上,而不是对照现实。
- 被拿来比较的两份回测,测的到底是不是同一个标的、同一组参数、同一个时间区间——还是只是两个表面相似的问题?
- 回测对执行和成交做了什么假设?相对实盘订单簿的真实状况,这个假设乐观到什么程度?
这套方法的位置
这与MOA在独立验证与确认(Independent Verification & Validation)服务下审查企业级供应商方案与架构决策所用的,是同一套纪律——延伸到量化与算法交易模型。我们审查方法论与证据;我们不销售、不管理被评审的策略,也不提供个性化投资建议。价值与我们所有其他业务一致:没有分销佣金,对答案没有立场,没有任何动机说你想听的话。