同济大学用深度强化学习算法训练了一个“股票交易智能体”,年化收益率近达65%

2022 年 1 月 23 日 深度强化学习实验室

深度强化学习实验室

官网 :http://www.neurondance.com/
论坛 http://deeprl.neurondance.com/
来源:机器之心
排版:OpenDeepRL
利用算法进行股票量化交易是当今金融市场的一个重要趋势。在国际象棋和围棋等诸多复杂的游戏中,深度强化学习(DRL)智能体都取得了惊人的成绩。深度强化学习的理论同样适用于股票市场的量化决策。本文介绍了同济大学计算机科学与技术系的上海市大学生创新创业训练计划优秀项目:「基于深度强化学习的金融量化策略研究」,解读了如何训练一个 A 股市场的深度强化学习模型,以及回测的绩效表现。
在该项目中, 研究者把股票市场的历史价格走势看作一个复杂的不完全信息环境,而智能体需要在这个环境中最大化回报和最小化风险 。相比于其他传统机器学习算法,深度强化学习的优势在于对股票交易任务进行马尔可夫决策过程建模,没有将识别市场状况和交易策略执行分开,更符合股票交易的特点。尽管基于深度强化学习的量化策略研究仍处于早期探索阶段,部分算法已经能够在特定的交易任务中展现出良好的收益。

实验表明,深度强化学习算法中 DDPG(Deep Deterministic Policy Gradient)算法已能在复杂多变的股票市场取得良好的效果。

股票交易问题建模

考虑到交易市场的随机性和互动性,研究者将股票交易过程建模为如下图所示的马尔可夫决策过程(Markov Decision process, MDP),具体如下:

  • 状态 s = [p, h, b],其中 p, h 均为 D 维向量,分别代表股票价格和持股量,b 为当前余额(D 为在市场上考虑的股票数量)。

  • 动作 a: D 维向量,代表对股票的操作。每只股票的可操作行为包括卖出、买入和持有,分别导致持股量 h 的减少、增加和不变。

  • 奖励代表在状态 s 时执行动作 a 后达到新的状态投资组合价值的变化。投资组合价值是所有持有的股票价值和余额 b 的总和。

  • 策略: 代表股票在状态 s 的交易策略,它本质上是动作 a 在状态 s 的概率分布。

  • 状态动作价值函数: 代表在状态 s 执行动作 a,并在后续状态以策略进行交易所能获得的期望收益。


图 1:资产状态变化图[1]

股票市场的动态变化如下:在 t 时刻,智能体执行一个动作 a,可以是卖出、买入和持有,分别导致持股量 h 的减少、增加和不变。而后根据持股量、余额的变化和股票价格的更新,重新计算股票价值 余额 b 的总和,即可得到 t+1 时刻新的投资组合价值。


深度强化学习算法介绍

DDPG 是确定性策略梯度 (Deterministic Policy Gradient, DPG) 算法的改进版本 。DPG 结合了 Q-learning 和策略梯度这两种方法。与 DPG 相比,DDPG 采用神经网络作为函数逼近器。

如下图所示,DDPG 采用 Actor-Critic 方法,它有一个策略网络(Actor),一个价值网络(Critic)。策略网络控制智能体的行动,它基于状态 s 做出动作 a。价值网络不控制智能体,只是基于状态 s 给动作 a 打分,从而指导策略网络做出改进。

图 2:DDPG 算法网络结构图[1]

与 DQN 类似,DDPG 使用经验回放缓冲区(experience replay buffer) R 来存储收集到的经验和更新模型参数,可以有效降低采样样本之间的相关性。为了收集经验,每个时刻,DDPG 智能体在状态下采取动作 ,并根据下一状态 得到奖励,由此得到经验四元组 并存入 R 中。 随后,从 R 中随机抽出 N 条经验,计算 TD target 并更新价值网络参数,从而使得价值网络对状态动作价值函数 的估计更准确。 然后根据价值网络计算策略梯度并更新策略网络的参数。 下图对算法的细节做了详细的说明。

图 3:DDPG 算法流程图[1]

用 FinRL 框架搭建中国 A 股交易智能体

FinRL 是第一个展现出深度强化学习应用在量化金融中巨大潜力的 Python 开源框架 。FinRL 提供了通用的构建模块,使策略制定者能够(1)将股票市场数据集配置为虚拟环境(2)训练深度神经网络作为智能体(3)通过回测分析智能体的交易表现。

首先,下载、安装并导入相关功能包,并通过 TushareDownloader 下载股票市场数据集。然后进行数据预处理,主要是根据原始股票数据计算各种金融技术性指标,这一步可以使用 FinRL 提供的 FeatureEngineer 类。

之后便是强化学习环境的定义,包括数据集的划分、状态空间大小的计算以及初始金额、交易成本等环境参数的设定。这一步会分别定义训练和交易两个环境,需要使用 FinRL 提供的 StockTradingEnv 类。

环境搭建完成后,用搭建好的环境初始化 DRLAgent 类,得到一个智能体实例,并根据需要赋予智能体实例深度强化学习算法。目前 FinRL 框架中包含了 DDPG、A2C、PPO 等绝大多数主流深度强化学习算法,同时也支持自定义算法。随后设定学习率等与模型训练相关的超参数,即可在训练环境中开始训练。

最后,让训练好的 DRLAgent 在交易环境中交易,得到各时间步下的投资组合价值和智能体的动作,再应用 FinRL 中集成的 pyfolio 自动化回测工具就能得到年化收益率、夏普指数等一系列回测指标的数值和曲线图。

实验及结果

同济大学的本科生团队正致力于基于深度强化学习的量化金融策略研究,并已经使用 DDPG 算法在我国 A 股的历史数据上取得了不错的效果。实验代码已在 FinRL-Meta 开源。

项目地址:https://github.com/AI4Finance-Foundation/FinRL-Meta/blob/master/Demo_China_A_share_market.ipynb

图 4:本课题中期结果海报展示。

该研究选择了上证 50 中的 15 支作为交易股票,并使用 2015 年 1 月 1 日至 2021 年 1 月 3 日的历史日价格来训练智能体并测试其表现 。数据集通过开源的 Python 财经数据接口包 Tushare 获得。

实验包括三个阶段,即训练、验证和交易。在训练阶段,首先使用 DDPG 算法生成一个训练有素的交易智能体。然后在验证阶段调整关键参数,如 learning rate 和 episode 的大小等。最后在交易阶段,对训练得到的智能体的盈利能力进行评估。因此,整个数据集被分为两个部分,如下图所示。训练使用 2015 年 1 月 1 日至 2019 年 8 月 1 日的数据,测试使用 2019 年 8 月 1 日至 2021 年 1 月 3 日的数据。

图 5:数据集划分时间轴

该研究使用三个指标来评估得到的结果: 最终投资组合价值、年化收益率和夏普比率 。最终投资组合价值反映的是交易阶段结束时的投资组合价值。年化收益率是指投资组合每年的直接收益。夏普比率将收益和风险结合在一起给出的评价。

结果显示, 智能体在初始资金为 1000000 时,经过一年半的交易,最终投资组合价值为 1978179,年化收益率为 64.35%,夏普比率达 1.99 。下图为累积收益率随时间变化的曲线。

图 6:验证集累积收益率变化图

(本文关于问题建模与算法介绍的内容参考[2])

参考文献:

[1] Deep Reinforcement Learning in Quantitative Algorithmic Trading: A Review:https://arxiv.org/abs/2106.00123
[2] Practical Deep Reinforcement Learning Approach for Stock Trading:https://arxiv.org/pdf/1811.07522.pdf
登录查看更多
1

相关内容

深度强化学习 (DRL) 是一种使用深度学习技术扩展传统强化学习方法的一种机器学习方法。 传统强化学习方法的主要任务是使得主体根据从环境中获得的奖赏能够学习到最大化奖赏的行为。然而,传统无模型强化学习方法需要使用函数逼近技术使得主体能够学习出值函数或者策略。在这种情况下,深度学习强大的函数逼近能力自然成为了替代人工指定特征的最好手段并为性能更好的端到端学习的实现提供了可能。
专知会员服务
86+阅读 · 2021年4月12日
专知会员服务
100+阅读 · 2021年1月1日
最新《深度强化学习中的迁移学习》综述论文
专知会员服务
153+阅读 · 2020年9月20日
最新《经济学中的强化学习》2020大综述,42页pdf128篇文献
深度强化学习策略梯度教程,53页ppt
专知会员服务
176+阅读 · 2020年2月1日
2019必读的十大深度强化学习论文
专知会员服务
57+阅读 · 2020年1月16日
【强化学习】深度强化学习初学者指南
专知会员服务
178+阅读 · 2019年12月14日
深入理解强化学习,看这篇就够了
PaperWeekly
5+阅读 · 2021年11月28日
17种深度强化学习算法用Pytorch实现
新智元
30+阅读 · 2019年9月16日
使用强化学习训练机械臂完成人类任务
AI研习社
13+阅读 · 2019年3月23日
深度强化学习入门,这一篇就够了!
机器学习算法与Python学习
26+阅读 · 2018年8月17日
【团队新作】深度强化学习进展: 从AlphaGo到AlphaGo Zero
中国科学院自动化研究所
16+阅读 · 2018年1月31日
入门 | 从Q学习到DDPG,一文简述多种强化学习算法
【深度强化学习】深度强化学习揭秘
产业智能官
20+阅读 · 2017年11月13日
强化学习族谱
CreateAMind
26+阅读 · 2017年8月2日
国家自然科学基金
19+阅读 · 2015年12月31日
国家自然科学基金
1+阅读 · 2014年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
1+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
1+阅读 · 2012年12月31日
国家自然科学基金
4+阅读 · 2012年12月31日
国家自然科学基金
1+阅读 · 2009年12月31日
国家自然科学基金
2+阅读 · 2009年12月31日
Arxiv
64+阅读 · 2022年4月13日
Arxiv
38+阅读 · 2021年8月31日
Arxiv
11+阅读 · 2018年4月25日
VIP会员
相关VIP内容
专知会员服务
86+阅读 · 2021年4月12日
专知会员服务
100+阅读 · 2021年1月1日
最新《深度强化学习中的迁移学习》综述论文
专知会员服务
153+阅读 · 2020年9月20日
最新《经济学中的强化学习》2020大综述,42页pdf128篇文献
深度强化学习策略梯度教程,53页ppt
专知会员服务
176+阅读 · 2020年2月1日
2019必读的十大深度强化学习论文
专知会员服务
57+阅读 · 2020年1月16日
【强化学习】深度强化学习初学者指南
专知会员服务
178+阅读 · 2019年12月14日
相关资讯
深入理解强化学习,看这篇就够了
PaperWeekly
5+阅读 · 2021年11月28日
17种深度强化学习算法用Pytorch实现
新智元
30+阅读 · 2019年9月16日
使用强化学习训练机械臂完成人类任务
AI研习社
13+阅读 · 2019年3月23日
深度强化学习入门,这一篇就够了!
机器学习算法与Python学习
26+阅读 · 2018年8月17日
【团队新作】深度强化学习进展: 从AlphaGo到AlphaGo Zero
中国科学院自动化研究所
16+阅读 · 2018年1月31日
入门 | 从Q学习到DDPG,一文简述多种强化学习算法
【深度强化学习】深度强化学习揭秘
产业智能官
20+阅读 · 2017年11月13日
强化学习族谱
CreateAMind
26+阅读 · 2017年8月2日
相关基金
国家自然科学基金
19+阅读 · 2015年12月31日
国家自然科学基金
1+阅读 · 2014年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
1+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
1+阅读 · 2012年12月31日
国家自然科学基金
4+阅读 · 2012年12月31日
国家自然科学基金
1+阅读 · 2009年12月31日
国家自然科学基金
2+阅读 · 2009年12月31日
Top
微信扫码咨询专知VIP会员