使用动量变换器进行交易
关于
本代码accompanies论文《使用动量变换器进行交易:一种智能且可解释的架构》,并额外提供了论文《使用深度学习和变点检测的慢动量快速反转交易策略》的实现。
使用代码
- 创建一个Nasdaq Data Link账户以访问免费的Quandl数据集。该数据集提供600多个期货的连续合约,基于CME、ICE、LIFFE等原始数据构建。
- 使用以下命令下载Quandl数据:
python -m data.download_quandl_data <<API_KEY>>
- 使用以下命令创建动量变换器输入特征:
python -m examples.create_features_quandl
。在本例中,我们使用100个期货代码,这些代码具有 i)最长的历史 ii)超过90%的交易日有数据 iii)数据至少到2021年12月。 - 可选择运行变点检测模块:
python -m examples.concurent_cpd_quandl <<CPD_WINDOW_LENGTH>>
,例如python -m examples.concurent_cpd_quandl 21
和python -m examples.concurent_cpd_quandl 126
- 在变点检测模块完成后,使用以下命令创建包含CPD模块特征的动量变换器输入特征:
python -m examples.create_features_quandl 21
- 要创建具有多个变点检测回溯窗口的特征文件:在126天LBW变点检测模块完成且21天LBW的特征文件存在后,运行
python -m examples.create_features_quandl 126 21
- 使用
python -m examples.run_dmn_experiment <<EXPERIMENT_NAME>>
运行动量变换器或慢动量快速反转实验之一
使用动量变换器进行交易:一种智能且可解释的架构
深度学习架构,特别是深度动量网络(DMN),被发现是动量和均值回归交易的有效方法。然而,近年来的一些关键挑战包括学习长期依赖关系、考虑扣除交易成本后的回报时性能下降以及适应新的市场环境,特别是在SARS-CoV-2危机期间。注意力机制或基于Transformer的架构是解决此类挑战的方案,因为它们允许网络关注过去的重要时间步和更长期的模式。我们引入了动量变换器,这是一种基于注意力的架构,它优于基准,并且本质上是可解释的,为我们的深度学习交易策略提供了更多见解。我们的模型是基于LSTM的DMN的扩展,通过优化风险调整后的性能指标(如夏普比率)来直接输出头寸规模。我们发现注意力-LSTM混合解码器-只有时间融合变换器(TFT)风格架构是性能最佳的模型。在可解释性方面,我们观察到注意力模式中存在显著的结构,在动量转折点处有显著的重要性峰值。因此,时间序列被分割成不同的机制,模型倾向于关注类似机制中的先前时间步。我们发现变点检测(CPD)是另一种应对机制变化的技术,可以补充多头注意力,特别是当我们在多个时间尺度上运行CPD时。通过添加可解释的变量选择网络,我们观察到CPD如何帮助我们的模型不再主要依赖每日回报数据进行交易。我们注意到,该模型可以智能地在经典策略之间切换和混合 - 根据数据中的模式做出决策。
慢动量快速反转:使用深度学习和变点检测的交易策略
动量策略是另类投资的重要组成部分,也是商品交易顾问(CTA)的核心。然而,这些策略被发现难以适应快速变化的市场条件,例如2020年市场崩溃期间。特别是,在动量转折点之后,趋势从上升(下降)转为下降(上升),时间序列动量(TSMOM)策略容易做出错误的押注。为了改善对机制变化的响应,我们引入了一种新方法,将在线变点检测(CPD)模块插入深度动量网络(DMN)pipeline,该pipeline使用LSTM深度学习架构同时学习趋势估计和头寸规模。此外,我们的模型能够优化平衡以下两点的方式:1)一种利用持续趋势但不对局部价格变动反应过度的慢动量策略,以及2)一种通过快速翻转其头寸然后再次交换回来以利用局部价格变动的快速均值回归策略机制。我们的CPD模块输出变点位置和严重程度评分,允许我们的模型学习以数据驱动的方式响应不同程度的不平衡或更小和更局部的变点。对1995-2020年期间的模型进行回测,添加CPD模块使夏普比率提高了三分之一。该模块在显著非平稳期间特别有益,特别是在最近几年测试(2015-2020年)中,性能提升约为三分之二。这很有趣,因为传统动量策略在此期间表现不佳。
参考文献
请使用以下方式引用我们的论文:
@article{wood2021trading,
title={Trading with the Momentum Transformer: An Intelligent and Interpretable Architecture},
author={Wood, Kieran and Giegerich, Sven and Roberts, Stephen and Zohren, Stefan},
journal={arXiv preprint arXiv:2112.08534},
year={2021}
}
@article {Wood111,
author = {Wood, Kieran and Roberts, Stephen and Zohren, Stefan},
title = {Slow Momentum with Fast Reversion: A Trading Strategy Using Deep Learning and Changepoint Detection},
volume = {4},
number = {1},
pages = {111--129},
year = {2022},
doi = {10.3905/jfds.2021.1.081},
publisher = {Institutional Investor Journals Umbrella},
issn = {2640-3943},
URL = {https://jfds.pm-research.com/content/4/1/111},
eprint = {https://jfds.pm-research.com/content/4/1/111.full.pdf},
journal = {The Journal of Financial Data Science}
}
动量变换器使用了时间融合变换器(TFT)的多个组件。TFT的代码可以在这里找到。
示例结果
将很快提供。
后续工作
我们还有一篇后续论文:《金融时间序列中趋势跟踪策略的少样本学习模式》