技术 | 如何利用CNNs读股市图表

“历史不会重演,但它经常押韵。”--- 马克吐温许多读者可能对卷积神经网络(CNNs)有所耳闻,尤其是其在图像识别方面的强大功能,我猜你们一定想知道算法是否比人类图表师更能读懂股市图表,后者的工作是发现图表模式并从中获利。我们知道CNN比人类更擅长对ImageNet图片进行分类,但他们能比其他市场参与者更好地阅读和发现模式吗?这篇文章将带你一探究竟。

选择正确的市场/数据集

我认为,技术分析在量化基金交易的市场上不起作用是合乎逻辑的——有趣的图表模式或可能带来的任何收益都必须被任何像样的量化基金榨干,但我很想知道,简单的低效率是否仍然存在,而量化基金由于容量有限而无法达到。因此,我在全球顶级交易所之外寻找一个仍然可以进入的市场——华沙证券交易所就是这样一个例子。

 

时间序列Train-Test数据集分解需要格外注意

使用标准的ML包可以很容易地分割数据集,但必须仔细处理时间序列,否则会发生数据泄漏。并且,在样本中所得到的令人满意的结果,而这些结果却不能在样本外数据集中复现出来。如果您的随机train-test分割使您的模型学习如何填补下面的空白,那么您实际上是在使用未来来预测过去

 

基于递归图的时间序列成像

向CNN模型提供信息的最直接方法是使用标准的价格/数量表,如下所示:

然而,由于卷积神经网络算法从数据中处理和学习洞察力的方式可能与人类不同,因此用不同的形式表示时间序列可能是有用的。另外,由于图像有3个通道,因此可以用不同的度量对每个通道进行打包,以便为我们的算法提供更多信息。这个有用的库有几个实现时间序列的SOTA图像表示的函数。
其中一种转换是Gramian Angular Fields(GAFs),它将时间序列转换为极坐标系,而不是典型的笛卡尔坐标系。另一个转换的表示是递归图,它显示关于时间尺度的重要且易于解释的信息,而这些信息在其他情况下是不可获取的。下面是一些经过改造的图表,看起来很不一样吧?

 

分数微分-平衡记忆与平稳性

平稳性是ML算法高性能的一个必要的、非充分的条件。问题是,在平稳性和记忆之间存在一种权衡。我们总是可以通过微分使序列变得更平稳,但这将以删除一些内存为代价,这将导致ML算法的预测目的落空。

使用price series时的标准工程特性是return series。return series的问题是内存丢失。图1基本上显示了随时间保留的内存。对于return时间序列,即“整数1”微分,序列的内存在第一个周期之后丢失过去值的内存。但我们可以看到,对于分数微分值,历史值的记忆持续存在,这有助于预测。
然后,诀窍是找到一个分数,其中微分小于1,但仍然达到平稳性-ADF测试可以检查是否达到了平稳性的一个给定分数。

 

平移不变性的协调性

卷积神经网络算法在图像分类方面表现优异的一个关键原因是它的平移不变性,即输出对输入的变化是不变性的。如果你试图将不总是在同一地点的猫分类,它仍然会识别出猫。

但是对于时间序列来说,时间上的尖峰与预测时间之前的尖峰有着不同的含义,因此,如果它有用的话,我们可能希望舍弃平移不变性-这种可选性可以使用Coordconv。Coordconv层包括两层i和j坐标,这让卷积神经网络算法知道每个像素的位置。如果算法确定坐标是有用的,权重将反映这一点,因此只有使用Coordconv才有好处!将Coordconv添加到各种卷积神经网络任务中几乎总能提高性能。

 

成果和进一步工作

我用卷积神经网络算法把时间序列数据表示成图像来预测时间序列。卷积神经网络算法有一个相对简单的二元分类任务——决定第二天收盘价是否为正。
我把重点放在精确性上,因为当我们赌一个假阳性的时候会赔钱。使用GAF成像的分级分化序列(d=0.3)的最佳得分为64%。

因此,当微分是0.3的时候我们得到最高的准确率。其中详细的代码可以在以下网址中找到:https://github.com/neoyipeng2018/cnn/blob/master/WSE_0_3D_Open_Close_Volume_GAF.ipynb

以上就是这篇文章的全部内容了,希望读者朋友们都能获得些许启发。