当前位置:   article > 正文

基于LSTM的股票价格预测程序源代码+报告+数据:_基于lstm的股票价格预测系统的设计与实现

基于lstm的股票价格预测系统的设计与实现

一、 背景

股票作为人民金融投资的普遍方式,如何在股票中赚钱成为股民的共同目标。

要想在股票交易中赚钱便要掌握股票的走势,因此股票价格预测工作引起社会及学术界的广泛关注。股票的走势随市场变动,而且受诸多因素影响,如国际环境,政策变化,行业发展,市场情绪等等,这使得股民很难预测股票的走势。理论上,根据股票以往的价格走势,可以预测股票的未来走势。因为股票预测是高度非线性的,这就要预测模型要能够处理非线性问题,并且,股票具有时间序列的特性,因此适合用循环神经网络对股票进行预测。虽然循环神经网络(RNN),允许信息的持久化,然而,一般的RNN模型对具备长记忆性的时间序列数据刻画能力较弱,在时间序列过长的时候,因为存在梯度消散和梯度爆炸现象RNN训练变得非常困

难。Hochreiter 和 Schmidhuber 提出的长短期记忆( LongShort-TermMemory,

LSTM)模型在RNN结构的基础上进行了改造,从而解决了RNN模型无法刻画时间序列长记忆性的问题。因此,本文基于LSTM实现一个股票价格预测模型。

二、 主要技术介绍

1.      RNN模型

在传统的RNN(循环神经网络)中,所有的w都是同一个w,经过同一个cell 的时候,都会保留输入的记忆,再加上另外一个要预测的输入,所以预测包含了之前所有的记忆加上此次的输入。所有RNN都具有一种重复神经网络模块的链式的形式。在标准的RNN中,这个重复的模块只有一个非常简单的结构,例如一个 tanh层。

当权重大于1时,反向传播误差时,误差将会一直放大,导致梯度爆炸;当权重小于1时,误差将会一直缩小,导致梯度消失,进而导致网络权重更新缓慢,无法体出RNN的长期记忆的效果,使得RNN太过健忘。RNN模型的结构如图:

1

RNN

模型结构示意图

2.      LSTM模型

长短期记忆模型(long-shorttermmemory)是一种特殊的RNN模型,是为了解决反向传播过程中存在梯度消失和梯度爆炸现象,通过引入门(gate)机制,解决了RNN模型不具备的长记忆性问题,LSTM模型的结构如图:

图2 LSTM模型结构示意图三、 实例分析

1. 数据说明

实验数据来自上证指数的csv文件,包含一支股票5430个连续交易日的数据。其中每条数据包括:id,股票代码,交易日,当日收盘价,当日开盘价,当日最高股价,当日最低股价,上一交易日收盘价,涨跌值,涨跌幅百分比,成交量(股),成交金额。

3

数据列表示意图

2. 数据可视化

为了直观感受股票价格走势,对当日收盘价,当日开盘价,当日最高股价,当日最低股价以及成交量随交易日的变化趋势进行可视化,结果如图4。我们可以发现股票成交量和股票价格存在一定的关系,那么之后可以在网络中结合股票成交量来预测股票价格。

图4 数据可视化结果

3. 数据预处理

  1. 去除id、股票代码、前一天的收盘价、交易日期等对训练无用的无效数据。
  2. 对所有数据统计当日收盘价的最大值max和最小值min,然后对每条数据的当日收盘价进行标准化:

z xmin

                                                                        maxmin

  1. 99%条数据用作训练数据,后1%条数据用作测试数据。

4. LSTM模型参数

  1. 输入神经元个数 input_size = 选取列数
  2. 输出神经元个数 output_size = 1 (预测值个数)
  3. 隐藏层的维度:32
  4. 学习率 lr = 0.0001
  5. 随机初始化网络权重

5. 损失函数

本实验采取常用的均方误差损失。平方损失也可以理解为是最小二乘法,一般在回归问题中比较常见,最小二乘法的基本原理是:最优拟合直线是使各点到回归直线的距离和最小的直线,即平方和最小。

                                                                              1 N                                    2

                                                                     L           (Y f (X))

N i1

6. 预测误差

本实验采取相对偏差来衡量模型的预测能力,公式为:

E  (predict real)/ real*100%

四、 实验结果

损失函数变化曲线如图:

图5 损失函数的变化曲线

预测股价和真实股价的相对偏差在(-4%,7%)之间,差异的可视化结果如图6所示

6

预测股价和真实股价的差异

五、 总结

通过学习数据挖掘概论这门课,我学习了数据挖掘能解决什么问题,以及常

用的数据挖掘算法。本文利用pytorch搭建了一个LSTM模型实现了对股票价格的预测。实验结果显示预测模型可以较好地预测股票的走势。之后可以通过调整网络参数和网络结构来继续优化模型,进一步提升预测效果。

参考文献:

  1. S.HochreiterandJ.Schmidhuber,"LongShort-TermMemory,"inNeural Computation, vol. 9, no. 8, pp. 1735-1780, 15 Nov. 1997, doi:

10.1162/neco.1997.9.8.1735.

  1. 基于 LSTM 的股票预测模型_python 实现_张 xm_的博客-CSDN 博客_股票预测模型

一、 背景

股票作为人民金融投资的普遍方式,如何在股票中赚钱成为股民的共同目标。

要想在股票交易中赚钱便要掌握股票的走势,因此股票价格预测工作引起社会及学术界的广泛关注。股票的走势随市场变动,而且受诸多因素影响,如国际环境,政策变化,行业发展,市场情绪等等,这使得股民很难预测股票的走势。理论上,根据股票以往的价格走势,可以预测股票的未来走势。因为股票预测是高度非线性的,这就要预测模型要能够处理非线性问题,并且,股票具有时间序列的特性,因此适合用循环神经网络对股票进行预测。虽然循环神经网络(RNN),允许信息的持久化,然而,一般的RNN模型对具备长记忆性的时间序列数据刻画能力较弱,在时间序列过长的时候,因为存在梯度消散和梯度爆炸现象RNN训练变得非常困

难。Hochreiter 和 Schmidhuber 提出的长短期记忆( LongShort-TermMemory,

LSTM)模型在RNN结构的基础上进行了改造,从而解决了RNN模型无法刻画时间序列长记忆性的问题。因此,本文基于LSTM实现一个股票价格预测模型。

二、 主要技术介绍

1.      RNN模型

在传统的RNN(循环神经网络)中,所有的w都是同一个w,经过同一个cell 的时候,都会保留输入的记忆,再加上另外一个要预测的输入,所以预测包含了之前所有的记忆加上此次的输入。所有RNN都具有一种重复神经网络模块的链式的形式。在标准的RNN中,这个重复的模块只有一个非常简单的结构,例如一个 tanh层。

当权重大于1时,反向传播误差时,误差将会一直放大,导致梯度爆炸;当权重小于1时,误差将会一直缩小,导致梯度消失,进而导致网络权重更新缓慢,无法体出RNN的长期记忆的效果,使得RNN太过健忘。RNN模型的结构如图:

1

RNN

模型结构示意图

2.      LSTM模型

长短期记忆模型(long-shorttermmemory)是一种特殊的RNN模型,是为了解决反向传播过程中存在梯度消失和梯度爆炸现象,通过引入门(gate)机制,解决了RNN模型不具备的长记忆性问题,LSTM模型的结构如图:

图2 LSTM模型结构示意图三、 实例分析

1. 数据说明

实验数据来自上证指数的csv文件,包含一支股票5430个连续交易日的数据。其中每条数据包括:id,股票代码,交易日,当日收盘价,当日开盘价,当日最高股价,当日最低股价,上一交易日收盘价,涨跌值,涨跌幅百分比,成交量(股),成交金额。

3

数据列表示意图

2. 数据可视化

为了直观感受股票价格走势,对当日收盘价,当日开盘价,当日最高股价,当日最低股价以及成交量随交易日的变化趋势进行可视化,结果如图4。我们可以发现股票成交量和股票价格存在一定的关系,那么之后可以在网络中结合股票成交量来预测股票价格。

图4 数据可视化结果

3. 数据预处理

  1. 去除id、股票代码、前一天的收盘价、交易日期等对训练无用的无效数据。
  2. 对所有数据统计当日收盘价的最大值max和最小值min,然后对每条数据的当日收盘价进行标准化:

z xmin

                                                                        maxmin

  1. 99%条数据用作训练数据,后1%条数据用作测试数据。

4. LSTM模型参数

  1. 输入神经元个数 input_size = 选取列数
  2. 输出神经元个数 output_size = 1 (预测值个数)
  3. 隐藏层的维度:32
  4. 学习率 lr = 0.0001
  5. 随机初始化网络权重

5. 损失函数

本实验采取常用的均方误差损失。平方损失也可以理解为是最小二乘法,一般在回归问题中比较常见,最小二乘法的基本原理是:最优拟合直线是使各点到回归直线的距离和最小的直线,即平方和最小。

                                                                              1 N                                    2

                                                                     L           (Y f (X))

N i1

6. 预测误差

本实验采取相对偏差来衡量模型的预测能力,公式为:

E  (predict real)/ real*100%

四、 实验结果

损失函数变化曲线如图:

图5 损失函数的变化曲线

预测股价和真实股价的相对偏差在(-4%,7%)之间,差异的可视化结果如图6所示

6

预测股价和真实股价的差异

五、 总结

通过学习数据挖掘概论这门课,我学习了数据挖掘能解决什么问题,以及常

用的数据挖掘算法。本文利用pytorch搭建了一个LSTM模型实现了对股票价格的预测。实验结果显示预测模型可以较好地预测股票的走势。之后可以通过调整网络参数和网络结构来继续优化模型,进一步提升预测效果。

参考文献:

  1. S.HochreiterandJ.Schmidhuber,"LongShort-TermMemory,"inNeural Computation, vol. 9, no. 8, pp. 1735-1780, 15 Nov. 1997, doi:

10.1162/neco.1997.9.8.1735.

  1. 基于 LSTM 的股票预测模型_python 实现_张 xm_的博客-CSDN 博客_股票预测模型

一、 背景

股票作为人民金融投资的普遍方式,如何在股票中赚钱成为股民的共同目标。

要想在股票交易中赚钱便要掌握股票的走势,因此股票价格预测工作引起社会及学术界的广泛关注。股票的走势随市场变动,而且受诸多因素影响,如国际环境,政策变化,行业发展,市场情绪等等,这使得股民很难预测股票的走势。理论上,根据股票以往的价格走势,可以预测股票的未来走势。因为股票预测是高度非线性的,这就要预测模型要能够处理非线性问题,并且,股票具有时间序列的特性,因此适合用循环神经网络对股票进行预测。虽然循环神经网络(RNN),允许信息的持久化,然而,一般的RNN模型对具备长记忆性的时间序列数据刻画能力较弱,在时间序列过长的时候,因为存在梯度消散和梯度爆炸现象RNN训练变得非常困

难。Hochreiter 和 Schmidhuber 提出的长短期记忆( LongShort-TermMemory,

LSTM)模型在RNN结构的基础上进行了改造,从而解决了RNN模型无法刻画时间序列长记忆性的问题。因此,本文基于LSTM实现一个股票价格预测模型。

二、 主要技术介绍

1.      RNN模型

在传统的RNN(循环神经网络)中,所有的w都是同一个w,经过同一个cell 的时候,都会保留输入的记忆,再加上另外一个要预测的输入,所以预测包含了之前所有的记忆加上此次的输入。所有RNN都具有一种重复神经网络模块的链式的形式。在标准的RNN中,这个重复的模块只有一个非常简单的结构,例如一个 tanh层。

当权重大于1时,反向传播误差时,误差将会一直放大,导致梯度爆炸;当权重小于1时,误差将会一直缩小,导致梯度消失,进而导致网络权重更新缓慢,无法体出RNN的长期记忆的效果,使得RNN太过健忘。RNN模型的结构如图:

1

RNN

模型结构示意图

2.      LSTM模型

长短期记忆模型(long-shorttermmemory)是一种特殊的RNN模型,是为了解决反向传播过程中存在梯度消失和梯度爆炸现象,通过引入门(gate)机制,解决了RNN模型不具备的长记忆性问题,LSTM模型的结构如图:

图2 LSTM模型结构示意图三、 实例分析

1. 数据说明

实验数据来自上证指数的csv文件,包含一支股票5430个连续交易日的数据。其中每条数据包括:id,股票代码,交易日,当日收盘价,当日开盘价,当日最高股价,当日最低股价,上一交易日收盘价,涨跌值,涨跌幅百分比,成交量(股),成交金额。

3

数据列表示意图

2. 数据可视化

为了直观感受股票价格走势,对当日收盘价,当日开盘价,当日最高股价,当日最低股价以及成交量随交易日的变化趋势进行可视化,结果如图4。我们可以发现股票成交量和股票价格存在一定的关系,那么之后可以在网络中结合股票成交量来预测股票价格。

图4 数据可视化结果

3. 数据预处理

  1. 去除id、股票代码、前一天的收盘价、交易日期等对训练无用的无效数据。
  2. 对所有数据统计当日收盘价的最大值max和最小值min,然后对每条数据的当日收盘价进行标准化:

z xmin

                                                                        maxmin

  1. 99%条数据用作训练数据,后1%条数据用作测试数据。

4. LSTM模型参数

  1. 输入神经元个数 input_size = 选取列数
  2. 输出神经元个数 output_size = 1 (预测值个数)
  3. 隐藏层的维度:32
  4. 学习率 lr = 0.0001
  5. 随机初始化网络权重

5. 损失函数

本实验采取常用的均方误差损失。平方损失也可以理解为是最小二乘法,一般在回归问题中比较常见,最小二乘法的基本原理是:最优拟合直线是使各点到回归直线的距离和最小的直线,即平方和最小。

                                                                              1 N                                    2

                                                                     L           (Y f (X))

N i1

6. 预测误差

本实验采取相对偏差来衡量模型的预测能力,公式为:

E  (predict real)/ real*100%

四、 实验结果

损失函数变化曲线如图:

图5 损失函数的变化曲线

预测股价和真实股价的相对偏差在(-4%,7%)之间,差异的可视化结果如图6所示

6

预测股价和真实股价的差异

五、 总结

通过学习数据挖掘概论这门课,我学习了数据挖掘能解决什么问题,以及常

用的数据挖掘算法。本文利用pytorch搭建了一个LSTM模型实现了对股票价格的预测。实验结果显示预测模型可以较好地预测股票的走势。之后可以通过调整网络参数和网络结构来继续优化模型,进一步提升预测效果。

参考文献:

  1. S.HochreiterandJ.Schmidhuber,"LongShort-TermMemory,"inNeural Computation, vol. 9, no. 8, pp. 1735-1780, 15 Nov. 1997, doi:

10.1162/neco.1997.9.8.1735.

  1. 基于 LSTM 的股票预测模型_python 实现_张 xm_的博客-CSDN 博客_股票预测模型

一、 背景

股票作为人民金融投资的普遍方式,如何在股票中赚钱成为股民的共同目标。

要想在股票交易中赚钱便要掌握股票的走势,因此股票价格预测工作引起社会及学术界的广泛关注。股票的走势随市场变动,而且受诸多因素影响,如国际环境,政策变化,行业发展,市场情绪等等,这使得股民很难预测股票的走势。理论上,根据股票以往的价格走势,可以预测股票的未来走势。因为股票预测是高度非线性的,这就要预测模型要能够处理非线性问题,并且,股票具有时间序列的特性,因此适合用循环神经网络对股票进行预测。虽然循环神经网络(RNN),允许信息的持久化,然而,一般的RNN模型对具备长记忆性的时间序列数据刻画能力较弱,在时间序列过长的时候,因为存在梯度消散和梯度爆炸现象RNN训练变得非常困

难。Hochreiter 和 Schmidhuber 提出的长短期记忆( LongShort-TermMemory,

LSTM)模型在RNN结构的基础上进行了改造,从而解决了RNN模型无法刻画时间序列长记忆性的问题。因此,本文基于LSTM实现一个股票价格预测模型。

二、 主要技术介绍

1.      RNN模型

在传统的RNN(循环神经网络)中,所有的w都是同一个w,经过同一个cell 的时候,都会保留输入的记忆,再加上另外一个要预测的输入,所以预测包含了之前所有的记忆加上此次的输入。所有RNN都具有一种重复神经网络模块的链式的形式。在标准的RNN中,这个重复的模块只有一个非常简单的结构,例如一个 tanh层。

当权重大于1时,反向传播误差时,误差将会一直放大,导致梯度爆炸;当权重小于1时,误差将会一直缩小,导致梯度消失,进而导致网络权重更新缓慢,无法体出RNN的长期记忆的效果,使得RNN太过健忘。RNN模型的结构如图:

1

RNN

模型结构示意图

2.      LSTM模型

长短期记忆模型(long-shorttermmemory)是一种特殊的RNN模型,是为了解决反向传播过程中存在梯度消失和梯度爆炸现象,通过引入门(gate)机制,解决了RNN模型不具备的长记忆性问题,LSTM模型的结构如图:

图2 LSTM模型结构示意图三、 实例分析

1. 数据说明

实验数据来自上证指数的csv文件,包含一支股票5430个连续交易日的数据。其中每条数据包括:id,股票代码,交易日,当日收盘价,当日开盘价,当日最高股价,当日最低股价,上一交易日收盘价,涨跌值,涨跌幅百分比,成交量(股),成交金额。

3

数据列表示意图

2. 数据可视化

为了直观感受股票价格走势,对当日收盘价,当日开盘价,当日最高股价,当日最低股价以及成交量随交易日的变化趋势进行可视化,结果如图4。我们可以发现股票成交量和股票价格存在一定的关系,那么之后可以在网络中结合股票成交量来预测股票价格。

图4 数据可视化结果

3. 数据预处理

  1. 去除id、股票代码、前一天的收盘价、交易日期等对训练无用的无效数据。
  2. 对所有数据统计当日收盘价的最大值max和最小值min,然后对每条数据的当日收盘价进行标准化:

z xmin

                                                                        maxmin

  1. 99%条数据用作训练数据,后1%条数据用作测试数据。

4. LSTM模型参数

  1. 输入神经元个数 input_size = 选取列数
  2. 输出神经元个数 output_size = 1 (预测值个数)
  3. 隐藏层的维度:32
  4. 学习率 lr = 0.0001
  5. 随机初始化网络权重

5. 损失函数

本实验采取常用的均方误差损失。平方损失也可以理解为是最小二乘法,一般在回归问题中比较常见,最小二乘法的基本原理是:最优拟合直线是使各点到回归直线的距离和最小的直线,即平方和最小。

                                                                              1 N                                    2

                                                                     L           (Y f (X))

N i1

6. 预测误差

本实验采取相对偏差来衡量模型的预测能力,公式为:

E  (predict real)/ real*100%

四、 实验结果

损失函数变化曲线如图:

图5 损失函数的变化曲线

预测股价和真实股价的相对偏差在(-4%,7%)之间,差异的可视化结果如图6所示

6

预测股价和真实股价的差异

五、 总结

通过学习数据挖掘概论这门课,我学习了数据挖掘能解决什么问题,以及常

用的数据挖掘算法。本文利用pytorch搭建了一个LSTM模型实现了对股票价格的预测。实验结果显示预测模型可以较好地预测股票的走势。之后可以通过调整网络参数和网络结构来继续优化模型,进一步提升预测效果。

参考文献:

  1. S.HochreiterandJ.Schmidhuber,"LongShort-TermMemory,"inNeural Computation, vol. 9, no. 8, pp. 1735-1780, 15 Nov. 1997, doi:

10.1162/neco.1997.9.8.1735.

  1. 基于 LSTM 的股票预测模型_python 实现_张 xm_的博客-CSDN 博客_股票预测模型

一、 背景

股票作为人民金融投资的普遍方式,如何在股票中赚钱成为股民的共同目标。

要想在股票交易中赚钱便要掌握股票的走势,因此股票价格预测工作引起社会及学术界的广泛关注。股票的走势随市场变动,而且受诸多因素影响,如国际环境,政策变化,行业发展,市场情绪等等,这使得股民很难预测股票的走势。理论上,根据股票以往的价格走势,可以预测股票的未来走势。因为股票预测是高度非线性的,这就要预测模型要能够处理非线性问题,并且,股票具有时间序列的特性,因此适合用循环神经网络对股票进行预测。虽然循环神经网络(RNN),允许信息的持久化,然而,一般的RNN模型对具备长记忆性的时间序列数据刻画能力较弱,在时间序列过长的时候,因为存在梯度消散和梯度爆炸现象RNN训练变得非常困

难。Hochreiter 和 Schmidhuber 提出的长短期记忆( LongShort-TermMemory,

LSTM)模型在RNN结构的基础上进行了改造,从而解决了RNN模型无法刻画时间序列长记忆性的问题。因此,本文基于LSTM实现一个股票价格预测模型。

二、 主要技术介绍

1.      RNN模型

在传统的RNN(循环神经网络)中,所有的w都是同一个w,经过同一个cell 的时候,都会保留输入的记忆,再加上另外一个要预测的输入,所以预测包含了之前所有的记忆加上此次的输入。所有RNN都具有一种重复神经网络模块的链式的形式。在标准的RNN中,这个重复的模块只有一个非常简单的结构,例如一个 tanh层。

当权重大于1时,反向传播误差时,误差将会一直放大,导致梯度爆炸;当权重小于1时,误差将会一直缩小,导致梯度消失,进而导致网络权重更新缓慢,无法体出RNN的长期记忆的效果,使得RNN太过健忘。RNN模型的结构如图:

1

RNN

模型结构示意图

2.      LSTM模型

长短期记忆模型(long-shorttermmemory)是一种特殊的RNN模型,是为了解决反向传播过程中存在梯度消失和梯度爆炸现象,通过引入门(gate)机制,解决了RNN模型不具备的长记忆性问题,LSTM模型的结构如图:

图2 LSTM模型结构示意图三、 实例分析

1. 数据说明

实验数据来自上证指数的csv文件,包含一支股票5430个连续交易日的数据。其中每条数据包括:id,股票代码,交易日,当日收盘价,当日开盘价,当日最高股价,当日最低股价,上一交易日收盘价,涨跌值,涨跌幅百分比,成交量(股),成交金额。

3

数据列表示意图

2. 数据可视化

为了直观感受股票价格走势,对当日收盘价,当日开盘价,当日最高股价,当日最低股价以及成交量随交易日的变化趋势进行可视化,结果如图4。我们可以发现股票成交量和股票价格存在一定的关系,那么之后可以在网络中结合股票成交量来预测股票价格。

图4 数据可视化结果

3. 数据预处理

  1. 去除id、股票代码、前一天的收盘价、交易日期等对训练无用的无效数据。
  2. 对所有数据统计当日收盘价的最大值max和最小值min,然后对每条数据的当日收盘价进行标准化:

z xmin

                                                                        maxmin

  1. 99%条数据用作训练数据,后1%条数据用作测试数据。

4. LSTM模型参数

  1. 输入神经元个数 input_size = 选取列数
  2. 输出神经元个数 output_size = 1 (预测值个数)
  3. 隐藏层的维度:32
  4. 学习率 lr = 0.0001
  5. 随机初始化网络权重

5. 损失函数

本实验采取常用的均方误差损失。平方损失也可以理解为是最小二乘法,一般在回归问题中比较常见,最小二乘法的基本原理是:最优拟合直线是使各点到回归直线的距离和最小的直线,即平方和最小。

                                                                              1 N                                    2

                                                                     L           (Y f (X))

N i1

6. 预测误差

本实验采取相对偏差来衡量模型的预测能力,公式为:

E  (predict real)/ real*100%

四、 实验结果

损失函数变化曲线如图:

图5 损失函数的变化曲线

预测股价和真实股价的相对偏差在(-4%,7%)之间,差异的可视化结果如图6所示

6

预测股价和真实股价的差异

五、 总结

通过学习数据挖掘概论这门课,我学习了数据挖掘能解决什么问题,以及常

用的数据挖掘算法。本文利用pytorch搭建了一个LSTM模型实现了对股票价格的预测。实验结果显示预测模型可以较好地预测股票的走势。之后可以通过调整网络参数和网络结构来继续优化模型,进一步提升预测效果。

参考文献:

  1. S.HochreiterandJ.Schmidhuber,"LongShort-TermMemory,"inNeural Computation, vol. 9, no. 8, pp. 1735-1780, 15 Nov. 1997, doi:

10.1162/neco.1997.9.8.1735.

  1. 基于 LSTM 的股票预测模型_python 实现_张 xm_的博客-CSDN 博客_股票预测模型

一、 背景

股票作为人民金融投资的普遍方式,如何在股票中赚钱成为股民的共同目标。

要想在股票交易中赚钱便要掌握股票的走势,因此股票价格预测工作引起社会及学术界的广泛关注。股票的走势随市场变动,而且受诸多因素影响,如国际环境,政策变化,行业发展,市场情绪等等,这使得股民很难预测股票的走势。理论上,根据股票以往的价格走势,可以预测股票的未来走势。因为股票预测是高度非线性的,这就要预测模型要能够处理非线性问题,并且,股票具有时间序列的特性,因此适合用循环神经网络对股票进行预测。虽然循环神经网络(RNN),允许信息的持久化,然而,一般的RNN模型对具备长记忆性的时间序列数据刻画能力较弱,在时间序列过长的时候,因为存在梯度消散和梯度爆炸现象RNN训练变得非常困

难。Hochreiter 和 Schmidhuber 提出的长短期记忆( LongShort-TermMemory,

LSTM)模型在RNN结构的基础上进行了改造,从而解决了RNN模型无法刻画时间序列长记忆性的问题。因此,本文基于LSTM实现一个股票价格预测模型。

二、 主要技术介绍

1.      RNN模型

在传统的RNN(循环神经网络)中,所有的w都是同一个w,经过同一个cell 的时候,都会保留输入的记忆,再加上另外一个要预测的输入,所以预测包含了之前所有的记忆加上此次的输入。所有RNN都具有一种重复神经网络模块的链式的形式。在标准的RNN中,这个重复的模块只有一个非常简单的结构,例如一个 tanh层。

当权重大于1时,反向传播误差时,误差将会一直放大,导致梯度爆炸;当权重小于1时,误差将会一直缩小,导致梯度消失,进而导致网络权重更新缓慢,无法体出RNN的长期记忆的效果,使得RNN太过健忘。RNN模型的结构如图:

1

RNN

模型结构示意图

2.      LSTM模型

长短期记忆模型(long-shorttermmemory)是一种特殊的RNN模型,是为了解决反向传播过程中存在梯度消失和梯度爆炸现象,通过引入门(gate)机制,解决了RNN模型不具备的长记忆性问题,LSTM模型的结构如图:

图2 LSTM模型结构示意图三、 实例分析

1. 数据说明

实验数据来自上证指数的csv文件,包含一支股票5430个连续交易日的数据。其中每条数据包括:id,股票代码,交易日,当日收盘价,当日开盘价,当日最高股价,当日最低股价,上一交易日收盘价,涨跌值,涨跌幅百分比,成交量(股),成交金额。

3

数据列表示意图

2. 数据可视化

为了直观感受股票价格走势,对当日收盘价,当日开盘价,当日最高股价,当日最低股价以及成交量随交易日的变化趋势进行可视化,结果如图4。我们可以发现股票成交量和股票价格存在一定的关系,那么之后可以在网络中结合股票成交量来预测股票价格。

图4 数据可视化结果

3. 数据预处理

  1. 去除id、股票代码、前一天的收盘价、交易日期等对训练无用的无效数据。
  2. 对所有数据统计当日收盘价的最大值max和最小值min,然后对每条数据的当日收盘价进行标准化:

z xmin

                                                                        maxmin

  1. 99%条数据用作训练数据,后1%条数据用作测试数据。

4. LSTM模型参数

  1. 输入神经元个数 input_size = 选取列数
  2. 输出神经元个数 output_size = 1 (预测值个数)
  3. 隐藏层的维度:32
  4. 学习率 lr = 0.0001
  5. 随机初始化网络权重

5. 损失函数

本实验采取常用的均方误差损失。平方损失也可以理解为是最小二乘法,一般在回归问题中比较常见,最小二乘法的基本原理是:最优拟合直线是使各点到回归直线的距离和最小的直线,即平方和最小。

                                                                              1 N                                    2

                                                                     L           (Y f (X))

N i1

6. 预测误差

本实验采取相对偏差来衡量模型的预测能力,公式为:

E  (predict real)/ real*100%

四、 实验结果

损失函数变化曲线如图:

图5 损失函数的变化曲线

预测股价和真实股价的相对偏差在(-4%,7%)之间,差异的可视化结果如图6所示

6

预测股价和真实股价的差异

五、 总结

通过学习数据挖掘概论这门课,我学习了数据挖掘能解决什么问题,以及常

用的数据挖掘算法。本文利用pytorch搭建了一个LSTM模型实现了对股票价格的预测。实验结果显示预测模型可以较好地预测股票的走势。之后可以通过调整网络参数和网络结构来继续优化模型,进一步提升预测效果。

参考文献:

  1. S.HochreiterandJ.Schmidhuber,"LongShort-TermMemory,"inNeural Computation, vol. 9, no. 8, pp. 1735-1780, 15 Nov. 1997, doi:

10.1162/neco.1997.9.8.1735.

  1. 基于 LSTM 的股票预测模型_python 实现_张 xm_的博客-CSDN 博客_股票预测模型

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/411384
推荐阅读
相关标签
  

闽ICP备14008679号