股票特征通常夹杂较多噪声数据,而带噪数据会影响股票预测模型的预测精度。本文提出一种对股票数据特征进行量化编码的方法,并使用长短期记忆网络构建预测模型,对量化后的数据进行预测。数据集采用沪深300成分股,在对股票数据量化后进行3分类涨跌幅预测。实验结果表明,使用量化编码对股票特征处理后,预测效果优于使用原始数据预测。 The features of stock are usually mixed with many noise data, and noisy data will affect the predic-tion accuracy of stock prediction model. In this paper, a quantitative coding method for stock data features is proposed, and a prediction model is constructed by using short and long term memory network to predict the quantified data. The data set uses the Shanghai and Shenzhen 300 compo-nent stocks, after the stock data quantification carries on the 3 classification rise and fall forecast. The experimental results show that the prediction effect is better than that of the original data after the stock feature is processed by quantitative coding.
赵建群,张岐,王悦
广东科贸职业学院经济管理学院,广东 广州
收稿日期:2020年6月25日;录用日期:2020年7月9日;发布日期:2020年7月16日
股票特征通常夹杂较多噪声数据,而带噪数据会影响股票预测模型的预测精度。本文提出一种对股票数据特征进行量化编码的方法,并使用长短期记忆网络构建预测模型,对量化后的数据进行预测。数据集采用沪深300成分股,在对股票数据量化后进行3分类涨跌幅预测。实验结果表明,使用量化编码对股票特征处理后,预测效果优于使用原始数据预测。
关键词 :特征量化,LSTM,沪深300,涨跌幅预测
Copyright © 2020 by author(s) and Hans Publishers Inc.
This work is licensed under the Creative Commons Attribution International License (CC BY 4.0).
http://creativecommons.org/licenses/by/4.0/
随着国内股票市场的逐步完善,越来越多的研究机构和公司投入股票的分析和预测研究。对股票指数进行分析预测,能够快速掌握股票市场的发展动态,也能一定程度上反映国家的经济状况。由于影响股票数据的因素复杂多变,且股票序列本身具有随机游走等特性 [
股票预测已有较长的历史。统计学方法是最先用于现代股票市场预测的方法之一,其通过对股票数据的整理和分析,预测股票价格的短期走势。其中较为成功的有自回归移动平均(ARMA)模型 [
在股票特征处理上,现有的研究大都使用特征归一化处理。同时在预测方式上,以拟合股票收盘价走势和预测股票涨跌为主。本文在已有研究的基础上,通过对股票交易的特征进行量化和编码,对股票价格的涨跌幅度进行预测。在网络结构上,选择LSTM作为量化股票预测的基本网络,使用量化后的数据对其进行训练,以预测股票价格的涨跌幅范围,并将结果和未将股票特征量化训练的模型做了比较分析。
股票价格的变动通常和多种因素有关,其中能直接影响到其变化的则是股票的基本交易指标 [
在股票数据的选择上,使用中证100指数的成分股作为基础数据来源。沪深300是为了反映沪深股市超大市值公司的股票价格表现而挑选出的300只股票 [
在数据集时间跨度上,本文使用2013年~2017年的沪深300指数的成分股票,并将筛选后的股票数据集划分为训练集和测试集。其数据集详细信息见表1。
数据集 | 时间跨度 | 交易天数(天) | 股票数量(只) | 股票数据总量 |
---|---|---|---|---|
沪深300 | 2013~2017 | 1215 | 160 | 194,400 |
训练集 | 2013~2016 | 971 | 160 | 155,360 |
测试集 | 2017 | 244 | 160 | 39,040 |
表1. 股票数据集概况
在训练时选择包含多只股票的数据集时,由于各只股票受上市时间、公司规模等因素的影响,其股票价格差别较大,这导致模型难以学习整体股票数据的变化规律;除此之外,股票市场易受各种外部因素的影响,从而造成涨跌停等特殊情况,导致该时间段内的股票特征数值过高或过低。这样的数据对模型来说等同于噪声数据,会对模型的学习造成误导。因此本文在构建整体股票数据集时,将先对每只股票数据按其价格范围进行均匀量化,然后再将其合并到整体的数据集中。
在量化之前,本文先对因部分股票停盘而造成的缺失数据进行填充。填充方式为将缺失数据上一交易日的股票数据填充为缺失数据。这样在每只股票的时间维度上可以保持统一。
具体量化时,将单只股票的5维特征在最大值和最小值之间划分为4个区间,从低到高依次编码为1~4。然后按照每个特征值所属的区间,将其编码为对应的数值。
表2是原始的部分股票特征数据,表3则是按照上述方法进行量化编码后的特征数据。对比可以看出,在经过量化处理后,在同一时间段上,由于股票体量等因素造成的价格差异被消除了。同时,对同一只股票,其涨跌停的数据经过量化平滑后,数值变化波动较小,有利于过滤噪声数据。
除此之外,股票特征中成交量其量纲和其他4维数据不同,造成在数量级有较大的差异,而量化编码过程是在每一维股票特征上单独进行的,因此经过量化,原来量纲带来的影响也被消除,这样数据不用再经过归一化的处理。
日期 | 开盘价 | 最高价 | 收盘价 | 最低价 | 成交量 | 涨跌幅 |
---|---|---|---|---|---|---|
2017/7/24 | 10.82 | 11.06 | 10.95 | 10.73 | 1,692,664 | 0.55 |
2017/7/25 | 10.98 | 11.27 | 11.0 | 10.95 | 1,954,768 | 0.46 |
2017/7/26 | 10.92 | 11.18 | 10.74 | 10.66 | 1,697,412 | -2.36 |
表2. 部分股票特征数据
日期 | 开盘价 | 最高价 | 收盘价 | 最低价 | 成交量 | 涨跌幅 |
---|---|---|---|---|---|---|
2017/7/24 | 1 | 1 | 1 | 1 | 1 | 0.55 |
2017/7/25 | 1 | 2 | 2 | 1 | 3 | 0.46 |
2017/7/26 | 1 | 1 | 1 | 1 | 2 | -2.36 |
表3. 量化后的部分股票特征数据
神经网络通过强大的非线性拟合能力,成为最为流行的人工智能模型之一,在分类和预测任务中都有优异的表现。它通过模拟神经单元的构造和功能来设计相关的网络模型,再通过不同的连接方式搭建不同的神经网络 [
1986年Rumelhart等人提出的反向传播(BP)的前馈神经网络是最早提出的神经网络,其通过引入隐藏层来实现非线性计算 [
长短期记忆网络(LSTM)是RNN的一种改进网络结构 [
f t = σ ( W f ⋅ [ h t − 1 , X t ] + b f ) (1)
i t = σ ( W i ⋅ [ h t − 1 , X t ] + b i ) (2)
o t = σ ( W o ⋅ [ h t − 1 , X t ] + b o ) (3)
在计算时,首先从当前时刻的输入和上一时刻隐藏层状态的信息中选择出要遗弃的部分,该部分是由遗忘门来实现的。然后由输入门决定神经单元要更新的值,通过Tanh函数更新神经单元状态。最终神经单元输出的状态由输出门决定,其先用Sigmoid层决定要输出的神经单元状态,然后将这些状态用Tanh函数压缩在−1到1之间。
图1. LSTM单元结构
本文使用LSTM网络作为基本网络结构,将量化编码后的股票特征数据作为输入变量。在模型输出上,使用涨、跌和小幅度涨跌等3类的分类方式做涨跌幅预测。
为了确定3个类别的划分界限,本文对股票数据集的涨跌幅做了统计。图2是股票数据集股票价格涨跌幅分布的直方图,可以看出,沪深300股票集的股票涨跌幅主要集中在±5%以内,也有部分样本出现了涨跌停的情况。
图2. 数据集的涨跌幅分布
图3是以涨跌幅1%为界限的3分类直方图,从图可以看出,在涨(涨幅超过1%)、跌(跌幅超过1%)和小幅度涨跌(涨跌幅在±1%之间)的样本数量接近。分类预测中,多个分类的样本数均衡分布,能提高模型的精度。
因此,本文将股票的涨跌幅以上述分类方式做3分类,即在涨区间的即为0;小幅度涨跌区间编码为1;跌区间编码为2,并将这3个分类用Onehot表示为:[0,0,1]、[0,1,0]、[1,0,0]。将编码后的涨跌分类作为标签,用以监督模型的训练。
图3. 3个分类的样本分布
在框架选择上,使用Tensorflow作为深度学习的框架,并使用GPU加速计算。在网络结构上,输入数据先进入一个全连接层,然后连接1层LSTM网络层。最后在输出端外接一个Softmax层,可将输出转换为各个类别的概率,从而输出预测的类别。神经网络内部节点数为64,初始的学习率为0.006。
图4是股票预测模型。由于使用3分类的预测方式,本文选择交叉熵函数作为模型的损失函数,用于评估模型预测的各类别的概率分布和实际分布之间的差异。预测值和标签值越为接近,损失函数的值就越小。在模型输出最终输出值后,需要将误差反向传播回去,不断更新模型的权重值,直至训练迭代结束。
图4. 股票预测模型
为了验证股票特征量化处理的预测效果,本文在训练数据集上分别使用经过量化编码处理后的股票特征数据和经过归一化处理的原始数据,其他的参数保持一致,训练后对应的模型分别为模型1和模型2。本文将处理后的数据集划分为训练集、验证集和测试集。对每只股票,将其数据的前80%作为训练集,剩余20%作为测试集。训练集中,又以8比2的比例将其划分为训练集和验证集。训练集用于训练调节LSTM网络参数,测试集用于评测效果。验证集数据用于判断模型收敛时的迭代次数,避免过拟合。
在模型评估上,本文除使用分类准确率作为判断模型优劣的标准外,还使用了精确率、召回率和F1值等指标,以较为全面的比对两个模型在预测性能上的差异。
图5. 模型1损失函数变化
图6. 模型2损失函数变化
图5和图6分别是模型1和模型2训练过程中损失函数的变化图象。由图可以看出,使用量化的股票交易数据训练模型时,在迭代了60次左右收敛。相比使用非量化数据,模型收敛速度较快,在迭代20次时就已经收敛。在模型保存上,保存验证集损失函数最小时的模型,作为测试集的预测模型。
表4是模型1和模型2在测试集上的表现,由表可以看出,模型1在准确率和F1上的表现都优于模型2,这说明对股票交易数据进行量化处理可以有效的过滤噪声数据,使特征数据更加平滑,利于模型对股票价格变动规律的学习。
模型名称 | 准确率 | 精度 | 召回率 | F1 |
---|---|---|---|---|
模型1 | 0.56 | 0.58 | 0.49 | 0.55 |
模型2 | 0.53 | 0.52 | 0.41 | 0.46 |
表4. 不同模型在测试集的表现
为了测试模型单只股票预测效果,本文从数据集中随机抽选了3只个股,分别在两个模型上测试预测精度。
股票名称 | 准确率 | 精度 | 召回率 | F1 |
---|---|---|---|---|
浦发银行 | 0.60 | 0.72 | 0.49 | 0.56 |
中信证券 | 0.57 | 0.39 | 0.35 | 0.36 |
中兴通讯 | 0.56 | 0.41 | 0.33 | 0.34 |
表5. 单只股票在模型1上的表现
股票名称 | 准确率 | 精度 | 召回率 | F1 |
---|---|---|---|---|
浦发银行 | 0.59 | 0.58 | 0.49 | 0.55 |
中信证券 | 0.55 | 0.42 | 0.19 | 0.24 |
中兴通讯 | 0.53 | 0.25 | 0.21 | 0.29 |
表6. 单只股票在模型2上的表现
从表5和表6可以看出,在单只股票预测上,由于个股的发展规律各不相同,预测精度也各有差别。在准确率上,单只股票在两个模型的表现较为接近,但在F1上,模型1要优于模型2。因此,在实际对单只股票进行预测时,可以使用对股票特征进行量化的方式训练模型。
在股票涨跌预测上,本文使用对股票特征量化的方式,对股票特征数据进行过滤和平滑,使用量化编码后的数据和原始数据分别训练股票预测模型。结果表明,在沪深300数据集上,经过量化处理的股票特征更容易让模型学习到股票价格发展的规律,其测试集的各项指标都优于使用原始数据训练的模型。在单只股票预测上,使用量化数据训练的模型表现也优于使用原始数据训练的模型。
但是,金融时间序列预测的数据来源于市场的真实数据,而市场运行于博弈过程中。如果某种预测方法明显优于其他方法,且在相应的市场操作过程中该预测方法起到一定作用时,则会随着时间的推移,其性能会下降,因此,也就不会有预测准确性能特别优异的算法存在。而本文提出的基于股票数据特征量化编码的数据处理方法,并结合LSTM网络构建的预测模型,其主要目的是在没有特别突发事件的影响下,在仅仅基于主要的交易数据本身(不考虑其他事件),尽可能获得一种适应能力更强的、预测准确度较高、性能稳定的预测方法。
赵建群,张岐,王 悦. 基于LSTM的量化股票预测LSTM Based Quantitative Stock Forecasting[J]. 金融, 2020, 10(04): 366-373. https://doi.org/10.12677/FIN.2020.104037