沪深300指数价格变动反映市场股票价格变动趋势,是投资者最关注的问题之一。如何构建合适的模型拟合价格时间序列变成了解决这一问题的关键之处。本文探究了不同深度学习方法对于价格的预测情况,分析得到几点探索性建议。实证分析中,数据选择沪深300指数2016年3月至2021年3月的价格数据,包括每日开盘价、最高价、最低价、收盘价四个数据特征共1218条数据,并对不同模型预测结果通过评价性指标进行对比分析。结果表明,对于数据信息利用更充分的模型,预测效果更好。 The price change of the CSI300 price Index reflects the trend of market stock price changes, which is one of the most concerned issues for investors. How to build a suitable model to fit the price time series has become the key to solving this problem. This article explores the price predictions of different deep learning methods, and acquires several exploratory suggestions. In the empirical, this paper takes the CSI300 price index as the research object and the data from March 2016 to March 2021 is selected, including daily opening price, highest price, lowest price and closing price, with a total of 1218 data. Comparing and analyzing the prediction results of different models through evaluative indicators show that Models with more adequate use of data and information provide better prediction results.
沪深300指数价格变动反映市场股票价格变动趋势,是投资者最关注的问题之一。如何构建合适的模型拟合价格时间序列变成了解决这一问题的关键之处。本文探究了不同深度学习方法对于价格的预测情况,分析得到几点探索性建议。实证分析中,数据选择沪深300指数2016年3月至2021年3月的价格数据,包括每日开盘价、最高价、最低价、收盘价四个数据特征共1218条数据,并对不同模型预测结果通过评价性指标进行对比分析。结果表明,对于数据信息利用更充分的模型,预测效果更好。
沪深300指数价格,深度学习方法,评价性指标
Jiashuai Wang, Libo Cheng
School of Mathematics and Statistics, Changsha University of Technology, Changsha Hunan
Received: Mar. 12th, 2022; accepted: Apr. 12th, 2022; published: Apr. 20th, 2022
The price change of the CSI300 price Index reflects the trend of market stock price changes, which is one of the most concerned issues for investors. How to build a suitable model to fit the price time series has become the key to solving this problem. This article explores the price predictions of different deep learning methods, and acquires several exploratory suggestions. In the empirical, this paper takes the CSI300 price index as the research object and the data from March 2016 to March 2021 is selected, including daily opening price, highest price, lowest price and closing price, with a total of 1218 data. Comparing and analyzing the prediction results of different models through evaluative indicators show that Models with more adequate use of data and information provide better prediction results.
Keywords:CSI300, Deep Learning Methods, Evaluative Index
Copyright © 2022 by author(s) and beplay安卓登录
This work is licensed under the Creative Commons Attribution International License (CC BY 4.0).
http://creativecommons.org/licenses/by/4.0/
随着经济的发展,我国的股票市场建设真正不断加强。股票市场行情的涨落与国民经济的发展密切相关 [
众所周知,深度学习具有不依赖于先验知识、从大量原始数据提取特征这一特点,它对于金融数据的研究具有很大的潜力。RNN神经网络 [
为此,本文首先从中国股票市场的实际情况出发,以沪深300指数价格为研究对象,通过构建不同的深度学习模型来预测价格序列;其次,提出模型评价指标,通过对模型的综合评价比较,得出一些模型构建的探索性建议;最后,本文验证了不同深度学习方法用于深度模型对序列预测优劣性。
时间序列问题通过使用历史序列值作为输入数据,区别为回归和分类2类基本问题。给定训练序列的滑动窗口特征 X = ( X 1 , X 2 , ⋯ , X T ) 和 X t = ( X t 1 , X t 2 , ⋯ , X t L ) , X t ∈ X 序列,定义时间步长度为L的间隔长度,并给定历史值 y = ( y 1 , y 2 , ⋯ , y T − 1 ) 。预测序列未来趋势和特征,通常使用历史序列特征X和对应的目标值y学习非线性映射函数来预测未来值 y T ,对应模型公式: y T = f ( X , y ) 。
把数据 X t t r a i n = { X t − i , y t − i } i = 1 p 作为输入数据。如图1,简单介绍了LSTM网络模型的结构,由三个门门结构组成的网络模型,分别为:输入门、遗忘门、输出门。
· 输入门(input gate),作用确定信息被存放在细胞状态,由下列计算公式构成:
i t = σ ( W t × [ h t − 1 , X t t r a i n ] + b i ) (1)
c ′ t = tanh ( W c × [ h t − 1 , X t t r a i n ] + b c ) (2)
· 遗忘门(forget gate),作用是控制记忆信息遗忘和保留:
f t = σ ( W f × [ h t − 1 , X t t r a i n ] + b f ) (3)
· 输出门(output gate),作用是确定模型的输出值:
c t = f t × c t − 1 + i t × c ′ t (4)
o t = σ ( W o × [ h t − 1 , X t t r a i n ] + b o ) (5)
h t = o t × tanh ( c t ) (6)
图1. LSTM结构
CNN网络已经在图像分类、人脸识别和时间序列分析领域已经有非常成功的应用。CNN的结构有三个主要网络层堆积:卷积层(convolution)、池化层(pooling)和全连接层(FC)。而其中卷积层的作用是从输入数据中抽取局部连接信息,识别输入数据不同位置的信息。而池化层目的是对卷积层进行作用,通下采样算子减少特征图的维度和避免模型的过拟合。全连接层一般用于最后几层,目的是组合由卷积层所产生的特征抽取来得到最后的模型输出,其中第L层卷积计算公式如下:
x j L = f ( ∑ i ∈ M j x i L − 1 ∗ k i j L + b j L ) (7)
CNNLSTM模型是在原始LSTM模型之中加入卷积层(convolution)和池化层(polling),目的是对输入的时间序列数据先进行特征提取,提取数据之间相互的信息,然后再经过LSTM模型进行序列预测,其模型运行过程如下,对其输入数据x,y:
y j L = LSTM ( maxpool ( cov ( x , y ) ) ) (8)
Transformer模型已经广泛用于序列任务,如机器翻译,时间序列预测等,其模型的最主要的贡献的是提出注意力机制(Attention Mechanism),如图2。
图2. 注意力机制结构图 [
其作用是捕捉输入序列之间的依赖性,并集中挑选出更有影响的信息,而忽略那些不需要的信息。注意力机制有三部分构成:Query,Key和Value,其函数结构是由Q到序列对K-V的映射。注意力机制分为3个步骤执行,对于输入序列 h t ,第一阶段通过作用权重 W h 得到Q,K,V,再通过激活函数得到Q,K之间的相似性,由计算公式(9)产生注意力分数,第二阶段通过对注意力分数进行标准化得到权重系数,最后能过(11)加权V求和得到具有相互依赖的序列b。
s t = tanh ( W h × h t + b h ) (9)
a t = exp ( s t ) ∑ t exp ( s t ) (10)
b = ∑ t a t × v t (11)
修改的Transform模型主要对Transform模型的解码器进行改变,预测金融时间序列数据,本文将其编码器变为一层全连接层(FC),其输出数据的维度对应训练数据标签的维度。
用 z i , t 表示第i个序列在时间步t的值, x i , t 表示特征, t 0 表示预测初始时间。DeepAR模型基于自回归循环神经网络预测 z i , t 的概率分布,用似然函数 l ( z i , t | θ i , t ) 表示。
图3. 左边为模型训练过程,右边为模型数据预测过程
如图3,模型训练过程,网络输入 x i , t 、上一个时间步的取值 z i , t − 1 ,以及上一个时间步的状态 h i , t − 1 。先计算当前的状态 h i , t = h ( h i , t − 1 , z i , t − 1 , x i , t ) ,再计算似然 l ( z | θ ) 的参数 θ ,最大化对数然函数(12)来学习网络参数:
L = ∑ i ∑ t log l ( z i , t | θ ( h i , t ) ) (12)
模型预测过程,将 t < t 0 的历史数据输入网络,获得初始状态 h i , t 0 − 1 ,然后通过抽样得到预测结果,对于 t 0 , t 0 + 1 , ⋯ , T ,在每一个时刻随机抽样得到 z i , t ~ l ( ⋅ | θ i , t ) ,这个样本值作为下一个输入。反复这个过程,我们可以得到一个序列,然后我们可以计算目标值的中位数、均值等当做模型预测值。 θ ( h i , t ) 的具体形式取决似然函数 l ( z | θ ) ,而似然函数的形式取决于数据本身的特征,本文采取Gaussian分布,则 θ = ( u , σ ) ,其似然函数(13)、分布均值(14)和方差(15)通过如下计算公式得到:
l G ( z | u , σ ) = 1 2 π σ 2 exp ( − ( z − u ) 2 2 σ 2 ) (13)
u ( h i , t ) = W u T h i , t + b u (14)
σ ( h i , t ) = log ( 1 + exp ( W u T h i , t + b u ) ) (15)
本文选取1只股票:沪深300指数(000300),采用日期2016年3月22日至2021年3月22日的数据,数据特征包括每日开盘价、最高价、最低价、收盘价四个数据特征,共1218个样本数据(数据来源:万得数据)。
为了让模型训练速度加快,本文对原始股票数据进行归一化处理,加快模型拟合过程。本文采取“min-max”归一化方法(16)对原始数据进行变换 [
X t = X t − min ( X t ) max ( X t ) − min ( X t ) (16)
本文样本数据为1218条数据,首先我们通过数据按照一定的比例分为训练集和测试集数据,训练集样本数为1178条样本,测试集数据为50条样本。接下来所划分数据构建模型输入的数据结构,假设采取时间长度 L = 5 ,通过滑动窗口方法获取一个数据样本,如表1。最后设置训练标签和输入数据,本文把一个数据样本的前四个数据作为模型输入,目标值为数据样本最后一个时刻的收盘价格,如图4。
交易日期 | 开盘价 | 最高价 | 最低价 | 收盘价 |
---|---|---|---|---|
2021-03-10 | 5047.06 | 5055.28 | 4981.62 | 5003.61 |
2021-03-09 | 5066.15 | 5094.31 | 4917.91 | 4971 |
2021-03-08 | 5299.79 | 5326.26 | 5079.80 | 5080.02 |
2021-03-05 | 5191.97 | 5307.82 | 5174.25 | 5262.8 |
2021-03-04 | 5388.48 | 5392.37 | 5254.78 | 5280.71 |
表1. 训练样本数据
图4. 模型训练数据的目标值
本文挑选沪深300指数价格数据对每日收盘价进行预测,挑选4个模型进行比较,包括LSTM、CNNLSTM、ModTransformer、DeepAR探究在同一训练设置下,不同模型对于同一时间序列数据预测效果。对于本文设置的超参数如下:batch size = 12,learning rating = 0.005,loss = MSE,epoch = 150,multi-head = 8,GPU = GeForce GTX 1080 Ti
对于不同模型预测效果的评价,本文用到四个不同的评价指标:均方误差(MSE),均方根误差(RMSE),平均绝对误差(MAE)和R2。这四个评价指标 [
RMSE = 1 n ∑ i = 1 n ( y i − y i ∧ ) 2 (17)
MSE = 1 n ∑ i = 1 n ( y i − y i ∧ ) 2 (18)
MAE = 1 n ∑ i = 1 n | y i − y i ∧ | (19)
R 2 = 1 − ∑ i = 1 n ( y i − − y i ) 2 ∑ i = 1 n ( y i ~ − y i ) 2 (20)
本文通过比较多个深度学习模型预测效果进行如下分析:股票数据验证样本为50,通过对样本进行滑动窗口方法构建模型输入,留下45期数据进行模型验证和评估。如图5,这是本文模型对于沪深300指数收盘价格的预测比较图,首先,红色曲线是股票收盘价格的真实价格,其浅蓝色曲线是模型LSTM训练完成后对验证数据的预测值,根据结果分析,在同等训练设置的背景下,模型LSTM收敛最慢,预测效果最差,因为LSTM模型的序列串行预测,训练速度慢且收敛性差。蓝色曲线是模型DeepAR模型预测曲线,DeepAR模型通过前时刻信息预测下一时刻的数据分布,再根据数据分布进行采样,得到样本点,重复多次得到一个集合,本文选取这些集合的中位数点作为当前时刻的预测值,由于此模型也是串行预测,所以训练拟合速度也不是很快,总体而言,取中位数点当预测值降低了预测的偶然性和突变性,从图5可以看出,DeepAR模型预测值与真实预测曲线保持一定误差,但不会有较大差异。黑色虚线是模型ModTransformer 模型的预测值,本文通过把原始Transformer模型的解码器进行修改,得到了股票价格预测模型,通过观测,此模型预测效果与真实结果最接近,效果最好,收敛性快,根据注意力机制的作用,模型的输入数据得到更多有益信息,再经过模型预测得到较好结果。绿色虚线是CNN + LSTM模型,根据曲线拟合情况,比起原始LSTM模型,预测结果较好。
图5. 深度学习模型对于沪深300指数价格的预测图
根据表2,我们得到模型的评价指标的值,我们了解到ModTransformer模型预测误差最小,根据R2值也可以肯定此模型拟合优度较高。在同等训练设置下,LSTM模型在测试样本预测较差,但对模型添加卷积之后,模型得到较大改善,对比DeepAR模型,同样是串行预测,利用模型隐藏层数据对输出数据进行分布预测,通过大量采样得到模型预测值集合,再取数据集的中位数当预测值,此方法减少了模型预测数据的偶然性和并且降低预测误差。对此可以给出一些建设性意见:对于时间序列数据,对于输入数据,其实可以抽取数据之间内在信息,以此提高模型预测精度和训练拟合速度。对模型中隐藏层数据进行再利用,能够降低模型预测误差。
MSE | RMSE | MAE | R2 | |
---|---|---|---|---|
LSTM | 128.4601 | 10.5166 | 110.5997 | 0.9310 |
CNN + LSTM | 64.5461 | 7.2836 | 53.0502 | 0.9540 |
DeepAR | 61.6524 | 7.2677 | 52.8197 | 0.9740 |
ModTransformer | 34.9554 | 5.1822 | 26.8547 | 0.9790 |
表2. 模型的评价指标得分
在本节中我们比较模型LSTM与模型CNN + LSTM进行消融实验探究 [
目前对于时间序列预测模型大致分为2种:传统时间序列模型与深度学习预测模型,传统模型对于现代大量级的数据难以建模和推理检验,而深度学习模型的出现对于处理这类问题迎来了发展,尽管许多深度网络在训练过程中往往存在梯度消失或者维数灾难问题,但随着社会发展,各种优异的模型已经被提出并且被应用于各种领域。本文推荐4个在时间序列数据预测效果较好的深度学习模型,通过互相比较,得到一些探究性的结果。LSTM模型对于时间序列数据预测已经成为模型预测的基准,它通过对序列的串行预测,能得到较好的预测结果,而在LSTM模型基础上进行一些改进,模型预测效果得到较好的改善,本来通过对LSTM模型中添加卷积层,结果分析能够提高模型预测能力。根据DeepAR模型的测试结果,通过对模型中隐藏层数据利用也能降低模型预测误差。对比CNN提取输入数据信息,注意力机制可以有选择性的抽取与本身相似的数据特征,并成为数据内嵌信息,使模型预测结果较好。由此本文给出展望,对于数据输入,模型应充分利用数据输入信息和模型隐藏层数据信息,所以需研究改善提取输入数据之间的内在关系的方法和有效利用模型内部数据的方法,以此提高模型的预测精度。
王佳帅,陈立波. 比较分析深度学习方法在沪深300指数价格预测的研究Comparative Analysis of Deep Learning Methods in the Price Prediction of the Shanghai and Shenzhen 300 Index[J]. 数据挖掘, 2022, 12(02): 173-181. https://doi.org/10.12677/HJDM.2022.122018
https://doi.org/10.21078/JSSI-2018-120-14
https://doi.org/10.1109/UKSim.2014.67
https://doi.org/10.1111/j.1467-9892.1984.tb00382.x
https://doi.org/10.1002/aic.690370209
https://doi.org/10.1007/978-3-642-24797-2_4
https://doi.org/10.1162/neco.1997.9.8.1735
https://doi.org/10.3115/v1/P14-1062
https://doi.org/10.1016/j.cllc.2011.06.005
https://doi.org/10.1016/j.ijforecast.2019.07.001
https://doi.org/10.25271/2017.5.4.381
https://doi.org/10.1175/1520-0477(1982)063<1309:SCOTEO>2.0.CO;2
https://doi.org/10.1109/WACV45572.2020.9093537