Files
ATRI-NOTES/ATRI My Dear Moments/questions/2026-09-22-回测口径:三把尺子.md
T

4.0 KiB
Raw Blame History

2026-09-22 · 回测口径:三把尺子

状态:已结论 · 明日继续 来源:当晚与一位朋友的期货私聊(本机 130 条)


一、三把尺子

# 口径 做法 特点
① 不复权拼接 按成交量逐日选主力,直接拼 保留换月跳空 → 凭空造出或抹掉一段损益
② 后复权拼接 拼接后按比例调整 接近实盘但不精确;调整比例本身是"事后"信息
③ 分段分合约 ✅ 指标在每个合约自己的历史上计算,不拼接 精确实盘口径——换月时平旧开新,权益不变

最终采用:③。


二、一个关键结论:误差的方向取决于跳空的方向

  • 若累计向上跳空 → ①不复权虚高(凭空多出利润);
  • 若累计向下跳空 → ①不复权虚低(凭空吃掉利润)。

所以「不复权和后复权哪个更保守」没有统一答案——同一套策略,不同的品种会给出相反的方向。 本晚实测:一个品种累计向上跳、另一个累计向下跳,因此两版的差异一正一负,看起来"自相矛盾",实则是同一机制的两种表现。


三、当事人给出的两个标准反驳(都成立)

  1. 「今天赚 1000,明天换月跳多 100,回测显示赚 1100,但我实际只赚了 1000 并换了个合约。」 → 直接戳破了我"后复权 = 实盘"的说法,我当场收回。
  2. 「既然不复权浮盈更大,为什么后复权减小误差反而让盈利变多?」 → 抓住了上面第二节这个方向性问题的要害。

四、我自己犯的错(三次 + 一个 bug)

# 错误 性质
① 说「后复权 = 实盘」 表述不精确,被对方用具体例子推翻
② 把「样本只有 2 个品种」判为 ❌ 忘了自己几天前做过 25 品种全品种检验;被对方提醒后收回
③ 报「中位净盈亏为负」 手工排序排错,实际为正;CSV 里没有这一行,我自己排的
④ 合约代码格式写错(4 位年 vs 2 位年) 导致全部数据拉不到、跑不出结果——根因级 bug

五、核心结果(分段分合约口径)

  • 稀释止损的目的达到了:把本金放大后,止损触发总次数 95 → 17(↓82%),某品种的最大回撤从「亏穿归零」显著改善; → 说明那 5% 止损在小本金下其实一直在"假装工作",真正管风险的应该是指标本身。
  • 横截面表现:正收益品种约六成,MAR 中位数在 0.1 附近,个别品种(玻璃等)显著突出。
  • 定性:不是「指标在某些品种上失效」,而是原料不对——趋势指标是放大器不是引擎:品种里有趋势就放大成利润,只有噪音就放大成亏损。

六、收尾时给出的框架结论

问:能不能给一套「全 A 的指标」? 答:没有「全 A 的指标」,只有「全 A 的框架」。 三环——品种筛选 / 策略 / 心理承受——后两环拿不到 A,而且都不在指标内部,所以不可能靠改公式解决。


七、明日待接(对方已说「明天弄吧」)

  1. ★ 监控器补【合约代码 + 换月移仓】(否则止损价会一直错,且错得很隐蔽);
  2. 加「数据日期与上次相同则跳过」,避免同日重复提醒;
  3. 提醒里标注数据日期;
  4. 手数改为波动率平价(现在只出现在提醒文字里,未真正生效)。

八、教训(可复用)

  • 旧结论要复核:我三次错误里,有两次是"凭记忆/凭手感"下判断(忘了自己做过什么、手排中位数);
  • 遇到对方用反例反驳时,第一反应应当是核对而不是解释——今晚两次都是对方对、我错;
  • 尺子选错,后面的所有数字都白跑:口径问题必须在动手前钉死,不能边跑边改。