1. 引言
股市变化常被视为金融领域的“晴雨表”[1],准确预测股票价格一直是投资者和金融机构关注的重点。然而,由于股票市场的高度复杂性和不确定性,精确预测股票价格始终是一个充满挑战的任务[2]。为了解决这些挑战,研究人员提出了多种方法和模型,以提升金融时间序列预测的准确性和效果。
传统时间序列预测模型,如自回归移动平均模型(ARMA)和自回归移动平均模型(ARIMA),已广泛应用于时序预测[3]。然而,这些传统模型通常假设数据呈线性分布,而金融数据往往具有非线性特征且存在长期记忆效应,因此传统模型在金融领域的预测效果并不理想。随着深度学习的快速发展,研究人员逐渐将其应用于金融市场[4]。卷积神经网络(CNN)、长短期神经网络(LSTM)、门控循环单元(GRU)等方法在金融预测方面成果显著。通过将这些深度学习模型与传统的时间序列模型结合,能够在处理线性和非线性时序特征时提升预测精度。
因此,本文提出了ARIMA-CNN-LSTM混合模型,结合了ARIMA在处理线性趋势方面的优势与CNN和LSTM在处理非线性特征及长期依赖方面的能力。首先,ARIMA用于去除时间序列中的线性成分和噪声,随后通过CNN提取局部特征,LSTM则负责捕捉长期依赖。通过这种分层次的处理,ARIMA-CNN-LSTM能够全面建模金融时间序列中的复杂关系。为了详细阐述该模型的原理,接下来将依次介绍ARIMA、CNN和LSTM的基础理论。
2. 基础理论
2.1. ARIMA
差分自回归移动平均(ARMA)模型和自回归综合移动平均(ARIMA)模型是经典的股票预测模型。自回归移动平均模型是自回归模型与移动平均模型的结合,ARMA (p, q)符合以下公式:
(1)
公式1表示,如果该序列是平稳的,也就是说其行为不会随时间变化,那么我们就可以根据该序列的过去行为来预测未来。ARIMA也可以看作是自回归模型(AR)、滑动平均模型(MA)、差分(I)相结合[5],使用AR捕捉时间序列的依赖性和趋势性,使用MA捕捉时间序列数据的随机误差,使用差分确保时间序列数据的稳定性。当序列是非平稳时,ARIMA (p, q, d)对序列采用和差分,将序列变为平稳的。其中p是自回归项数,q是移动平均项数,d是将时间序列变为平稳状态所进行的差分次数。
2.2. CNN
卷积神经网络(CNN)是一种特殊的前馈神经网络,其网络结构如图1所示,组成包括卷积层、池化层、全连接层三部分[6]。CNN的处理流程为:首先通过卷积层提取输入数据特征,然后使用池化层对提取的特征进行提炼,最后在全连接层整合并输出数据。由于CNN采用了卷积运算,相较于常规的矩阵运算,其计算速度得到了显著提升。CNN的卷积层和池化层的交替使用能够有效提取数据局部特征并降低局部特征维度[7]。
Figure 1. CNN network structure
图1. CNN网络结构
2.3. LSTM
Figure 2. LSTM gating structure
图2. LSTM门控结构
长短期记忆神经网络(LSTM)是循环神经网络的一种,它的出现是为了解决传统循环神经网络(RNN)在时序预测方面的缺陷,即RNN难以处理具有长期依赖关系的数据,会出现梯度消失问题[8]。LSTM的关键在于借鉴了人脑选择性记忆和选择性遗忘的特点,引入了遗忘门、输入门、输出门三个门控机制和记忆单元[9]。通过门控机制,不仅能够接受上层神经元的输出,还可以选择性地保留有效历史信息。具体的门控结构如图2所示。
遗忘门决定从上一时刻记忆状态需要忘记什么信息,本质上是通过Sigmoid函数,对前一时刻的输出
和当前时刻的输入
进行操作,生成0~1之间的值来代表遗忘多少信息。其中,0代表遗忘所有信息,1代表保留所有信息。
输入门可以决定哪些信息可以加入到上一时刻记忆状态并且更新为新的记忆状态,本质上也是通过Sigmoid函数和tanh函数,对
和
进行操作,生成0~1之间的值来代表新信息的重要程度。
输出门决定了当前时刻可以输出的状态信息有哪些,同样是通过Sigmoid函数对
和
进行操作,再经过激活函数tanh映射,生成0~1之间的值控制信息的输出。
3. ARIMA-CNN-LSTM模型
ARIMA擅长处理时间序列中的线性模式、趋势和季节性成分,通过差分、移动平均和自回归,ARIMA可以去除数据中的线性部分,使序列更加平稳[10]。虽然ARIMA可以消除一部分随机噪声,但它对非线性关系的处理能力有限,不过可以通过它为后续深度学习模块提供了一个较为清晰的输入特征,便于更高效地进行非线性建模。CNN用于提取数据中的局部时序特征,而LSTM则擅长捕捉时间序列中的长期依赖关系[11]。经过ARIMA预处理,数据中的线性趋势被去除,使得CNN和LSTM能够更好地处理复杂的非线性结构,从而提升模型的整体性能。
本文使用的ARIMA-CNN-LSTM模型结构包括输入层、ARIMA预处理层、CNN层、LSTM层和输出层。通过ARIMA对输入数据进行预处理,去除数据中的线性趋势、周期性成分和随机噪声,得到一个更为平稳的残差序列。残差序列是ARIMA未能解释的部分,通常包含非线性特征,适合输入深度学习模型进行进一步建模。经过ARIMA预处理,原始序列中的大部分线性信息被去除,保留了更加复杂的、深层次的非线性模式。
残差序列经过归一化后,输入到CNN模块。CNN通过多个卷积层提取时间序列中的局部特征。卷积层通过应用卷积核扫描序列数据,捕捉短期依赖和局部特征,通过这种操作识别时间序列中的短期特征并形成特征映射。形成的特征映射包含了CNN提取的局部特征,能够有效反映数据中的短期依赖关系。这些映射将作为LSTM模块的输入。
LSTM通过门控机制,读取CNN输出的特征映射,捕捉数据中的长期依赖关系,进一步整合序列的时序特征。LSTM不仅能够记住过去多个时间步的特征,还可以忽略不重要的信息。LSTM模块的输出是一个隐藏状态,包含了对时间序列的全局时序特征的整合和处理结果。最后将LSTM层输出的隐藏状态传到输出层,通过全连接层将LSTM的隐藏状态转化为预测结果并进行输出。
4. 数据处理与模型构建
4.1. 数据获取
本文对中国证券市场上的中国银行股价进行实证研究,股票代码为601988.SH,数据来源为Tushare,股价数据在Tusahre中会进行公开展示。选取了中国银行从2009年01月01日到2023年12月31日的数据进行研究,共3630条数据(节假日除外),包含日期、最高价、最低价、开盘价、收盘价、成交量、成交额等数据。
本实验将数据按9:1的比例划分为训练集和测试集,训练集时间起止时间为2019年01月05日到2022年07月05日,共3266条数据,测试集的起止时间为2022年07月06日到2023年12月29日,共364条数据。训练集和测试集的原始数据如图3所示。
Figure 3. Training set and test set data
图3. 训练集和测试集数据
4.2. ARIMA模型构建
4.2.1. 数据平稳性校验
使用ADF检验来校验原始训练集的序列平稳性。验证结果如表1所示。
Table 1. The original sequence ADF verification result
表1. 原始序列ADF校验结果
ADF属性 |
ADF属性值 |
Test Static Value |
−2.84539 |
p-value |
0.05208 |
Critical Value (1%) |
−3.43237 |
Critical Value (5%) |
−2.86343 |
Critical Value (10%) |
−2.56725 |
如果一个时间序列是平稳的,那么Test Static Value下方称为t值,需要同时小于1%临界值、5%临界值和10%临界值[12]。由上表可以看出,t值大于10%临界值,因此是不平稳的。使用ARIMA模型进行时序预测的数据要求是平稳的,因此对原始训练数据进行一阶差分运算,使数据变得平稳。一阶差分后的ADF检验结果如表2所示。从表中数据可以看出,t值小于1%临界值、5%临界值和10%临界值,因此是平稳序列,可用于后续分析实验。
Table 2. The result of the first-order differential sequence ADF verification
表2. 一阶差分序列ADF校验结果
ADF属性 |
ADF属性值 |
Test Static Value |
−10.6038 |
p-value |
6.0766e−19 |
Critical Value (1%) |
−3.43237 |
Critical Value (5%) |
−2.86343 |
Critical Value (10%) |
−2.56725 |
4.2.2. 模型参数选择
通过3.2可以得到结论,原始序列是非平稳的,一阶差分序列是平稳的,ARIMA (p, d, q)模型中的差分次数d确定为1,下面需要确定ARIMA模型中的AR (p)和MA (q)。使用自相关图(ACF)和偏自相关图(PACF)得到p值和q值。
ACF和PACF如图4所示。其中ACF的横坐标表示滞后阶数,即与当前时间点间隔的时间步数。纵坐标表示自相关系数,反映了时间序列中不同滞后阶数下,当前值与过去值之间的线性相关程度,接近1表示正相关程度高,接近−1表示负相关程度高,接近0表示相关性弱。PACF的横坐标同样表示滞后阶数,纵坐标表示偏自相关系数,反映的是在控制了中间滞后项的影响后,特定滞后阶数下当前值与过去值之间的相关性。从图中可以看出,在滞后阶数为2之后,PACF处于基本稳定的状态,因此确定p值为2。对于任何的滞后阶数,ACF都具有长尾,因此采用q值为0。此时,ARIMA模型的参数都已经确定,即ARIMA (2, 1, 0)。
Figure 4. Autocorrelation plots and partial autocorrelation plots
图4. 自相关图和偏自相关图
4.3. 混合模型构建
使用CNN-LSTM模型对ARIMA模型生成的残差序列进行训练,模型的建立过程如下。
步骤一:数据预处理。使用ARIMA (2, 1, 0)对原始序列进行处理,ARIMA模型会去除数据中的趋势和线性成分,生成一个残差序列,反映ARIMA无法解释的非线性部分。为了提高后续模型训练的效果,使用归一化将残差序列缩放到[0, 1]范围内。将归一化后的残差序列划分为训练集和测试集,其中90%作为训练集,10%作为测试集。
步骤二:模型训练。将经过归一化处理的残差序列输入到CNN模块进行特征提取。将CNN的卷积核数量设为32,使用ReLU激活函数,提升模型对非线性特征的捕捉能力。通过最大池化层降维并减少特征冗余,防止过拟合。将CNN提取的特征映射输入到LSTM模块,用于捕捉时间序列中的长期依赖关系。设置LSTM层数为5,每层LSTM的隐藏单元大小为64,时间步长设置为20,在LSTM层中加入Dropout,dropout率设置为0.3,用以防止过拟合同时提高模型的泛化能力。为了可以加速模型收敛,使用Adam对模型进行优化,设置学习率为0.01。其他参数,将epoch设为50,这是初始的训练轮次。经过实验对比批次大小为32和64的效果,选择Batch Size为32,在这个数值下,模型有更好的收敛速度和稳定性。
步骤三:模型训练结果。将LSTM输出结果进行反归一化,将反归一化后的残差预测结果与ARIMA的线性拟合结果相加,将ARIMA模型的线性部分和CNN-LSTM模型的非线性部分混合,生成最终的预测结果。
4.4. 模型普适性测试
为了验证模型的普适性,增加选择建设银行和工商银行的股票数据作为实验对象,数据选取时间均为2009年1月1日至2023年12月31日,其中90%的数据作为训练集,10%的数据作为测试集。与中国银行数据的处理方法一致,采用相同的超参数来构建ARIMA-CNN-LSTM模型,对数据进行预处理、模型训练和预测分析。首先,使用ARIMA模型对每只股票的数据进行预处理,去除数据中的线性趋势和季节性成分,保留残差序列。接着,残差序列经过CNN层提取局部特征,通过卷积操作识别数据中的短期关系。在此基础上,LSTM层捕捉时间序列中的长期依赖关系,整合局部和全局的时序特征。
5. 实验结果与分析
5.1. 模型评价指标
为了评估ARIMA-CNN-LSTM模型在股票价格预测的准确性,本文选取了均方误差(MSE)、均方根误差(RMSE)和平均绝对误差(MAE)三个指标来衡量混合模型在股票价格预测方面的性能。通过这三个指标可以反映实际值与预测值之间的误差大小,三个指标的计算公式如下:
(2)
(3)
(4)
其中,
表示i日股票的实际收盘价,
表示i日股票的预计收盘价,n表示数据集的样本数量。
5.2. 不同模型预测结果对比
为了验证本模型在股票价格预测方面的效果,本文选择了ARIMA-LSTM模型和CNN-LSTM模型作为基准模型,将预测结果与ARIMA-CNN-LSTM模型进行对比。同时为了保证模型预测的公平性,所有模型中的相同模块均设置相同的参数,都使用Adam对模型进行优化。基于三种评价指标下的不同模型预测结果如表3所示,对比中国银行在不同模型的预测误差结果,可以看出ARIMA-CNN-LSTM模型三种指标数值都是最低,在股票价格预测方面的准确性有所提升。
通过对建设银行和工商银行股票数据的预测结果进行分析,可以发现ARIMA-CNN-LSTM模型在这两个数据集上同样表现出色。MSE、RMSE和MAE指标显示,模型在三个银行数据上的预测误差显著低于ARIMA-LSTM和CNN-LSTM模型,表明ARIMA预处理和CNN局部特征提取提升了模型的整体表现。
Table 3. Comparison of prediction results of different data in different models
表3. 不同数据在不同模型预测结果比较
股票名称 |
模型 |
MSE |
RMSE |
MAE |
中国银行 |
ARIMA-LSTM |
0.0020 |
0.0447 |
0.0248 |
CNN-LSTM |
0.0018 |
0.0424 |
0.0235 |
ARIMA-CNN-LSTM |
0.0015 |
0.0387 |
0.0213 |
建设银行 |
ARIMA-LSTM |
0.0084 |
0.0916 |
0.0552 |
CNN-LSTM |
0.0079 |
0.0889 |
0.0524 |
ARIMA-CNN-LSTM |
0.0065 |
0.0806 |
0.0482 |
工商银行 |
ARIMA-LSTM |
0.0049 |
0.0700 |
0.0465 |
CNN-LSTM |
0.0046 |
0.0678 |
0.0439 |
ARIMA-CNN-LSTM |
0.0038 |
0.0616 |
0.0386 |
6. 结论
为了提高股票价格的预测精度,提出了ARIMA-CNN-LSTM的混合模型,以2009年1月到2022年7月中国银行的股价为参考,预测2022年7月到2023年底的收盘价,经过实验对比分析,可以得到以下结论。
(1) 相比于其他深度学习的混合模型,本文提出的ARIMA-CNN-LSTM模型具有更小的预测误差,能够更准确地预测股票等时间序列的未来走势。通过比较ARIMA-LSTM模型和ARIMA-CNN-LSTM模型的预测结果,可以看出CNN在提取局部特征时,对模型的预测精度有显著的提升作用。在ARIMA-LSTM模型中加入CNN后,ARIMA-CNN-LSTM模型能够提取时间序列中的局部模式,使得残差序列的非线性特征被更好地捕捉,从而提高了整体的预测能力。
(2) ARIMA-CNN-LSTM模型中,ARIMA的预处理步骤有效地去除了数据中的线性趋势和季节性成分,这为后续的CNN-LSTM模块处理非线性特征提供了更干净的输入数据。通过对比CNN-LSTM模型和ARIMA-CNN-LSTM模型的预测结果可以看出,先使用ARIMA进行线性预处理,再通过CNN-LSTM模块处理残余的非线性关系,能够有效提升模型的整体预测精度。
(3) 通过对中国银行、建设银行和工商银行股票数据的实验验证,证明了ARIMA-CNN-LSTM模型在不同股票数据上的普适性和鲁棒性。该模型不仅能够有效处理线性趋势和非线性波动,还能够通过局部和长期特征提取提高预测精度。这表明ARIMA-CNN-LSTM模型在金融市场预测中具有广泛的应用潜力。
综上,本文提出的ARIMA-CNN-LSTM混合模型,相比于实验中使用的其他模型,在减少误差方面有一定的优势,可以预测更准确的股票价格。