前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >量化CTA:Deep Momentum Network的细节思考

量化CTA:Deep Momentum Network的细节思考

作者头像
量化投资与机器学习微信公众号
发布于 2021-12-02 02:13:22
发布于 2021-12-02 02:13:22
2.6K0
举报

前言

传统的CTA策略多为多品种多周期的趋势跟踪策略组合。其中对于趋势的定义,大都基于时间序列计算出的传统技术指标,如MACD、均线等。然后根据趋势的多空,构建多品种的多空组合。随着深度学习的发展,很多研究者在量化CTA策略的研发中,开始尝试深度学习算法。常见的作法,如直接用深度学习预测每个品种未来一段时间的收益率,并根据预测收益构建品种多空的组合。但这钟做法有以下两个缺点:

  • 直接预测收益,并没有考虑组合的风险;
  • 没有考虑每个品种在组合钟的权重。

在Lim etl. 2019的论文《Enhancing Time Series Momentum Strategies Using Deep Neural Networks》中,作者提出了Deep Momentum Network(DMN)这样一个框架应用在多品种趋势跟踪策略的框架。DMN主要有以下特点:

  • 直接预测N个品种未来的头寸,区间为(-1,1);
  • 直接使用Sharpe比率作为模型的损失函数。

模型整体框架非常直观,输入为所有品种的特征数据,输出为所有品种下一期的信号强度,信号强度的取值区间为[-1,1],正负号表示多空的方向,数值大小表示仓位大小。其中模型部分可以采用任何用于序列预测的深度学习模型,我们这里以LSTM为例。

虽然模型非常直观,但其中有多细节值得我们推敲,我们主要讨论以下两个问题:模型怎么校准?Batch数据怎么划分等?

1、模型如何训练与校准?

由于模型预测的是下一期每个品种的信号强度,并不像直接预测下期收益率那样直接可以将下期收益率作为预测目标,然后再使用MSE作为损失函数。DMN最大的不同是,是直接使用Sharpe比率作为损失函数:

Lsharpe (θ)=252EΩ[R(i)t]VarΩ[R(i)t]R(i)t+1=X(i)tσtgtσ(i)tr(i)t+1

其中:

为所有资产在过去t-1到t-n时间平均收益, 为所有资产在过去n个时间步的方差;

为品种i在时间t+1的给组合贡献的收益率,其等于t时间计算出的信号强度 乘以组合目标波动 与品种i在过去m天的波动 ,再乘以资产i在t+1时间的收益率 。

这样,使用每个Batch的数据前向计算以上损失函数的值,再进行Backpropagation更新模型的参数,那什么时候模型停止训练呢?

这里就需要引入验证集,每次训练时,作者使用90%的数据进行训练,10%的数据用作验证集,只要满足以下任意条件,模型就停止训练:

  • 达到最大的训练epoch,比如100个epoch;
  • 没有达到最大的训练epoch,但在验证集上已经连续25个epoch,验证集的loss没有降低,此时就提前终止训练。

2、每个Batch的数据怎么准备?

根据上述损失函数的定义,每次前向计算的损失为过去N天,多品种组合表现的夏普比率的负数,所以每个Batch的数据需要支持计算出每个资产在过去N天每天的信号强度 。基于这样的需求,每个Batch的数据就不能随机抽取。以下是公众号根据本文的损失函数构造,推测的Batch数据的格式(作者在原文钟并没有提到这些细节),其中假设使用的模型为LSTM:

  • 每个训练数据样本包括所有品种在t-n到t-(l+n)时间步数的数据,如下图每个虚线方框内所示,其中X为特征数据,y为t-n+1的所有品种的收益率数据。其中l为LSTM模型输入的序列长度。
  • 每个Batch包括t-n到t-1时间的虚线框内的数据。
  • 这样,每个Batch的前向输入就是,所有资产在t-n到t-1每天的信号强度,这样就能计算这段时间(过去n天)组合的夏普比率的负数作为损失函数。

3、原模型的其他细节

弄清楚以上细节,对于理解本篇文章至关重要,文章具体使用的特征如下:

  • 标准化后的不同时间段的每个品种的收益率,标准化的做法为区间收益率除以标准差;
  • MACD指标,具体可参考原文。

原文的模型使用的是递推式滚动训练,每五年训练一次,其中前4年作为训练数据,最后1年作为验证数据。并在接下来的五年使用前五年数据训练的模型。

最终在近20年历史数据测试中,模型取得了将近3的夏普比率,具体测试结果参考原文。

趋势跟踪策略最大的问题是对于忽然转向的迟钝性,传统的量化CTA会使用多周期的方式捕捉不同时间区间的趋势收益。最近作者又在《Enhancing Time Series Momentum Strategies Using Deep Neural Networks》的基础上,针对趋势迟钝性的问题,发表了新的论文《Slow Momentum with Fast Reversion: A Trading Strategy Using Deep Learning and Changepoint Detection》。在这篇文章中,作者结合了基于高斯过程的变点检测方法(CPD),计算出每个时间点变点的得分,用于量化当前时间点作为变点的概率,再把这个CPD作为深度学习模型的特征。与原始未加入CPD的DMN模型相比,加入CPD的DMN模型的回测结果显示,最大回撤来的更低,夏普比率更高。

更多的思考

很多时候,损失函数的设计关系到模型训练优化的方向。与常用的MSE、MAE作为损失函数的时间序列预测相比,量化应用场景中,我们更应该深入这些细节。这样才能更大的发挥算法的价值。本篇文章讨论的是CTA策略的场景,将收益预测与权重预测通过一个模型得到了解决。如果是在截面多因子模型中,可以使用一个模型预测各资产的收益,另一个模型学习组合的权重,而组合权重的损失函数可以设计为夏普比率等风险收益指标。

这正如我们在前两天关于Two Sigma的文章中提到的,深度学习模型是在传统量化框架下,深入结果框架各个细节的有利提升工具。

有思考就有进步!下载地址见参考文献。

参考文献

B. Lim, S. Zohren, and S. Roberts, “Enhancing time-series momentum strategies using deep neural networks,” The Journal of Financial Data Science, vol. 1, no. 4, pp. 19–38, 2019. https://arxiv.org/pdf/2105.13727.pdf.

Lim, B., Zohren, S., & Roberts, S. (2020, September 27). Enhancing time series momentum strategies using Deep Neural Networks. arXiv.org. Retrieved November 29, 2021, from https://arxiv.org/abs/1904.04912.

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Winton CIO:关于CTA策略的深入的探讨
量化投资与机器学习微信公众号,是业内垂直于量化投资、对冲基金、Fintech、人工智能、大数据等领域的主流自媒体。公众号拥有来自公募、私募、券商、期货、银行、保险、高校等行业30W+关注者,曾荣获AMMA优秀品牌力、优秀洞察力大奖,连续4年被腾讯云+社区评选为“年度最佳作者”。
量化投资与机器学习微信公众号
2023/11/02
4230
Winton CIO:关于CTA策略的深入的探讨
基于决策树的动态时序动量策略
时序动量策略的基础是假设过去的收益对未来的收益有一定程度的预测能力。通常,一个策略是通过在上涨阶段建立多头头寸,在下跌阶段建立空头头寸来实现的。学术文献文献表明,最近过去的资产收益与未来收益正相关。时序动量策略的有效性在多个时期、许多市场和许多资产中得到了证明。例如,Moskowitz, Ooi和Pedersen(2012)发现,在测试了1到12个月的回溯窗口,发现12个月的时序动量策略具有可观的盈利能力。其本质上说明基于较慢信号的策略往往比基于较快信号的策略更能捕捉长期趋势,表现出更好的风险收益曲线。
量化投资与机器学习微信公众号
2023/07/08
8290
基于决策树的动态时序动量策略
利用深度神经网络增强时间序列动量策略
从今天起,我们每周将为大家解读至少3篇以上的量化学术论文。为大家带来最新的研究成果。
量化投资与机器学习微信公众号
2019/07/17
1.6K0
利用深度神经网络增强时间序列动量策略
回报率850%? 这个用Python优化的比特币交易机器人简直太烧脑了...
在上一篇文章中,我们使用深度强化学习创建了一个可以赚钱的比特币自动交易智能体。虽然这个智能体能够做到自动交易比特币获得收益,但它的收益率并没有让人眼前一亮,今天我们会大幅度改进这个比特币交易智能体,从而提高它的收益率。
区块链大本营
2019/06/20
1.2K0
回报率850%? 这个用Python优化的比特币交易机器人简直太烧脑了...
Quant 4.0:你的量化研究处于哪个时代?
在IDEA最新研究报告中首次提出了Quant 4.0的研究流程,在深度学习不断融入量化研究的时代,非常值得处于量化行业的我们仔细研读。
量化投资与机器学习微信公众号
2023/06/07
1.1K0
Quant 4.0:你的量化研究处于哪个时代?
Pylon框架:在PyTorch中实现带约束的损失函数
Pylon是一个基于PyTorch的神经符号学习框架,旨在帮助深度学习模型整合程序性约束或声明性知识。用户可以通过编写PyTorch函数来指定约束,Pylon将这些函数编译成可微分的损失函数,使得模型在训练过程中不仅拟合数据,还能满足特定的约束条件。Pylon提供了精确和近似的编译器,使用模糊逻辑、抽样方法和逻辑电路等技术来高效计算损失,支持复杂模型和约束。它的核心优势在于易于集成,只需少量代码即可将现有深度学习代码扩展为支持约束学习,显著提升了模型的性能和学习效率。
量化投资与机器学习微信公众号
2024/04/25
6070
Pylon框架:在PyTorch中实现带约束的损失函数
量化交易
绩效指标也被称为风险指标,它们也是量化投资的基石,正因为有这些指标我们可以横向对比不同模型。
爱编程的小明
2022/09/06
2.3K0
量化交易
Transformer在量化投资中的应用
深度学习的发展为我们创建下一代时间序列预测模型提供了强大的工具。深度人工神经网络,作为一种完全以数据驱动的方式学习时间动态的方法,特别适合寻找输入和输出之间复杂的非线性关系的挑战。最初,循环神经网络及其扩展的LSTM网络被设计用于处理时间序列中的顺序信息。然后,卷积神经网络被用于预测时间序列,因为它们在图像分析任务中的成功。
量化投资与机器学习微信公众号
2023/04/20
2.5K0
Transformer在量化投资中的应用
机器学习+T0双核驱动:夏普高达4.5的中高频交易策略!
机器学习是为了预测某个值而利用算法来学习数据中模式的科学。利用足够的数据,在所有输入变量与待预测值之间建立映射。在有限的输入变量的情况下,系统更容易预测一个新的值。这种方法不同于传统,传统方法是基于先前设臵的规则开发的,而机器学习模型是使用数据驱动的。
量化投资与机器学习微信公众号
2020/01/16
3.1K0
机器学习+T0双核驱动:夏普高达4.5的中高频交易策略!
Man Group最新:动态风险管理在股票投资组合中的应用
今天公众号为大家分享一篇Man Group最新的研究文章,干货满满!重点在第四节~
量化投资与机器学习微信公众号
2020/12/08
1.2K0
Man Group最新:动态风险管理在股票投资组合中的应用
[量化]夏普比率3.27,通过DQN算法进行上证指数择时强化学习策略
本文完整展示了一个将强化学习用于股票投资的案例,呈现了大量算法细节和实验分析,非常值得收藏深研。
核桃量化
2023/01/18
1.7K0
QuantML | 使用财务情绪与量价数据预测稳健的投资组合(附代码)
投资组合管理是最大化投资组合回报的过程。投资组合经理根据他们对风险的偏好,代表客户做出交易决策。他们在决定他们应该在投资组合中持有哪些股票以平衡风险和获取最大回报之前,分析不同的资产的优势和劣势。这使得投资组合管理变得困难。我们的目标是通过使用预测建模和深度学习技术使这个过程更好,根据下个季度的预测股价生成稳定的投资组合。
量化投资与机器学习微信公众号
2019/06/20
2.2K0
基于强化学习的自动交易系统研究与发展综述
Moody 等人将循环强化学习算法模型(Recurrent Reinforcement Learning,RRL)应用在单一股票和资产投资组合等领域,测试了日内外汇市场(USD / GBP)、标准普尔500(S&P 500 Index)、美国短期国债等金融资产。以收益率为输入,微分夏普比率为目标函数,在交易成本为5‰的情况下进行实验。RRL 策略获得的回报超过Q 学习(Q-Learning)策略和买入持有策略,并在交易次数上明显小于Q 学习策略。
深度强化学习实验室
2019/12/10
1.7K0
基于强化学习的自动交易系统研究与发展综述
拓端tecdat|Python蒙特卡罗(Monte Carlo)模拟计算投资组合的风险价值(VaR)
如何使用Python通过蒙特卡洛模拟自动计算风险值(VaR)来管理投资组合或股票的金融风险。
拓端
2021/06/29
1.5K0
蒙特卡罗Monte Carlo模拟计算投资组合的风险价值(VaR)
如何使用Python通过蒙特卡洛模拟自动计算风险值(VaR)来管理投资组合或股票的金融风险。
拓端
2022/03/05
4.2K0
蒙特卡罗Monte Carlo模拟计算投资组合的风险价值(VaR)
因子建模(附代码)
用于分析投资组合风险的最受欢迎的模型是因子模型,因为股票具有共同移动的趋势。证券的主要组成部分经常会解释很大一部分差异。由于我们主要关注构成投资组合的多种资产,因此需要对此进行说明。有些问题可能是为什么低市净率的股票要比具有较高市净率的股票好吗?在此,比率的“价格”部分仅是股价(每股),比率的“帐面”部分是“股东权益” /“流通股”,这是公司资产负债表上的项目。
量化投资与机器学习微信公众号
2020/02/20
1.7K0
因子建模(附代码)
用于金融时序预测的神经网络:可改善经典的移动平均线策略
近日,Medium 上出现了一篇题为《Neural networks for algorithmic trading: enhancing classic strategies》的文章,作者 Alex
用户1332428
2018/03/09
1.1K0
用于金融时序预测的神经网络:可改善经典的移动平均线策略
年化收益率近65%,同济本科生用DRL算法训练了一个股票交易智能体
在该项目中,研究者把股票市场的历史价格走势看作一个复杂的不完全信息环境,而智能体需要在这个环境中最大化回报和最小化风险。相比于其他传统机器学习算法,深度强化学习的优势在于对股票交易任务进行马尔可夫决策过程建模,没有将识别市场状况和交易策略执行分开,更符合股票交易的特点。尽管基于深度强化学习的量化策略研究仍处于早期探索阶段,部分算法已经能够在特定的交易任务中展现出良好的收益。
机器之心
2022/02/23
1.3K1
年化收益率近65%,同济本科生用DRL算法训练了一个股票交易智能体
【视频】风险价值VaR原理与Python蒙特卡罗Monte Carlo模拟计算投资组合实例|附代码数据
风险价值 (VaR) 是一种统计数据,用于量化公司、投资组合在特定时间范围内可能发生的财务损失程度
拓端
2023/02/08
1.2K0
量化投资:深入浅出量化对冲Alpha基金的操作
1.量化 对于一般投资者,甚至是部分金融从业者来说,量化投资都是一门高大上的技术,充斥着模型代码和算法假设,门槛非常高。其实,生活中的量化思想无处不在。 例如,某魔都金融民工,每日上班路线是这样的:乘地铁或者公交至陆家嘴,随后步行或者乘华宝兴业免费接驳车至公司楼下。哪条路线最近呢? 此人先罗列了所有可行的路线,随后花了一个月时间,逐条路线进行多次试验,最终成功找出不出意外情况下最近的线路,完美!这就是最简单的量化思想,利用大量数据,找出大概率的最优策略,并照此执行。 海外的量化投资发展已经超过三十年
小莹莹
2018/04/20
1.3K0
量化投资:深入浅出量化对冲Alpha基金的操作
推荐阅读
相关推荐
Winton CIO:关于CTA策略的深入的探讨
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文