解读:基于图卷积特征的卷积神经网络的股票趋势预测(文末赠书)

news/2024/11/30 7:42:02/

写在前面

下面这篇文章的内容主要是来自2020年发表于Information Science 的一篇文章《A novel graph convolutional feature based convolutional neural network for stock trend prediction》。这篇文章提出了一种新颖的基于图卷积特征的卷积神经网络股票趋势预测方法,这种方法可以考虑股票市场信息以及个股信息,并实现有效的趋势预测。实验验证了提出的模型具有较好的预测效果以及收益表现。原论文在文末进行获取。

1

摘要

股票趋势预测是投资者和研究人员研究最广泛、最具挑战性的问题之一。自从卷积神经网络(CNN)被引入分析金融数据以来,许多研究人员致力于通过将股市数据转换为图像来预测股票走势。然而,现有的研究大多只关注个股信息,而忽略了股票市场信息,如股票之间存在的相关性。事实上,一只股票的价格波动可能会受到其他股票价格波动的影响,因此,将股票市场信息纳入股票趋势预测可以进一步提高预测绩效。

在这篇论文中,一种改进的图卷积网络(improved graph convolutional network, IGCN)和双向CNN被设计,用来构造GC-CNN模型,模型可以同时捕获股票市场特征和个股特征。具体地,受金融复杂网络的启发,作者分别基于股票与股票特征之间的相关性构建了股票市场网络,并构建了表征股票市场信息的特征矩阵。同时,根据交易数据和技术指标对目标股票进行分析,获得个股信息。然后,将股票市场信息和个股信息转化为图像。此外,还设计了改进的图卷积网络(IGCN)和双CNN构建了GC-CNN股票趋势预测模型,该模型可以同时捕获股票市场特征和个股特征。在实验部分,作者随机选取的6只中国股票来证明所提出的基于GC-CNN的方法的优越性能。实验分析表明,基于GC-CNN的方法优于几种股票趋势预测方法和股票交易策略。

因此,本文的主要贡献可归纳如下几个方面:

  • 在股票趋势预测中,作者同时考虑了股票市场信息和个股信息。特别地,构造了股票市场网络和相应的特征矩阵来表示股票市场信息。

  • 本文提出了一种改进的基于股票市场拓扑结构数据的股票市场特征捕获算法。此外,还设计了一种基于个股信息的Dual-CNN来捕捉个股特征。

  • 本文提出了一种基于图卷积特征的卷积神经网络(GC-CNN)模型,将IGCN和Dual-CNN相结合,将股票市场特征和个股特征合并为联合特征,用于股票趋势预测。

  • 为了验证所提出的基于GC-CNN的方法的性能,实验结果从计算性能和财务性能两个方面进行了评价。在计算性能评价方面,所提出的基于GC-CNN的方法与几种趋势预测方法进行了比较。在财务评价中,文中根据不同的预测和几种常见的股票交易策略模拟股票交易。

2

模型介绍

本文提出了一种基于图卷积特征的卷积神经网络(GC-CNN)预测股票走势的新方法,该方法同时考虑了股票市场信息和个股信息。本文提出的基于GC-CNN的方法展示于下图,主要分为三个步骤:相关股票发现、图像创建和趋势预测。

1. 相关股票发现

需要注意的是,当仅使用个股信息预测股票走势时,不能考虑股票市场变化对目标股票的影响。因此,有必要考虑股票市场信息从而更好地代表复杂的市场对目标股票的影响。但是,由于股票市场的巨大规模,用所有股票来代表股票市场是不现实的。因此,在本文中,只是选择了几个相关的股票来代表整个市场。考虑到一个股票的价格波动可能会受到其他股票价格波动的影响,目标股票与其他股票的关系用来选择相关的股票。具体地,一种Spearman秩序相关的方法用来衡量股票之间的关系。

股票i和j的对数收益率之间的相关系数的计算方法如下:

此外,所有的股票都按行业属性进行分组。然后,根据目标股票于其他股票之间的关系,对每组股票进行由大到小的排序,选取与目标股票相关的前m支股票代表整个市场。

2. 图像创建

在图像创建阶段,股票市场信息和个股信息分别被转换为图像。

2.1 股票市场信息图像生成

股票市场信息由两部分组成。一个是股票市场的拓扑结构,另一个是市场中每只股票的特征。在选择相关股票的基础上,构建股票网络来捕获股票市场的拓扑结构,并设计相应的特征矩阵来代表市场中每只股票的特征。关于生成图像的细节如下所示。

我们首先将选择的相关股票按照行业属性进行排序。然后,我们将股票作为节点,股票之间的关系作为边来构造股票网络。具体来说,股票之间的关系用前面介绍的相关度来衡量,由于考虑了时滞,所以预测t时刻目标股票趋势的股票网络邻接矩阵可以表示为:

进而,通过设定一个阈值,将上述矩阵按照正相关和负相关划分为两个矩阵,表示为   和   :

这样就可以得到针对正相关和负相关矩阵的两个灰度图,这个图像的生成过程如下图所示:

根据所选的股票的特征用来构造相应的特征矩阵,具体地,我们选取了四个特征来建立相应的特征矩阵,包括目标股票与所选相关股票的关系、最近1天的ROC、最近n天的1天ROC平均值、最近n天的1天ROC标准差4个特征。其中ROC的计算方式如下:

之后,对于每个正相关和负相关矩阵   和   ,我们构建一个响应的特征矩阵   ,其中每个股票的四个特征作为一行,之后通过对角度矩阵进行归一化,这样在每个时刻就可以得到对应的特征图像了。这个过程如下图所示:

2.2 个股信息图像生成

个股信息也由两部分组成。第一部分由交易数据组成,第二部分由技术指标组成。生成图像的主要步骤如下所示。

首先,需要对序列数据进行窗口划分,然后窗口中的开高低收四个价格序列按照下面的方式进行归一化:

之后将每个数据点转换为坐标,最后根据每个点的坐标可以将四个价格序列转换为一个四通道的图像,其中每一个子序列对应一个通道。下图给出了一个例子。

为了增强预测能力,类似的方式,十个技术指标序列也可以按照上面的方式来转换为一个图像,只不过是这里是按照垂直方向进行拼接得到的单通道图像。一个将技术指标转换为图像的例子如下图所示:

3. 趋势预测

在趋势预测阶段,如下图所示,一种基于图卷积特征的卷积神经网络(GC- CNN)模型被来预测目标股票的未来趋势。其中,GC-CNN模型由两部分组成:改进的GCN (IGCN)和双CNN (Dual-CNN),其中股票市场信息由IGCN处理,个股信息由双CNN处理。IGCN和Dual-CNN的详细信息如下。

3.1 IGCN

在提出的IGCN中,如下图所示,根据正相关图像和负相关图像,以及对应的特征图像,分别经过两步获取股票市场特征。

第一步,根据正负关系图像和相应的特征图像对股票市场信息进行整合。首先,基于正负关系图像,得到两个拉普拉斯矩阵,即:

然后,它们被输入到卷积层中,其中的卷积操作为下面形式:

之后得到的结果与对应的特征矩阵一同进行图卷积操作,过程如下:

将得到的新的矩阵再进行一系列的卷积,池化以及dropout等操作,最后通过全连接层进行输出,最后的输出表示为以下形式:

这样,表示股票市场的特征就可以得到了,表示为   .

3.2 Dual-CNN

在设计的Dual-CNN中,如下图所示,交易数据图像和技术指标图像进行并行处理,得到个股特征,具体地,个股特征由交易数据特征和技术指标特征合并组成。


交易数据图像和技术指标图像都使用了输入层、两个卷积层、两个最大池化层、两个dropout层、以及全连接层和输出层进行特征提取。最后,个股特征由交易数据特特征以及技术指标特征组成。

最后,将来自IGCN和Dual-CNN的结果合并,然后通过一个softmax进行输出:

并与每个类别通过概率进行比较:

3

实验验证

为了对模型进行评估,文中从两个角度进行了实验。一是通过预测的评估指标,由于趋势预测是一个二分类任务,所以用到了常见的评估指标:

二是通过财务评估,即将该模型用于历史回测,用到的评估指标有:

在进行预测效果的评估时,用到了Dual-CNN,CNN-TA,CNN-LSTM,GAF-CNN,SVM,MLP以及DT作为对比方法。下面展示了部分实验结果:

在进行财务评估时,用到了几种常见的交易策略,即RSI,SMA,SMA long-term以及MACD策略。实验结果统计如下:

以及在各个股票上的收益曲线:

可以看出虽然提出的方法的准确性并不是很高,但是在判断买卖点时却有更好表现。

4

总结

在本研究中,一种基于GC-CNN的股票趋势预测方法被提出,它同时考虑股票市场信息和个股信息。该方法将股票市场信息即所构建的股票网络和相应的特征矩阵,以及个股信息即目标股票的交易数据和技术指标转化为图像。然后,利用提出的GC-CNN模型预测目标股票的未来趋势,其中股票市场特征被提出的IGCN捕获,个股特征被设计的Dual-CNN捕获。另外,来自中国股市随机选取的6只股票,从计算绩效评价和财务评价两个方面证明了所提方法的优越性能。在计算性能评价方面,将Dual-CNN、CNN-TA、SVM、MLP和DT方法与所提方法进行了比较。在财务评价中,基于不同的预测和其他常见的股票交易策略,如RSI信号、SMA短期信号、SMA长期信号和MACD信号,模拟了股票交易。对比结果表明:(1)所提出的基于GC - CNN的方法需要更长的训练时间;(2)综合考虑股票市场信息,对预测结果进行预测可提高效果;(3)所提出的GC-CNN方法在计算性能评价方面并不总是优于其他方法;(4)基于GC-CNN方法的计算性能比其他比较方法更稳定;(5)本文提出的基于GC-CNN的方法能够获得更稳定、更高、一致的收益;(6)计算性能更好的方法不一定产生更好的交易信号,本文提出的基于GC-CNN的方法得到的交易信号比其他方法得到的交易信号要好。这些结果表明,虽然所提出的基于GC-CNN的方法需要更长的训练时间,但它优于其他股票趋势预测方法和普通股票交易策略。

对于未来趋势预测方法的改进,有一些可能的方向。首先,利用粒子群算法(PSO)、萤火虫算法(FA)和差分进化算法(DE)等元启发式算法对GC-CNN结构参数进行优化;其次,在图像创建阶段可以生成许多其他类型的图像。第三,在考虑投资者情绪的情况下,该方法可能会取得更好的效果。第四,本文提出的方法可以考虑企业关联网络信息、行业背景、股东结构、股权结构等更多特征,对其进行修正,用于股票长期趋势预测。

参考文献:

Chen, W. ,  Jiang, M. ,  Zhang, W. G. , &  Chen, Z. . (2020). A novel graph convolutional feature based convolutional neural network for stock trend prediction. Information Sciences, 556.

关注《人工智能量化实验室》公众号,后台发送088可获取原论文。

赠书活动

【书籍推荐】《Python量化投资:技术、模型与策略》基于大量真实的实践应用案例和场景,介绍了Python在量化投资各个环节的应用。作者结合自己在量化投资中的项目经验,用通俗易懂的语言和生动的案例,围绕量化投资中的概念、思路、方法与应用,帮助读者深刻领会“Python的胶水语言能力使其在量化投资生产线的各个环节几乎都能胜任”。

【活动说明】截至至下周一,以公众号后台统计的分享最多的排行榜中取第一名包邮赠送一本《Python量化投资:技术、模型与策略》,结果将在下一篇推文中公布。

了解更多人工智能与
量化金融知识

<-请扫码关注

让我知道你在看


http://www.ppmy.cn/news/888632.html

相关文章

股票数据处理仿真

股票数据处理仿真 文章目录 股票数据处理仿真 1. 数据获取2. 数据探索2.1 统计性描述2.2 可视化展示2.3 其他探索 3. 数据预处理3.1 缺失值处理3.1.1 丢弃3.1.2 平均数、中位数、众数填充3.1.3 向前、向后填充 3.2 标准化3.2.1 线性归一化&#xff08;min-max normalization&am…

python读取股票数据_如何利用程序(如python) 从新浪财经或者雅虎财经获取到所有A股数据(历史日线数据,实时股票数据)?...

用Python内置的Yahoo金融接口两行代码即可挖掘出股票交易数据。再用matplotlib 绘制出图表即可。 示例&#xff1a;1、获取苹果20141/1至2015/8/20的股票数据。 In [27]: import pandas.io.data as web In [28]: web.get_data_yahoo(AAPL,1/1/2014,20/8/2015) Out[29]: Op…

Android Glide加载小gif和图片比较模糊

其实Glide加载还是可以将小图片加载的非常清晰的&#xff0c; 可以通过Glide转换为Bitmap 利用Drawable将setFilterBitmap为true 但是这玩意解决不了GIF。在没有找到库的情况下&#xff1a;我直接自定义view通过 pl.droidsonroids.gif:android-gif-drawable获取时间间隔并将gif…

Nuxt.js--》解密Nuxt.js:构建优雅、高效的现代化Vue.js应用

博主今天开设Nuxt.js专栏&#xff0c;带您深入探索 Nuxt.js 的精髓&#xff0c;学习如何利用其强大功能构建出色的前端应用程序。我们将探讨其核心特点、灵活的路由系统、优化技巧以及常见问题的解决方案。无论您是想了解 Nuxt.js 的基础知识&#xff0c;还是希望掌握进阶技巧&…

大前端学习-Get请求和Post请求的区别

常见的HTTP请求方式有&#xff1a; 1、GET: 请求指定的页面信息&#xff0c;并返回实体主体 2、POST&#xff1a;向指定资源提交数据进行处理请求&#xff08;例如提交表单或者上传文件&#xff09; 3、HEAD&#xff1a;类似于Get请求&#xff0c;返回的响应中没有内容 4、…

C++之final关键字用法(一百六十)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

springboot与rabbitmq的整合【演示5种基本交换机】

前言&#xff1a; &#x1f44f;作者简介&#xff1a;我是笑霸final&#xff0c;一名热爱技术的在校学生。 &#x1f4dd;个人主页&#xff1a;个人主页1 || 笑霸final的主页2 &#x1f4d5;系列专栏&#xff1a;后端专栏 &#x1f4e7;如果文章知识点有错误的地方&#xff0c;…

DEVC++伪3D小游戏丧尸城市

//类型&#xff1a;开放世界/丧尸/生存 //地图大小&#xff1a;18*18 //实际大小(除去建筑)&#xff1a;318 #include<algorithm> #include<fstream> #include<iostream> #include<stdio.h> #include<cstdio> #include<iostream> #include…