1. 课程导入

大多数交易者的困境并不是“没有策略”,而是“用错了策略”。趋势跟踪在震荡市里被反复止损,均值回归在单边行情中不断逆势加仓,网格策略遇到趋势突破后仓位失控——这些亏损的共同根源,是策略与市场状态不匹配。本课程要解决的核心问题只有一个:如何用可量化、可复现的方法识别市场当前处于什么状态,并据此在策略之间进行切换。

隐马尔可夫模型(Hidden Markov Model,HMM)正是为此类问题设计的统计工具。它假设市场存在若干不可直接观测的“隐藏状态”(如趋势、震荡、高波动危机),而我们能观察到的只有收益率、波动率、成交量等“观测序列”。HMM 通过观测序列反推隐藏状态的概率分布,从而给出一个客观、连续、可回测的市场状态判断。

学习目标:三层能力递进

本课程的学习目标分为三个层次,层层递进,最终落到可执行的交易系统上。

  • 原理层:理解 HMM 的三大要素——初始状态概率、状态转移矩阵、发射概率,以及前向-后向算法、Baum-Welch 参数估计、Viterbi 状态解码的数学含义与适用边界。
  • 方法层:掌握从特征工程(收益率、已实现波动率、换手率、量价背离)到模型训练、状态数选择(AIC/BIC/似然)、状态标签语义化的完整流程。
  • 实战层:能够把 HMM 输出的状态概率映射为策略权重,构建“趋势策略 + 均值回归策略 + 防御策略”的切换规则,并完成回测、归因与风控。

核心价值:HMM 不是预测涨跌的“水晶球”,而是给策略切换提供一个概率化的决策依据。它把“现在该不该做趋势”这种主观判断,转化为“当前处于趋势状态的概率是 0.78”这样的可计算输入,从而让策略切换有据可依、可回测、可迭代。

整体课程框架:六模块三十章

课程按“认知—建模—识别—切换—风控—复盘”的主线展开,共三十章,形成一条完整的实战路线。

模块 核心内容 产出物
模块一:认知与导入 市场状态的定义、HMM 适用性、课程路线图 状态识别问题清单
模块二:HMM 原理 马尔可夫链、转移矩阵、发射分布、三大算法 原理推导笔记
模块三:特征与建模 特征工程、状态数选择、参数估计、状态语义标注 可训练的状态识别模型
模块四:策略切换 状态到策略的映射、权重分配、切换阈值与滞后处理 策略切换规则表
模块五:回测与风控 向量化回测、交易成本、状态误判的容错设计 回测报告与风控参数
模块六:复盘与迭代 归因分析、常见误区、模型再训练节奏 迭代检查清单

核心原理速览:状态不可见,但可推断

HMM 的基本假设是:市场在每个时刻处于某个隐藏状态 S_t,状态之间按转移矩阵 A 演化,而每个状态会以一定的概率分布“发射”出我们看到的观测值 O_t。用公式表达就是:

P(S_t | S_{t-1}) = A        # 状态转移
P(O_t | S_t)     = B        # 发射概率
π                = 初始状态分布

观测序列 O = [o_1, o_2, ..., o_T]
目标:推断 P(S_t | O),即每个时刻的状态后验概率

训练完成后,模型会输出每个时刻属于各状态的概率。例如某日输出:趋势状态 0.72、震荡状态 0.21、危机状态 0.07。策略切换模块据此决定仓位与策略权重,而不是等行情走完再“事后归类”。

HMM 市场状态识别与策略切换实战路线 ① 数据与特征 收益率 / 波动率 成交量 / 换手率 ② HMM 建模 Baum-Welch 训练 状态数选择 AIC/BIC ③ 状态识别 Viterbi 解码 后验概率输出 ④ 策略切换 权重映射 阈值与滞后 状态语义映射:趋势 / 震荡 / 高波动危机 趋势→趋势跟踪 震荡→均值回归 危机→防御与降仓 回测与归因 交易成本 / 状态误判 / 收益拆解 复盘与迭代 再训练节奏 / 参数漂移 / 检查清单

实战场景:一次典型的状态切换

假设我们用沪深300指数日频数据训练了一个三状态 HMM。某段时间模型输出如下:

日期        趋势概率   震荡概率   危机概率   识别状态
2024-03-01   0.81      0.15      0.04     趋势
2024-03-15   0.42      0.51      0.07     震荡
2024-04-02   0.18      0.29      0.53     危机
2024-04-18   0.35      0.58      0.07     震荡

策略切换模块据此执行:3月1日趋势策略权重提升至 0.8;3月15日切换为均值回归为主;4月2日危机状态触发降仓与防御策略;4月18日重新回到震荡模式。整个过程不需要主观判断“现在是不是牛市”,而是由状态概率驱动。

提示:状态概率是连续值,切换时建议设置“确认阈值 + 最短持有期”,例如趋势概率连续两日大于 0.7 才切换,避免状态概率在 0.5 附近反复跳动导致频繁交易。

常见误区与复盘要点

初学者在使用 HMM 做状态识别时,最容易踩以下四个坑:

  1. 把状态数当成越多越好。状态数过多会导致过拟合,状态语义难以解释。一般从 2~4 个状态开始,用 AIC/BIC 和样本外似然共同判断。
  2. 用全样本训练再回测。这会造成未来函数。正确做法是滚动窗口训练,每次只用历史数据估计参数,再对下一段做状态推断。
  3. 忽略状态标签的语义漂移。同一编号的状态在不同训练窗口可能含义不同,必须每次重新做状态语义标注,不能硬编码“状态0就是趋势”。
  4. 切换过于频繁。状态概率本身有噪声,直接按最大概率切换会产生大量无效交易。需要加入平滑、滞后和交易成本约束。

风险提醒:HMM 假设状态转移具有马尔可夫性,且发射分布形式固定。真实市场存在结构突变和厚尾特征,模型会失效。因此 HMM 只能作为策略切换的辅助决策输入,不能替代风控与仓位管理。

接下来的章节将从 HMM 的数学原理讲起,逐步搭建特征工程、模型训练、状态识别、策略切换与回测复盘的完整链路。你最终得到的不是一段孤立的代码,而是一套可以持续迭代的市场状态识别与策略切换系统。