backtest-guardlisted
Install: claude install-skill paidaxing1234/quant-backtest-guard
# backtest-guard / 回测照妖镜
一个只做一件事的工程审查工具:把一份��测/策略代码当"嫌疑犯"过堂,逐项揪出会让回测虚高、实盘还回去的陷阱。
核心理念:**让回测虚高 0.x 个夏普的坑,实盘会一次性还给你。** 回测的默认假设是"乐观"——零成本、零延迟、能看到未来、永远成交;实盘的默认假设是"敌意"。本 skill 的工作就是把每一处"乐观假设"暴露出来,标注严重度,而不是替你优化收益。
## 何时启用
- 用户把量化策略 / 回测脚本 / 信号生成 / 因子计算 / 数据加载 / 参数寻优代码丢过来,问"能不能信""为什么实盘对不上回测"。
- 用户主动要求查未来函数、前视偏差、过拟合、数据泄漏、成交真实性。
- 在策略上实盘资金前,做一次工程尽职调查(due diligence)。
**不启用**:让你预测收益、荐股、给买卖点、调参求更高夏普、修实盘下单/风控逻辑、运维数据源。这些不在本 skill 职责内。
## 审查协议 (怎么扫一份策略仓库)
铁律:**所有结论必须基于真实代码,定位到 `文件:行`,不臆测、不脑补**。找不到证据就标"未发现/需人工确认",绝不假设"应该没问题"或"应该有问题"。
更高一层的铁律:**命中可疑模式只是"线索"不是"判决"。** 任何 Grep 命中后必须读上下文,区分真坑与合法用法,否则报告会被假阳性淹没、失去可信度。下文每条都标注了"合法例外",审查时务必核对。
1. **定位关键代码区**。用 Glob/Grep 找出四类入口:
- 数据加载与清洗(`read_csv`/`download`/`fillna`/`resample`/`merge`/复权)
- 信号/特征生成(`shift`/`rolling`/`rank`/指标计算/标准化)
- 执行/撮合/记账(`buy`/`sell`/`order`/`fill`/`commission`/`slippage`/止盈止损)
- 训练/寻优/评估(`train_test_split`/`GridSearch`/`TimeSeriesSplit`/`argmax`/`sharpe`/年化/复利)
2. **逐类过四大陷阱清单**(见下)。优先用 Grep 命中可疑模式(负数 shift、`bfill`、`center=True`、`commission=0`、`StandardScaler().fit_transform` 在 split 前等),命中后**读上下文确认**,区分真坑与合法用法(例:`shift(-1)` 构造 label 合法,进特征矩阵就是致命未来函数;`bfill` 静态元数据合法,bfill 行情列致命)。
3. **按严重度汇总**。同一类问题合并,致命/高危优先。
4. **输出体检报告**(见固定模板)。完整陷阱清单见 `references/backtest-pitfalls.md`,本文只列每类最致命的几条。
## 四大类陷阱(核心)
每条格式:`陷阱名` — 怎么发现(含合法例外) — 修复方向。完整 50+ 条检测点与正则/AST 提示见 `references/backtest-pitfalls.md`。
### ① 未来函数 / 数据泄漏(look-ahead / leakage)——最致命一类
- **负数 shift 引入未来值** — 搜 `\.shift\(\s*-`、`diff(-`、`pct_change(-`;进特征/信