PBO:量化"回测过拟合概率"的测谎仪
先掌握这个答案
PBO定义:在你的N个候选策略里,"样本内最优者"在样本外落入后50%的概率——即挑出来的冠军其实是庸才的概率。算法(CSCV简化版):①把回测期收益切成偶数块(如16块);②对称组合:每次取一半块当训练、互补一半当测试,枚举所有对称组合;③每次组合里找训练期最优策略,记录它在测试期的排名分位;④PBO=测试排名落后(<中位)的次数占比。读数:PBO<20%流程健康;30-50%可疑;>50%你的"选最优"流程比抛硬币还差——样本内冠军系统性地是样本外垃圾。
先读结论,再核对下方使用边界;数字例题为教学情景,涉及实际行情与规则时请核对原始来源。
从理解到使用
先确认分母口径
静态PE、TTM PE、动态PE不可混用。“动态市盈率”字段不能直接重命名TTM。利润为负或接近零时PE解释力很弱;PE倍数也不是投资者收回本金的承诺年数。
核对来源:AKShare字段说明 ↗每一笔收益都要有可执行时间线
打印数据截止时间、信号时间、订单时间、成交时间和持仓收益区间。收盘信号不能乘当天完整收益;次日开盘成交也不能无条件拿到整个close-to-close收益。用原始价格判断可成交性,并纳入停牌与涨跌停。
本阶段实战方法 · 回测先过时序、成交与成本三道关
把信号变成策略收益时,每笔收益必须能追溯到当时能下出的订单。
- 画出时间线:数据可得→算信号→下单→成交→持仓收益;收盘信号不能倒用当天完整收益。
- 明确交易价格、T+1可卖数量、停牌涨跌停、仓位上限和实际成交量约束。
- 同时报告毛/净收益、换手、最大回撤、基准和样本外结果;对滑点与费率做压力测试。
使用边界
- 简单shift(1)只解决部分时序问题;次日开盘成交还要区分隔夜和日内收益。
- 成本应按成交金额与买卖方向计提;0.15%是教学情景,不是统一市场费率。
- PBO高=这些策略都差:不——它说"你的挑选流程不可靠";可能策略集里真有好的,但你的样本内排序找不到它
- PBO低就能放心上实盘:它只管过拟合维度;成本、容量、执行仍需各自把关——指标各管一段
- CSCV很难就不做:核心四步百行代码;"懒得算"的代价是把整个研究流程建立在未经验证的挑选器上
🛠 本题实践任务
对你最近一轮参数寻优(或因子批量检验)的收益矩阵跑PBO(简化版16块CSCV)。报告PBO并回答:你的流程健康吗?如果不健康,砍候选的第一刀该砍哪里?
💡 提示(先自己想5分钟再看)
收益矩阵=策略×日期的日收益表;没有保存全部候选的收益是常见障碍——从今天起把它们都存下来(这也是实验日志的一部分)。
在你的浏览器内运行。首次需联网下载 Python;支持标准库和 Pyodide 提供的 NumPy、pandas 等包。行情抓取、系统文件访问和部分第三方库请在本地环境运行。输出自检仅比对结果关键词,不代替逻辑审查。
🤖 AI导师
导师会先检查你的前置知识(Deflated Sharpe、样本内外切分),再用案例、公式和代码帮助理解。此功能需要先启用服务。