基于CNN-LSTM模型股票价格预测研究
2023-01-16张苏林宋迦南
□文/张苏林 宋迦南
(重庆理工大学 重庆)
[提要]股票市场的波动影响方方面面,对股票价格的预测具有重要意义。以我国股票市场中33支大型上市公司股票收盘价格作为研究对象,通过搭建CNN-LSTM股票价格预测模型对股票收盘价格进行预测研究。发现相较于其他的股票价格预测模型,使用CNN-LSTM复合模型能更好地进行股票价格预测,股票价格在一定程度上存在可预测性。股票价格的有效预测可以为投资者提供参考,提高投资者理性程度,进而提高我国股票市场有效程度。
引言
股票市场是我国金融市场体系的重要组成部分,股票市场在一定程度上反映着我国经济的发展情况,发挥着晴雨表的作用。股票价格的波动会影响居民消费和企业投资,最终影响到实体经济。因此,对于股票价格的预测引起了广大学者的关注。股票价格受到多种因素的共同影响,具有非线性、高噪声、非平稳性的特点,经典的时间序列模型难以对其进行较为准确的预测。随着深度学习算法在图像识别、无人驾驶、自然语言处理等方面取得成功,且其在处理高纬度、非线性的数据上有巨大优势,深度学习也逐渐被应用在金融领域。本文主要研究基于深度学习的算法模型能否对金融时序数据进行建模研究以及能否更为准确地预测股票价格,验证股票市场中的股票价格是否存在可预测性。通过这样的研究,可以为投资者提供决策参考,提高其对股票市场风险的预警能力,也可以丰富金融时间序列数据的处理方法。
一、文献综述
许多研究学者开始使用深度学习模型来处理金融时间序列数据,并与传统方法做比较,突出了深度学习在股票价格预测方面的准确性。杨青和王晨蔚(2019)以全球30多种股票指数作为研究对象,使用长短期记忆网络对其收盘指数进行预测,发现在精度上都高于支持向量机和时间序列模型。彭燕和刘宇红(2019)使用长短期记忆网络模型对苹果公司的股票价格进行预测,经过不断优化算法模型的超参数,准确率提高了30%。罗鑫和张金林(2020)使用卷积神经网络和长短期记忆网络模型,从多时间角度预测了沪深300指数的收盘指数,准确率提高了之外,根据预测结果进行模拟交易,还能够获得超过市场收益的超额收益。李辉和化金金(2021)使用随机森林和长短期记忆网络模型对浦发银行的股票价格进行预测,发现先使用随机森林对数据特征进行选择,然后再使用长短期记忆网络模型进行股票价格预测,可以提高预测的准确性,从实证的角度验证了通过合理的网络模型设计,可以更好地处理金融时间序列数据。王东(2021)在使用长短期记忆网络预测股票价格之前对输入变量进行主成分提取,在缩短训练时间的同时提高了准确性。刘铭、单玉莹(2021)采用一种基于经验模态分解和长短期记忆网络模型的组合预测方法,通过对沪深300指数和上证指数的收盘价进行预测,发现不同数据波动大小对模型预测效果有一定的影响,需要根据不同数据选择不同的模型。
综上所述,相较于传统方法,深度学习在进行股票价格预测时具有更大的优势,且使用不同的数据处理方法和复合算法模型对预测结果的精度也有较高的影响,但这些研究一般都以简单的价格数据作为输入变量,输入变量较为单一,没有充分提取并利用市场所包含的信息。因此,本文选择基本面数据、行情数据、技术指标、宏观经济数据作为输入变量,使用主成分分析法提取主成分,然后使用卷积神经网络和长短期记忆网络对股票下个交易日收盘价格进行预测,验证股票市场是否普遍存在可预测性。
二、CNN-LSTM预测模型
股票时间序列数据具有高纬度、非线性的特点,卷积神经网络(CNN)可以对数据进行特征提取,长短期记忆网络(LSTM)可以对时间序列数据进行选择学习。本文结合卷积神经网络和长短期记忆网络的优点,提出CNN-LSTM复合模型。该模型主要由输入层、卷积层、LSTM循环层、输出层组成。输入层主要负责接收数据,以股票历史信息数据作为样本,每一个样本包含过去几个交易日的数据;卷积层对输入层的样本进行卷积操作,进行高特征提取;经过数据维度变换,再输入LSTM循环层,对时间序列数据进行选择记忆;输出层将LSTM循环层的输出转换到[0,1]之间,经过反归一化,得到模型对下个交易日收盘价格的预测值。(图1)
图1 CNN-LSTM模型网络结构示意图
CNN-LSTM预测模型的流程图如图1所示,其中模型训练步骤如下:
(一)获取股票历史数据。从金融数据库中获取股票历史数据,主要包括行情数据、基本面数据、宏观经济数据。
(二)计算技术指标。技术指标是技术分析中常用的数据指标,一般认为技术指标包含了影响股票价格波动的一些因素,股票市场中的投资者常常根据技术指标来判断股票价格走势,因此本文也添加技术指标作为输入数据。
(三)对原始数据归一化处理。将前两步所涉及到的数据进行归一化处理,消除量纲不同所带来的差异,方便进行主成分提取和送入模型训练。
(四)对除开盘价、收盘价、最高价、最低价之外的数据进行主成分提取。经过多次实验,采取这种主成分提取得出来的效果最优。对原始数据主成分提取可以消除输入变量之间的相关性,减少拟合复杂度,提高模型训练效率。
(五)将开盘价、收盘价、最高价、最低价和经过提取的主成分当作输入样本,采取窗口滑动法构造数据集。将其中前90%当作训练集,后10%当作测试集。训练集用于模型训练,自我学习,提高预测精准度,测试集用来检验模型预测的精准度。
预测步骤只需把收集到的股票历史数据进行归一化处理,提取主成分,送入模型,输出的就是对下个交易日股票收盘价格的预测值。
三、CNN-LSTM股票价格预测模型实证研究
(一)数据来源与预处理。本文针对西南证券进行下一交易日收盘价的预测。选取了2008年1月1日至2021年11月30日期间3,362个交易日的行情数据、基本面指标、技术指标、宏观经济指标作为研究对象。其中,行情指标包括开盘价、收盘价、最高价、最低价、前收盘价、成交量、成交额、换手率、涨跌幅;基本面指标包括市盈率、市净率、市销率、市现率;技术指标包括五日和二十日移动平均线、乖离率、异同移动平均线、KDJ随机指标、顺势指标、六日和十四日相对强弱指标。宏观经济指标选取了上海银行间同业拆借利率。将其中90%作为训练集,10%作为测试集,则训练集样本数为3,025个,测试集样本数为337个。
实验数据从Baostock金融数据库获得。以股票交易日期为索引,以股票行情数据计算出技术指标数据,并将数据保存在本地数据库中。然后将数据进行归一化处理。数据归一化采用“max-min标准化”方法,其具体计算方式为:
其中,xmin、xmax分别是分量xi的最小值和最大值。
使用主成分分析法进行降维,减少数据间的相关性,可以提高模型训练速度。经过多次实验,本文对除了开盘价、收盘价、最高价、最低价之外的变量提取主成分。通过计算累计方差贡献率进行主成分选择。对20个自变量数据的主成分分析所得到的特征贡献率如表1所示。(表1)
表1 特征值贡献率一览表
由表1发现,前五个主成分的累计贡献率已经达到90%,认为这五个主成分已经包含原始数据大部分信息。因此,提取五个主成分。五个主成分载荷矩阵表达形式如表2所示。(表2)
表2 主成分载荷值一览表
经过处理后的数据采用滑动窗口法就可以作为输入数据,使用模型进行预测。
(二)评价指标的选取。为了评估CNN-LSTM模型在股票收盘价格预测上的精确度,本文选取了均方误差(MSE)、均方根误差(RMSE)、平均绝对偏差(MAE)以及平均绝对百分比误差(MAPE)这四个指标来衡量模型在股票价格预测方面的性能。具体计算公式如下:
其中,Xprediction,t是t交易日股票的预测价格,Xreal,t是股票的真实收盘价。
(三)基准模型的选择。为了更好地评价本文提出的CNNLSTM模型的预测效果,本文分别利用LSTM模型、PCA-LSTM模型进行预测,作为基准模型与CNN-LSTM模型的预测结果进行对比。
1、原始LSTM模型。原始LSTM模型将上文提到的24个原始数据经过归一化后的结果作为输入数据,其网络结构只包含输入层、LSTM循环层和输出层,模型其他超参数与CNNLSTM模型类似,并且进行微调至此模型最佳。
2、PCA-LSTM模型。PCA-LSTM模型在原始LSTM模型的基础上,将股票开盘价、收盘价、最高价、最低价和上文提取的五个主成分共同作为输入数据。同样的,在CNN-LSTM模型类似的参数的基础上调整为最佳。
经过这两个基准模型的设定,通过对比不同模型之间的预测程度,可以得出不同的结论。通过将原始LSTM模型和PCALSTM模型对比,可以突显出主成分分析法在股票价格预测模型中的作用。通过将PCA-LSTM模型和CNN-LSTM模型做比较,可以突出卷积层在股票价格预测模型中的作用。
(四)模型预测效果对比。本文经过多次实验,将CNNLSTM模型设置为最优参数并进行训练,将其预测结果的评价指标与原始LSTM模型以及PCA-LSTM模型进行比较分析。将原始LSTM模型、PCA-LSTM模型和CNN-LSTM模型分别训练,学习率设置为0.0005,epoch为500,记录每个模型训练结果,模型的精度结果如表3所示。(表3)
表3 不同模型预测效果一览表
由表3可知,PCA-LSTM模型的输入数据经过主成分分析法提取主成分之后,减少了输入数据的维度,不仅学习速度变得更快,而且精度有所提高。CNN-LSTM模型在PCA-LSTM的基础上,使用卷积层对输入数据进行高维特征的提取,进一步提高了模型精度。
模型改进前后的预测曲线如图2、图3、图4所示。图中预测收盘价曲线与实际收盘价曲线基本拟合,能够反映出股票收盘价的整体走势。通过对比可以看出,CNN-LSTM模型的预测值与真实值拟合程度更高,结果更加准确。(图2、图3、图4)
图2 原始LSTM模型预测曲线图
图3 PCA-LSTM模型预测曲线图
图4 CNN-LSTM模型预测曲线图
(五)模型泛化能力测试。为了验证模型的泛用性,选择A股市场中2,000亿元市值以上、上市超过十年的公司股票作为研究对象,获取该33支股票从2012年1月1日至2022年1月1日期间2,452个交易日的行情数据、基本面指标、技术指标、宏观经济指标,按照上文对西南证券同样的数据处理方法,使用CNN-LSTM模型预测后的结果如表4所示。(表4)
从表4可以看出,这33支股票涉及19个行业,并且CNN-LSTM模型对这33支股票的预测效果比较好,这也充分地说明了CNN-LSTM模型对单支股票价格预测的有效性与泛用性,由此可以得出股票市场(A股)中的股票价格是可以预测的结论。
表4 股票名称、所在行业及预测效果一览表
四、结论
为验证股票市场的是否存在可预测性,本文使用股票的基本面数据、行情数据、技术指标和宏观经济数据对股票价格进行预测,通过搭建CNN-LSTM深度学习模型很好地预测了33支上市公司的股票收盘价格,验证了股票价格存在一定的可预测性。通过对比LSTM模型和PCA-LSTM模型,发现使用主成分分析法处理数据可以提高模型对股票价格预测的准确程度,使用深度学习模型之前减少金融时间序列数据的相关性是必要的;通过对比PCA-LSTM模型,发现复合深度学习模型可以结合不同深度学习模型的优势,使预测的准确性进一步提高。这些模型和方法为处理其他金融时间序列数据提供了参考。
股票价格的准确预测可以提高股票市场的有效程度和维护股票市场稳定。股票价格预测模型可以为股票市场投资者提供参考,提高投资者理性程度,增加股票市场的有效性。国家也可以据此判断股票市场走势,通过合理的政策措施避免股票市场发生异常波动。