第十五章:状态转换模型——马尔可夫转换模型识别宏观状态

各位同学,咱们今天聊点硬核的。宏观状态这东西,说白了就是市场情绪的晴雨表。牛市、熊市、震荡市,这些词大家天天挂在嘴边,但怎么量化?怎么让机器自动识别?

我个人习惯用马尔可夫转换模型(Markov Switching Model)来解决这个问题。这玩意儿不是新东西,但用在波动率曲面上,效果出奇的好。

15.1 为什么需要状态转换模型?

先问个问题:你见过哪个市场永远一个样?没有吧。波动率曲面也是,牛市里微笑曲线平缓,熊市里陡峭得像悬崖。如果用单一模型去拟合,结果就是两头不讨好。

我在2018年做美股波动率交易时,就吃过这个亏。当时用GARCH模型预测波动率,结果2018年2月的“波动率末日”直接把我模型打爆了。后来我才意识到——市场状态变了,模型却没跟着变。

马尔可夫转换模型的核心思想很简单:市场有N种隐藏状态,每种状态下,数据的生成过程不同。模型会自动判断当前最可能处于哪个状态,并给出状态切换的概率。

核心公式:

P(S_t = j | S_{t-1} = i) = p_{ij}

其中S_t是t时刻的状态,p_{ij}是从状态i转移到状态j的概率。

15.2 模型结构:两状态马尔可夫转换

我一般用两状态模型,够用且稳定。状态1:低波动环境(牛市/震荡市);状态2:高波动环境(熊市/危机)。

每个状态下,波动率曲面的参数服从不同的分布。比如:

  • 状态1(低波): 隐含波动率均值15%,偏度小,峰度低
  • 状态2(高波): 隐含波动率均值30%,偏度大,峰度高

你想想看,如果模型告诉你当前有80%概率处于状态2,你还敢卖深度虚值期权吗?不敢了吧。

15.3 实战:用Python实现马尔可夫转换模型

下面这段代码,是我在实盘项目中用过的简化版。注意,这里用的是statsmodels库,它内置了马尔可夫转换模型。

import numpy as np
import pandas as pd
import statsmodels.api as sm
from statsmodels.tsa.regime_switching.markov_regression import MarkovRegression

# 假设我们有VIX指数日度数据
# 以及波动率曲面参数:ATM波动率、偏度、峰度
data = pd.read_csv('vol_surface_params.csv', index_col=0, parse_dates=True)

# 构建模型:两状态,因变量为ATM波动率
model = MarkovRegression(
    data['atm_vol'],
    k_regimes=2,          # 两个状态
    trend='c',            # 包含常数项
    switching_variance=True  # 允许方差在不同状态下不同
)

# 拟合模型
results = model.fit()

# 查看状态概率
smoothed_probs = results.smoothed_marginal_probabilities
print(smoothed_probs.tail())

我的经验: 拟合时如果报收敛错误,试试把search_reps参数调大,或者先标准化数据。我曾经因为数据量纲问题,卡了整整一个下午。

15.4 不同状态下的曲面特征

模型跑出来后,咱们得看看每个状态下的曲面长什么样。这才是重点。

特征 状态1(低波) 状态2(高波)
ATM波动率均值 12-18% 25-40%
偏度(Skew) 轻微负偏 深度负偏
峰度(Kurtosis) 3-4 5-8
曲面陡峭度 平缓 陡峭
期限结构 正常向上 倒挂或平坦

嗯,这里要注意:状态2的深度负偏意味着什么?意味着市场极度恐惧,虚值看跌期权贵得离谱。这时候做卖方要格外小心。

15.5 状态转换与宏观数据的联动

光看曲面还不够,得跟宏观数据对上。我一般会把状态概率跟以下指标做对比:

  • VIX指数: 状态2概率 > 70%时,VIX通常 > 25
  • 信用利差: 高收益债利差扩大时,状态2概率飙升
  • PMI数据: 低于50时,状态1概率下降

举个例子,2020年3月,模型在3月9日就给出了状态2概率98%的信号,比VIX冲到80还早了三天。这就是提前量。

避坑指南: 我曾经犯过一个错误——直接用状态概率做交易信号。结果发现,状态切换有滞后性,等模型确认了,行情已经走了一半。正确做法是:用状态概率作为权重,动态调整期权组合的Delta和Vega暴露。

15.6 知识体系总览

下面这张图,是我自己总结的马尔可夫转换模型在波动率曲面上的应用框架。你看一眼,心里就有数了。

马尔可夫转换模型与波动率曲面联动框架 输入数据 波动率曲面参数 马尔可夫转换模型 两状态 / 三状态 状态概率 P(状态1|数据) 不同状态曲面特征 偏度、峰度、期限结构 ATM波动率水平 宏观数据联动 VIX、信用利差、PMI 利率、通胀 交易策略应用 动态对冲 / 波动率套利 / 风险预警

15.7 模型评估与调参

模型跑完了,怎么知道好不好?我一般看三个指标:

  1. 状态区分度: 两个状态的参数估计值差异是否显著?比如状态1的波动率均值15%,状态2的30%,差异够大才算好。
  2. 状态持续性: 转移矩阵的对角线元素应该接近1(比如0.95以上),说明状态不会频繁切换,符合直觉。
  3. 经济意义: 状态切换的时间点是否跟重大宏观事件吻合?比如2020年3月、2008年9月。

小技巧: 如果模型给出的状态概率一直在0.4-0.6之间摇摆,说明两个状态区分度不够。这时候可以试试增加状态数,或者换一组输入变量。我一般会加入偏度和峰度作为额外解释变量。

好了,这一章的内容就到这儿。马尔可夫转换模型不是万能药,但用好了,确实能帮你提前感知市场情绪的变化。下一章咱们聊聊怎么把这些状态概率用到实盘交易中。


公众号:蓝海数据掘金营,微信deep3321