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

前视偏差的六个藏身点(速查清单版)

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

先掌握这个答案

六藏身点+检查动作:①信号成交同刻→查权重是否shift(1)(grep 'shift'确认方向);②财务报告期对齐→查merge的右键是ann_date还是end_date;③全样本统计量→查标准化的mean/std来自全表还是expanding(截断检验兜底);④当前成分回测历史→查股票池来自时点快照还是最新列表;⑤复权价后视→查复权因子是否"截至当时"(未来分红会改写历史复权价——用数据源的PIT复权或接受近似并标注);⑥幸存者偏差(q-067)→查退市股在不在数据里。一票否决式提问:"这个数字,昨天的我知道吗?"

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

从理解到使用

以信息可得时间对齐

财报报告期结束日不是市场获知信息的时间。对每个特征记录available_at,并确认不晚于决策时点;盘后数据通常不能用于同日收盘前下单。保留历史修订与退市样本,检查删尾重跑是否稳定。

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

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

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

使用边界

  • 简单shift(1)只解决部分时序问题;次日开盘成交还要区分隔夜和日内收益。
  • 成本应按成交金额与买卖方向计提;0.15%是教学情景,不是统一市场费率。
背景 · 从一个困惑说起
q-502建了防御工程(截断检验)。这一题是配套的"巡逻清单"——前视的六个经典藏身点,来自无数回测事故的尸检报告。code review时逐条对照,五分钟排除80%的风险。
由此产生的问题
六个藏身点分别是什么?每条的检查动作(一行命令/一个提问)是什么?
核心概念
六藏身点+检查动作:①信号成交同刻→查权重是否shift(1)(grep 'shift'确认方向);②财务报告期对齐→查merge的右键是ann_date还是end_date;③全样本统计量→查标准化的mean/std来自全表还是expanding(截断检验兜底);④当前成分回测历史→查股票池来自时点快照还是最新列表;⑤复权价后视→查复权因子是否"截至当时"(未来分红会改写历史复权价——用数据源的PIT复权或接受近似并标注);⑥幸存者偏差(q-067)→查退市股在不在数据里。一票否决式提问:"这个数字,昨天的我知道吗?"
为什么需要它
①清单化=可执行:"小心前视"是口号,六个点名+六个检查动作是流程——把安全检查变成五分钟仪式;②协作接口:团队review的统一语言——"查一下第③点"比十句解释高效;③与截断检验的分工:清单防"已知的坑",截断检验抓"未知的坑"——双保险。
实际应用场景
打印成便签贴屏幕(q-063的三保证书的扩展版);每次回测提交前逐条打勾;新成员入项目的第一份必读文档。
与之前知识的联系
q-502(防御工程)的操作手册版;q-063(阶段1三保证书)的完全体;q-393(用户三招)覆盖①②③——本题补全④⑤⑥。
⚠ 常见误解
  • 我用了专业数据源就不用查:数据源防数据错,防不了你用法错(用最新成分回测历史、用全样本统计量——数据没错、用法前视)
  • 清单检查一次就永久安全:每次改代码、换数据源、加特征都可能引入新的前视——清单随代码提交走
  • 小细节不至于致命:每个"不至于"累计起来就是回测与实盘的50%+偏差——前视从来不是单点大错而是多点小错的复利

🤖 AI导师

导师会先检查你的前置知识(前视防御工程、公告日对齐),再用案例、公式和代码帮助理解。此功能需要先启用服务。