第 12 课:市场状态识别(Regime Detection)

目标:让系统知道"现在是什么市场",才能选择正确的策略。


一个典型场景(示意)

注:以下为合成示例,用于说明常见现象;数字为示意,不对应任何具体机构/产品。

2021 年初,一家量化基金同时运行两套策略:趋势跟随和均值回归。两套策略在各自擅长的市场里都表现优秀。

问题是,他们用的是固定权重——各 50%。

结果:

  • 趋势市里,趋势策略赚 20%,均值回归亏 15%,净赚 2.5%
  • 震荡市里,均值回归赚 15%,趋势策略亏 20%,净亏 2.5%
  • 全年下来,两边互相抵消,收益接近零

他们的竞争对手呢?同样两套策略,但加了一个Regime Detection 模块

  • 趋势市里,趋势策略权重 80%,均值回归 20%
  • 震荡市里,反过来

结果:全年收益 18%,夏普比率 1.6。

差距在哪? 不是策略本身,而是知道什么时候用什么策略。这就是市场状态识别的价值——它是多智能体系统的"路由器"。


12.1 什么是市场状态(Regime)

三种基本状态

市场在任何时刻都处于某种"状态",虽然状态之间没有清晰边界,但可以粗略分为:

状态特征最佳策略典型持续时间
趋势市 (Trending)价格持续单向运动,波动率上升动量/趋势跟随数周到数月
震荡市 (Mean-Reverting)价格在区间内波动,均值回归有效均值回归/网格数周到数月
危机市 (Crisis)剧烈波动,相关性飙升,流动性枯竭风控优先/现金为王数天到数周

为什么识别状态这么难?

挑战解释
后视镜问题事后看状态很清楚,实时看很模糊
边界模糊趋势和震荡之间没有清晰分界线
状态嵌套日线震荡、周线趋势、月线震荡可以同时存在
检测滞后等你确认状态时,可能已经快结束了
误切换成本频繁切换策略本身就是成本

纸上练习:识别历史状态

看下面这组数据,判断每个时期的市场状态:

时期20日收益率20日波动率ADX你的判断
A+12%18%35?
B-2%8%15?
C-25%45%28?
D+3%12%22?
点击展开答案
时期判断理由
A趋势市(上涨)高收益 + 中等波动 + 高 ADX(>25 表示趋势强)
B震荡市低收益 + 低波动 + 低 ADX(<20 表示无趋势)
C危机市大幅下跌 + 极高波动(>30%年化是警戒线)
D弱趋势/过渡期收益和 ADX 都在中间地带,难以判断

关键发现:D 时期最难判断,这就是实战中最常遇到的情况——大部分时间市场都在"灰色地带"。


12.2 Regime 检测的四种方法

方法对比

方法原理优点缺点适用场景
规则法用指标阈值判断简单、可解释、无滞后阈值难选、边界硬快速原型、基线
统计法用统计检验识别结构变化数学严谨需要历史数据、有滞后离线分析
机器学习用 ML 模型分类可捕捉复杂模式需要标签、过拟合风险有足够标注数据时
隐马尔可夫假设状态服从马尔可夫链能估计状态概率假设可能不成立状态数已知时

方法一:规则法(最实用)

用技术指标的阈值组合来判断状态:

规则法状态判断

纸上练习:设计你的规则

给定以下市场数据,用上面的规则判断状态:

场景ADX20日波动率20日收益率资产相关性状态
13222%+8%0.4?
21812%-1%0.3?
32538%-15%0.85?
42318%+3%0.5?
点击展开答案
场景状态判断路径
1趋势市Vol=22% < 30%(非危机)→ ADX=32 > 25 且 Ret=8% > 5%(趋势)
2震荡市Vol=12% < 30%(非危机)→ ADX=18 < 20 且 Vol=12% < 15%(震荡)
3危机市Vol=38% > 30% 且 Corr=0.85 > 0.8(危机优先判断)
4过渡期不满足任何明确条件(ADX=23 在 20-25 之间)

方法二:隐马尔可夫模型(HMM)

HMM 假设市场在几个隐藏状态之间切换,我们只能观察到价格,但看不到真实状态。

HMM状态转移

HMM 的核心输出

  • 状态概率:当前处于每个状态的概率(如:趋势 60%、震荡 30%、危机 10%)
  • 转移概率:从一个状态切换到另一个状态的概率

纸上练习:理解状态概率

HMM 输出当前状态概率为:趋势 55%、震荡 35%、危机 10%

策略权重方案趋势策略均值回归风控策略问题
硬切换100%0%0%忽略了 35% 的震荡概率
概率加权55%35%10%更稳健,但危机时反应不够快
调整后加权50%30%20%放大危机权重作为保险

关键洞察:状态概率不应该直接用作策略权重,需要根据风险偏好调整。

💻 代码实现(工程师参考)
# 注意:以下为示意代码,展示 HMM 的基本用法
# 需要安装 hmmlearn: pip install hmmlearn

import numpy as np
from hmmlearn import hmm

class RegimeDetector:
    """基于 HMM 的市场状态检测器"""

    def __init__(self, n_states: int = 3):
        self.n_states = n_states
        self.model = hmm.GaussianHMM(
            n_components=n_states,
            covariance_type="full",
            n_iter=100
        )

    def fit(self, features: np.ndarray):
        """
        训练 HMM 模型

        features: shape (n_samples, n_features)
                  通常包括:收益率、波动率、ADX 等
        """
        self.model.fit(features)
        return self

    def predict_proba(self, features: np.ndarray) -> np.ndarray:
        """
        预测当前状态概率

        返回: shape (n_states,) 的概率分布
        """
        # 获取后验概率
        posteriors = self.model.predict_proba(features)
        return posteriors[-1]  # 最新时刻的概率

    def get_regime(self, features: np.ndarray, threshold: float = 0.5) -> str:
        """
        获取当前状态(带置信度阈值)
        """
        probs = self.predict_proba(features)
        max_prob = np.max(probs)
        max_state = np.argmax(probs)

        if max_prob < threshold:
            return "uncertain"

        state_names = ["trending", "mean_reverting", "crisis"]
        return state_names[max_state]

方法三:波动率聚类(实用变体)

一个简化但实用的方法是只看波动率的状态:

波动率区间状态策略建议
< 15%低波动(震荡)均值回归、卖期权
15% - 25%正常波动正常运行
25% - 35%高波动(趋势)趋势跟随、减仓
> 35%极高波动(危机)风控优先、大幅减仓

为什么波动率如此重要?

  • 波动率是市场"体温",能快速反映市场健康状态
  • 波动率有聚集效应(高波动后往往还是高波动)
  • 波动率比收益率更容易预测

12.3 Regime 检测的评估

识别状态不是目的,目的是提升策略收益。所以评估 Regime 检测的标准不是"准确率",而是"有没有帮策略赚更多钱"。

评估框架

Regime 检测评估指标

纸上练习:计算 Regime 检测的价值

场景:你的 Regime 检测模块在过去一年的表现:

指标数值
状态切换次数24 次
平均状态持续时间15 天
切换滞后3 天
误切换率20%(切换后 5 天内又切回来)

策略表现对比

方案年化收益最大回撤夏普比率
无 Regime(固定 50/50)8%18%0.6
有 Regime(动态切换)15%12%1.2
切换成本(24次×0.5%)-12%--

问题

  1. Regime 检测的净增值是多少?
  2. 如果误切换率降到 10%,预期收益会如何变化?
  3. 切换成本太高怎么办?
点击展开答案
  1. 净增值计算

    • 毛收益提升 = 15% - 8% = 7%
    • 切换成本 = 24 × 0.5% = 12%(这里假设每次切换涉及全部仓位调整)
    • 净增值 = 7% - 12% = -5%(反而亏了!)

    问题:切换太频繁,成本吃掉了收益!

  2. 误切换率降到 10%

    • 误切换次数从 4.8 次降到 2.4 次
    • 减少 2.4 次无效切换,节省 2.4 × 0.5% = 1.2%
    • 净增值 = -5% + 1.2% = -3.8%(还是负的)
  3. 解决切换成本高的方法

    • 渐进切换:不要 0→100%,而是 50%→70%→90%
    • 确认延迟:状态连续 N 天才切换,减少误切换
    • 软切换:用概率加权而非硬切换
    • 降低频率:只在状态非常明确时才切换

关键教训:Regime 检测的价值 = 识别准确性 × 策略差异 - 切换成本

切换滞后的代价

滞后天数在趋势市的影响在危机市的影响
1 天错过约 5% 的行情多承受约 3% 的损失
3 天错过约 15% 的行情多承受约 10% 的损失
5 天错过约 25% 的行情可能错过止损时机
10 天趋势可能已经过半危机可能已经结束

结论:宁可有一些误判,也不要滞后太多。特别是危机检测必须快


12.4 常见误区

误区一:Regime Detection 准确率越高越好

不完全对。评估 Regime 检测的标准不是"准确率",而是"有没有帮策略赚更多钱"。准确率 80% 但切换成本吃掉收益,不如准确率 60% 但切换少。

误区二:趋势/震荡是二元判断

现实中大部分时间市场处于"灰色地带"。强行二元判断会导致频繁误切换。正确做法:用概率加权(趋势 60%/震荡 40%)或承认"过渡期"。

误区三:检测到状态变化就立即切换策略

危险做法。切换本身有成本(交易成本、滑点),频繁切换可能亏掉所有收益。正确做法:确认延迟(状态连续 N 天)+ 渐进切换(50%→70%→90%)。

误区四:危机检测可以"等确认"

危机检测必须快。等你确认时,可能已经亏了 20%。宁可误判为危机(少赚),也不要漏判(巨亏)。


12.5 过渡期处理

现实中最难处理的不是明确的趋势或震荡,而是过渡期——状态正在切换,但还不确定。

过渡期的特征

特征表现
指标矛盾ADX 说趋势,波动率说震荡
概率模糊HMM 输出 40%/35%/25%,没有明显主导
信号冲突趋势策略和均值回归策略给出相反信号

过渡期策略

过渡期策略

推荐:对于大多数投资者,策略 3(风险优先) 是最稳妥的选择。过渡期往往是风险最高的时期。


12.5 多智能体视角

在多智能体架构中,Regime Detection 是Meta Agent 的核心能力

架构设计

Meta-Agent状态路由

Regime Agent 的职责

职责具体内容触发条件
状态识别判断当前市场处于什么状态每日/每小时
信号路由决定把任务分发给哪个专家 Agent状态变化时
权重分配根据状态概率分配专家权重持续
切换控制防止过度切换,管理过渡期状态模糊时
回顾归因记录状态判断,用于事后分析持续

与其他 Agent 的协作

协作对象协作方式
Signal Agent接收 Regime 信号,调整策略参数
Risk Agent危机状态时,Risk Agent 获得更大否决权
Execution Agent状态切换时,Execution Agent 负责平滑调仓
Evolution Agent提供状态识别的历史准确率,用于模型进化

✅ 验收标准

完成本课后,用以下标准检验学习效果:

验收项达标标准自测方法
理解三种状态能描述趋势/震荡/危机的特征和最佳策略用自己的话解释
掌握规则法能用 ADX/波动率/相关性设计判断规则完成纸上练习
理解 HMM 原理能解释状态概率的含义和用法解释为什么不直接用概率做权重
评估检测价值能计算净增值 = 收益提升 - 切换成本完成评估练习
处理过渡期能说出三种过渡期策略及其适用场景给出你的选择和理由

综合练习

设计你的 Regime 检测系统

  1. 选择检测方法(规则法/HMM/其他)并说明理由
  2. 定义输入特征和阈值
  3. 设计过渡期处理策略
  4. 设定切换确认条件(防止过度切换)
  5. 定义评估指标

本课交付物

完成本课后,你将获得:

  1. Regime 检测的设计框架 - 从方法选择到评估指标的完整思路
  2. 规则法的实用模板 - 可直接使用的 ADX/波动率/相关性判断规则
  3. 评估 Regime 检测价值的方法 - 净增值 = 收益提升 - 切换成本
  4. 过渡期处理策略 - 三种方案及其适用场景

本课要点回顾

  • 理解市场状态(Regime)的概念及其对策略选择的影响
  • 掌握四种 Regime 检测方法:规则法、统计法、ML、HMM
  • 理解 Regime 检测的评估不是"准确率"而是"经济价值"
  • 掌握过渡期的处理策略

延伸阅读


下一课预告

第 13 课:Regime 误判与系统性崩溃模式

Regime Detection 是多智能体系统的核心,但它会犯错——误判、滞后、边界震荡。下一课我们深入分析 Regime 检测的五种失败模式,以及如何设计降级策略防止系统性崩溃。

Cite this chapter
Zhang, Wayland (2026). 第12课:市场状态识别. In AI Quantitative Trading: From Zero to One. https://waylandz.com/quant-book/第12课:市场状态识别
@incollection{zhang2026quant_第12课:市场状态识别,
  author = {Zhang, Wayland},
  title = {第12课:市场状态识别},
  booktitle = {AI Quantitative Trading: From Zero to One},
  year = {2026},
  url = {https://waylandz.com/quant-book/第12课:市场状态识别}
}