ML

Market-Regimes with a Hidden-Markov Model

Posted by Big Data Memo on September 21, 2018

1 马尔可夫过程(Markov Process)

马尔可夫过程是一类随机过程。它的原始模型马尔可夫链,由俄国数学家A.A.马尔可夫于1907年提出。马尔可夫过程是研究离散事件动态系统状态空间的重要方法,它的数学基础是随机过程理论。

马尔可夫性

随机过程

若随机过程\(\{X(t), x \in T\}\)满足马尔可夫性,则称为马尔可夫过程。以上摘自<百度百科>。

同学们可能对以上的公式感到畏惧(不待见),那么我们看图说话吧,争取更好理解一些。

下图是一个马尔科夫过程的样例图,横线的数字表示从每个状态转移到另外一个状态的概率。

以上转移可以用状态转移矩阵表示为:

\[A = \left\{ \begin{matrix} & sunny & cloudy & rainy \\ sunny & 0.50 & 0.375 & 0.125 \\ cloudy & 0.25 & 0.125 & 0.625 \\ rainy & 0..25 & 0.375 & 0.375 \\ \end{matrix} \right\} \tag{1}\] \[B = \left\{ \begin{matrix} & walk & clean & shopping \\ sunny & 0.80 & 0.10 & 0.10 \\ cloudy & 0.50 & 0.25 & 0.25 \\ rainy & 0.25 & 0.50 & 0.25 \\ \end{matrix} \right\} \tag{1}\]

还是比较简单的,就是从一个状态变换到另一个状态的过程。如上过程有两个假设:

    1. 系统在时刻t的状态只与时刻t-1处的状态相关;(一阶马尔可夫过程)
    1. 状态转移概率稳定且与时间无关;(也称为齐次性或时齐性)
\[\begin{cases} a_{i,j} \ge 0 \quad (i,j = 1,2,3,...,n) \\ \Sigma_{j=1}^na_{i,j} = 1 \quad (i = 1,2,3,...,n) \end{cases} \tag{2}\] \[\begin{cases} b_{i,j} \ge 0 \quad (i = 1,2,3,...,n, j = 1,2,3,...,m) \\ \Sigma_{j=1}^mb_{i,j} = 1 \quad (i = 1,2,3,...,n) \end{cases} \tag{2}\]

2 隐马尔可夫模型(Hiden Markov Model)

隐马尔科夫模型则是由马尔可夫过程衍生出的双重随机过程,如刚我们看到的,其状态转移之间是个随机事件。同时,其状态和输出之间也是一个随机过程,如下图所示:

该图蓝色部分同上,就是一个马尔科夫转移过程,绿色部分表示输出,即我们可以观察到的值,现在,我们将马尔科夫转移过程中的状态称为隐藏状态,观察到的值称为观察状态,观察状态的集合表示为 O={O1,O2,O3,…OM}。

相应的,隐马尔科夫模型比马尔科夫过程多了一个假设(该假设又称为输出独立性假设),即输出仅与当前状态有关,可以用如下公式表示: \(P(O1,O2,…,Ot|S1,S2,…,St)=P(O1|S1)*P(O2|S2)*...*P(Ot|St)\)

其中,O1,O2,…,Ot为从时刻1到时刻t的观测状态序列,S1,S2,…,St则为隐藏状态序列。

\[A = \left\{ \begin{matrix} 0.50 & 0.375 & 0.125 \\ 0.25 & 0.125 & 0.625 \\ 0.25 & 0.375 & 0.375 \\ \end{matrix} \right\} \tag{1}\] \[B = \left\{ \begin{matrix} 0.80 & 0.10 & 0.10 \\ 0.50 & 0.25 & 0.25 \\ 0.25 & 0.50 & 0.25 \\ \end{matrix} \right\} \tag{1}\] \[\Pi = (0.4,0.4,0.2)^T\]

隐马尔科夫基本模型:

五个基本要素,即一个五元组{S,O,A,B,PI};

S:隐藏状态集合;

O:观察状态集合;

A:隐藏状态间的转移概率矩阵;

B:输出矩阵(即隐藏状态到输出状态的概率);

PI:初始概率分布(隐藏状态的初始概率分布);

其中,A,B,PI称为隐马尔科夫的参数,用X表示。基于如上五个基本要素,我们可以解决如下问题。

3 隐马尔可夫模型可解决的问题

HMM的三个基本问题是:

    1. 评估问题

给定观测序列 \(O=O_1O_2O_3…O_t\)和模型参数λ=(A,B,π),怎样有效计算某一观测序列的概率,进而可对该HMM做出相关评估。例如,已有一些模型参数各异的HMM,给定观测序列\(O=O_1O_2O_3…O_t\),我们想知道哪个HMM模型最可能生成该观测序列。通常我们利用forward算法分别计算每个HMM产生给定观测序列O的概率,然后从中选出最优的HMM模型。

这类评估的问题的一个经典例子是语音识别。在描述语言识别的隐马尔科夫模型中,每个单词生成一个对应的HMM,每个观测序列由一个单词的语音构成,单词的识别是通过评估进而选出最有可能产生观测序列所代表的读音的HMM而实现的。

    1. 解码问题

给定观测序列 \(O=O_1O_2O_3…O_t\) 和模型参数λ=(A,B,π),怎样寻找某种意义上最优的隐状态序列。在这类问题中,我们感兴趣的是马尔科夫模型中隐含状态,这些状态不能直接观测但却更具有价值,通常利用Viterbi算法来寻找。

这类问题的一个实际例子是中文分词,即把一个句子如何划分其构成才合适。例如,句子“发展中国家”是划分成“发展-中-国家”,还是“发展-中国-家”。这个问题可以用隐马尔科夫模型来解决。句子的分词方法可以看成是隐含状态,而句子则可以看成是给定的可观测状态,从而通过建HMM来寻找出最可能正确的分词方法。

    1. 学习问题

即HMM的模型参数λ=(A,B,π)未知,如何调整这些参数以使观测序列\(O=O_1O_2O_3…O_t\)的概率尽可能的大。通常使用Baum-Welch算法以及Reversed Viterbi算法解决。

如开头的那幅动态图,天气变化是一个马尔可夫过程,天气状态集合为{下雨,阴天,晴天}。根据天气状态不同,我们定义不同的观察状态为{宅着,自习,游玩}。假如我们已经有了转移概率和输出概率,即P(天气S1|天气S2)和P(事情O1|天气S1)等的概率都已知道,那么以下问题:

    1. 假如三天的天气变化是 下雨->晴天->阴天,那么我三天内 自习->游玩->宅着的概率是多大?
    1. 假如三天的序列是 自习->宅着->游玩,不知道天气状态的情况下这个做事序列的概率是多大?
    1. 假如一周内的天气变化是 晴天->晴天->阴天->晴天->阴天->晴天->阴天,那我们这一周最有可能的做事序列是什么?
    1. 假如我这一周做事序列是 自习->宅着->游玩->自习->游玩->宅着->自习,那么这一周的天气变化序列最有可能是什么?

4 隐马尔可夫模型与市场特征 11

金融资产按照经典模型遵循布朗运动。这也是Black-Scholes-Motern期权公式的基本假设。众所周知,这种模式过于简单。股票市场存在明显的波动性聚类效应,但总体趋势也在{牛市、熊市和横向市场}之间发生变化。正确分类市场特征(风格)也称为情绪对于成功交易至关重要。

使用HMM来进行市场特征判断,能够一次解决了两个问题。它为每个时间步确定状态概率和状态相关的多元分布的参数。如下简单示例: \(\alpha_t(i) = P(o_1,o_2,...o_t, i_t =q_i | \lambda)\)

\[\alpha_{t+1}(i) = \Big[\sum\limits_{j=1}^N\alpha_t(j)a_{ji}\Big]b_i(o_{t+1})\] \[\sum\limits_{i=1}^N\alpha_T(i)\] \[\alpha_1(i) = \pi_ib_i(o_1),\; i=1,2,...N\] \[\alpha_{t+1}(i) = \Big[\sum\limits_{j=1}^N\alpha_t(j)a_{ji}\Big]b_i(o_{t+1}),\; i=1,2,...N\] \[P(O|\lambda) = \sum\limits_{i=1}^N\alpha_T(i)\]

END