前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >多任务时序动量策略

多任务时序动量策略

作者头像
量化投资与机器学习微信公众号
发布2023-09-06 14:20:21
4400
发布2023-09-06 14:20:21
举报
文章被收录于专栏:量化投资与机器学习

作者:Joel Onga、Dorien Herremansa

本文提出通过多任务学习构建一个时间序列动量组合,该多任务架构同时对收益和风险相关的任务进行学习。这种方法可以同时学习影响资产风险和收益的共同因素,权衡不同窗口期的风险和收益,并能提高了时间序列动量策略的表现。

传统时序动量策略

根据Moskowits(2012),传统的时间序列动量策略的收益可以有以下等式表示,及每一期买入或卖出的股票根据该股票过去252天的收益确定,并使用目标波动率确定每只股票的权重。

\begin{gathered} r_{t, t+1}^{\mathrm{TSMOM}, i}=\operatorname{sgn}\left(r_{t-252, t}^i\right) \frac{\sigma_{t g t}}{\sigma_t^i} r_{t, t+1}^i \\ \operatorname{sgn}(x):= \begin{cases}-1 & \text { if } x<0 \\ 0 & \text { if } x=0 \\ 1 & \text { if } x>0\end{cases} \\ r_{t, t+1}^{\mathrm{TSMOM}}=\frac{1}{S_t} \sum_{i=1}^{S_t} r_{t, t+1}^{\mathrm{TSMOM}, i} \end{gathered}

模型结构

我们提出了一个参数共享的多任务学习架构,该架构包括两种类型的任务:主任务和辅助任务。主要任务是多标的时间序列动量组合的构建。辅助任务是为了增强模型的共享表示,并允许模型更好地泛化,这反过来又有助于主任务。在我们提出的架构中(图1),特征输入至共享层LSTM进行编码,之后连接到特定任务的前馈网络对不同的任务进行学习。

图1. 多任务学习架构。该架构中LSTM作为共享层,参数在所有任务中进行共享。在每个单独的任务中有各自的全链接层(FNN)进行学习(参数独立)。

主要任务:构建时序动量组合

从上文的基于目标波动率的传统时序动量策略可以看出,确定每只股票权重有两个因素:动量的方向和股票的波动率。在主要任务中,我们直接预测股票的权重,那么组合的收益率就由上面的上式变为以下等式:

r_{t, t+1}^\rho=\frac{\sigma_{t g t}}{S_t} \sum_{i=1}^{S_t} w_{t-1, t}^i r_{t, t+1}^i

为了控制交易换手,我们在上式中加入了交易成本的惩罚项目:

r_{t, t+1}^\rho=\frac{\sigma_{t g t}}{S_t} \sum_{i=1}^{S_t} w_{t-1, t}^i r_{t, t+1}^i-\tau\left|w_{t-1, t}^i-w_{t-2, t-1}^i\right|

那么主要任务最终的目标函数(损失函数)就如下所示:

L_{\text {Sharpe Ratio }}=-\frac{\mathbb{E}\left[r^\rho\right]}{\sigma_{r^\rho}}

辅助任务

在多任务学习模型中,辅助任务的目的是使模型能够学习到包含相关信息的共享表示,从而提高主任务的表现。波动率预测的有效性会显著影响时间序列动量策略的表现。主任务中直接输出股票权重,但波动率作为权重的重要影响因素,因此,我们在辅助任务中加入了预测每种资产未来21天波动率的五个任务:

辅助任务的损失函数是最小化已实现波动率与预测波动率之间的负相关系数:

L_{\operatorname{corr}(y, \hat{y})}=-\frac{S_{y, \hat{y}}}{S_y \cdot S_{\hat{y}}}

那整个任务整体的损失函数可以写为:

\begin{aligned} L_{\text {total }} & =\mu L_{\text {main }}+\lambda \sum_{h \in H} L_{\text {aux }, h} \\ & =\mu L_{\text {Sharpe Ratio }}+\lambda \sum_{h \in H} L_{\rho_{y, \hat{y}}, h} \\ & =-\mu \frac{\mathbb{E}\left[r^\rho\right]}{\sigma_{r^\rho}}+\lambda \sum_{h \in H}-\frac{S_{y_h, \hat{y}_h}}{S_{y_h} \cdot S_{\hat{y}_h}} \end{aligned}

实证分析

回测时使用如下图所示的数据集划分方法:

结果分析

模型是用PyTorch在Python中实现的,该模型的完整源代码可在线获取。

https://github.com/joelowj/mtl-tsmom

交易成本设定为3个基点,我们提出的方法在风险调整后的回报方面始终优于所有基准,在2000年1月1日至2020年12月31日期间实现了7.90%的样本外年化回报。此外,我们的大量实验还表明,所提出的MTL-TSMOM在构建更好的风险调整后的投资组合方面优于现有的基准。最后,我们提出的模型显示与美国MSCI总回报指数的回报相关性较低,因此对现有的股票和债券投资组合来说,它是一个极具吸引力的分散投资工具。

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

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

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

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

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