别让 HMM「概率」骗了你 —— 一种前向安全的 prob_bull 校准方法论
2026-06-28 · 重庆
一个价值 100 倍的问题
我在做一个 A 股 HMM 量化策略:三状态(BULL/SIDEWAYS/BEAR),Walk-Forward 回测,每窗口 1700 天训练、60 天测试。
prob_bull = 0.7 —— HMM 说 70% 概率是牛市。直觉上:做多。
直觉错了。
打开数据。同一只股票,两个不同窗口:
窗口 3: prob_bull=0.7 → 次日涨 +2.3%
窗口 23: prob_bull=0.7 → 次日跌 -0.8%
0.7 在不同窗口不是同一个"0.7"。HMM 输出的概率是状态概率,不是收益预测。用它做大类资产配置?想多了。用来做 T+1 做多?准确率看天。
但你不能扔掉它。HMM 对市场结构的感知能力有很高的 Sharpe。你需要的是:把 prob_bull 映射到期望收益,然后用期望收益做决策。
这就是保序回归(Isotonic Regression)校准。
看似简单,实则暗坑密布
保序回归很简单:收集一堆 (prob_bull, next_day_pct_chg) 配对,拟合一条单调递增曲线,f(0.3) = -0.2%、f(0.5) = +0.3%、f(0.9) = +1.2%。然后用 f(prob_bull) > 0.5% 替代 prob_bull > 0.5。
问题来了:测试集第一天,你没有任何本窗口的 (prob, ret) 数据对。 回测里你可以拿窗口里全部 59 天去拟合——效果极好,从 +84% 飙到 +206%(000001.SZ),Sharpe 从 1.29 到 5.93。但实盘第一天你一个 pair 都没有。
这不是一个技术问题。这是一个信息时序约束问题。
我们试了四种方案,全失败了
方案 1:跨窗口连续滚动校准
拼接所有窗口到一条时间线,逐日增量更新校准曲线。
结果:000001.SZ 收益跌到 +15%(还不如不校准的 +84%),26 个窗口里有 20 个零持仓。
根因:W3 的 HMM 和 W23 的 HMM 参数不同,prob_bull=0.7 在这两个模型里的语义完全不一样。把它们塞进同一个 IsotonicRegression,PAVA 算法被迫取平均——结果就是 f(0.7) ≈ +0.7%,高于阈值是运气,低于阈值也是运气。
单一校准曲线无法同时适配多个 HMM 模型的概率语义。 这是今天最重要的一条教训。
方案 2:窗口内 min_samples=3 滚动校准
每窗口从第 4 天开始,用前 3 天数据拟合,逐日增量。最低 3 个点就能跑 PAVA,对吧?
结果:000001.SZ 收益 +20%(连不校准的 +84% 都不如),330 天持仓 vs 批校准的 121 天——多出来的都是假信号。
根因:3 天


111

被折叠的 条评论
为什么被折叠?



