论文导读:用 CNN 神经网络进行量化交易

Posted Python中文社区

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了论文导读:用 CNN 神经网络进行量化交易相关的知识,希望对你有一定的参考价值。

机器学习用来投资一直都是非常热门的学问,近年来深度学习模型开始受到非常多的瞩目,尤其是在计算机视觉方面,所以接下来导读的这篇论文,就是提供了一个全新的方式,将目前最火的 计算机视觉神经网络:Convolutional Neural Network(CNN)用来预测股票的涨跌。实验结果表示效果比一般的神经网络要好。

你可能会问,以时间序列(time series)来说,明明神经网络可以使用 LSTM,为何要用 CNN?LSTM应该比较适合处理时间序列啊!(毕竟LSTM是拿来处理字符串的神经网路,字符串也是一种时间序列,所以通常预测股价,大家会用LSTM)。但论文中说明,目前CNN用于图像处理比起其他的模型,被研究的更透彻,也有大量的研究,说不定效果更好,所以采用了 CNN 神经网络来预测股价的涨跌。

他们用15个技术指标 X 15 天,产生出一个 15×15 的影像,将这个影像丢入 CNN 神经网络中做训练,下图就是神经网络所“看到”的input:

对于人类来说,这个影像对我们来讲没什么意义,但是对于计算机来说,就可以拿来判断股价的涨跌!我们会将上面这些图片称之为features,也就是计算机用来判断买卖的信号,计算机用这些信号,就可以预测交易信号,也就是这个神经网络的label。作者提供了一个简单的方式,使用rolling window,去找每段时间的最大值和最小值,以下是主要的代码。

上述的方法,会产生(-1, 0, 1)的信号,分别代表(卖、不做动作、买),但是由上述代码产生出来的信号,必然会有imbalance的问题,也就是三种class的数量不一致,所以本篇文章使用random resampling的方式,随机取出相同数量的 label 对应的 testcase,来避免 0 太多的问题。

此篇论文中用了美股的 ETF 和 道琼斯 30 成分股作为训练的标的。有了feature 跟 label,很理所当然的,我们就可以开始训练!此篇 paper 的神经网络如下:

  • input layer (15×15),

  • two convolutional layers (15x15x32, 15x15x64),

  • max pooling (7x7x64),

  • two dropout (0.25, 0.50),

  • fully connected layers (128),

  • output layer (3)

上面的架构中,input就是单纯的 15 x 15 的图片,output 有3个,分别是买、卖、不做动作。关于中间的 convolutional layers 和 pooling,作者表示由于training dataset不大的关系,所以神经网络不用太大,不然会造成overfitting的状况。

这篇 paper 使用 walk forward 的方式来测试,好处是可以产生时间较长的回测结果,以下就是他们的回测效果(其中两档ETF):

而他们也有将效果跟其他的神经网络作比较,几种常用的方法:

  • CNN-TAr 作者使用的方法

  • BaHr 所谓的 buy and Hold 长期持有

  • RSIr 利用 RSI技术指标做出来的策略

  • SMAr 均线策略

  • LSTMr 神经网络策略pip

  • MLPr 一般神经网络策略

下图就是商品(每一个row)和不同策略(每一个column)所对应到的年回报率:

我们可以发现CNN-TAr神经网络的效果比其他的更好!而且在大部分的商品都有比较好的年回报率。

E N D

扫描本文最下方二维码获取原版论文打包下载。

长按扫码获取完整论文

以上是关于论文导读:用 CNN 神经网络进行量化交易的主要内容,如果未能解决你的问题,请参考以下文章

用 pyfolio 进行量化交易回测

从金融时序到图像识别:基于深度CNN的股票量化策略(附代码)

综述:轻量级CNN架构设计

轻量化CNN构建总结

深度神经网络在量化交易里的应用 之二 -- 用深度网络(LSTM)预测5日收盘价格

量化交易简介