前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于图神经网络、图谱型数据的收益预测模型(附代码)

基于图神经网络、图谱型数据的收益预测模型(附代码)

作者头像
量化投资与机器学习微信公众号
发布2021-07-29 12:05:40
2.8K0
发布2021-07-29 12:05:40
举报

前言

传统的股价预测的时许模型,对于收益率的假设往往不切实际,而最近兴起的机器学习模型,特别是深度学习模型对于股价的预测也存在着明显的问题:

  • 大多数文献中,都直接预测股价或者是收益率,并没有考虑股票之间的排序。
  • 每只股票的序列单独输入模型中,并不能考虑股票或公司间多维度的信息:比如供应关系和产业关系。

为了解决以上问题,作者提出了一个新的框架:Relational Stock Ranking(RSR)。这个框架主要由两个创新:

  • 损失函数新增了关系股票收益排序的惩罚项,使模型能够顾及股票收益间的排序(Rank)。
  • 结合了时间图神经网络,使模型能够结合股票间的关系型数据,如行业属性、上下游、股权信息等。

RELATIONAL STOCK RANKING(RSR)

RSR总共包含三层,分别是基于序列数据应用序列神经网络模型的Sequential Embedding Layer, 基于关系型数据应用图神经网络的Relational Embedding Layer, 和最终给出收益预测结果的Prediction Layer。如下图所示:

Sequential Embedding Layer

股票过去的价格变动对于未来的变化有明显的影响,所以整个框架的第一层采用序列模型去捕获股价序列间的依赖信息。RNN在最近的文献中,都有出色的表现。所以作者选用的RNN最为第一层的模型。更具体的,作者采用了LSTM,因为它能保留序列的长期记忆。并以LSTM的模型结果作为下一层的输入。(LSTM的输入为股价的历史序列X_t)

Relational Embedding Layer

这一层主要考虑股票之间的关系型数据,作者在模型中加入了两类关系型数据:

行业属性:两个公司是否属于同一个行业或板块,如果属于同一行业,那么两个公司之间的基本业务应该类似,股价的表现也应该有相似的趋势,如图2a中,MSFT和GOOGL的股价。

供应链关系:如果两家公司属于供应链的上下游,即一家公司是另一家的客户(或供应商),那么他们之间的股价的变动应该有传导效应。如图2b中,Apple的供应商LENS在AAPL发布iphone8之后,股价开始上涨。

为了使RSR能够加入这些关系型的数据,作者采用了Temporal Graph Convolution(TGC)算法,将关系型的图谱数据与第一层的输出进行结合,作为第三层的输入。关于TGC,下一节会详细介绍。

Prediction Layer

最终将第二层的输入用于股票收益率的预测,这里的损失函数定义为:

其中 分别是股票的预测收益率和实际收益率。这个损失函数中,第一项为了是预测的收益误差越小越好理解。第二项,为了股票间的相对顺序与真实情况比,误差越小越好。

Temporal Graph Convolution

给定N个股票的序列特征(sequential embeddings) 和多维度的二元关系 ,TGC的主要任务是基于二元关系,重新学习N个股票的序列特征。传统的图神经网络没有考虑关系的动态变化,对于所有时间中,每个点(Vertex)的影响性都用固定的方式计算,比如如下考虑关系重要性作为权重的特征计算:

\overline{\mathrm{e}_{\mathrm{i}}}^{\mathrm{t}}=\sum_{\left\{j \mid \operatorname{sum}\left(\mathrm{a}_{\mathrm{ji}}\right)>0\right\}} \frac{g\left(\mathrm{a}_{\mathrm{ji}}\right)}{d_{j}} \mathrm{e}_{\mathrm{j}}^{\mathrm{t}}

其中, 为股票 ,使用网络关系,整合其他与之相关的股票,而重新生成的特征, 为A关系张量中与股票i有关系的股票的数量, 为股票 与股票 的关系,函数 用于度量关系的强弱。可以看到,这里的函数 是固定不变的,并没有考虑不同时间的序列特征,作者做了如下改进,将t时刻的股票的序列特征也考虑在关系强度函数 中:

\overline{\mathrm{e}_{\mathrm{i}}^{\mathrm{t}}}=\sum_{\left\{j \mid \operatorname{sum}\left(\mathrm{a}_{\mathrm{j} \mathrm{i}}\right)>0\right\}} \frac{g\left(\mathrm{a}_{\mathrm{ji}}, \mathrm{e}_{\mathrm{i}}^{\mathrm{t}}, \mathrm{e}_{\mathrm{j}}^{\mathrm{t}}\right)}{d_{j}} \mathrm{e}_{\mathrm{j}}^{\mathrm{t}}

此时,关系强弱函数g的定义就关系到了TGC的具体表现,作者给出了显性模型和隐性模型两种定义:

显性,其中 为激活函数, 为参数。也就是说,关系的强弱,取决于第一项,两个股票当前时间的相似性,和第二项两者关系的重要。这两项的乘积决定了关系强弱。因为这两项都能清楚的解释,所以称为显性模型。

g\left(\mathbf{a}_{\mathbf{j i}}, \mathbf{e}_{\mathbf{i}}^{\mathbf{t}}, \mathbf{e}_{\mathbf{j}}^{\mathbf{t}}\right)=\underbrace{\mathbf{e}_{\mathbf{i}}^{\mathbf{t}^{T}} \mathbf{e}_{\mathbf{j}}^{\mathbf{t}}}_{\text {similarity }} \times \underbrace{\phi\left(\mathbf{w}^{T} \mathbf{a}_{\mathrm{ji}}+b\right)}_{\text {relation importance }}

隐性,如果把序列特征及关系都放到激活函数内部,则称为隐性模型。

g\left(\mathbf{a}_{\mathbf{j i}}, \mathbf{e}_{\mathbf{i}}^{\mathbf{t}}, \mathbf{e}_{\mathbf{j}}^{\mathbf{t}}\right)=\phi\left(\mathbf{w}^{T}\left[\mathbf{e}_{\mathbf{i}}^{\mathbf{t}^{T}}, \mathbf{e}_{\mathbf{j}}^{\mathbf{t}^{T}}, \mathbf{a}_{\mathrm{ji}}^{T}\right]^{T}+b\right)

实证

作者选取了NASDAQ和NYSE从2013年1月2日至2017年12月8日的数据,经过以下条件的过滤:

  • 在此区间,98%的时间正常交易
  • 股价从未低于5美元

分别在NASDAQ选取了1026只股票,在NYSE选取了1737只股票,获取了日度价格数据。并把测试时间分为了3个不同的阶段,如下表所示:

除了价格数据,还有股票的关系数据,包括行业属性数据及关系数据(总计42中关系),覆盖度如下:

关系型数据,主要分为,如图4表示:

  • 一阶关系:两者直接相关
  • 二阶关系:两者分别和第三者相关

回测设定

在2017/01/03至2017/12/08的测试区间,回测的设定如下:

  • 买入预测收益最高的股票,日度换仓,收盘买卖
  • 每次固定50,000美元的持仓规模
  • 交易成本为0,假设全部成交

用于对比的其他模型

  • SFM:首先将历史价格数据进行离散傅里叶变换,再输入到LSTM模型中进行预测。参考Liheng 2017;
  • LSTM:基于历史收盘价及5、10、20和30均线的LSTM模型;
  • RANK_LSTM:RSR中去除Relational Embedding Layer后的模型;
  • Graph-base Ranking(GBR):RANK_LSTM的损失函数增加图惩罚项;
  • GCN:RSR的第二层采用GCN;
  • RSR_E:RSR中的关系强弱函数g,用显性模型;
  • RSR_I:RSR中的关系强弱函数g,用隐性模型。

衡量模型效果的指标有:

  • Mean Square Error (MSE),越小越好;
  • Mean Reciprocal Rank(MRR):是一个国际上通用的对搜索算法进行评价的机制,即第一个结果匹配,分数为1,第二个匹配分数为0.5,第n个匹配分数为1/n,如果没有匹配的句子分数为0。总之,越大越好。
  • the cumulative investment return ratio (IRR):越大越好。

最关心的问题

1、将股票的价格预测问题变成一个收益预测的任务,效果怎么样?相比当下热门的算法,RSR有没有优势?

  • 以IRR指标衡量,Rank_LSTM的效果比SFM和LSTM好很多,说明基于股票排序的学习比直接预测收益率,效果更优。这对我们研究更先进的排序学习算法(Learning-to-rank)有了信心。
  • 但在MRR指标上,在NYSE市场,Rank_LSTM的表现差于SFM,可能是因为损失函数及考虑了绝对预测的准确性,又考虑了相对排序的准确性,从而降低了模型的稳定性。
  • 图5给出了三个模型的累计收益曲线,可以看出仅仅买入一只股票的收益波动还是很大的,模型的表现不够稳定。

2、股票间的关系数据能否提高神经网络模型的效果?文中提出的TGC与卷积图神经网络算法GCN相比有效性怎么样?

表6的测试中,关系型数据仅仅使用了行业属性数据:

  • 加入行业属性的数据后,在NYSE的表现比NASDAQ的表现更好,可能是因为NASDAQ的股票波动更大,更受短期因素的影响;
  • 在NYSE,所有加入图关系数据的模型的IRR都比Rank_LSTM来的好,说明关系型数据能增强模型的表现;
  • RSR_E,RSR_I的表现优于GCN和GBR。说明,TGC相比GCN的效果更佳。

如表7所示,在考虑Wiki关系型数据后,RSR_E和RSR_I在两个市场的IRR都是最高的。下表展示了,Wiki关系型数据中最重要的5个关系,其中P1056_P1056表示两个公司是否生产同一种产品,这个关系是最重要的,也是公司的产业链关系,可以用产业图谱表示。

总结

  • 前段时间,JPM有很多文章介绍Learning-to-rank的算法,本篇文章虽然没有之间采用Learning-to-rank的算法,但在损失函数设计中巧妙的考虑了股票间的排序。
  • 产业链、供应链等图谱型数据,日益成为大家关注的数据类型,但很多机构并没有想好怎么用这类数据?传统基于量价的深度学习模型,结合基于图谱类数据的图神经网络,给这类数据的应用指明了一条可探索的道路。

资源

作者在github上开源了论文的代码,心急的小伙伴尽快尝鲜:

https://github.com/fulifeng/Temporal_Relational_Stock_Ranking

量化投资与机器学习微信公众号,是业内垂直于量化投资、对冲基金、Fintech、人工智能、大数据等领域的主流自媒体。公众号拥有来自公募、私募、券商、期货、银行、保险、高校等行业20W+关注者,连续2年被腾讯云+社区评选为“年度最佳作者”。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-07-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 量化投资与机器学习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档