1. 历史快照 Point-in-Time Snapshots
把每个历史时间点“当时可见”的财务、行情、AI/量化分数保存下来,避免用未来数据解释过去。
怎么建
- 每月或每季度生成一次 stock_score_snapshots。
- 只允许使用 publish_date <= snapshot_date 的财报。
- 价格、估值、市值只能取 snapshot_date 当天或之前最近交易日。
- AI 历史回测暂时只做向前验证;不要让 AI 使用今天的认知回评过去。
合格标准:任意抽查一家公司,快照里的财报发布日期、价格日期都不得晚于快照日。
2. 分层验证 Bucket Test
检验高分组是否真的比低分组更好,而不是只看几个案例感觉正确。
怎么建
- 按投资分、高效复利、十倍潜力、估值、风险等维度分成 5 或 10 组。
- 计算 1M、3M、6M、12M、24M 未来收益,以及最大回撤和胜率。
- 观察 Top 组是否长期、稳定地优于 Bottom 组。
- 单独比较价值型、成长型、周期型、金融地产等不同样本。
合格标准:高分组在多个窗口有更高收益/更低回撤,且不是只靠少数极端股票贡献。
3. 行业/市值中性验证 Neutralized Test
确认分数本身有效,而不是因为碰巧押中了某个行业或小市值风格。
怎么建
- 在同一申万一级行业内排序,再做行业内 Top/Bottom 组合。
- 按市值分组后分别检验,或对收益做行业、市值暴露回归残差。
- 构建行业等权、行业中性、市值中性三种组合并比较。
- 检查是否长期偏向微盘、单一赛道或高波动股票。
合格标准:剥离行业和市值影响后,高分组仍能表现更好,或者至少能降低风险。
4. 交易成本验证 Transaction Cost
把换手、滑点、冲击成本放进去,确认纸面收益能不能真实落地。
怎么建
- 按股票流动性设置手续费、印花税、滑点和冲击成本。
- 限制单票成交额占日均成交额比例,避免回测买到现实买不到的量。
- 比较月度、季度、半年再平衡下的收益和换手。
- 记录 implementation shortfall:从决策价格到实际成交价格的损耗。
合格标准:扣除成本后仍有超额收益;高换手策略不能只靠频繁调仓创造幻觉。
5. 样本外验证 Out-of-Sample
检验模型离开开发样本后是否还有效,防止过拟合。
怎么建
- 把历史切成训练期、验证期、样本外测试期。
- 参数只能在训练期确定,不能根据样本外结果反复改。
- 固定切分使用 60% 训练、20% 验证、20% 最终样本外。
- 滚动前向以至少 36 期历史起步,冻结参数检验后续 12 期,再扩展历史窗口。
- 把未来 6-12 个月作为真实前向跟踪,不急着下结论。
合格标准:样本外结果不需要完美,但不能和样本内完全相反;回撤、胜率、行业暴露要在可接受范围。