基于RNN,LSTM,GRU对黄金期货的时间序列研究
目录
一、 背景介绍
二、 原理介绍
2.1模型原理
RNN模型介绍
2.LSTM模型介绍
三、 实验论证
3.1 数据预处理
3.2 模型的评价指标
3.3 实验模型设置
3.4 实验数据和超参数设置
3.5 模型性能评估和实验结果比较
3.5.1 LOSS图像:
3.5.2 三种模型MSE,RMSE,MAE、R^2值比较
3.5.3 最终拟合情况可视化三种模型比较
3.5.4 以LSTM为例最终预测值可视化
四、实验结论
一、 背景介绍
黄金期货是交易市场上的一个投资品种,不管是对套期保值,还是维护金融稳定等,都有着很重要的作用,对其价格波动进行预测也极具现实意义。
在预测方法上可分成传统预测模型和非线性预测模型。传统预测模型包含ARIMA模型(移动平均自回归模型)、GARCH模型 ( 自回归条件异方差模型)、指数平滑模型等,并在黄金价格预测研究上取得了很大进步。比如在2014年,Sharma A M和Baby S运用ARIMA模型对印度的黄金价格进行预测分析传统预测模型的各项研究均证明了其在预测黄金价格的走势或动态特征方面是有效的,但是,鉴于黄金期货价格时间序列具有非线性及高噪声的数据特征,对其精确预测依旧十分困难,同时由于时间的动态变化,使得自变量和因变量二者之间的关系也会随之发生变动,因此传统时间序列模型很难精准得对黄金期货市场进行预测。
近年来,随着计算机硬件水平提升得越来越快,对神经网络的研究也逐渐深入,由此非线性模型逐渐取代了时间序列模型在黄金期货预测方面的应用,非线性预测模型包括基于ANN模型(人工神经网络模型)及其演化的各种模型,如BPNN、SVR模型(支持向量回归模型)、DNN模型(深层神经网络模型)及其演化的各种模型,如CNN、 RNN等。 2010年曾濂等人提出了一种基于BP神经网络的改进模型,研究首先使用定性分析找到伦敦黄金期货价格变动的影响因素,然后利用投影寻踪方法筛选出非线性因素中影响力最大的因素输入神经网络,并改进算法进行网络学习,最后训练得出所需的BPNN。基于浅层神经网络对黄金期货价格及趋势进行预测的研究较之深层神经网络的要多,包括ANN模型,基于GA-BP神经网络和SVR模型等等。
近年来,LSTM模型(Long-Short Term Memory)和GRU模型(Gate Recurrent Unit)开始逐步应用在金融序列预测问题上,众多研究者开始利用LSTM模型对股票市场进行建模预测,2015年,Chen等人将其运用于我国股票市场的股价预测,相较于其他预测模型,LSTM的预测效果得到了大幅提升。多个应用LSTM模型的金融序列预测,都获得了更佳的预测效果,但目前应用在黄金期货市场预测上的研究成果相对较少。
综上所述,为了寻找一种更合适的黄金期货价格预测方法,建立了RNN,LSTM,GRU预测模型。以ZGQ1黄金期货价格序列为研究对象,先将原始黄金期货价格序列进行归以化处理,然后进行不同参数下模型的比较,最后,选择出最适应归一化数值下的参数模型,输出预测的结果。结果表明,LSTM模型具有更高的精度,也验证了模型有效性。
二、 原理介绍
传统的黄金期货价格预测模型不能充分描述黄金期货价格很强的非线性、非平稳性和高噪声的特点,因此在预测问题上存在许多困难,而神经网络能够发现并刻画数据自身复杂的内部结构特征,也能自适应得学习和构建数据的非线性的复杂关系,不会对输入变量施加限制,也具备更好的迁移学习(transfer learning)性质,因此非常适合处理如黄金期货价格这样的金融数据。其中LSTM模型更是经由丢弃和保留的机制有效解决了梯度反传进程中产生的梯度消失与梯度爆炸问题。相比单层LSTM,双层LSTM更容易进行训练,能够很大程度上提高训练效率。因此,本文建立了基于RNN,LSTM和GRU的三个预测模型,三个模型仅基于相关黄金期货价格的时间序列数据,不考虑其他影响因素,因此有效地消除了数据输入变量和模型参数的不确定性。
2.1模型原理
(两个输入: ①x为当前状态下数据的输入,②h表示为上一个节点的输入;
两个输出: ③y为当前节点状态下的输出,④h’表示为传递到下一个节点的输出)
2.LSTM模型介绍
(LSTM模型三个输入: ①x_t为当前状态下数据的输入,②h_(t-1)表示为上一个节点的输入;③c_(t-1)为上个节点的单元状态
三个输出: ④y_t为当前节点状态下的输出,⑤h_t表示为传递到下一个节点的输出,⑥c_t表示为传递到下一个节点的状态值)
遗忘门(Forget Gate)决定了上一时刻的单元状态 c_t-1 有多少保留到当前时刻 c_t;
输入门(Output Gate)决定了当前时刻网络的输入 x_t 有多少保存到单元状态 c_t;
输出门(output gate)控制单元状态 c_t 有多少输出到 LSTM 的当前输出值 h_t。
(σ为sigmoid函数前馈网络层,tanh表示双曲正切函数前馈网络层,⊗表示点乘,⊕表示向量拼接。经由拼接向量乘.上权重矩阵之后,再经由激活函数转换来作为一种门控状态。)
首先计算t时刻下遗忘门(Forget Gate)的激活状态f_t值:
其次计算t时刻下输入门(Input Gate)i_t的值和输入细胞的候选状态 C~_t的值,公式如下:
由以上计算可以得到t时刻下的细胞状态(Cell) 的更新值Ct,公式如下:
在计算得到细胞状态(Cell) 更新值后,最后就可以计算输出门(Output Gate)的值,其计算公式如下:
(两个输入: ①X_t为当前状态下数据的输入,②h_t-1表示为上一个节点的输入;
两个输出: ③y_t为当前节点状态下的输出,④h_t表示为传递到下一个节点的输出。
GRU是新一代RNN,与LSTM非常相似。GRU不使用单元状态,而是使用隐藏状态来传输信息。它也只有两个门,一个重置门(reset gate)和一个更新门(update gate)。
更新门的作用类似于LSTM的遗忘和输入门。它决定要丢弃哪些信息和要添加哪些新信息。重置门是另一个用来决定要忘记多少过去的信息的门。由于GRU的张量操作较少,因此,他们的训练速度更快。
三、 实验论证
本文数据来源于相关财经网站,选取了中国黄金期货历史价格,从1979年12月27日到2021年6月25日共42年10538个数据。
3.1 数据预处理
通过上图所示的数据描述我们可以知道此份数据较为精准,因此本次实验不展现异常数据处理。
3.2 模型的评价指标
其中yi,Y^i: 分别代表实际值与预测值,m代表预测窗宽.
3.3 实验模型设置
经过是实验参数的选择,在不同神经元和不同神经网络层的情况下对训练集和测试集进行预测,结果显示第一层输入神经元为64,第二层输入神经元为32,输出层为一个输出神经元的情况下预测结果最佳,效率最高。
可以看出单层的神经网络的预测效果均不理想,而双层的结构当一层输入神经元为64,第二层为32时,效果最佳,效率最高。
3.4 实验数据和超参数设置
不同的时间序列步长和训练集测试集不同划分比例,批量封装的预测效果如下:
训练集和测试集的比例以0.8-0.9效果为最佳,因为过少的训练集不利于数据预测;
图3-4-3 双层LSTM训练集测试集不同的批量封装预测情况
batch_size过小,花费时间多,同时梯度震荡严重,不利于收敛; batch_size过大,不.
3.5 模型性能评估和实验结果比较
3.5.1 LOSS图像:
从上图可以看出当epochs到达第20次三个模型均有了较好的收敛效果。有所不同的是LSTM模型的收敛速度更快,效果也更佳
3.5.2 三种模型MSE,RMSE,MAE、R^2值比较
从下图可以看出三种模型中,对于本次数据集来说,LSTM具有更好的预测精度。
图3-5-2 不同模型MSE,RMSE,MAE、R^2值比较
3.5.3 最终拟合情况可视化三种模型比较
3.5.4 以LSTM为例最终预测值可视化
四、实验结论
接着就是感觉自己终于入了深度学习的门,LSTM在我还没上大学的时候,就在某所里看过某研究生大哥搞过,终于也轮到了自己来实际操作了。
非常唏嘘的是,今年年初的时候是非常想开始尝试写一篇论文的,但是非常煎熬的是由于各种原因,俺太菜了,俺时间排不开了等等,计划告败
这几天其实一直在肝,从6.28考完试,差不多三四天,入门学习,写demo啦,和老师交流意见再改代码了,永远陪伴的咖啡牛奶。
我以后可以跟着自己的预测买一下看中的基金和股票了,IT技术_金融果然yyds
还有就是谢谢某群的大佬们,为我的bug提供了很多种解决思路和方法,全世界的互联网打工人都团结在一起了!
感谢一下我自己吧,活下去了。哈哈哈,只要活着就是有希望的,谁说不是呢!
基于RNN,LSTM,GRU对黄金期货的时间序列研究相关推荐
- RNN LSTM GRU 代码实战 ---- 简单的文本生成任务
RNN LSTM GRU 代码实战 ---- 简单的文本生成任务 import torch if torch.cuda.is_available():# Tell PyTorch to use the ...
- DL之RNN/LSTM/GRU:RNN/LSTM/GRU算法动图对比、TF代码定义之详细攻略
DL之RNN/LSTM/GRU:RNN/LSTM/GRU算法动图对比.TF代码定义之详细攻略 目录 RNN.LSTM.GRU算法对比 1.RNN/LSTM/GRU对比 2.RNN/LSTM/GRU动图 ...
- DL之LSTM:LSTM算法论文简介(原理、关键步骤、RNN/LSTM/GRU比较、单层和多层的LSTM)、案例应用之详细攻略
DL之LSTM:LSTM算法论文简介(原理.关键步骤.RNN/LSTM/GRU比较.单层和多层的LSTM).案例应用之详细攻略 目录 LSTM算法简介 1.LSTM算法论文 1.1.LSTM算法相关论 ...
- RNN, LSTM, GRU, SRU, Multi-Dimensional LSTM, Grid LSTM, Graph LSTM系列解读
RNN/Stacked RNN rnn一般根据输入和输出的数目分为5种 一对一 最简单的rnn 一对多 Image Captioning(image -> sequence of words) ...
- RNN,LSTM,GRU计算方式及优缺点
本文主要参考李宏毅老师的视频介绍RNN相关知识,主要包括两个部分: 分别介绍Navie RNN,LSTM,GRU的结构 对比这三者的优缺点 1.RNN,LSTM,GRU结构及计算方式 1.1 Navi ...
- 图解 RNN, LSTM, GRU
参考: Illustrated Guide to Recurrent Neural Networks Illustrated Guide to LSTM's and GRU's: A step by ...
- RNN,LSTM,GRU基本原理的个人理解重点
20210626 循环神经网络_霜叶的博客-CSDN博客 LSTM的理解 - 走看看 重点 深入LSTM结构 首先使用LSTM的当前输入 (x^t)和上一个状态传递下来的 (h^{t-1}) 拼接训练 ...
- [PyTorch] rnn,lstm,gru中输入输出维度
本文中的RNN泛指LSTM,GRU等等 CNN中和RNN中batchSize的默认位置是不同的. CNN中:batchsize的位置是position 0. RNN中:batchsize的位置是pos ...
- 序列模型简介——RNN, Bidirectional RNN, LSTM, GRU
既然我们已经有了前馈网络和CNN,为什么我们还需要序列模型呢?这些模型的问题在于,当给定一系列的数据时,它们表现的性能很差.序列数据的一个例子是音频的剪辑,其中包含一系列的人说过的话.另一个例子是英文 ...
最新文章
- 电力竞价(广东规则)详解与代码
- java加密解密与数字证书的操作
- 让FX1.1的NotifyIcon支持BalloonTip(2)
- opengl加载显示3D模型b3d类型文件
- oracle 删除 queue,C++ stl队列Queue用法介绍:删除,插入等操作代码举例
- 求 LCA 的三种方法
- 玩转“网上邻居”之网络配置(一)
- 怎样搭建本地svn服务器环境-轻松掌握版本管理
- php 计算日期差几周,PHP计算两个时间之差的函数(年,月,周,日,小时,分钟,秒数)
- 【渝粤教育】电大中专药物分析技术基础_1作业 题库
- VMware Vsphere 6.0安装部署 总体部署架构
- 基于Java+SpringBoot+vue+elementui农产品物流系统详细设计实现
- pythonnumpy官网_NumPy下载-NumPy(Python开发工具)下载 v1.19.4官方版--pc6下载站
- 抓取手机端app日志的方法总结
- 阿里云弹性云桌面、传统PC和虚拟桌面VDI区别对比
- Spring基础详解
- 专访美团外卖曹振团:天下武功唯快不破
- 表情符号(emoji)大全,只此一文便够了
- C技能树:运算符优先级与求值顺序
- 200左右哪款蓝牙耳机值得入手?双11小白新手避雷高性能蓝牙耳机
热门文章
- C++ 多态(补充)
- vue中使用echarts折现图表(多图表与定时递归刷新图表解决方案在附录1、2中)
- flv 文件格式解析
- mysql中按照每个月分组统计数据并且查询去年的所有数据
- 青少年弱势群体精神虐待现象探析-吕卫华
- 机器人受人类虐待后奋起反击?这段视频刷爆网络
- TXT文件转Pascal voc数据集XML格式标注文件
- 1000Blocks | Space Apes smart NFTs (太空猿智能NFTS)
- 游戏开发中的问题-----摘自《大型多人在线游戏开发》
- 09.PATH变量、PS1变量、LANG语系变量、位置参数变量、预定义变量详解