从广义上讲,我们可以将金融市场分为两种状态:牛市和熊市。牛市通常市场平稳且股价向上倾斜。熊市通常市场低迷且股价更具波动性。通常情况下,在任何一个特定的时刻,我们只能猜测目前市场所处的状态,无法真正确认到底是熊市还是牛市。本文中,我们通过使用有限混合模型来研究每日股市收益,创建金融压力指数,以确定目前市场状态。
混合模型提供了一种利用用简单分布模拟复杂分布的有效方法。高斯混合模型(Gaussian Mixture Model)是混合模型的一种,利用多个高斯分布函数的线性组合来刻画复杂分布。忽略对各个参数的依赖性,我们可以下式表达两种分布的混合:
$g(x_i)= \sum_ {j = 1} ^ 2 (\lambda_j f_j(x_i))$
其中$g()$是整体分布,$f_1()$是一个简单分布,成为一个分量(component),例如具有均值和方差的正态分布,$f_2()$是具有不同均值和不同方差的另一个正态分布。 $\lambda_1 =(1-\lambda_2)$,因此$\lambda()$可以解释为来自每个分布的概率。从理论上讲,如果我们有足够多的$f$分量,理论上我们就可以成功拟合出任意类型的分布$g$。
期望最大化算法(Expectation-maximization Algorithm)是机器学习十大算法之一,是寻找具有潜在变量的概率模型的最大似然解的一种通用的方法。我们利用R包mixtools来估计上证指数的$g$和$f$,在下面的代码中,k是分量的数量,lambda是混合比例的初始值。
> mix_mod <- normalmixEM(w0, k = 2, lambda = c(0.8, 0.2)) number of iterations= 222 > summary(mix_mod) summary of normalmixEM object: comp 1 comp 2 lambda 0.6230717 0.3769283 mu 0.0657219 -0.0400739 sigma 0.7512165 2.3425504 loglik at estimate: -8266.57
我们得到两个分布,一个更稳定,波动更低($\lambda=~0.657$),收益率均值为正($\mu=0.751$),另一个分布波动更高($\lambda=2.342$)和收益率均值为正($\mu=-0.040$)。 另外,lambda最终在62.3%的时间内处于稳定的状态中,即牛市,而37.7%的时间观测属于动荡的状态,即熊市。
根据观察结果,我们就可以从第一个或第二个分量获得该观察结果的后验概率。 因此,我们可以通过该概率来实际确定目前市场处于哪种状态。
两种状态如下图
分布如下图
仅基于收益率数据,数值算法非常直观地区分出了这两种的状态。
我们现在可以创建自己的金融压力指数。我们通过计算在某个移动窗口内被分类为熊市的观测数量,这种方法可以简单通过波动性聚类来解释。 我们使用120天移动窗口,并将结果标准化,最后利用Sigmoid函数(Logistic 函数)映射出金融压力的概率。
最终完成的上证指数的金融压力指数如下图,其中蓝色区域代表市场处于熊市的概率。
评论