阶段6回测基础●●●●●

PBO:量化"回测过拟合概率"的测谎仪

我的掌握程度:
q-511精讲

先掌握这个答案

PBO定义:在你的N个候选策略里,"样本内最优者"在样本外落入后50%的概率——即挑出来的冠军其实是庸才的概率。算法(CSCV简化版):①把回测期收益切成偶数块(如16块);②对称组合:每次取一半块当训练、互补一半当测试,枚举所有对称组合;③每次组合里找训练期最优策略,记录它在测试期的排名分位;④PBO=测试排名落后(<中位)的次数占比。读数:PBO<20%流程健康;30-50%可疑;>50%你的"选最优"流程比抛硬币还差——样本内冠军系统性地是样本外垃圾。

先读结论,再核对下方使用边界;数字例题为教学情景,涉及实际行情与规则时请核对原始来源。

从理解到使用

先确认分母口径

静态PE、TTM PE、动态PE不可混用。“动态市盈率”字段不能直接重命名TTM。利润为负或接近零时PE解释力很弱;PE倍数也不是投资者收回本金的承诺年数。

核对来源:AKShare字段说明 ↗

每一笔收益都要有可执行时间线

打印数据截止时间、信号时间、订单时间、成交时间和持仓收益区间。收盘信号不能乘当天完整收益;次日开盘成交也不能无条件拿到整个close-to-close收益。用原始价格判断可成交性,并纳入停牌与涨跌停。

本阶段实战方法 · 回测先过时序、成交与成本三道关

把信号变成策略收益时,每笔收益必须能追溯到当时能下出的订单。

  1. 画出时间线:数据可得→算信号→下单→成交→持仓收益;收盘信号不能倒用当天完整收益。
  2. 明确交易价格、T+1可卖数量、停牌涨跌停、仓位上限和实际成交量约束。
  3. 同时报告毛/净收益、换手、最大回撤、基准和样本外结果;对滑点与费率做压力测试。

使用边界

  • 简单shift(1)只解决部分时序问题;次日开盘成交还要区分隔夜和日内收益。
  • 成本应按成交金额与买卖方向计提;0.15%是教学情景,不是统一市场费率。
背景 · 从一个困惑说起
DSR回答"这个夏普要不要打折";PBO(Probability of Backtest Overfitting)回答更狠的问题:"我这套试错流程本身有多大概率是过拟合机器?"它评估的不是单个策略,是你的研究方法。
由此产生的问题
PBO的定义与算法(CSCV组合对称交叉验证)?怎么读数(>50%意味着什么)?它与DSR的分工?
核心概念
PBO定义:在你的N个候选策略里,"样本内最优者"在样本外落入后50%的概率——即挑出来的冠军其实是庸才的概率。算法(CSCV简化版):①把回测期收益切成偶数块(如16块);②对称组合:每次取一半块当训练、互补一半当测试,枚举所有对称组合;③每次组合里找训练期最优策略,记录它在测试期的排名分位;④PBO=测试排名落后(<中位)的次数占比。读数:PBO<20%流程健康;30-50%可疑;>50%你的"选最优"流程比抛硬币还差——样本内冠军系统性地是样本外垃圾。
为什么需要它
①评估方法而非结果:DSR打折单个数字、PBO审判整个流程——研究体系级的风控;②「选择偏差」的定量命名:为什么样本内第一名常是样本外倒数?因为第一名的"第一名"里含着最多的运气成分(赢家诅咒的统计版);③实施成本低:几百个策略收益矩阵×一次CSCV循环=几秒计算——没有理由不做。
实际应用场景
场景:参数寻优的100组参数、BRAIN上的一批Alpha、因子库的年度评审——都是"N选1"流程,全适用PBO;python库:mlfinlab有现成实现,或按上述四步手写。
与之前知识的联系
q-510的DSR是兄弟工具(数字层/流程层);q-507的四防御里PBO是"流程级样本外"的定量实现;阶段8的模型选择(CV比较多个模型)同样该报PBO。
⚠ 常见误解
  • PBO高=这些策略都差:不——它说"你的挑选流程不可靠";可能策略集里真有好的,但你的样本内排序找不到它
  • PBO低就能放心上实盘:它只管过拟合维度;成本、容量、执行仍需各自把关——指标各管一段
  • CSCV很难就不做:核心四步百行代码;"懒得算"的代价是把整个研究流程建立在未经验证的挑选器上

🤖 AI导师

导师会先检查你的前置知识(Deflated Sharpe、样本内外切分),再用案例、公式和代码帮助理解。此功能需要先启用服务。