回测的输出:读懂一份回测报告的五件套
先掌握这个答案
五件套分工:①净值曲线(+基准+回撤):总体形态——趋势、回撤、风格期表现(q-015/530的读法);②交易明细(每笔买卖):执行质量——成交价vs信号价、单笔盈亏分布、异常交易(同日反复买卖=过拟合迹象);③持仓快照(每日/每期):结构——行业/市值/集中度演变(是否漂移);④绩效面板:数字——收益/风险/换手/胜率全口径(q-528/530/533的体检);⑤归因分解:来源——超额来自哪些因子/行业/时段(Brinson或因子回归,q-549)。阅读顺序:先②看诚实度(数据对不对)→①看形态→④看数字→③看结构→⑤看来源。红旗清单:交易明细里跌停日"成功卖出"(q-044)、同日高换手对倒、持仓集中度>20%;净值里孤立的直线拉升(单一事件);归因里超额集中在一两个月(运气集中度)。
先读结论,再核对下方使用边界;数字例题为教学情景,涉及实际行情与规则时请核对原始来源。
从理解到使用
每一笔收益都要有可执行时间线
打印数据截止时间、信号时间、订单时间、成交时间和持仓收益区间。收盘信号不能乘当天完整收益;次日开盘成交也不能无条件拿到整个close-to-close收益。用原始价格判断可成交性,并纳入停牌与涨跌停。
本阶段实战方法 · 回测先过时序、成交与成本三道关
把信号变成策略收益时,每笔收益必须能追溯到当时能下出的订单。
- 画出时间线:数据可得→算信号→下单→成交→持仓收益;收盘信号不能倒用当天完整收益。
- 明确交易价格、T+1可卖数量、停牌涨跌停、仓位上限和实际成交量约束。
- 同时报告毛/净收益、换手、最大回撤、基准和样本外结果;对滑点与费率做压力测试。
使用边界
- 简单shift(1)只解决部分时序问题;次日开盘成交还要区分隔夜和日内收益。
- 成本应按成交金额与买卖方向计提;0.15%是教学情景,不是统一市场费率。
- 报告=指标面板:那只是四分之一——没有明细与归因的面板是"没有片子的诊断书"
- 曲线好看就深究别的了:红旗常藏在明细里(不可能的成交)与归因里(运气集中)——顺序读法就是为此设计
- 交易明细太大没必要存:它是复现与审计的唯一依据——parquet压缩后很小,永远存
🛠 本题实践任务
为你的回测输出补齐五件套(缺哪件补哪件),并按顺序读一遍自己的最新报告:红旗清单全绿吗?写下第一面被你抓住的红旗(如果有)。
💡 提示(先自己想5分钟再看)
归因简版:分年超额表+最好/最差10日贡献;明细存parquet(date/code/side/price/qty)。
在你的浏览器内运行。首次需联网下载 Python;支持标准库和 Pyodide 提供的 NumPy、pandas 等包。行情抓取、系统文件访问和部分第三方库请在本地环境运行。输出自检仅比对结果关键词,不代替逻辑审查。
🤖 AI导师
导师会先检查你的前置知识(回测构成、净值曲线),再用案例、公式和代码帮助理解。此功能需要先启用服务。