4.0 KiB
4.0 KiB
2026-09-22 · 回测口径:三把尺子
状态:已结论 · 明日继续 来源:当晚与一位朋友的期货私聊(本机 130 条)
一、三把尺子
| # | 口径 | 做法 | 特点 |
|---|---|---|---|
| ① | 不复权拼接 | 按成交量逐日选主力,直接拼 | 保留换月跳空 → 凭空造出或抹掉一段损益 |
| ② | 后复权拼接 | 拼接后按比例调整 | 接近实盘但不精确;调整比例本身是"事后"信息 |
| ③ | 分段分合约 ✅ | 指标在每个合约自己的历史上计算,不拼接 | 精确实盘口径——换月时平旧开新,权益不变 |
最终采用:③。
二、一个关键结论:误差的方向取决于跳空的方向
- 若累计向上跳空 → ①不复权虚高(凭空多出利润);
- 若累计向下跳空 → ①不复权虚低(凭空吃掉利润)。
所以「不复权和后复权哪个更保守」没有统一答案——同一套策略,不同的品种会给出相反的方向。 本晚实测:一个品种累计向上跳、另一个累计向下跳,因此两版的差异一正一负,看起来"自相矛盾",实则是同一机制的两种表现。
三、当事人给出的两个标准反驳(都成立)
- 「今天赚 1000,明天换月跳多 100,回测显示赚 1100,但我实际只赚了 1000 并换了个合约。」 → 直接戳破了我"后复权 = 实盘"的说法,我当场收回。
- 「既然不复权浮盈更大,为什么后复权减小误差反而让盈利变多?」 → 抓住了上面第二节这个方向性问题的要害。
四、我自己犯的错(三次 + 一个 bug)
| # | 错误 | 性质 |
|---|---|---|
| ① | 说「后复权 = 实盘」 | 表述不精确,被对方用具体例子推翻 |
| ② | 把「样本只有 2 个品种」判为 ❌ | 忘了自己几天前做过 25 品种全品种检验;被对方提醒后收回 |
| ③ | 报「中位净盈亏为负」 | 手工排序排错,实际为正;CSV 里没有这一行,我自己排的 |
| ④ | 合约代码格式写错(4 位年 vs 2 位年) | 导致全部数据拉不到、跑不出结果——根因级 bug |
五、核心结果(分段分合约口径)
- 稀释止损的目的达到了:把本金放大后,止损触发总次数 95 → 17(↓82%),某品种的最大回撤从「亏穿归零」显著改善; → 说明那 5% 止损在小本金下其实一直在"假装工作",真正管风险的应该是指标本身。
- 横截面表现:正收益品种约六成,MAR 中位数在 0.1 附近,个别品种(玻璃等)显著突出。
- 定性:不是「指标在某些品种上失效」,而是原料不对——趋势指标是放大器不是引擎:品种里有趋势就放大成利润,只有噪音就放大成亏损。
六、收尾时给出的框架结论
问:能不能给一套「全 A 的指标」? 答:没有「全 A 的指标」,只有「全 A 的框架」。 三环——品种筛选 / 策略 / 心理承受——后两环拿不到 A,而且都不在指标内部,所以不可能靠改公式解决。
七、明日待接(对方已说「明天弄吧」)
- ★ 监控器补【合约代码 + 换月移仓】(否则止损价会一直错,且错得很隐蔽);
- 加「数据日期与上次相同则跳过」,避免同日重复提醒;
- 提醒里标注数据日期;
- 手数改为波动率平价(现在只出现在提醒文字里,未真正生效)。
八、教训(可复用)
- 旧结论要复核:我三次错误里,有两次是"凭记忆/凭手感"下判断(忘了自己做过什么、手排中位数);
- 遇到对方用反例反驳时,第一反应应当是核对而不是解释——今晚两次都是对方对、我错;
- 尺子选错,后面的所有数字都白跑:口径问题必须在动手前钉死,不能边跑边改。