回测过拟合概率(PBO)
回测过拟合概率(probability of backtest overfitting,PBO)估计的是:在样本内表现最好的那组配置,有多大比例的情况下会在样本外掉到所有配置的中位数以下。它的算法是把一张参数网格在全时期上的结果,拆成许多种训练 / 测试组合。
Senzoukria · 术语表 · 更新于 2026 年 9 月
PBO 是怎么估出来的
先做一个矩阵:每一行是一个时间切片,每一列是一组配置,每个格子装着该配置在该切片上的结果。把这些切片分成偶数个组。对于「取其中一半的组作训练」的每一种取法,在训练那一半上给所有配置排名,留下最好的那一组,再去看它在剩下那一半上的排名。
如果样本内的冠军在样本外排到了中位数以下,这一种组合就记为一次过拟合。PBO 就是发生这种情况的组合所占的比例。这套方法叫做组合对称交叉验证(combinatorially symmetric cross-validation),由 Bailey、Borwein、López de Prado 和 Zhu 发表。
- PBO 接近零,意味着样本内的冠军在样本外通常仍然待在中位数之上。
- PBO 接近二分之一,意味着挑出最好的那组配置,并不比随手挑一组更强。
- 超过二分之一,样本内的冠军在样本外往往是输家,这指向一个奖励噪声的挑选流程。
PBO 没有说的东西
PBO 讲的是「在这张网格、这段时期上,这套挑选流程可靠不可靠」。它并不度量优势的大小;在一张全是亏损配置的网格上,一个很低的 PBO 只说明「最不烂的那个依然最不烂」。它同时继承了底层回测的每一条假设:成交政策、成本、覆盖缺口以及 K 线构建方式。
在 Senzoukria 里
桌面端的回测面板会在前推分析之后再跑一张全时期网格,说明文字写着:全时期网格——N 组配置在全部 K 线上重跑,用于生成 PBO 矩阵。随后的闯关清单会把「回测过拟合概率」列为一条标准,并把 PBO 数值和 PSR、DSR、p 值并排显示。面板对这个区块的介绍是:挑出样本内最优配置会在样本外造成损害的概率。
由于 PBO 需要整张网格在整段时期上的结果,它只有在做过扫描之后才可用。单独一组配置既生不成矩阵,也算不出 PBO。
常见错误
- 把规模不同的网格算出来的 PBO 值当成同一把尺子来比较。
- 把 PBO 当成一个可以单独下结论的判决。它对回撤、成本和账户规则一言不发。
- 为了得到一个低 PBO,把网格缩到只剩几组配置。这样估计变粗,选择偏差只是被藏到了别处。
- 忽略了切片在时间上是连续的:一种只出现在某一个切片里的市场状态,可能主导整个排名。
相关内容
其他语言版本
常见问题
- PBO 到多少才算可以接受?
- 没有通用的临界值。这个数值是「样本内冠军在样本外低于中位数」的概率,所以任何接近二分之一的取值,都意味着挑选没有带来任何增量。请把它和前推效率、紧缩夏普比率放在一起读,并且别忘了网格规模——粗网格只能给出粗估计。
- PBO 和前推测试有什么不同?
- 前推分析是按时间向前推进,报告冻结参数在后续窗口上的成绩。PBO 则是把整张网格拿到每一种切片组合上反复使用,两个方向都用,以衡量选择规则挑中一个在样本外失效的配置的频率。前推分析度量的是表现,PBO 度量的是挑选的可靠性。