人工智能42:图神经网络考虑股票间关系的增量信息,提升选股策略表现
图神经网络对样本间关系进行建图,将邻居节点的特征聚合到中心节点
图神经网络(GNN)将深度学习技术的使用场景从传统的图像、语音拓展至图结构数据,在欺诈检测、购物推荐等领域有广泛应用。GNN由图信号理论和谱域图卷积发展而来,其思想是对样本间关系进行显式或隐式建图,每个节点对应一条样本,再将邻居节点的特征聚合到中心节点,以更新节点特征。图卷积网络(GCN)、GraphSAGE、图注意力网络(GAT)是三种具有代表性的GNN。GCN属于转导学习,当新样本加入时需重新训练模型方能进行预测;GraphSAGE和GAT分别通过聚合器和注意力机制的方式实现归纳学习,可直接用于新样本预测,适用于样本动态变化的股票市场。
图时空网络将循环神经网络与图神经网络相结合,适用于量化选股
Qlib平台实现基于Alpha158因子和GATs_ts的沪深300成分内选股策略
风险提示:Qlib仍在开发中,部分功能未加完善和验证,使用存在风险。人工智能挖掘市场规律是对历史的总结,市场规律在未来可能失效。人工智能技术存在过拟合风险。
研究导读
传统的卷积神经网络(CNN)、循环神经网络系列(RNN和LSTM)不具备考虑样本间关系的能力。CNN通过卷积运算提取样本局部特征,适用于图像数据。RNN和LSTM的循环结构使得网络能够学习时序上的规律,适用于语音等时序数据。如果希望网络学习样本间关联的规律,那么就需要对网络运算方式或结构进行相应改造。
近年来,研究者陆续提出图卷积网络(GraphConvolutionalNetwork,简称GCN)、GraphSAGE(GraphSAmpleandaggreGatE)、图注意力网络(GraphAttenionNetwork,简称GAT),正是将图论的概念引入传统神经网络,创造出一套全新的适用于图结构数据的网络架构,统称图神经网络(GraphNeuralNetwork,简称GNN)。GNN在学界和业界有着深远影响及广泛应用,对量化选股领域同样具有很高的借鉴价值。
在华泰金工《人工智能40:微软AI量化投资平台Qlib体验》(2020-12-22)中,我们讲解Qlib的基础和进阶功能,该平台的优势在于覆盖量化投资全过程,从工程实现角度对因子存储、因子计算等环节提出创新解决方案,目前已开源的功能侧重于量价因子结合AI模型选股。Qlib除纳入集成学习及传统循环神经网络等AI模型外,还实现了动态图注意力网络(GATs_ts)。GATs_ts将循环神经网络和GAT结合,兼顾股票时序信息和股票间关系信息。借助Qlib开源平台,我们得以方便地了解图神经网络的实现细节,并测试该方法在量价因子选股上的表现。
本文主要内容如下:
1.第一部分讲解GNN的基础概念,依次介绍谱域图卷积运算、谱域图卷积网络、空间域图卷积网络的概念。完整的GNN由上述三者一步步发展而来,介绍其发展历史有助于读者更好理解GNN的内涵。
2.第二部分介绍GNN针对选股问题而诞生出的变式——图时空网络选股框架,其中关系股票排序框架(RelationalStockRanking,简称RSR)和GATs_ts都属于图时空网络选股框架范畴。我们首先从RSR切入,引出图时空网络选股的设计思路。
4.第四部分采用Qlib内置的Alpha158vwap因子库及TopkDropout策略,在2010年1月初至2021年2月初区间内进行日频选股实证,比较基准模型LSTM和GATs_ts(层数K=1、2和3)表现。
我们认为,动态图注意力网络作为一种新的方法论,将样本的时序信息与样本间关联信息结合在一起,通过空间域上的邻居聚合得到股票节点的嵌入表示(Embedding),这是相比传统机器学习及深度学习架构的创新之处。未来有更多方向值得探索,如建图方法、网络结构、策略构建等。
图神经网络
图神经网络将深度学习技术的使用场景从传统的图像、语音等数据拓展至图结构数据,在欺诈检测、购物推荐和交通流量预测等领域都有广泛应用。本章将从谱域和空间域两个方向介绍图神经网络:首先以图信号处理为基础,介绍谱域下的图卷积运算过程,通过参数化谱域卷积滤波器和切比雪夫多项式近似得到谱域图卷积网络,进而得到一阶切比雪夫图卷积网络即图卷积网络(GCN),由此引出GCN从谱域到空间域的过渡;随后介绍GCN在空间域下的两个改进变式:GraphSAGE和图注意力网络(GAT)。
谱域图卷积运算
图的基本定义和性质
谱域图卷积网络(Spectral-basedGCN)为后续空间域图卷积网络(Spatial-basedGCN)提供了强有力的理论基础,方便我们理解图神经网络如何发展而来。我们首先给出图及谱图理论的一些基本定义。
图傅里叶变换
图结构数据节点具有无序性和不规则性两个特征,前者是指邻居节点不具备空间上的天然顺序,后者指节点的邻居节点数量不固定。深度学习中最具代表性的卷积神经网络(CNN)使用卷积核平移扫描图像的方式,对像素点局部空间信息进行加权求和,像素点周围是固定的8个邻居像素点,这些点具有空间顺序。由此可见,CNN的应用场景和图结构数据不匹配,无法直接将图像领域的成熟解决方案应用于图结构数据。
我们考虑运用卷积定理,将节点的空间域信息先转换到谱域上,经过在谱域上的变换后,再返回到原始的空间域上。其意义在于将空间域上的卷积运算转换为谱域上的相乘运算。卷积定理指函数卷积的傅里叶变换等于函数傅里叶变换的乘积:
两个函数f和g的卷积运算在谱域上表示如下,其中F表示傅里叶变换。
谱域图卷积是在图信号处理(GraphSignalProcessing,简称GSP)的基础上,由式(1)卷积定理得到。根据式(1)我们需要找到图上类似的傅里叶基以及傅里叶变换该如何定义,并有什么样的含义。
总变差及图平滑度分析
在图的半监督学习中,总变差(不需要标签信息)可以作为图正则项加入损失函数,对每一组相连的节点对进行约束。最小化损失函数的过程可以保证总变差尽可能小,从而实现平滑假设。所谓平滑假设,是指对图网络我们假设相邻节点之间往往有相似的预测,这一类网络称为同配图(AssortativeGraph),例如引文网络(CitationNetwork)的Cora,Citeseer和Pubmed数据集。
与同配图对应的是异配图(DisassortativeGraph),在这类图中具有不同标签的节点反而有边相连,因此平滑假设不适用于异配图。对于异配图我们的目标反而应该是最大化总变差,相应的操作是将总变差的相反数加入损失函数中。
下面我们以更具体的例子展示图平滑度分析的过程。以图表1中G为例,我们分别设定四组不同的信号值,计算四种情况各自对应的图平滑度。每一种情况下,各节点的信号值以色阶形式展示在空间域上,如图3所示;按特征值从小到大的顺序,将图信号在该频率分量上的傅里叶系数即强度以柱图形式展示在频谱域上,如图4所示。
图卷积运算
有了拉普拉斯矩阵和图傅里叶变换的定义后,我们对图信号先转换到谱域,对其在谱域上进行滤波操作,提取滤波器想要提取的特征,再对两者在谱域上的乘积做逆图傅里叶变换,得到空间域上新的图信号。由于滤波操作相当于卷积,因此上述运算也称为图卷积运算。
谱域图卷积网络
参数化
多项式图卷积
截断切比雪夫多项式图卷积:ChebNet
空间域图卷积网络
GCN:谱域向空间域的经典过渡
谱域
空间域
GraphSAGE:聚合器实现归纳学习,可应用于动态图
GCN在空间域实际上是一个迭代式多跳聚合邻居节点特征、将其特征降至低维的过程,但GCN存在的主要问题如下:
2.GCN的训练是全图方式(Full-Batch),占用内存较多,尽管其作者提出将稀疏矩阵和稠密矩阵相乘的方式来加速运算,但其结构不允许采用小批量随机梯度下降方法(Mini-BatchSGD)训练,因此仍然无法推广到大规模图训练上。
针对上述问题,研究者提出大规模图上的归纳学习框架(GraphSAmpleandaggreGatE,简称GraphSAGE),利用节点特征为不可见数据生成节点嵌入(Hamiltonetal.,2017)。GraphSAGE并非像式(10)和GCN式(11)为每个节点训练一个单独嵌入,而是学习训练一组聚合器,通过从一个节点的局部邻居中采样,与聚合器生成节点嵌入。
图8上侧的三个子图展示了GraphSAGE的采样聚合过程。我们希望对左上子图的中心节点生成节点嵌入。采样如左上子图所示,以由内向外的方式进行:首先对中心节点的5个1跳邻居采样,得到3个标红的1跳邻居节点;随后对每个1跳邻居节点的1跳邻居采样,得到最外圈标红的2跳邻居节点。聚合如中上子图所示,以由外向内的方式进行:首先将2跳邻居节点的特征聚合到1跳邻居节点,如绿色箭头;随后将1跳邻居节点的特征聚合到中心节点。最终右上子图的中心节点已经包含其2跳邻居的特征,称为2跳嵌入表示。
图8下侧的三个子图展示了聚合过程的另一种理解方式——计算树。左下子图为节点A作为中心节点的计算树,即{A}的1跳邻居节点为{B,C,D},1跳邻居的1跳邻居(即A的2跳邻居节点)分别为{A,C}、{A,B,E,F}和{A}。右下子图中,2跳邻居节点(Layer-0)的特征首先聚合到1跳邻居节点(Layer-1),再聚合到中心节点(Layer-2),最终得到中心节点的2跳节点嵌入。通过上述前向传播算法,可以得到全部节点的任意K跳节点嵌入,K为节点的搜索深度。
1.由内到外采样
2.由外到内聚合
通过采样阶段和聚合阶段训练后,只要基于某一节点及其K阶邻居节点的特征和关系,就可以通过该聚合器得到节点的嵌入表示。GraphSAGE是空间域视角下GCN走向工业落地的代表性变体。
GAT:差异化邻居节点对中心节点的影响
从空间域角度看,GCN与消息传递的思路相似,将中心节点v的邻居节点N(v)特征以某种方式聚合到该中心节点上,既考虑了图的拓扑结构,也考虑了邻居节点的特征信息。由此GCN完成了图神经网络由谱域向空间域的经典过渡。
1.计算注意力系数
2.标准化注意力系数
3.加权求和
邻居节点关系在作者用到的MaskedSelf-Attention方式中是必需的,因为上文提到该方式计算的是1跳邻居节点与中心节点间的注意力系数。而另一种GlobalSelf-Attention全局方式不需要图结构信息,它计算了中心节点与图中所有节点之间的注意力系数,并将所有节点特征聚合给自己,因此该方式不需要预先构建显式图,但这也在一定程度上损失了图结构信息且计算成本高昂。全局方式将在后文Qlib平台的GATs_ts动态图注意力网络选股中用到。
最后,我们展示GCN、GraphSAGE和GAT的主要公式、核心思想及分析比较,见下表。
图时空网络选股框架
RSR关系股票排序框架
顺序嵌入层
关系嵌入层
关系嵌入层的核心是建立描述股票间关联关系的模型。股票间的关联可以体现在:若两家公司在同一个板块或行业,它们的股价可能表现出类似的趋势,因为它们往往受到类似的外部事件影响;若两家公司是供应链上的合作伙伴,那么上/下游公司的事件可能会影响下/上游公司的股价。
1.一致嵌入传播(UniformEmbeddingPropagation):仅考虑dj的显式关系
2.加权嵌入传播(WeightedEmbeddingPropagation):通过关系-强度函数
预测层
RSR框架最后将顺序嵌入层和关系嵌入层的结果进行拼接,输入到一个全连接层,以预测各股票收益率的排名得分,根据预测得分构建投资组合。为了优化模型,作者提出了一个点对回归损失和成对排序损失加和的目标函数:
上述目标函数中第一个回归项惩罚了真实值和预测得分之间的差异,第二项是成对的最大边际损失,它鼓励股票对的预测分数与真实值保持相同的相对顺序。这样一来有如下好处:
1.保证绝对收益率的预测结果:准确预测收益率有利于确定投资时机,因为只有在收益率大幅上升时,排名靠前的股票才会成为有价值的投资目标;
2.保证股票收益率的相对顺序,以便投资者做出更好的投资决策:正确的股票相对顺序有助于选择投资目标,例如选择排名更高的股票。
RSR和GAT的比较
RSR框架首先根据股票间多种类型关系得到股票关系图,随后运用时序信息和股票关系来预测股票的未来收益率排序情况。RSR框架的重要贡献如下:
1.为股票间建立多种类型关系,构建了真实存在的关系图:对纳斯达克交易所/纽交所的股票分别构建了112/130种行业关系和42/32种基于维基百科中公司描述的关系,例如供应商-消费者关系和所有权关系;
2.将股票预测设置为排序任务,提出RSR深度学习框架进行股票收益率的排名预测;
我们将式(15)得到的强度通过softmax函数标准化使邻居间可比,代入式(14)得到如下关系嵌入:
微软Qlib平台GATs_ts模型的应用介绍
模型实现
在图神经网络一章的最后以及图时空网络选股框架一章中,我们分别介绍了图注意力网络GAT和RSR选股框架。两者的相似之处在于注意力机制的运用,区别主要在于节点特征是动态还是静态,即是否考虑图的动态性。Qlib中的GATs_ts模型借鉴了RSR的框架结构,并采用了GAT的自注意力机制全局方式。由于GATs_ts将循环神经网络RNN的最后时刻隐藏层状态特征送入GAT,因此我们称之为动态图注意力网络。
在关系嵌入这一步,GATs_ts采用GAT中注意力机制的GlobalSelf-Attention全局方式,这种方式不需要像RSR那样构建显式的股票关系图,而是对每一个中心节点计算其它所有节点的特征聚合。
GATs_ts与LSTM输入数据辨析
为了帮助读者更好理解GATs_t所使用的输入数据结构,我们对GATs_ts与LSTM输入数据进行辨析。LSTM输入数据结构参考Qlib源码pytorch_lstm_ts.py中的LSTMModel,GATs_ts输入数据结构参考Qlib源码pytorch_gats_ts.py中的GATModel。
真实市场中,每个交易日的股票数量不同,例如2017年2月10日、13日和14日沪深300成分股票池的有效股票数量分别为299、299和300,14日相比前一交易日增加一只股票。此时,每个交易日的全局股票图网络是一个动态图。GATs_ts模型batch_size可变的特性使得模型可以将每个交易日的全部有效股票放进一个batch,不同batch对应不同交易日,而LSTM无法做到这一点。
图16和图17展示了两种模型的具体输入数据形式。图16的GATs_ts模型中,以T=2017/2/10对应的batch1为例(左上角),stock1的step_len维度为[T-19,T-18,…,T],即对应stock1股票从T-19到T日的因子特征。若该股票T-19到T-1日因子有缺失,则用最新数据补全之前的缺失值。图表18左侧展示了当T=2017/03/09时,stock1(SH600000)的原始数据。
多跳邻居实现
Qlib中GATs_ts源码仅实现了一层图注意力网络,即只考虑1跳邻居的关系嵌入。我们在Qlib源码基础上实现了K层GATs_ts模型,并用于后文中的回测,用来检验更远的节点特征能否提供额外的信息。例如K=2相当于对节点进行两跳的邻居聚合,即将邻居以及邻居的邻居聚合给自身。多跳邻居的代码实现如图19所示,在yaml配置文件中加入num_layers_gat(等价于层数K)的参数定义即可完成多跳邻居的训练。
图19代码中,首先定义图注意力层GATlayer类,在GATModel中通过循环堆叠num_layers_gat层即可得到多跳邻居的特征聚合。整个前向传播过程分为三步:rnn循环神经网络、多层GAT和fc全连接。
在前向传播中,每一层for循环完成self.gat_layers[l](hidden)特征聚合后,我们借鉴一种残差跳跃的方式(Chenetal.,2020):从初始层(k=0)进行残差连接。具体做法是在self.gat_layers[l](hidden)的基础上,加入k=0原始特征的自环out[:,-1,:],这是为了防止图神经网络的过平滑(OverSmoothing)问题,即随着层数增加,节点会学到图中全局信息,导致所有节点的特征趋于类似从而无法区分。
GATs_ts回测分析
测试流程
我们在Qlib平台上对动态图注意力网络模型GATs_ts进行选股回测,流程如下:
1.数据获取
a)获取Wind中的A股数据,按照华泰金工研报《人工智能40:微软AI量化投资平台Qlib体验》(2020-12-22)中dump_all转换用户数据格式的方式,转换为Qlib的bin数据存储格式。
b)股票池:沪深300成分股。
c)回测区间:2010-01-04至2021-02-02,分12个阶段滚动回测,如下图所示。
2.特征和标签提取:特征采用Qlib内置的因子库Alpha158vwap中的158个因子特征,将标签定义为t+2日vwap复权均价相对于t+1日vwap复权均价的涨跌幅,相当于t日收盘后发信号,t+1日以日内均价开仓,t+2日以日内均价平仓。
3.特征预处理:
a)训练集和验证集:首先剔除标签为缺失值的样本(Qlib的DropnaLabel类),再对标签进行截面标准化(Qlib的CSRankNorm类),即对每个截面的标签先转换为rank序数,最后Z分数标准化至标准正态分布。
b)测试集:首先对特征进行标准化(Qlib的RobustZScoreNorm类),即对因子做稳健Z分数标准化,对原始数据减去中位数除以1.48倍MAD统计量,再将因子特征取值限制在-3到3之间(clip_outlier设置为True),最后将因子缺失值填充为0(Qlib的Fillna类)。
4.数据集设置:训练集采用样本内数据的前五年,验证集采用样本内数据的最后一年,测试集采用接下来的样本外一年。
5.样本内训练:使用自定义pytorch_gats_ts_layers.py的GATs类训练,GAT类调用了图19的GATModel类,即多层动态图注意力网络模型GATs_ts的实现。将回测区间按年份划分为12个子区间,因此需要配置相应的训练集区间进行滚动训练。
6.验证集调参:训练过程中,当验证集上的评价分数在连续10轮迭代后都没有提升时,停止模型训练,选取验证集评价分数最高的一组参数作为模型的最优参数,用来对测试集进行预测。这里的评价分数使用Qlib中默认的方式,即均方误差的相反数。
7.样本外测试和回测:
a)得到最优参数后,进行模型预测得到测试集中每一天股票的预测收益率。
b)由于Qlib开源部分还未配置滚动回测,我们编辑了12个yaml文件依次进行回测,分别得到2010年至2021年中每一年测试集上的预测收益率。我们将每年的pred.pkl(预测收益率结果)合并,再送入backtest_for_pred函数,进行2010~2021年的整体回测和报告输出。该回测函数和指标计算函数如图21所示。
c)使用TopkDropout策略,每日持有topk=50只股票,同时每日卖出持仓股票中最新预测收益最低的n_drop=5只股票,买入未持仓股票中最新预测收益最高的n_drop=5只股票。买入每只股票的金额为95%的剩余现金除以需要购买的股票数量,95%是策略的一个可调参数,用来控制仓位。关于费率的设置,开仓交易费率为0.05%,平仓交易费率为0.15%,最小交易费用为5元(人民币)。
模型参数配置
我们将d_feat设置为158,使用Alpha158vwap因子库的所有特征进行训练;with_pretrain设置为False,即不预先给158个特征的数据训练一个LSTM网络;module_path设置为qlib.contrib.model.pytorch_gats_ts_layers,即我们的模型实现的位置;num_layers_gat为GATs_ts层数,后文中设置为1,2和3进行回测;其余参数的设置与Qlib中yaml配置上的保持一致,具体如下表所示。基准模型LSTM的参数请见附录。
单因子测试
IC值分析法
如果将模型的输出即预测收益率视为单因子,则可以对单因子向量与真实收益率向量进行IC值分析,得到不同预测模型在各年度IC均值、RankIC均值、ICIR和RankICIR,衡量因子的有效性。预测模型包括1、2、3层GATs_ts以及基准模型LSTM。
分年度和完整回测区间的汇总结果如表23,RankIC日频序列值如图24和25所示。基准模型LSTM在回测期间的RankIC均值和RankICIR分别为0.09和0.65,RankIC值大于0的交易日占比为75.65%。对于GATs_ts模型,当图注意力层数为一层(即K=1)时,2010~2021年的RankIC均值和RankICIR分别为0.09和0.63,RankIC值大于0的交易日占比为74.76%。总的来看,LSTM模型的IC测试结果略优于GATs_ts模型,一层GATs_ts模型优于其它层数(K=2或3)的GATs_ts模型。
统计因子在各月上的表现,得到RankIC月度均值,如表26所示。可以看到各模型月度RankIC在2017年及以前相对稳定,在2018年及以后逐渐降低。这可能说明随着交易拥挤或者市场环境的变化,量价因子预测能力在逐渐失效。
单因子分层回测法
依照因子值对股票进行打分,构建投资组合回测,是最直观的衡量指标优劣的手段。测试模型的构建方法如下:
1.股票池:沪深300成分股。
2.回溯区间:2010-01-04至2021-01-29。
3.换仓期:每个交易日。
4.数据处理:将模型对股票收益率的预测值视作单因子,因子值为空的股票不参与分层。
5.分层方法:将因子值由大到小排序,前20%为组合1,后20%为组合5,另有组合long-short为买入组合1、卖空组合5,组合long-average为买入组合1、卖空平均组合,这里的平均是指取每个交易日中所有股票的平均收益率。我们调用qlib.contrib.report.analysis_model.analysis_model_performance中的_group_return方法来计算各组合的累计收益。比如计算组合1时,首先将因子值降序排列,然后对每个交易日中前20%的股票收益率取均值作为该日的收益率,相当于等值购买前20%的股票。
比较各预测模型单因子分层回测表现,LSTM和GATs_ts(K=1)多头组合Group1的年化超额收益率分别为47.71%和44.75%,多空组合long-short年化收益率分别为99.44%和95.64%,LSTM在收益能力上略胜一筹。一层GATs_ts优于其它层数(K=2或3)的GATs_ts模型。
构建组合策略及回测分析
采用Qlib内置的TopkDropout策略,进行沪深300成分股内选股回测,组合构建方式已在前文详述,基准为沪深300指数。策略回测结果如表32所示。LSTM和一层GATs_ts模型在回测期间的年化超额收益率分别为25.69%和28.89%,夏普比率分别为1.26和1.42,信息比率分别为2.64和2.94,超额收益最大回撤分别为-10.95%和-16.92%。一层GATs_ts优于两层LSTM,也优于二层和三层GATs_ts模型。
从分年度表现来看,各类型策略的超额收益表现出明显的衰减,我们认为这和模型使用的因子有关。Alpha158vwap因子库包含158个量价因子,这些因子是原始量价数据由基础运算符相连接得到的因子表达式。若传统量价出现拥挤,或者因为市场环境变化量价因子整体失效,那么GATs_ts模型也不可避免出现滑坡。GATs_ts只能解决因子合成的问题,无法解决因子失效问题。持续挖掘新Alpha因子仍是提升Alpha策略表现的最好途径之一。
图33至图40分别展示四个模型在回测期间的净值和超额净值图。LSTM超额收益最大回撤发生在2014-11-24至2014-12-22,回撤幅度为-10.95%;GATs_ts(K=1)超额收益最大回撤发生在2014-11-24至2015-1-5,回撤幅度为-16.92%。GATs_ts控制风险能力略逊于LSTM。
下面两张图展示四个模型日度策略换手率变化。2010至2014年日换手率在20%附近波动,2015至2016年换手率波动较大,此后GATs_ts(K=1)和GATs_ts(K=2)模型的日换手率维持在20%附近,而LSTM和GATs_ts(K=3)模型的日换手率维持在15%附近。
总结与展望
为了方便读者更好地理解图神经网络的原理,我们花费了较长篇幅介绍图神经网络的思想和发展。总的来说,它由图信号理论和谱域图卷积发展而来,目前更多聚焦在空间域上的卷积方式,即将邻居节点的特征聚合给中心节点的方式来更新节点特征。
GCN、GraphSAGE和GAT是三种具有代表性的图神经网络。GCN仅适用于转导学习和无向图,即在未来有新节点加入时需要重新训练模型才能进行预测;GraphSAGE和GAT分别通过聚合器和注意力机制的方式将其扩展到归纳式学习,可用于新节点的预测,这对动态的股票市场来说是富有意义的。
最后我们给出Qlib平台GATs_ts模型的实现方式,GATs_ts将GAT的注意力机制融入图时空网络选股框架。基于Qlib内置的Alpha158因子库,我们采用GATs_ts模型对沪深300成分股进行日收益率预测,随后构建日频调仓投资组合。回测期内(2010-01-04至2021-02-02),一层GATs_ts策略相对于基准沪深300指数的年化超额收益率为28.89%,信息比率为2.94,超额收益最大回撤为-16.92%,表现优于基准模型LSTM和多层GATs_ts。
本研究存在以下未尽之处:
1.建图方法:GATs_ts采用GAT的全局注意力机制,即对股票之间关系进行隐式建模。如果对股票市场建立显式的股票间关系,再应用于选股策略,效果如何?这些关系类型可能具有语义特征,是否可以考虑知识图谱与图时空网络的结合?
2.网络结构:GATs_ts首先将时序数据送入循环神经网络,随后对股票之间进行图卷积。与之相反,如果先对每个交易日的股票图进行图卷积,再将其送入循环神经网络中,从方法论上同样可行?
3.策略构建:本研究直接调用Qlib中的Alpha158因子库及TopkDropOut选股策略,在沪深300成分股票池内采用日频调仓方式构建组合。模型在其它股票池、其它换仓频率、其它组合构建方式下表现如何?模型2018年后超额收益逐渐衰减,是否和因子失效有关,引入新因子能否起到改进效果?
图神经网络应用于量化策略是一个相对新颖的领域,上述问题都值得进一步探索。
参考文献
[1]YangX,LiuW,ZhouD,etal.Qlib:AnAI-orientedQuantitativeInvestmentPlatform[J].arXivpreprintarXiv:2009.11189,2020.
[2]ShumanDI,NarangSK,FrossardP,etal.Theemergingfieldofsignalprocessingongraphs:Extendinghigh-dimensionaldataanalysistonetworksandotherirregulardomains[J].IEEEsignalprocessingmagazine,2013,30(3):83-98.
[3]刘忠雨,李彦霖,周洋.深入浅出图神经网络:GNN原理解析[M].北京:机械工业出版社,2020
[4]TremblayN,GonalvesP,BorgnatP.Designofgraphfiltersandfilterbanks[M].CooperativeandGraphSignalProcessing.AcademicPress,2018:299-324.
[5]BrunaJ,ZarembaW,SzlamA,etal.Spectralnetworksandlocallyconnectednetworksongraphs[J].arXivpreprintarXiv:1312.6203,2013.
[6]HammondDK,VandergheynstP,GribonvalR.Waveletsongraphsviaspectralgraphtheory[J].AppliedandComputationalHarmonicAnalysis,2011,30(2):129-150.
[7]DefferrardM,BressonX,VandergheynstP.Convolutionalneuralnetworksongraphswithfastlocalizedspectralfiltering[J].Advancesinneuralinformationprocessingsystems,2016,29:3844-3852.
[8]ChungFRK,GrahamFC.Spectralgraphtheory[M].AmericanMathematicalSoc.,1997.
[9]KipfTN,WellingM.Semi-supervisedclassificationwithgraphconvolutionalnetworks[J].arXivpreprintarXiv:1609.02907,2016.
[10]WuF,ZhangT,SouzaJrAH,etal.Simplifyinggraphconvolutionalnetworks[J].arXivpreprintarXiv:1902.07153,2019.
[11]HamiltonW,YingZ,LeskovecJ.Inductiverepresentationlearningonlargegraphs[C].Advancesinneuralinformationprocessingsystems.2017:1024-1034.
[12]VelikoviP,CucurullG,CasanovaA,etal.Graphattentionnetworks[J].arXivpreprintarXiv:1710.10903,2017.
[13]FengF,HeX,WangX,etal.Temporalrelationalrankingforstockprediction[J].ACMTransactionsonInformationSystems(TOIS),2019,37(2):1-30.
[14]ChenM,WeiZ,HuangZ,etal.Simpleanddeepgraphconvolutionalnetworks[C].InternationalConferenceonMachineLearning.PMLR,2020:1725-1735.
风险提示
Qlib仍在开发中,部分功能未加完善和验证,使用存在风险。人工智能挖掘市场规律是对历史的总结,市场规律在未来可能失效。人工智能技术存在过拟合风险。
附录
基准模型LSTM参数设置如下表所示。
除GATs_ts和LSTM模型外,我们还测试了经典的决策树集成模型LightGBM,回测结果如下。
公众平台免责申明
本公众号研究报告有关内容摘编自已经发布的研究报告的,若因对报告的摘编而产生歧义,应以报告发布当日的完整内容为准。如需了解详细内容,请具体参见华泰证券所发布的完整版报告。
本公众号内容基于作者认为可靠的、已公开的信息编制,但作者对该等信息的准确性及完整性不作任何保证,也不对证券价格的涨跌或市场走势作确定性判断。本公众号所载的意见、评估及预测仅反映发布当日的观点和判断。在不同时期,华泰证券可能会发出与本公众号所载意见、评估及预测不一致的研究报告。
在任何情况下,本公众号中的信息或所表述的意见均不构成对客户私人投资建议。订阅人不应单独依靠本订阅号中的信息而取代自身独立的判断,应自主做出投资决策并自行承担投资风险。普通投资者若使用本资料,有可能会因缺乏解读服务而对内容产生理解上的歧义,进而造成投资损失。对依据或者使用本公众号内容所造成的一切后果,华泰证券及作者均不承担任何法律责任。