01背景
股票价格的预测是学界和业界一直以来尝试去研究解决的问题,由于股票的价格受到的影响因素众多,涵盖了上市公司基本面,产品价格的波动,国内的宏观经济数据,国际市场的各种金融资产和价格的波动等等,并且各个变量与股票价格的走势并非线性,因此传统的计量经济学模型并不能很好地解决股票价格的预测问题。
近些年来随着人工智能与机器学习的出现,为股票价格的预测提供了一种新的思路,本文基于深度学习的思想,尝试对上市公司的价格做出预测。
02深度学习理论与模型
深度学习是机器学习的一个新的方向,其理论基础是神经网络。一个神经网络包含输入层、隐含层和输出层。将数据导入输入层,经过一系列数据传导、计算及误差修正,可以得到样本数据的内在规律和表示层次。理论上,一个足够复杂的神经网络可以逼近任何函数。
2.1 感知机
一个感知机是具有单层计算单元的神经网络,由线性元件及阈值元件组成。在单层感知机的输入层和输出层之间加入隐藏层,就构成了多层感知机,每层的计算都由一个线性函数加一个非线性激活函数构成。当一个神经网络包含一个深层的隐藏层“时,它称为深度神经网络(DNN)
2.2 RNN/LSTM
循环神经网络通过使用带自反馈(隐藏层)的神经元,能够处理任意长度的序列。循环神经网络比前馈神经网络更加符合生物神经网络的结构。RNN非常适合用于处理时间序列,且在语音识别、图像处理、语言模型以及自然语言生成等任务上也应用非常广泛。
长短时记忆神经网络(Long Short-Term Memory Neural Network,LSTM)是循环神经网络的一个变体,可以有效地解决长期依赖问题/梯度消失问题。
本文使用LSTM建立基于深度学习的股票价格涨跌预测模型
03数据获取、处理与建模
3.1 数据获取
本文获取点宽BP因子数据库中与沪深300成分股相关的基本面因子及技术面因子,总共149个因子,时间区间为2018年1月1日-2019年1月1日。
3.2 数据处理及建模
由于沪深300成分股的基本面因子及技术面因子数据之间的差异较大,因此需要对因子数据做归一化处理,并将缺失值超过90%的做删除处理,然后剩下的缺失数据用0填充。
然后将数据分成训练集和测试集,按照9:1的比例进行划分,以所有股票第二天的涨跌作为输出,若第二天为涨则为1,否则为0;以其他基本面因子及技术面因子数据作为输入,
使用经过处理后的数据构建LSTM模型,这里的神经网络包含四层:输入层、两层LSTM层和一个输出层,模型概览如下:
开始训练神经网络:
可以看到随着训练次数的增加,模型的损失率逐步下降,准确率逐步上升并最终达到92%以上。
3.3 模型预测及改善方向
需要指出的是,虽然该LSTM模型在样本内预测效果很好,但是当我们使用该网络对测试集的数据进行测试的时候,发现准确率仅有53%,说明该模型的实际应用效果较为一般,我们可以从以下两个方面进行完善:
- 数据:更换其他数据集,获取更充足的数据
- 对神经网络的结构进行调整,使用其他类型的神经网络,调整神经网络的参数