1 StockFormer

1
2
3
4
5
6
7
中文名称:StockFormer: 混合交易机与预测编码
英文名称:StockFormer: Learning Hybrid Trading Machines with Predictive Coding
作者:Siyu Gao, Yunbo Wang∗, and Xiaokang Yang
机构:MoE Key Lab of Artificial Intelligence, AI Institute, Shanghai Jiao Tong University
发表时间:IJCAI-23
代码:https://github.com/gsyyysg/StockFormer
地址:https://www.ijcai.org/proceedings/2023/0530.pdf

2 读后感

这里采用了预测编码模型与强化学习的结合方法。三个独立的预测编码模型分别用于预测短期(1 天)和长期(5 天)的回报率,以及各股票间的动态相关性。在训练预测编码模型的过程中,可获取有价值的潜在状态,并将这些状态组合成一个状态空间,用于训练强化学习模型。

论文带来一些启发:可以将复杂的问题分解为多个简单的部分进行求解,股票数据的特性使得我们可以获得中间过程的目标数据,用于分别训练模型。此外,采用强化学习的方法也消化了股票交易的复杂性,尤其适用于状态空间和动作空间不断变化的情况。

另外,作者开源的代码逻辑清晰,长短适中,也是股票 + 强化学习算法很好的入门工具。

3 摘要

  • 目的:传统的基于强化学习的金融解决方案直接在嘈杂的市场数据上优化交易策略,而没有明确考虑不同投资资产的未来趋势和相关性
  • 方法:提出了一个混合交易机器,它整合了预测编码和强化学习的优势。该模型通过三个修改过的 Transformer 分支来提取长期和短期未来动态以及资产关系的有效潜在状态
  • 效果:在三个公开的金融数据集上,StockFormer 在投资组合回报和夏普比率方面显著优于现有方法。

4 方法

  • 预测编码:通过自监督学习方式训练三个 Transformer-like 网络分支,分别学习关系、长期和短期隐藏表示(图中灰色和橙色模块)。
  • 策略优化:在第二阶段,StockFormer 将三种类型的潜在表示集成到一个统一的状态空间中,并通过 actor-critic 方法学习交易策略(图中绿色模块)。

RL 通过与环境的交互来优化决策,在给定的状态下选择最佳的行动(买入、卖出或持有),以最大化长期回报。

5 实验

实验数据集使用了:使用 CSI-300(沪深 300:China Securities Index 300)、NASDAQ-100(美国)和加密货币市场的数据集。请注意 2019-2021 年是个牛市阶段,所以模型效果可能好于一般情况。

6 代码分析

  • 作者已将算法在 github 上开源,链接如下:https://github.com/gsyyysg/StockFormer。
  • 整个项目代码由约 12000 行 Python 组成,其中包含了强化学习工具包 stable-baseline3 的代码,若剔除此部分,剩余约 4000 行代码。
  • 项目中的数据涵盖了从 2010 年到 2022 年,总共 88 支 A 股股票的数据。
  • 项目中使用开源项目 yfinance(YahooFinance)下载股票数据,支持 A 股数据下载。
  • 项目中包含了四个模型的训练代码,对应的入口文件分别是 train_xx.py。