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

量化投资与机器学习公众号独家解读
量化投资与机器学公众号 QIML Insight——深度研读系列 是公众号今年全力打造的一档深度、前沿、高水准栏目。

公众号遴选了各大期刊前沿论文,按照理解和提炼的方式为读者呈现每篇论文最精华的部分。QIML希望大家能够读到可以成长的量化文章,愿与你共同进步!
本期遴选论文
标题:
HIST: A Graph-based Framework for Stock Trend Forecasting via Mining Concept-Oriented Shared Information

作者:
Wentao Xu, Weiqing Liu, Lewen Wang, Yingce Xia, Jiang Bian, Jian Yin, Tie-Yan Liu, Sun Yat-sen University, Microsoft Research
股票特征的拆分
股票市场的涨跌容易受到相关共同概念的影响,但在预定义的概念中,有时候并不能包含完全的信息,比如在某些概念数据中有些股票并不属于相关概念,但涨跌也受到了该概念的影响。有时候即使某只股票属于相关概念,但涨跌反而也没有受概念的影响。
同时预定义的概念并不能考虑到市场上所有存在的涨跌逻辑,可能市场中有一部分隐含概念也能影响股票收益。
作者提出了隐含概念的逻辑,并将股票的特征用以下三个部分来解释:
  • 市场存在的预定义概念包含的共有信息
  • 隐含概念包含的共有信息
  • 股票特质信
通过图神经网络及全连接层的组合,作者构建了一个HIST模型,该模型可以将以息进行剥离,并最终放入一个全连接的线性层进行股票收益的预测。并在最终的测试中取得的满意的效果。
HIST模型结构
输入
  • t 时间股票的特征
  • m 个预定义的概念 
步骤
1、股票特征提取
第一步使用2层的GRU对股票原始特征(Alpha360因子)进行表征提取:
以上 为股票i的因子, 为提取后的表征。则矩阵 为所有股票的表征(第i行为股票i的表征)。
2、股票特征分层处理
本文假设每个股票表征所包含的信息有以下三层组成:
  • 预定义概念相关的共有信息
  • 隐含概念相关的共有信息
  • 每只股票的特质信息
在本步骤中,主要是应用三个不同的模型对这三类信息进行分层提取,提取过程中主要采用了Doubly Residual的模型架构。
为了方便阐述,我们把以上三层不同的模型用模型0、1、2表示,每个股票i输入模型j的数据用 表示,经过模型j处理后,得到两个输出:
用于最后对于股票收益率的预测,其中最终用于预测的输入为: ;
用于从当前的 剥离掉的信息,并得到下一层模型的输入:
Module 0:预定义概念处理模块(Predefined concept module)
在这一步中,基于股票行业和概念属性构建了图神经网络模型。主要细分步骤如下:
  • 概念表征初始化
如下图3(a)表示,先把股票和对应概念(行业分类和主营业务)构建二分图(bipartite graph)。那么每个概念的表征的计算如等式(5)所示,其含义为:概念k的表征为该概念内所有股票表征的市值加权,以这个表征作为概念的初始化表征。
  • 概念表征修正
概念表征的修正主要为了解决以下两个问题:(1)预定义概念的信息缺失问题,有些股票跟概念的关联可能没呈现出来;(2)预定义概念的信息过剩问题,有些股票虽然跟概念有关联,但其实对股价影响不大。本文主要通过股票与概念的相似性解决这两个问题,如果一个股票与某个概念相似性很高,但在预定义概念中,这个股票与这个概念并没有相连,那就可以视为缺失的关联。反过来,如果股票与某个概念间相关度不高,但在预定义概念中两者相连,则这个关联是没有必要的。
其中,股票与表征的相关性计算采用Cosine相关性,并在后续步骤概念表征加总时,使用经Softmax归一化后的相关性作为权重,具体公式如下:
  • 概念表征加总
最终在基于修正后的图结构计算每个概念的表征,并传入全连接层输出作为最终概念k的表征,其中选用了LeakyReLU作为激活函数:
  • 预定义概念相关共有信息的剥离
在概念的表征修正后,重新计算股票与每个概念的相关性,并经Softmax归一化作为权重,其中 为股票i与概念k在t时间,归一化后的相关性:
接着,把股票i与所有概念k的表征加权总和,传入全连接层,输出作为股票i所包含的预定义概念的相关共有信息。
最后,再把 传入两个全连接层,分别输入 :
其中 作为下一个模型的输入。
Module 1:隐含概念处理模块(Hidden concept module)
在上面的模型钟提取了预定义概念相关的共有信息,这里我们进行隐含概念共有信息的提取,主要经历以下步骤:
  • 隐含概念表征初始化
假设隐含概念的数量与股票数量一致,都为n。并假设概念i的表征 为对应股票i的表征
  • 股票与隐含概念相似性计算
采用Cosine计算股票i与概念k,两两之间的相关性:
  • 股票与隐含概念关联
将股票与相似度最高的概念进行连接(除了原先对应的概念,如股票1与概念1),如图4所示,股票1与概念2 进行了连续,而概念3没有股票与其连接,则把概念3删掉。然后再把每个股票原先对应的概念加回来,如图4(b)所示。
  • 计算隐含概念的表征
最后通过全连接层计算概念的表征:
后续计算股票在隐含概念相关的共信息的步骤和以上Module 0的步骤一致。
Module 2:股票特质信息处理(Individual information module)
经过以上两个模型的信息剥离,每个股票都只包含里自身的特质信息,这些信息再经过一个全连接层输入为最后预测股票收益的信息:
3、全连接神经网络层
以上三个Moudle的输出最终放到一个线性全连接层:
训练的目标函数为:
实证效果
数据
  • 股票范围:中证100和沪深300
  • 股票特征(因子):基于Qlib计算的Alpha360特征
  • 时间跨度:2007-01-01至2020-12-31;其中2007-01-01至2014-12-31为训练集,2015-01-01至2016-12-31为验证集,2017-01-01至2020-12-31为测试集
  • 预定义概念数据:使用公司的行业数据及主营业务作为预定义的概念数据
  • 预测的目标:股票下一个交易日的收益率
Baseline模型
Baseline的模型细节参考原文
结果
在所有的模型钟,在两个股票池CSI100与CSI300钟,HIST模型的IC和RankIC都是最高的。比如在CSI300的测试中,RankIC达到了12.6%。
在考虑交易成本(买入万五,卖出万分之十五)的日度交易策略中,每日买入收益预测最高的前30只股票,在2017年到2020年,模型的累计收益为50%,是所有测试模型中收益最高的。
代码
作者开源了基于Pytorch的代码,非常简洁明了:
https://github.com/Wentao-Xu/HIST
继续阅读
阅读原文