目标: 使用深度学习模型LSTM对股票价格进行简单的预测
经过前两节课的学习,我们已经知道了因子的定义并且已经能够对经典的因子进行测试。但是因为这些基础的因子已经被深入的研究了很多年了,有些基础的因子甚至几十年前就有人在论文里提出,所以这些因子基本上很难有超额收益。
现在私募或者一些自营团队都会使用深度神经网络对价量或者其他数据进行训练,以挖掘更多因子,甚至有些头部私募采用大规模深度学习自动挖掘并测试因子,行业卷度逐年上升。
本章将介绍业界比较常用的LSTM模型,并基于此实现一个股票价格预测的基础模型,当然你不必对这个模型抱有太高的期望,我基本可以保证这个简单的模型不可能赚钱,但有了方法之后你可以加入更多的数据或者想法,那时候就很有可能赚钱了,而且是你自己的策略。
首先,关于LSTM的学术定义和相关的论文我就不多介绍了,需要的篇幅太长,脱离了本课程的主线。感兴趣的可以去阅读相关的书籍或资料,但我强烈不建议新手硬啃整套机器学习课程,没有强大的数学和计算机基础的人我认为不可能坚持下来,阻碍了你对于投资的探索。
简单来说,你可以认为LSTM就是一个机器学习模型的黑盒,他需要的输入是时间序列的数据,输出是基于输入的预测值。举个例子就是输入是股票每天的收盘价,输出是预测明天的收盘价,或者五天后的收益率。听起来不太靠谱,但是这个模型天生就是用于预测资产价格等时间序列的,比如耳熟能详的波士顿房价,或者某市的气温。
首先我们需要安装所需的python包,分别是keras,sklearn和tensorflow.
接下来我们需要的还是一样,价格数据。
导入相关包并且输入开始和结束时间后,我们获得了苹果AAPL.US的价量数据。为什么这里变成美股了呢?因为本节代码由chatGPT生成,我稍微改了一下让他能跑。
有了数据之后,我们就可以把这些数据喂到我们的深度学习模型中去了,这列我们取前三年做训练集,后一年做测试集。意思就是让模型去学前三年股票价格走势的规律,并用最后一年的这个规律做测试。
这里我们使用前六十天的价格预测后一天的价格。标签处理如下
导入相关包并且构造基础模型,这里给出的就是模型的细节了,可以看到我们的模型有三个LSTM层,里面是节点数,这里的参数是可以调的,很多算法工程师的工作就是寻找最优的参数,使得模型的表现更好。
这里需要等一段时间,但不会很长,因为我们的模型很简单,如果你的电脑比较好的话训练时间会快一点,如果用显卡的话会更快,但简单起见我们不讨论更多机器学习的优化细节。
模型训练完毕之后,我们用刚刚训练好的模型进行价格的预测,并且画图。
虽然看起来还不错,但很快就会发现我们的预测值会有明显的滞后,这是LSTM的通病。
到这里,我们生成的价格预测数据就形成了一个深度学习因子。
还记得我们上两节课的内容吗?你可以把这个因子放到框架中对他进行测试,看看他的表现,是否真的能赚钱。
答案不出意外的话应该是不能。但没准你多调调参,他就能了呢?
欢迎关注同名微信公众号【量化的韭菜】或知识星球获取更多内容