马尔可夫切换模型:Hamilton 的状态模型
牛市和熊市不共享同一套参数,但状态本身看不见。讲 Hamilton (1989) 的状态切换模型、滤波与平滑概率的推导、EM 估计,以及为什么实时可用的信号总比历史图上显示的来得晚。
只要你注意到经济关系在衰退和扩张里表现不同、波动率会分档、相关性会在危机里换一副面孔,你就已经撞上了马尔可夫切换模型要处理的问题:一套参数描述不了两种世界。模型的想法本身很简单——参数随一个未观测的状态变化,状态走马尔可夫链。麻烦全在”未观测”三个字上:状态看不见,整个方法论的核心就是从数据里把它的概率推出来。这个推断有两个版本——只用截至今天的数据(滤波),和用上全部样本(平滑)——两者的区别会贯穿这篇文章:估计靠它、交易信号的真实滞后靠它、事后诸葛亮和实时可用之间的鸿沟也是它。
这篇文章推导 Hamilton (1989) 的马尔可夫切换模型,讲滤波与平滑递推、EM 估计和状态概率的使用。参考 Hamilton (1994, 第 22 章)、Krolzig (1997)、Tsay (2010, 第 5 章)。
基本设置
两状态马尔可夫切换 AR() 模型:
其中 是未观测状态,。截距、AR 系数、波动率都可以随状态换——实际建模时你可以只让其中一部分切换,比如只切均值或只切方差。
状态按马尔可夫链演化,转移矩阵为
其中 。金融数据上典型的读法是:状态 1 低波动、“正常”,状态 2 高波动、“危机”。估出来的 、 通常都接近 1——状态是持续的,进了一个状态平均要待 期才出来。这个持续性正是模型区别于”每天独立掷硬币选分布”的混合模型的地方,也是它能产生可用预测的地方。
动手之前先处理一个不起眼但会咬人的问题:不加约束,这个模型不可识别。把标签 1 和 2 整体互换,似然一模一样,优化器没有理由停在哪一个上,甚至可以在迭代中途换标签。解决办法是定一个约定打破对称,比如规定状态 1 方差更小()或均值更低;多数软件实现用的是数值技巧——每步按某个准则给状态排序。这不是理论洁癖,是不处理就会让 EM 输出无法解读的实际坑。
Hamilton 的 1989 模型
Hamilton 的原始应用是美国季度实际 GNP 增长率。他的设定比上面的一般形式更克制:两个状态,只有均值切换,AR 系数和方差不随状态变。用去均值形式写,,然后
状态 1 是扩张(),状态 2 是衰退()。注意均值通过 出现在滞后项里,所以似然依赖当期和过去共 5 期的状态组合——滤波时要跟踪的复合状态有 个。这是这个模型计算上比表面看起来重的原因。
结果是这篇论文出名的原因:完全不看 NBER 的任何信息,纯从 GNP 数据估出来的衰退状态概率,和 NBER 事后划定的衰退区间高度吻合。两个状态都很持续( 接近 1),衰退状态的均值增长显著为负。这件事的方法论含义比数字本身大——它表明商业周期更像离散的状态切换,而不是线性模型里对称的涨落;“衰退”从一个委员会的事后判断,变成了一个可以实时估计概率的统计对象。
滤波:把状态概率算出来
状态看不见,能算的是它的条件概率。向前一遍的递推叫 Hamilton 滤波。记预测概率 ,滤波概率 ——差别只在有没有看到当期观测。
递推每一步做两件事。先用马尔可夫转移把上期的滤波概率推到本期:
再用当期观测更新。状态 下的观测密度是
其中 是用状态 的参数从 AR() 算出的条件均值, 是正态密度。于是
这就是一次标准的贝叶斯更新:先验 乘似然、归一化。整个滤波就是”转移、更新”交替着从 跑到 。
似然函数是滤波的免费副产品。每期的积分密度——把状态积掉之后 的预测密度——正是滤波更新式的分母:
样本似然就是它们的乘积:
取对数求和:
跑一遍滤波,状态概率和似然同时到手。
平滑:用全样本回头看
滤波概率只用到截至 的数据。事后分析时你有整个样本,问的应该是 ——平滑概率。Kim 平滑器(Kim, 1994)在滤波之后从 向 倒着跑一遍:
直觉:未来的观测对”当时处在哪个状态”也有话说——如果 之后市场崩了,那 期已经身处危机状态的概率就该被上调。平滑概率画出来比滤波概率干净得多、状态区间的边缘更利落,正因为它偷看了未来。这个”偷看”后面算账时会回来。
EM 估计
参数怎么估?直接对 做数值优化可行但难受:曲面多峰,状态一多尤其严重。EM 算法(Dempster, Laird & Rubin, 1977)在这类隐变量模型上更稳健,而且它的两步在这里都有闭式解。
E 步:拿当前参数跑滤波和平滑,得到 ,以及相邻两期的平滑联合概率 。后者用滤波和平滑的产出直接拼出来:
M 步:把平滑概率当权重,更新参数。状态 的 AR 系数是一个加权最小二乘:
其中 。方差是加权残差平方和:
转移概率是”从 转到 的期望次数”除以”处在 的期望次数”:
每个公式都是”如果状态可见你会怎么算”的软化版:状态可见时按状态分组回归,状态不可见就按状态概率加权。E 步和 M 步交替到收敛。EM 单调——似然每步不降——但单调不等于到顶,它照样会停在局部极大上。
所以初始化是实打实的工程问题。标准做法是多个随机起点:跑 50-100 组随机初始化,留似然最高的那个。也可以先按简单统计量(均值、方差)做 K 均值聚类来初始化状态参数,或者从 2 状态模型开始逐个加状态、用上一轮的拟合热启动。计算上每次 EM 迭代是 ,对 线性、对状态数 平方——、 转瞬即逝,、 就要等了。
几个状态才对
理论上 AIC/BIC 都能用(BIC 更节俭),但先算清楚参数增长有多快:全切换的 状态 MS-AR(),每个状态有截距、 个 AR 系数和方差共 个参数,转移矩阵再贡献 个自由参数,总计 。四状态 AR(4) 就是 个参数——不算天文数字,但足够过拟合了。
更该依赖的其实是经济纪律而不是信息准则。金融应用从 (低波/高波)起步,这是最常见也最稳的设定;只有当额外状态既有清晰的经济解读、数据又强烈支持时才加。当心”虚假状态”——样本内被挑出来、样本外不再出现的状态,它们通常在吸收某一段独特历史(一次石油危机、一次疫情),而不是在刻画会重复的结构。判断办法很朴素:把平滑状态概率画出来,每个状态的高概率时段应该对应认得出来的经济事件;状态间的参数差异应该讲得出经济故事; 算出的平均持续期应该和已知事实同量级——比如衰退状态的持续期应该落在美国战后衰退平均约 10 个月的附近。状态讲不出故事,就退回更简单的设定。
预测
预测未来状态就是把转移矩阵往前迭代:, 时收敛到马尔可夫链的平稳分布——预测得越远,模型知道的越少,最后只剩无条件的状态占比。 的点预测按预测状态概率对各状态的条件均值加权:
这个预测自动带着状态不确定性。但也要清楚它的脆弱之处:预测对最近的状态概率高度敏感,而状态变化往往事后一目了然、实时模糊不清——模型正处在换状态的当口时,滤波概率恰恰最摇摆。
代码:statsmodels 里的马尔可夫切换
import pandas as pd
from statsmodels.tsa.regime_switching.markov_regression import MarkovRegression
model = MarkovRegression(y, k_regimes=2, trend='c', switching_ar=False)
result = model.fit()
print(result.summary())
# 平滑状态概率
print(result.smoothed_marginal_probabilities.head())
# 状态特定参数
for i in range(2):
print(f"Regime {i}: mean={result.params[f'const[{i}]']:.3f}, "
f"variance={result.params[f'sigma2[{i}]']:.3f}")
# 预测
forecast = result.forecast(steps=12)
statsmodels 对基本的马尔可夫切换模型支持良好;更复杂的形式(因子切换、时变转移概率)多半要自己写。
一个股票例子,以及滤波和平滑的账
拿长样本的月度股指收益拟合一个 2 状态的均值-方差切换模型(MS-AR(0)):
典型的估计形态是:一个状态均值为正、波动率低——牛市;另一个状态均值为负、波动率大约翻倍——熊市;两个状态的持续概率都在 0.9 以上,牛市状态平均待得比熊市久。具体数字随样本期和市场变化,别把任何一组估计当常数背。画出平滑概率,熊市状态的高概率时段会落在历史上认得出的大跌区间(70 年代中、80 年代初、2000-02、2008-09、2020 附近),这是模型在正常工作的样子。
到这里很容易顺手设计一条规则:熊市状态的概率超过某个阈值就减仓,降回去就加回来。可以做,但先把开头埋的那笔账算清楚:你回测里看到的漂亮状态划分是平滑概率,用了未来数据;实时交易只能用滤波概率。滤波概率对状态变化的反应系统性地晚于平滑概率——市场转熊的头几个月,滤波概率往往还在犹豫。所以基于历史平滑概率评估的信号质量,是实盘拿不到的上界;老老实实用滤波概率重跑一遍,信号来得更晚、效果打折是常态。这不是这个模型的缺陷,是所有隐状态模型共同的账,只是马尔可夫切换的图特别容易骗人——平滑概率的状态边缘太干净了。
同样的框架换个变量就是另一个应用:短期利率上两状态对应宽松与紧缩,对固定收益配置有信息;通胀上对应大缓和与高波动通胀期,结构变化下做通胀预测有用;波动率上配合 MS-GARCH(每个状态一套 ,Hamilton & Susmel, 1994)用于风险管理——危机状态概率高时提高资本要求。所有这些应用共享同一条纪律:实时决策用滤波概率,事后叙事才用平滑概率。
变种和边界
围绕基本模型有一圈值得知道名字的变种。时变转移概率(Diebold, Lee & Weinbach, 1994)让 依赖可观测变量,状态变化与商业周期指标相关时有用。马尔可夫切换 VAR(Krolzig, 1997)把整套东西搬到多变量系统上,用于多宏观变量的商业周期分析;再配上因子结构就是马尔可夫切换动态因子模型。往更一般处看,马尔可夫切换模型本身就是一个隐马尔可夫模型(HMM)——发射分布恰好是条件高斯的那种;一般的 HMM 允许任意发射分布,比如计数数据用泊松。往更简单处看有两个近亲:门槛 AR(TAR)用过去值的确定性规则定状态( 算状态 1 之类),好估但硬;平滑转换 AR(STAR)把状态权重做成过去值的光滑函数,算是马尔可夫切换的连续类比。区别的关键在状态是否由可观测量决定:TAR/STAR 的状态看得见,马尔可夫切换的状态永远只能推断。
估计这边还有一条贝叶斯路线(Kim & Nelson, 1999 是标准参考)。MCMC 给出参数和状态概率的完整后验:不确定性自然量化、标签切换可以靠先验约束处理、小样本推断更可靠——代价是算得慢,而且结果对先验设定敏感。实践里 EM 的极大似然是默认,需要认真对待模型不确定性时(比如风险管理)再上贝叶斯。
拟合之后:验证
模型拟合完不是终点。至少做这几件事:留出最后一段样本(比如 20%)做真正的样本外一步预测,和实际值对账;把模型在留出样本上的预测似然和朴素基准(常数均值、普通 AR)比,赢不了基准的状态模型不值得部署;有外部状态分类可对照时(NBER 衰退日期是现成的)算命中率;在滚动窗口上重估,看状态参数稳不稳——大幅漂移提示结构突变,而结构突变正是这类模型自己也躲不开的软肋;最后看标准化残差是否接近 iid,不是就说明设定错了。这套验证里最重要的还是那条老原则:一切样本外评估用滤波概率,别让平滑概率的后见之明混进来。
参考文献
- Dempster, A. P., Laird, N. M., & Rubin, D. B. (1977). Maximum likelihood from incomplete data via the EM algorithm. Journal of the Royal Statistical Society B, 39(1), 1-38.
- Diebold, F. X., Lee, J.-H., & Weinbach, G. C. (1994). Regime switching with time-varying transition probabilities. In C. Hargreaves (Ed.), Nonstationary Time Series Analysis and Cointegration. Oxford University Press.
- Hamilton, J. D. (1989). A new approach to the economic analysis of nonstationary time series and the business cycle. Econometrica, 57(2), 357-384.
- Hamilton, J. D. (1994). Time Series Analysis. Princeton University Press. Ch. 22.
- Hamilton, J. D., & Susmel, R. (1994). Autoregressive conditional heteroskedasticity and changes in regime. Journal of Econometrics, 64(1-2), 307-333.
- Kim, C.-J. (1994). Dynamic linear models with Markov-switching. Journal of Econometrics, 60(1-2), 1-22.
- Kim, C.-J., & Nelson, C. R. (1999). State-Space Models with Regime Switching: Classical and Gibbs-Sampling Approaches with Applications. MIT Press.
- Krolzig, H.-M. (1997). Markov-Switching Vector Autoregressions: Modelling, Statistical Inference, and Application to Business Cycle Analysis. Springer.
- Tsay, R. S. (2010). Analysis of Financial Time Series (3rd ed.). Wiley. Ch. 5.