专业与业余的七个判据
拿到任何一份回测报告,先问这七个问题
上一节你看到同一条规则能给出四个天差地别的结论。那么问题来了:下次拿到一份别人做的回测,你怎么知道它是第几级?
这一节把标准写死:七个判据。它们是本课六十五节每一节的验收清单,也是你以后面对任何一份回测报告、任何一个"年化 30%"的说法时的照妖镜。
七条里最容易被跳过的是第四条——成本。这一节我们给它一个可以算出来的数:这个策略的死亡线在哪。
判断一份体检报告靠不靠谱,内行不看结论,看采样过程:空腹了吗?哪家实验室?试剂批号?对照组是谁?
回测报告一样。结论那一栏(年化多少)信息量最低,过程那几栏信息量最高。这七个判据,全部是问过程的。
七个判据
| # | 判据 | 一句话检验 | 不合格的典型症状 | 本课哪节负责 |
|---|---|---|---|---|
| 1 | 对账 | 逐笔盈亏累加,等于账户市值算出来的结果吗? | 只有一条净值曲线,没人验证过它算得对 | p4.6 |
| 2 | PIT | 每个数字在"当时"真的拿得到吗? | 用财报报告期而不是披露日;用了事后调整过的数据 | p1.7 |
| 3 | 样本外 | 参数在完全没参与挑选的数据上验过吗? | 只报全样本成绩;或"验完发现不行,回头再调调" | p5.5 |
| 4 | 成本 | 成本涨到多少,这个策略就不如躺平? | 零成本回测;或只算佣金不算滑点 | p5.7,本节演示 |
| 5 | 容量 | 放多少钱进去,它会失效? | 从不提资金规模;用日成交额很小的标的回测 | p5.7 |
| 6 | 多重检验 | 你一共试了多少组?夏普该打几折? | "我调出了一组年化 26%"(不说试了 591 组) | p3.4 |
| 7 | 可复现 | 换台机器,别人能跑出同一个数字吗? | 代码不给、数据不给、随机种子不固定 | 贯穿全课 |
七条里任何一条不合格,那份报告的结论就不能用来做判断——不是"要打个折",是"不能用"。
判据四实操:算出策略的死亡线
「要考虑交易成本」这句话人人会说,但它不是态度问题,是一个可以算出确切数字的问题。
做法很简单:把单边成本当自变量扫一遍,找出策略年化跌到买入持有以下的那个成本点。我把它叫做死亡线。
数据:沪深300,2005-04-08 → 2026-07-29,21.3 年,买入持有年化 7.41%(死亡线的判定基准)。
MA5/20:年均 14.6 次成交
| 单边成本 | 年化 | 相对躺平 |
|---|---|---|
| 0 bp | 10.41% | +3.00pp |
| 5 bp | 9.60% | +2.20pp |
| 7.5 bp | 9.20% | +1.79pp |
| 15 bp | 8.01% | +0.60pp |
| 20 bp | 7.22% | -0.19pp 输 |
| 50 bp | 2.60% | -4.81pp |
死亡线 ≈ 单边 18.8bp(0.188%)。
MA5/55:年均 6.2 次成交
| 单边成本 | 年化 | 相对躺平 |
|---|---|---|
| 0 bp | 13.54% | +6.13pp |
| 20 bp | 12.14% | +4.73pp |
| 50 bp | 10.07% | +2.66pp |
死亡线 ≈ 单边 89.2bp(0.892%)。
这两个数字放在一起说明什么
同一个标的、同一类规则,只因为换手率差了一倍多(14.6 次/年 vs 6.2 次/年),能承受的成本差了近 5 倍。
于是有了一条可以直接用的经验:看到一个高频交易的策略在吹超额收益,先算它的死亡线。换手越高,它的超额就越可能只是纸面上的——你的真实成本(佣金 + 滑点 + 冲击成本)只要越过那条线,超额立刻变成倒亏。
别把 MA5/55 的 89.2bp 当成"这个策略更好"的证据。
MA5/55 这组参数,正是上一节在 591 组里挑出来的样本内冠军。它在全样本上好看,一部分原因就是它被挑出来的方式。死亡线本身也会被参数偏差污染——判据四合格,不代表判据三、判据六合格。
七条判据是同时成立才算过关,不能挑着用。
怎么用这七条
当你是审阅者:按顺序问。经验上,一份来路不明的回测报告通常在第 3、4、6 条上倒下,而它们恰好是最容易被"不小心"跳过的三条。
当你是作者:本课每一节的代码都会把这七条中相关的几条落成机制——不是"记住要小心",而是让代码在你犯错时报错、让输出把假设打印出来。这就是 P4 章为什么要自己写引擎:外部库不会替你对账。
🔧 动手做:算出你自己那条策略的死亡线(6 分钟)
跑 cost_death_line.py,它做的事只有一件:把单边成本从 0 一路调到 50bp,看年化什么时候跌破买入持有的 7.41%。
【MA5/20】年均 14.6 次成交
5.0bp 9.60% +2.20pp 赢
15.0bp 8.01% +0.60pp 赢
20.0bp 7.22% -0.19pp 输
→ 死亡线 ≈ 单边 18.8bp:成本高于此,该策略不如买入持有
三件事动手做:
- 把换手率调高:把 MA5/20 换成 MA3/10(改脚本顶部的参数),成交次数会从 312 涨上去,再算一次死亡线——看它怎么往下掉。换手越高的策略,死亡线越低,越经不起成本。
- 对照你自己的券商:佣金万 2.5(2.5bp)+ 印花税卖出万五(5bp,只收卖出,与后文各节引擎同口径)+ 滑点。把你的真实数字代进去,落在死亡线哪一侧?
- 拿一份你见过的"年化 30%"回测,问它一个问题:年均成交多少次? 答不上来,这个 30% 就没有意义——它可能整个建立在成本假设为 0 上。
✅ 做到这里你应该有:MA5/20 和 MA5/55 两条死亡线(18.8bp vs 更高)、你自己券商的真实单边成本、以及一个能立刻问出口的问题。
为什么:判据四(成本)是七条里最容易验证、也最常被跳过的一条。它不需要你懂统计,只需要你会做一次除法——而它一个人就能否掉大半的"高收益策略"。
📌 免责:本课为技术教学,所有回测数字均为历史模拟,不构成任何投资建议;指数不可直接交易,文中仅作宽基标的的代理;投资有风险,盈亏自负。
七个判据到手:对账、PIT、样本外、成本、容量、多重检验、可复现。你也拿到了判据四的算法——死亡线:MA5/20 是单边 18.8bp,MA5/55 是 89.2bp,换手率差一倍多,抗成本能力差近 5 倍。
同时记住那个警告:七条要同时成立。MA5/55 死亡线漂亮,但它本身是 591 组里挑出来的冠军,判据三和判据六仍然亮红灯。
下一节是工程地基:虚拟环境、依赖锁定、项目骨架、pytest。听起来最无聊,却是判据七(可复现)的唯一实现方式——一个连环境都锁不住的项目,谈不上任何"结论"。
🔎 来源与核验· 3 条,点开核对
