使用LSTM进行股价、汇率预测
最近因为做项目的需要,要做一些数据预测,因此就去学习了一下相关的知识。主要就是采用LSTM来做时间序列的预测。
IBM股价预测
数据集选择的是IBM2006-2018年的股价数据,我这里算的是每日的最高股价。其中,2006-2016年的数据是训练集,2017年的是测试集。
模型搭建如下:
然后就是对数据进行预处理(归一化),接着进行训练。在训练的时候采用了一些小技巧:采用了学习率逐渐衰减的方式,使得loss更小。
在不同epoch下,对2017年的数据进行预测的结果像下面的图片中所示的那样:(根据之前60天的真实数据来预测第二天的数据)
其中,蓝色的是真实曲线,绿色的是预测曲线。
500个epoch
10000个epoch
5000个epoch
12000个epoch
最终可以看到,12000个epoch之后,预测曲线和真实曲线已经非常的贴近了,说明,这个简单的模型,确实能够达到一个很不错的预测效果。
预测接下来一个月的英镑汇率
上面的股价预测,是基于前面60天的真实数据来预测下一天的真实数据。那么要是预测接下来一个月的汇率呢?
从理论上来讲,只需要将模型的输出数据从1个数据,修改成30个数据的序列,就能预测接下来一个月的汇率了。
汇率和股票相比,它的变化幅度不大,因此,如果我们的learning rate开的还像股票预测那么大的话,就很难收敛。
首先是去英为财情的网站下载了2005年1月1日到今天(2022年1月3日)的汇率数据。然后,丢进去训练了2200个epoch。
我设计的是根据过去180天的数据来预测接下来一个月的价格走势。由于预测的是接下来的30天,并且汇率本身的变化程度就比较小(每天相差几分钱),因此,在测试集上,只能说是预测的变化趋势基本一致,但是具体的值的话,预测的不准。
于是乎,我就预测了一下接下来一个月的英镑汇率:
具体它准不准,那就看看接下来的汇率是不是这么一回事吧!
(大概率是不准确的,大家不要把这个当成投资的依据,否则一切后果自负)
2022年1月4日,汇率:8.586546897888184
2022年1月5日,汇率:8.583914756774902
2022年1月6日,汇率:8.588775634765625
2022年1月7日,汇率:8.57702350616455
2022年1月8日,汇率:8.591371536254883
2022年1月9日,汇率:8.568089485168457
2022年1月10日,汇率:8.572650909423828
2022年1月11日,汇率:8.583415985107422
2022年1月12日,汇率:8.590611457824707
2022年1月13日,汇率:8.589016914367676
2022年1月14日,汇率:8.576234817504883
2022年1月15日,汇率:8.588798522949219
2022年1月16日,汇率:8.577808380126953
2022年1月17日,汇率:8.56200885772705
2022年1月18日,汇率:8.592248916625977
2022年1月19日,汇率:8.568221092224121
2022年1月20日,汇率:8.589277267456055
2022年1月21日,汇率:8.568589210510254
2022年1月22日,汇率:8.582256317138672
2022年1月23日,汇率:8.5689115524292
2022年1月24日,汇率:8.572840690612793
2022年1月25日,汇率:8.592175483703613
2022年1月26日,汇率:8.570953369140625
2022年1月27日,汇率:8.586837768554688
2022年1月28日,汇率:8.586097717285156
2022年1月29日,汇率:8.574344635009766
2022年1月30日,汇率:8.566436767578125
2022年1月31日,汇率:8.553132057189941
2022年2月1日,汇率:8.57451343536377
2022年2月2日,汇率:8.544835090637207
转载请注明原文:https://longjin666.cn/?p=1283
相关文章
- 使用启科QuPot+Runtime+QuSaaS进行量子应用开发及部署-调用AWS Braket计算后端
- IDEA无法使用Spring Initializr进行初始化解决
- [Nature Biotechnology | 论文简读] 使用语言模型和深度学习进行单序列蛋白质结构预测
- Brief Bioinform. | 如何使用人工智能进行多种药物相互作用预测?
- 使用PyTorch-LSTM进行单变量时间序列预测的示例教程
- 使用PyTorch-LSTM进行单变量时间序列预测的示例教程
- 使用istio进行限流以及模拟故障
- Python使用GARCH,EGARCH,GJR-GARCH模型和蒙特卡洛模拟进行股价预测|附代码数据
- 使用Apache ab进行http性能测试
- 使用python进行密码暴力破解详解编程语言
- Java 使用NIO进行快速的文件拷贝的代码详解编程语言
- Oracle 视图 DBA_ATTRIBUTE_TRANSFORMATIONS 官方解释,作用,如何使用详细说明
- MySQL Variables myisam_data_pointer_size 数据库 参数变量解释及正确配置使用
- PHP中使用OpenSSL生成RSA公钥私钥及进行加密解密示例(非对称加密)详解编程语言
- MongoDB中使用LINQ进行数据查询(mongodblinq)
- 管理使用Java实现Redis的有效期管理(redisjava过期)
- 在命令行中使用 nmcli 来管理网络连接
- 使用Linux环境下的.NET 4进行编程(linux.net4)
- 使用特殊符号在MySQL中进行数据操作(特殊符号mysql)
- 使用SQL Server进行中文信息更新(sqlserver换中文)
- 使用Redis技术实现高效的并发计数(并发 redis 计数)
- 使用C编写MySQL数据库应用(cpp结合mysql)
- MySQL中使用Cursor进行数据遍历和操作的详解(mysql中cursor)
- 教你如何使用MySQL Yog进行数据库操作(mysql yog怎么写)
- Oracle中授权的基本使用方法(oracle中授权语句)
- 红色可能如何使用含空格的 Redis 键(redis 键有空格)
- 使用Redis连接一步一步指南(redis链接教程)
- 使用Redis进行远程批量数据删除(redis远程批量删除)
- PHP错误之引号中使用变量