量化投资与机器学习微信公众号,是业内垂直于量化投资、对冲基金、Fintech、人工智能、大数据领域的主流自媒体公众号拥有来自公募、私募、券商、期货、银行、保险、高校等行业30W+关注者,曾荣获AMMA优秀品牌力、优秀洞察力大奖,连续4年被腾讯云+社区评选为“年度最佳作者”。
作者:Joel Onga、Dorien Herremansa

本文提出通过多任务学习构建一个时间序列动量组合,该多任务架构同时对收益和风险相关的任务进行学习。这种方法可以同时学习影响资产风险和收益的共同因素,权衡不同窗口期的风险和收益,并能提高了时间序列动量策略的表现。
传统时序动量策略
根据Moskowits(2012),传统的时间序列动量策略的收益可以有以下等式表示,及每一期买入或卖出的股票根据该股票过去252天的收益确定,并使用目标波动率确定每只股票的权重。
模型结构
我们提出了一个参数共享的多任务学习架构,该架构包括两种类型的任务:主任务和辅助任务。主要任务是多标的时间序列动量组合的构建。辅助任务是为了增强模型的共享表示,并允许模型更好地泛化,这反过来又有助于主任务。在我们提出的架构中(图1),特征输入至共享层LSTM进行编码,之后连接到特定任务的前馈网络对不同的任务进行学习。
图1. 多任务学习架构。该架构中LSTM作为共享层,参数在所有任务中进行共享。在每个单独的任务中有各自的全链接层(FNN)进行学习(参数独立)。
主要任务:构建时序动量组合
从上文的基于目标波动率的传统时序动量策略可以看出,确定每只股票权重有两个因素:动量的方向和股票的波动率。在主要任务中,我们直接预测股票的权重,那么组合的收益率就由上面的上式变为以下等式:
为了控制交易换手,我们在上式中加入了交易成本的惩罚项目:
那么主要任务最终的目标函数(损失函数)就如下所示:
辅助任务
在多任务学习模型中,辅助任务的目的是使模型能够学习到包含相关信息的共享表示,从而提高主任务的表现。波动率预测的有效性会显著影响时间序列动量策略的表现。主任务中直接输出股票权重,但波动率作为权重的重要影响因素,因此,我们在辅助任务中加入了预测每种资产未来21天波动率的五个任务:
辅助任务的损失函数是最小化已实现波动率与预测波动率之间的负相关系数:
那整个任务整体的损失函数可以写为:
实证分析
回测时使用如下图所示的数据集划分方法:
结果分析
模型是用PyTorch在Python中实现的,该模型的完整源代码可在线获取。
https://github.com/joelowj/mtl-tsmom
交易成本设定为3个基点,我们提出的方法在风险调整后的回报方面始终优于所有基准,在2000年1月1日至2020年12月31日期间实现了7.90%的样本外年化回报。此外,我们的大量实验还表明,所提出的MTL-TSMOM在构建更好的风险调整后的投资组合方面优于现有的基准。最后,我们提出的模型显示与美国MSCI总回报指数的回报相关性较低,因此对现有的股票和债券投资组合来说,它是一个极具吸引力的分散投资工具。
往期推
继续阅读
阅读原文