蛋白资产配置平台致力于为投资者提供全面,高效,便捷的量化投资工具。基于此,我们开发了与主流投资模型相契合的功能模块。投资者只需要输入必要参数,相关模块就可以自动完成数据获取,特征和标签的提取与处理,样本内训练,样本外回测和模型评价的一整套策略流程。我们利用蛋白资产配置平台对华泰证券图神经网络选股策略进行了复现,并通过调整训练方法使沪深300组合取得了更好的表现。
Part 2
研究导读
图神经网络(GNN)由图信号理论和谱域图卷积发展而来,其思想是对样本间关系进行显式或隐式建图,每个节点对应一条样本,再将邻居节点的特征聚合到中心节点,以更新节点特征。GNN的优势在于能将股票间的复杂关联,如产业链上下游关系、相关行业主题等作为增量信息纳入预测模型。目前蛋白资产配置平台已实现多层动态图注意力网络(GATs_ts)。
我们使用平台取数模块获取沪深300成分股数据,基于自身Alpha158vwap量价因子库,采用LSTM(长短期记忆网络)和GATs_ts模型对沪深300成分股进行日收益率和月收益率预测,使用TopkDropout策略构建日频和月频调仓投资组合,并利用回测模块对组合表现进行滚动回测。
我们在模型参数配置,数据处理,特征提取,训练验证集划分,训练回测流程设计,交易策略,模型分析评价上与华泰研报保持一致。不过考虑到使用成交量加权平均价的时滞性,我们将标签定义为t+2日前复权收盘价相对于t+1日前复权收盘价的涨跌幅。
在模型单因子测试和策略组合表现上,我们得到的结论是LSTM优于GAT_ts。此外,我们得到的策略组合在年化收益和夏普比率上的表现均优于华泰研报。
Part 3
图神经网络
蛋白资产配置平台图神经网络模型(GATModel)的设计与华泰研报中展示的Qlib设计保持一致。类似地,我们也实现了K层GATs_ts模型,即考虑K跳邻居的关系嵌入,用来检验更远的节点特征能否提供额外的信息。例如K=2相当于对节点进行两跳的邻居聚合,即将邻居以及邻居的邻居聚合给自身。
通过定义图注意力层GATlayer类,再在GATModel中通过循环堆叠num_layers_gat层即可得到多跳邻居的特征聚合。整个前向传播过程分为三步:rnn循环神经网络、多层GAT和fc全连接。相较于华泰策略,我们补充了GATModel中对特征的非线性变换以及GATlayer类在进行RNN的前向传播前对特征的格式转换,以实现多跳邻居聚合。用户在工作脚本中加入 num _layers _gat(等价于层数K)的参数定义即可使用多跳邻居的训练。模型参数设置与华泰研报保持一致;输入方法如图所示:
Part 4
测试流程
我们使用蛋白资产配置平台对动态图注意力网络模型GATs_ts进行选股回测,除以下不同外,其余设置皆与华泰研报保持一致。
-
数据获取:利用蛋白资产配置平台取数模块获取A股行情数据(开盘价,收盘价,最高价,最低价,成交量,成交额)。
-
特征提取:使用蛋白资产配置平台内置的因子库-Alpha158vwap中基于开盘价,收盘价,最高价,最低价, 成交量和成交量加权平均价计算的158个因子特征。具体计算方法与华泰研报使用的Qlib-Alpha158vwap因子库保持一致。
-
标签提取:将标签定义为t+2日前复权收盘价相对于t+1日前复权收盘价的涨跌幅,相当于t日收盘后发信号,t+1日以收盘价开仓,t+2日以收盘价平仓。华泰研报选取成交量加权平均价的涨跌幅作为标签,是量化策略常见的做法。考虑到该方法有一定的滞后性,我们选择了收盘价作为每日成交价,即于每日收盘集合竞价阶段成交。
-
特征预处理:使用蛋白资产配置平台内置的数据处理模块。具体处理方法与华泰研报使用的Qlib处理方法保持一致。用户只需要在工作脚本输入所需的处理方法的名称即可:
5. 样本内训练:使用蛋白资产配置平台模型模块的GATs类训练。
6. 样本外回测:使用蛋白资产配置平台回测模块进行滚动回测。回测模块目前支持TopkDropout策略,即每日持有topk=50只股票,卖出持仓股票中最新预测收益最低的n_drop=5只股票,买入未持仓股票中最新预测收益最高的n_drop=5只股票。用户只需要在工作脚本输入相关回测参数即可:
Part 5
单因子测试
1. IC值分析法
如果将模型的输出即预测收益率视为单因子,则可以对单因子向量与真实收益率向量进行IC值分析,得到模型在各年度IC均值、Rank IC均值、ICIR和Rank ICIR,衡量因子的有效性。预测模型包括1、2、3层GATs_ts以及基准模型LSTM。
测试结果:基准模型LSTM在回测期间的Rank IC均值和Rank ICIR分别为0.089和1.264, Rank IC值大于0的交易日占比为89.4%。对于GATs_ts模型,当图注意力层数为一层(即K=1)时,2010~2021年的Rank IC均值和Rank ICIR分别为0.076和1.051,Rank IC值大于0的交易日占比为85.5%。当图注意力层数为两层(即K=2)时,2010~2021年的Rank IC均值和Rank ICIR分别为0.077和1.063,Rank IC值大于0的交易日占比为85.9%。当图注意力层数为三层(即K=3)时,2010~2021年的Rank IC均值和Rank ICIR分别为0.076和1.033,Rank IC值大于0的交易日占比为84%。
总的来看,LSTM模型的IC测试结果优于GATs_ts模型,两层GATs_ts模型优于其它层数(K=1或3)。此外,我们还测试了月频GATs_ts(K=2) 模型。其在回测期间的Rank IC均值和Rank ICIR分别为0.021和0.156,Rank IC值大于0的交易月份占比为52.34%。因此,图神经网络策略更适合使用日频调仓。
分年度和完整回测区间的汇总结果如下:
不同预测模型输出值单因子IC测试结果(回测期间2010-01-04至2021-01-29):
日频LSTM模型:
LSTM模型IC和RankIC日频序列值:
1
2
日频GATs_ts(K=1)模型:
GATs_ts(K=1) IC和RankIC日频序列值:
1
2
日频GATs_ts(K=2)模型:
GATs_ts(K=2) IC和RankIC日频序列值:
1
2
日频GATs_ts(K=3)模型:
GATs_ts(K=3) IC和RankIC日频序列值:
1
2
统计因子在各月上的表现,得到Rank IC月度均值,如下表所示。可以看到,各模型月度Rank IC大多在0.03到0.13之间震荡。2017年以后各模型月度Rank IC略有下降,波动性有所增大。这可能说明随着交易拥挤或者市场环境的变化,量价因子预测能力有所减弱。
不同预测模型日频数据月度IC均值:
LSTM:
GATs_ts(K=1):
GATs_ts(K=2):
GATs_ts(K=3):
月频GATs_ts(K=2):
GATs_ts(K=2) IC和RankIC月频序列值:
如上图所示。可以看到,月频GATs_ts(K=2)模型的Rank IC大部分都在-0.2到0.2之间震荡。2017年以后,Rank IC波动有所增大,预测能力略为减弱。整体而言,月频因子预测能力不如日频因子。
2. 单因子分层回测法
依照因子值对股票进行打分,构建投资组合回测,是最直观的衡量指标优劣的手段。将模型对股票收益率的预测值视作单因子, 因子值为空的股票不参与分层。将因子值由大到小排序,前20%为组合1,后20%为组合5,另有组合long-short为买入组合1、卖空组合5,组合long-average为买入组合1、卖空平均组合,这里的平均是指取每个交易日中所有股票的平均收益率。比如计算组合1时,首先将因子值降序排列,然后对每个交易日中前20%的股票收益率取均值作为该日的收益率,相当于等值购买前20%的股票。
不同预测模型分层组合回测收益与指标分析(使用此功能时必须使用原始收益率作为标签):
日频LSTM模型:
日频GATs_ts(K=1)模型:
日频GATs_ts(K=2)模型:
日频GATs_ts(K=3)模型:
比较各预测模型单因子分层回测表现。LSTM,GATs_ts(K=1),(K=2),(K=3)的多头组合Group1的的年化收益率和年化超额收益率分别为70.6%和42.7%,63.2%和38%,64.5%和39.0%,62.9%和37.9%。多空组合long-short年化收益率和年化超额收益率分别为129.6%和101.7%,108.6%和83.3%,108.6%和83.2%,107.1%和82.1%。LSTM在收益能力上明显胜出。两层GATs_ts略优于其它层数(K=1或3)的GATs_ts模型。这与先前得到的单因子测试结果一致。
月频GATs_ts(K=2)模型:
如上图所示,月频GATs_ts(K=2)多头组合Group1,2,3,4,5的年化超额收益率分别为43.5%,18.2%,1.6%,-15.2%和-40.2%,多空组合long-short和long_average年化收益率分别为83.6%和43.5%。这再次说明图神经网络策略更适合使用日频调仓。
Part 6
策略组合回测分析
不同模型日频TopkDropout策略各年度回测指标(回测期2010-01-04至2021-01-29):
策略回测结果如上表所示。LSTM,一层,两层,三层GATs_ts模型在回测期间的年化超额收益率(含交易费用)分别为39.4%,38.9%,38.6%和35.6%;夏普比率分别为5.888,5.772,5.640和5.42,信息比率分别为1.613,1.59,1.584,和1.462。总的来说,LSTM优于两层GATs_ts,也优于一层和三层GATs_ts模型。相比于华泰研报中最佳组合的年化超额收益率28.89%和夏普比率1.42,我们构建的组合表现亮眼。这说明对于沪深300成分股,使用收盘价作为成交价是比使用成交量加权平均价更好的选择。另一方面,这可能也反映出在A股市场,集中于尾盘成交是一个被普遍使用的策略。
与华泰研报不同,我们在单因子IC值分析,分层回测和组合策略回测上得到了一致的结果,即LSTM模型略优于GATs_ts模型。这可能是由于股票市场数据的信噪比普遍较低,GATs_ts模型在进行多跳聚合时,虽然获取了股票间相互作用的关系,但同时也吸收了太多噪音,导致其预测能力不如单纯学习股票时间序列特征的LSTM模型。
从分年度表现来看,各类型策略的超额收益表现出明显的衰减。我们与华泰观点一致,认为这和模型使用的因子有关。Alpha158vwap因子库包含158个量价因子,这些因子是原始量价数据由基础运算符相连接得到的因子表达式。若传统量价出现拥挤,或者因为市场环境变化量价因子整体失效,那么GATs_ts模型也不可避免出现滑坡。GATs_ts只能解决因子合成的问题,无法解决因子失效问题。持续挖掘新Alpha因子仍是提升 Alpha策略表现的最好途径之一。
下图分别展示四个模型在回测期间的收益净值,超额收益净值,最大回撤和换手率。LSTM的收益最大回撤发生在2019-02-11到2019-05-11,回撤幅度为-8.2%,两层GATs_ts收益最大回撤发生在2017-09-20到2017-12-29,回撤幅度为-6.1%。GATs_ts控制风险能力略好于LSTM。这可能是由于GATs_ts训练时考虑了股票间的相关性,在资产配置上较LSTM更加分散,降低了非系统性风险。
日频LSTM: 日频GATs_ts(K=1):
1
2
日频GATs_ts(K=2): 日频GATs_ts(K=3):
1
2
补充:月频GATs_ts(K=2)TopkDropout策略各年度回测指标