Wasserstein HMM vs KNN 换手对比 (Wasserstein HMM vs KNN Turnover Contrast)

本文 (arXiv:2603.04441) 用同特征+同优化器控制变量, 把 latent-state 识别 (Wasserstein HMM) vs 历史近邻 (KNN) 做 regime 估计在组合稳定性上做了"正面比较"。本文是该比较的诊断页。

实验设置

项 Wasserstein HMM KNN
输入特征 日收益率 + 60d vol + 20d 动量 (同) (同)
Latent 状态 5 类动态, Wasserstein 模板对齐 邻居 = 训练集中特征最相似的 K 天
输出 \hat\mu_t, \hat\Sigma_t \sum_k \gamma_k (\mu_k, \Sigma_k) 邻居日的 (\mu, \Sigma) 加权平均
优化器 MVO + TC (同) (同)

2005–2026 日度, 跨资产 (SPX/债券/黄金/原油/美元)。

结果 (同一评价口径)

Wasserstein HMM KNN
Sharpe 2.18 1.81
MaxDD −5.43% −12.52%
平均日换手 0.80% 56.65%
换手 > 1% 的天数占比 14.43% 94.13%
换手 > 5% 的天数占比 5.15% 93.54%
平均有效资产数 3.63 2.07

Sharpe 差距约 0.37 (20% 提升), MaxDD 差距 ~7pp, 但最大差距是换手: 0.80% vs 56.65%, 数量级差异。

为什么 KNN 抖动

  • KNN 邻居集合由"特征空间距离"决定, 特征向量的日间微扰会改变 top-K 邻居。
  • 即使今日的"真实 regime"未变, KNN 抓的 30 个邻居的均值/协方差是新样本, → \hat\mu_t 和 \hat\Sigma_t 出现不连续小跳变。
  • MVO + TC 在噪声输入下反复算, 因 TC 的二次惩罚远小于噪声跳变幅度, 故无法压制。
  • HMM + Wasserstein 模板把 \hat\mu_t, \hat\Sigma_t 在 latent state 维度上强制约束为 5 个高斯的软凸组合, 数量级上变不出来。

工程诊断三句话

  1. TC 项是必要非充分: 两组都加了, KNN 仍 56%, 所以真正降换手的是 regime 估计端的稳定性。
  2. "局部估计" 一定不稳: KNN / local regression / random k-subset 都有这个毛病 — 输入 day-to-day 抖动大, 输出抖。
  3. 状态数量级降维: 把 N 维降到 K 维, 强迫"今天"和"上周同一 regime 的日子"用同一组 (\mu, \Sigma), 这是 Wasserstein HMM 真正的工作量。

跨论文 / 跨市场可复制性

场景 预期
美股多资产 本文实证成立
A 股 + 涨跌停 涨停日 vol=0, 60d vol 异常; KNN 邻居可能跨过涨跌停断点, HMM 平滑更应受用 (假设验证)
期货限仓 限仓日特征集受人为扭曲, KNN 表现可能比 HMM 更差
高频 (秒 / 分) Regime 概念不成立, 本对比无意义
单资产 + 短窗 HMM 估计不稳, KNN 更鲁棒 — 本文 K_max 隐含长样本前提

Open Questions

  • KNN 的 K 取多少才算公平对比? 本文用了"对照常用值", 但未扫 K。
  • 把 KNN 换成 "GMM + KNN 后验" 或 "random forest 邻居" 是否同样抖动 — 即"局部估计"的一般性诅咒。
  • 把 Wasserstein HMM 的 2-Wasserstein 距离换成谱距离 / 总方差距离, 是否同等有效。
  • 工程改进: KNN 输入做"低频 regime label 化" (e.g. 预先 HMM 给 label, 再 KNN) 是否收口 jitter。

Cross-ref