基于变分贝叶斯隐马尔科夫模型的股票价格指数预测
Prediction of Stock Price Index Based on Variational Bayesian Hidden Markov Model
DOI: 10.12677/AAM.2023.123117, PDF, HTML, XML, 下载: 284  浏览: 512 
作者: 安海钰, 侯 文*:辽宁师范大学数学学院,辽宁 大连
关键词: 隐马尔科夫模型变分贝叶斯算法股票价格预测Hidden Markov Model Variational Bayes Algorithm Stock Price Forecast
摘要: 本文将传统的隐马尔科夫模型中用于参数学习的Baum-Welch算法改进为变分贝叶斯算法,并将变分贝叶斯隐马尔科夫模型应用于股票价格指数预测,分别选取国外市场美股S&P500指数以及国内市场沪深300指数进行预测,并与传统的隐马尔科夫模型、BP神经网络、ARIMA模型相比较,得出结论变分贝叶斯隐马尔科夫模型对于大规模数据处理更有优势,运算速度快且预测精度更高。
Abstract: In this paper, the Baum-Welch algorithm used for parameter learning in the traditional Hidden Markov Model is improved to the variational Bayes algorithm, and the variational Bayes Hidden Markov model is applied to the stock price index prediction. The S&P500 index of the United States stock in foreign markets and the HuShen300 index of the domestic market are selected for predic-tion. Compared with the traditional Hidden Markov Model, BP neural network and ARIMA model, it is concluded that the variational Bayes Hidden Markov Model has more advantages for large- scale data processing, and the operation speed is more faster and the prediction accuracy is higher.
文章引用:安海钰, 侯文. 基于变分贝叶斯隐马尔科夫模型的股票价格指数预测[J]. 应用数学进展, 2023, 12(3): 1152-1163. https://doi.org/10.12677/AAM.2023.123117

1. 引言

股票价格指数是证券交易所或金融机构编制出的,可以反映整个股票市场上的各支股票价格的总体水平及变动情况的指标,它能灵敏反应一个国家或地区政治、经济的发展状态。因此,预测股票价格指数对投资者进行投资理财,判断当前经济形势具有重要意义。

对股票的价格指数预测可以采用多种方法,例如ARIMA、BP神经网络、SVM方法,相比之下,隐马尔科夫模型(Hidden Markov Models, HMM)的优点更多的在于其坚实的理论基础,既往的学者也探究过马尔科夫模型、隐马尔科夫模型以及改良后的隐马尔科夫模型在金融领域的应用,例如Hassan和Nath在2005、2007的两篇文章中应用HMM来预测股票价格 [1] [2] ;朱嘉瑜、叶海燕、高鹰结合人工神经网络技术与PSO算法,得到APHMM组合模型 [3] ;兰锦池用Gibbs抽样的MCMC方法获得Bayes隐马尔科夫模型的后验估计进而刻画人民币汇率的动态变化规律 [4] ;汪金菊建立HMM-ARMA-GARCH模型度量金融市场风险 [5]。可以看出,目前不少学者已经运用HMM以及改进的HMM模型来进行股票预测,本文也想从改进的角度,提出更加优化的模型。

本文的创新之处在于从隐马尔科夫模型算法本身进行改进,将原有的求解模型参数学习问题的Baum-Welch算法转变成变分贝叶斯算法(Variational Bayesian, VB),以往的很多研究已经表明VB相比其他方法采样更快,适合大规模数据,需要快速训练模型的场景。因此本文将VB与HMM结合建立变分贝叶斯隐马尔科夫模型(以下简称VBHMM),探讨组合模型进行股票价格指数预测的可行性。

2. 隐马尔科夫模型的理论基础

2.1. 马尔科夫链

隐马尔科夫模型是在马尔科夫链的基础上延伸而来,它有两个部分组成即马尔科夫链与一般随机过程 [6]。

{ X t , t T } 为一随机过程,对任意的t以及状态 x 0 , x 1 , , x n ,有下面的式子成立

P { X t + 1 = x t + 1 | X 0 = x 0 , X 1 = x 1 , , X n = x n } = P { X t + 1 = x t + 1 | X n = x n }

即某一个时刻t的状态只依赖于前一个时刻 t 1 的状态,也称为马尔科夫链的无记忆性 [7]。

2.2. 隐马尔科夫模型相关定义

隐马尔科夫模型顾名思义,它的状态不能直接观察到,隐马尔科夫模型中包含两种状态类型可观测状态和隐状态,两者之间并没有一一对应关系,所以称为“隐”马尔科夫模型,如图1所示。

Figure 1. Diagram of Hidden Markov Models

图1. 隐马尔科夫模型图示

记隐状态集合为 Q = { q 1 , q 2 , , q K } ,可观测状态集合为 V = { v 1 , v 2 , , v M } ,隐状态序列为 Z = { z 1 , z 2 , , z T } ,观测态序列为 X = { x 1 , x 2 , , x T } ,需要注意的是这里的K与M不一定相等。

HMM模型记为 Λ = ( A , B , Π ) ,详解如下:

1) A = [ a i j ] K × M a i j = P ( z t + 1 = q j | z t = q i ) ,A称为状态转移矩阵;

2) B = [ b j ( m ) ] K × M b j ( m ) = P ( x t = v m | z t = q j ) ,B称为观测状态生成矩阵;

3) Π = [ π ( z ) ] K π ( z ) = P ( z 1 = q i ) Π 为隐状态初始概率分布。

表1所示为HMM模型各参数的含义。

Table 1. Meaning of model parameters

表1. 模型参数含义

2.3. 关于隐马尔科夫模型的3个经典问题

1) 识别问题。已知观测序列 X = { x 1 , x 2 , , x T } 和模型参数 Λ = ( A , B , Π ) ,计算观测序列出现的概率 P ( X | Λ ) ,通常采用前向-后向算法来求解此问题;

2) 模型参数学习问题。即给定观测序列 X = { x 1 , x 2 , , x T } ,求出模型的各个参数 Λ = ( A , B , Π ) ,最经典做法的是采用基于EM (Expectation Maximization)算法的Baum-Welch算法求解;

3) 解码问题。已知观测序列 X = { x 1 , x 2 , , x T } 和模型参数 Λ = ( A , B , Π ) ,要求使得 P ( Z | X ) 最大时的隐状态序列 Z = { z 1 , z 2 , , z T } ,通常使用Viterbi算法求解。

3. 变分贝叶斯方法原理

变分贝叶斯即变分推断,类属于贝叶斯近似推断方法,它的特点是将后验推断问题转化为优化问题进而求解,相比于以往学者用到的马尔科夫链蒙特卡罗方法(Markov Chain Monte Carlo, MCMC),VB更适合大规模数据近似推断问题的求解 [8] [9]。

X = { x 1 , x 2 , , x T } 是观测变量, θ = { θ 1 , θ 2 , , θ p } 是模型参数,根据贝叶斯定理有

p ( θ | x ) = p ( x , θ ) p ( x ) = p ( x | θ ) p ( θ ) p ( x )

其中, p ( θ | x ) 即为所求的后验分布, p ( θ ) 是参数的先验信息, p ( x | θ ) 是似然函数, p ( x ) 可以写为如下边际分布的形式:

p ( x ) = θ p ( x , θ ) d θ = θ p ( x | θ ) p ( θ ) d θ

VB将求解 p ( θ | x ) 的问题转化为在Q中找到距离 p ( θ | x ) 最近的点 q * ,这里的距离用KL距离(Kullback-Libler Divergence)来定义,即

q * ( θ ) = arg q ( θ ) Q min KL ( q ( θ ) | | p ( θ | x ) ) = arg q ( θ ) Q min θ q ( θ ) log [ q ( θ ) p ( θ | x ) ] d θ

又因为 p ( x ) 是只与确定的观测变量有关,所以在计算中可以认定为常数,有

log p ( x ) = E q [ log p ( x ) ] = θ q ( θ ) log p ( x ) d θ = θ q ( θ ) log p ( x , θ ) p ( θ | x ) d θ = θ q ( θ ) log p ( x , θ ) q ( θ ) p ( θ | x ) q ( θ ) d θ = θ q ( θ ) log p ( x , θ ) q ( θ ) d θ + θ q ( θ ) log q ( θ ) p ( θ | x ) d θ = ELBO + KL ( q ( θ ) | | p ( θ | x ) )

这里的ELBO (Evidence Lower Bound)可以由Jensen不等式推导得出,过程如下:

log p ( x ) = log θ p ( x , θ ) d θ = log θ q ( θ ) p ( x , θ ) q ( θ ) d θ θ q ( θ ) log p ( x , θ ) q ( θ ) d θ = ELBO

又因为 K L 0 ,则优化问题进一步转化为

q * ( θ ) = arg q ( θ ) Q min KL ( q ( θ ) | | p ( θ | x ) ) = arg q ( θ ) Q max ELBO ( q )

再根据Mean Field理论

q ( θ ) = i = 1 p q i ( θ i )

θ 分为两部分 θ j 与除 θ j 以外的部分 θ j 对ELBO进行积分,可以得到

ELBO [ q j ( θ j ) ] = θ q ( θ ) log p ( x , θ ) q ( θ ) d θ = E q [ log p ( x , θ ) ] E q [ log q ( θ ) ] = θ j q j ( θ j ) E q j [ log p ( x , θ ) ] d θ j E q j [ log q j ( θ ) ] + const

这里要使ELBO最大,则

log q j * ( θ j ) = E q j [ log p ( x , θ ) ] + const q j * ( θ j ) exp { E q j [ log p ( x , θ ) ] }

经过标准化求出const的值,最终得到表达式

q j * ( θ j ) = exp { E q j [ log p ( x , θ ) ] } z j exp { E q j [ log p ( x , θ ) ] } d θ j

利用坐标上升法迭代求解。

4. VBHMM理论

4.1. 共轭先验分布的设定

本文使用变分贝叶斯算法来求解隐马尔科夫模型的参数,基于上文的VB理论结合HMM推导如下:

首先需要假定模型参数的先验分布,易证狄利克雷分布是状态转移矩阵A的共轭先验分布,因此,对于任意一个隐状态 q i ,对其每一个转移概率 { a i j | j = 1 , , K } 都给定一个独立的狄利克雷先验分布,

p ( A ) = i D i r ( a i | { α i j ( 0 ) } ) ,

{ α i j ( 0 ) } 为超参数的初始化。由于金融时间序列一般情况下都不是标准的高斯分布,这里使用多元混合高斯分布,即每一个观测概率都是一个一元高斯分布,而不同的取值则对应不同的高斯分布,设 { ϕ k } 表示第k个观测状态的概率密度函数的参数集合,有

p k ( x t | ϕ k ) = N ( x t | μ k , τ k 1 ) = ( τ k 2 π ) T / 2 exp { τ k 2 t = 1 T ( x t μ k ) 2 } ,

给定 μ τ 的共轭先验分布,其中 μ τ 下的条件分布是一个高斯分布, τ 来自一个伽玛分布。这是一个强假设,但这样假设的优势在于最终得到的后验分布也是一个高斯分布,式中 { m k ( 0 ) , λ k ( 0 ) , u k ( 0 ) , v k ( 0 ) } 是初始化的超参数,有

p ( μ | τ ) = k = 1 K N ( μ k | m k ( 0 ) , ( λ 0 ( 0 ) τ k ) 1 ) p ( τ ) = k = 1 K G a m ( τ k | u k ( 0 ) , v k ( 0 ) ) .

4.2. 变分后验分布的计算

根据变分贝叶斯算法,给出模型参数的后验分布:

q i ( a i ) = D i r ( a i | { α i j } ) q ( μ k | τ k ) = N ( μ k | m k , ( λ k τ k ) 1 ) q ( τ k ) = G a m ( τ k | u k , v k )

其中迭代之后的超参数计算如下,

α i j = α i j ( 0 ) + t = 1 T 1 q z ( z 1 = i , z i + 1 = j ) , m k = [ λ k ( 0 ) m k ( 0 ) + t = 1 T q z ( z t = k ) x t ] λ k 1 , λ k = λ k ( 0 ) + t = 1 T q z ( z t = k ) , u k = u k ( 0 ) + 1 2 t = 1 T q z ( z t = k ) , v k = v k ( 0 ) + 1 2 [ t = 1 T q z ( z t = k ) x t 2 + λ k ( 0 ) m k ( 0 ) 2 λ k m k 2 ] .

那么 q z ( z ) 的变分后验分布就可以写为:

q z ( z ) t = 1 T k = 1 K [ exp ( E q ( log p k ( x t | ϕ k ) ) ) ] z t k t = 1 T i = 1 K j = 1 K exp [ ( E q ( log a i j ) ) ] z t i z t + 1 j = t = 1 T k = 1 K [ exp 1 2 ( Γ ( u k ) log v k u k v k ( x t m k ) 2 λ k 1 ) ] z t k t = 1 T i = 1 K j = 1 K [ exp ( Γ ( α i j ) Γ ( k = 1 K α i k ) ) ] z t i z t + 1 j

这里的 Γ 为伽玛函数,其中,

z t k = { 1 , z t = k 0 , z t k

由此可以推导出变分贝叶斯算法中参数的重估公式如下,其中 a i j * 为状态转移概率的估计, b i j * 为观测概率的估计,

a i j * = exp ( Γ ( α i j ) Γ ( k = 1 K α i k ) ) b i j * = exp 1 2 ( Γ ( u k ) log v k u k v k ( x t m k ) 2 λ k 1 ) .

5. 实证研究

5.1. 数据选取与描述

为了综合评估VBHMM模型的预测性能,本次研究选取国外市场美股S&P500指数以及国内市场沪深300指数进行预测分析,选取其中的开盘价、最高价、最低价、收盘价为研究数据。利用训练集进行VBHMM模型的参数估计,考虑到收盘价在股票预测中更为重要,这里我们只对两只股指的收盘价进行预测。

鉴于VBHMM对于大规模数据处理起来更快、更简单,本次研究样本容量与以往研究相比更加庞大。对于S&P500指数选取2009年3月2日到2022年6月7日中交易日的数据,其中从2009年3月2日到2021年1月22日共3000个数据作为训练集,从2021年4月1日到2022年6月7日300个数据作为测试集。如图2所示为S&P500指数2009年3月2日到2022年6月7日变化曲线。图中横坐标代表年份,纵坐标代表股票价格指数。

对于沪深300指数选取2008年9月1日到2022年5月25日中交易日的数据,其中从2008年9月1日到2020年12月31日共3000个数据作为训练集,从2021年3月1日到2022年5月25日300个数据作为测试集。如图3所示为沪深300指数2008年9月1日到2022年5月25日变化曲线。图中横坐标代表年份,纵坐标代表股票价格指数。

Figure 2. Change curve of S&P500 index from March 2, 2009 to June 7, 2022

图2. S&P500指数2009年3月2日到2022年6月7日变化曲线

Figure 3. Change curve of HuShen300 Index from September 1, 2008 to May 25, 2022

图3. 沪深300指数2008年9月1日到2022年5月25日变化曲线

5.2. 股票价格预测

本文选取平均绝对百分比误差(Mean Absolute Percentage Error, MAPE)来检验VBHMM模型预测精度,n为测试集的样本数, x d 为真实值, x d * 为预测值,公式为:

MAPE = 1 n d = 1 n | x d * x d x d | × 100 % .

对S&P500指数以及沪深300指数进行d日加权预测结果如下 [10] :

Table 2. MAPE value of d-day weighted forecast (%)

表2. d日加权预测的MAPE值(%)

表2为d日加权预测的MAPE值,横向来看单日预测结果波动较大,随着加权天数增加MAPE值越来越小,20日与30日结果相差较小,综合考虑模型复杂度,选择20日加权更适合模型预测。纵向来看VBHMM模型对于美股S&P500指数的预测结果优于沪深300指数,考虑到国内市场受政策影响较大,结果具有一定的现实意义。

图4为20日加权的S&P500指数预测图,图5为20日加权的沪深300指数预测图,图中蓝色为实际值,红色为预测值,横坐标代表天数,纵坐标代表股票价格指数。从图中也可以看出两条曲线高度吻合,预测结果较好。

Figure 4. 20-day weighted forecast chart for the S&P500 index

图4. S&P500指数20日加权预测图

Figure 5. 20-day weighted forecast chart of HuShen300 index

图5. 沪深300指数20日加权预测图

5.3. 不同模型预测结果比较

从理论上来看,VBHMM模型与HMM模型相比较在求解模型参数问题上使用方法不同,传统的HMM模型采用Baum-Welch算法,是依托极大似然估计来求解,而VBHMM则是利用变分推断原理转化为优化问题求解。变分推断的优势就在于其对样本量较大的问题处理速度更快,因此近年来被广泛应用于机械工程以及脑科学领域 [11],本文也是对VBHMM模型应用于股票价格预测上的一次尝试。

因此为进一步探究VBHMM模型的预测性能,比较VBHMM模型与HMM模型相比在处理大规模数据上的精度,我们又对S&P500指数以及沪深300指数利用HMM模型、BP神经网络模型、ARIMA模型分别进行预测,对S&P500指数的预测结果如图6~8所示,对沪深300指数的预测结果如图9~11所示,图中蓝色为实际值,红色为预测值,横坐标代表天数,纵坐标代表股票价格指数。

Figure 6. 20-day weighted prediction plot of the HMM for the S&P500 index

图6. HMM模型对S&P500指数的20日加权预测图

Figure 7. Prediction plot of BP neural network for S&P500 index

图7. BP神经网络对S&P500指数预测图

Figure 8. Prediction plot of ARIMA model for S&P500 index

图8. ARIMA模型对S&P500指数预测图

Figure 9. 20-day weighted prediction plot of the HMM for the HuShen300 index

图9. HMM模型对沪深300指数的20日加权预测图

Figure 10. Prediction chart of the HuShen300 index by BP neural network

图10. BP神经网络对沪深300指数预测图

Figure 11. Prediction chart of the HuShen300 index by ARIMA model

图11. ARIMA模型对沪深300指数预测图

从上图中可以看出,对于S&P500指数和沪深300指数的预测,HMM模型、BP神经网络模型、ARIMA模型的预测结果虽然总体走势一致,然而个别天数预测值与实际值有一定程度的差异,模型表现逊色于VBHMM模型。为了更加直观地比较各模型间预测精度的差异,计算各自的MAPE值如表3所示:

Table 3. Comparison of MAPE prediction accuracy of different models (%)

表3. 不同模型的MAPE预测精度对比(%)

从表中可以看出,在四类模型中,VBHMM模型预测精度最高,其次是20日加权计算的传统的HMM模型,BP神经网络模型相比之下误差较大,ARIMA模型表现最差。可能原因在于,ARIMA模型是单变量输入单变量输出的时间序列预测模型,因此在实际操作中是用收盘价来预测收盘价,相比其他三个模型用四个价格来预测收盘价,造成结果误差较大。但由于ARIMA模型是非常经典的时间序列预测模型,因此本文把它作为对比模型共同比较也能使结论更加具有代表性。另外从结果中也可以看出,同样是20日加权的情况下,VBHMM与HMM相比对于大样本量的预测精度有较大提高,预测结果更加准确。

6. 结论与展望

本文对HMM模型的相关理论进行了总结与分析,然后引入变分贝叶斯方法,替换传统的Baum-Welch算法来进行HMM模型的参数估计。并将改进算法用于股票价格指数的预测,分别选取美股S&P500指数和沪深300指数两只股指进行预测,最后将VBHMM模型的预测结果与HMM模型、BP神经网络模型、ARIMA模型的MAPE预测精度相比较,得出结论VBHMM模型相较于传统的HMM模型以及其他模型预测精度更高、处理速度更快,体现了VBHMM模型对大规模股票数据预测的优越性。

对于股票价格预测,除了需要参照每日的价格变动情况,还应综合考虑国家政策调整、国内外经济环境、股民情绪等外部因素 [12],本文研究只考虑了股票价格,没有综合考虑其他经济和非经济因素,这也是在之后的研究中亟待解决的问题。

NOTES

*通讯作者。

参考文献

[1] Hassan, M.R. and Nath, B. (2005) Stock Market Forecasting Using Hidden Markov Model: A New Approach. Interna-tional Conference on Intelligent Systems Design & Applications. IEEE Computer Society, Warsaw, 8-10 September 2005, 192-196.
https://doi.org/10.1109/ISDA.2005.85
[2] Hassan, R. and Nath, B. (2007) A Fusion Model of HMM, ANN and GA for Stock Market Forecasting. Expert Systems with Applications, 33, 171-180.
https://doi.org/10.1016/j.eswa.2006.04.007
[3] 朱嘉瑜, 叶海燕, 高鹰. 基于隐马尔可夫模型的股票价格预测组合模型[J]. 计算机工程与设计, 2009, 30(21): 4945-4948.
[4] 兰锦池. 基于隐马尔科夫模型的人民币汇率研究[D]: [硕士学位论文]. 上海: 华东师范大学, 2012.
[5] 汪金菊. 基于HMM的VaR风险度量及其实证分析[J]. 合肥工业大学学报, 2013, 36(5): 632-636.
[6] 龚光鲁, 钱敏平, 等. 应用随机过程教程[M]. 北京: 清华大学出版社, 2004.
[7] 谢锦辉. 隐Markov模型(HMM)及其在语音处理中的应用[M]. 武汉: 华中理工大学出版社, 1995: 11-40.
[8] Rezek, I. and Roberts, S.J. (2002) Ensemble Hidden Markov Models for Biosignal Analysis. 2002 14th International Conference on Digital Signal Processing Proceedings, DSP 2002 (Cat. No. 02TH8628), 1, 387-391.
[9] McGrory, C.A. and Titterington, D.M. (2009) Variational Bayesian Analysis for Hidden Markov Models. Australian & New Zealand Journal of Statistics, 51, 227-244.
https://doi.org/10.1111/j.1467-842X.2009.00543.x
[10] 龚建. 基于隐马尔可夫链的证券价格模型及实证分析[D]: [硕士学位论文]. 上海: 复旦大学, 2010.
[11] Chen, K., Wang, R. and Liu, D.Q. (2020) Hidden State Dynamics Reveal the Prolonged Inactive State across the Adult Lifespan. bioRxiv.
https://doi.org/10.1101/2020.01.27.920652
[12] 康海斌, 王正军. 投资者情绪与货币政策对股市波动影响的实证[J]. 统计与决策, 2019, 35(13): 174-176.