【重磅推荐】量化金融自动交易的深度强化学习库。哥大开源“FinRL”:

2021 年 3 月 27 日 专知

深度强化学习实验室

官网 :http://www.neurondance.com/
论坛 http://deeprl.neurondance.com/
编辑:DeepRL


一、关于FinRL

目前,深度强化学习(DRL)技术在游戏等领域已经取得了巨大的成功,同时在量化投资中的也取得了突破性进展,为了训练一个实用的DRL 交易agent,决定在哪里交易,以什么价格交易以及交易的数量,这是一个具有挑战性的问题,那么强化学习到底如何与量化交易进行结合呢?下图是一张强化学习在量化交易中的建模图:

市面上有很多研究机构和高校正在研究强化学习技术解决量化交易问题,其中比较知名的有“ FinRL ”,它是一个解决量化交易的开放源代码库,可为从业人员提供流水线式的策略开发的统一框架。
     我们知道在强化学习中,智能体通过试错方式与环境进行持续交互学习,以取得最大累计回报。很荣幸, FinRL (有效地实现交易自动化)提供了有关定量金融中的深度强化学习的教育资源,为各种市场、基准财务任务(投资组合分配,加密货币交易,高频交易),实时交易等提供了统一的机器学习框架,下面是两篇FinRL团队已发表的相关论文:

那么FinRL库是怎么来的?有哪些内容组成,包含哪些模块呢?

这还得从强化学习的发展说起,下图是该团队汇总的强化学习到FinRL的发展过程,其中FinRL中包含了很多现有的强化学习算法的描述和实现。


一方面 ,FinRL库可帮助初学者了解量化金融并制定自己的股票交易策略。其允许用户简化自己的开发并轻松地与现有方案进行比较。在FinRL中,虚拟环境配置有股票市场数据集,智能体利用神经网络进行训练,并通过股票回测验证算法性能。此外,它包含了重要的市场摩擦,例如交易成本,市场流动性和投资者的风险规避程度。

另外一方面 , FinRL具有完整性,动手指南和可重复性的特点,特别适合初学者:
  • 在多个时间粒度级别上,FinRL模拟了各个股票市场的交易环境,包括NASDAQ-100,DJIA,S&P 500,HSI,SSE 50,和CSI 300。
  • FinRL采用模块化结构的分层架构。提供了自己开发的轻量级的DRL算法库ElegantRL( https://github.com/AI4Finance-LLC/ElegantRL ),其中包含DDPG,TD3, SAC, PPO(GAE),DQN,DoubleDQN, DuelingDQN,  D3QN,并支持用户自定义算法。
  • 高度可扩展,FinRL保留了一套完整的用户导入界面。


最后FinRL的成功得益于对环境的定义, FinRL量化交易环境中:状态空间、动作空间和奖励函数的定义。

我们知道解决一个问题最难的部分是建模部分,强化学习整体由环境、智能体和奖励函数三部分组成,那么对于量化交易来说,环境,智能体算法,奖励分别对应什么呢,下图对FinRL-Gym等环境,状态,动作和奖励进行定义和阐述。


了解了上面FinRL的组成部分,下面我们解释一下FinRL的工作流程。


练-验证-测试(如下图所示)

二、整体结构图

前文解释了FinRL的组成部分,状态定义等内容,下图为大家呈现FinRL框架的实现整体包含了环境(FinRL-Gym)、算法和应用三部分,如下图所示:


在了解FinlRL组成框架的基础上,下面我们对FinRL核心部件ElegantRL进行介绍。


三、核心部件简介:ElegantRL

从第二部分的整体框架图中,我们看到了算法部分由ElegantRL组成,其中它包含了目前存在的绝多数算法demo,但ElegantRL有其自身的优势,具体如下:

图中Agent.py中的智能体使用Net.py中的网络,并且通过与Env.py中的环境进行交互在Run.py中进行了训练。

目前ElegantRL已经包含了常见的各类强化学习算法,最关键的是它相比于其他开源框架,具有以下方面的优势:

  • 轻量级:核心代码少于1,000行。

  • 高效:性能可与Ray RLlib媲美。

  • 稳定:比稳定基准更稳定,支持最新的DRL算法,包括离散算法和连续算法。


四、FinRL贡献

一个好的框架一定满足简单易用,高效稳定可拓展的特性,那么FinRL框架有哪些贡献或者说优点呢?如下图所示:

五、视频详解

本视频是论文、开源框架作者对FinRL的一个解读,B站链接见视频下方。

https://www.bilibili.com/video/bv1VZ4y1P7Dy


以上是对FinRL的原理,整体构架以及核心模块的介绍,但泰山还得一步一步爬,很多同学最担心的代码实现我们还是双手奉上。


代码整体包含两部分:

  • 第一部分(六),直接采用克隆仓库,运行代码。

  • 第二部分(七),通过jupyter一步步实现强化学习量化交易过程,值得每一位学习者认真学习(强烈推荐)。


、安装使用(Installation)

bin操作

$ sudo chmod -R 777 docker/bin

# build the container!
$ ./docker/bin/build_container.sh

# start notebook on port 8887!
$ ./docker/bin/start_notebook.sh

手动操作

$ docker build -f docker/Dockerfile -t finrl docker/
Start the container:

$ docker run -it --rm -v ${PWD}:/home -p 8888:8888 finrl

克隆仓库及安装

git clone https://github.com/AI4Finance-LLC/FinRL-Library.git
Install the unstable development version of FinRL:

pip install git+https://github.com/AI4Finance-LLC/FinRL-Library.gitev libgl1-mesa-g

导入代码

import pkg_resources
import pip
installedPackages = {pkg.key for pkg in pkg_resources.working_set}
required = {'yfinance''pandas''matplotlib''stockstats','stable-baselines','gym','tensorflow'}
missing = required - installedPackages
if missing:
    !pip install yfinance
    !pip install pandas
    !pip install matplotlib
    !pip install stockstats
    !pip install gym
    !pip install stable-baselines[mpi]
    !pip install tensorflow==1.15.4
# import packages
import pandas as pd
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
matplotlib.use('Agg')
import datetime
from finrl.config import config
from finrl.marketdata.yahoodownloader import YahooDownloader
from finrl.preprocessing.preprocessors import FeatureEngineer
from finrl.preprocessing.data import data_split
from finrl.env.environment import EnvSetup
from finrl.env.EnvMultipleStock_train import StockEnvTrain
from finrl.env.EnvMultipleStock_trade import StockEnvTrade
from finrl.model.models import DRLAgent
from finrl.trade.backtest import BackTestStats, BaselineStats, BackTestPlot

实验结果如下:



七、Jupyter论文复现,九步复现强化学习股票交易

(注:github代码见第九步后面)

7.1 Jupyter安装方法及过程

具体参考:https://www.jianshu.com/p/91365f343585

7.2 复现“Deep Reinforcement Learning for Stock Trading from Scratch: Multiple Stock Trading Using Ensemble Strategy

第一步:安装依赖包

第二步:导入包

第三步:创建文件目录

第四步:下载数据

第五步:处理数据

第六步:设计强化学习环境

第七步:执行强化学习算法

第八步:测试算法策略

第九步:实验绘图


完整ipynb代码地址:

1.https://github.com/AI4Finance-LLC/FinRL-Library/blob/master/FinRL_stock_trading_NeurIPS_2018.ipynb



相关资料链接

Arxiv: https://arxiv.org/pdf/2011.09607v1.pdf

Github: https://github.com/AI4Finance-LLC/FinRL-Library

视频:https://www.youtube.com/watch?v=ZSGJjtM-5jA

B站视频:https://www.bilibili.com/video/bv1VZ4y1P7Dy

论文1: https://arxiv.org/abs/1811.07522

论文2. https://arxiv.org/abs/2011.09607


专知便捷查看

便捷下载,请关注专知公众号(点击上方蓝色专知关注)

  • 后台回复“量化金融” 就可以获取【重磅推荐】量化金融自动交易的深度强化学习库。哥大开源“FinRL”》专知下载链接

专知,专业可信的人工智能知识分发 ,让认知协作更快更好!欢迎注册登录专知www.zhuanzhi.ai,获取5000+AI主题干货知识资料!
欢迎微信扫一扫加入专知人工智能知识星球群,获取最新AI专业干货知识教程资料和与专家交流咨询
点击“ 阅读原文 ”,了解使用 专知 ,查看获取5000+AI主题知识资源
登录查看更多
2

相关内容

专知会员服务
25+阅读 · 2021年6月9日
专知会员服务
137+阅读 · 2020年12月20日
专知会员服务
110+阅读 · 2020年12月17日
【CORL2020最佳系统论文奖】可扩展多智能体强化学习学校
专知会员服务
17+阅读 · 2020年11月30日
专知会员服务
54+阅读 · 2020年7月4日
最新《经济学中的强化学习》2020大综述,42页pdf128篇文献
【综述】金融领域中的深度学习,附52页论文下载
专知会员服务
161+阅读 · 2020年2月27日
【强化学习】深度强化学习初学者指南
专知会员服务
178+阅读 · 2019年12月14日
量化金融强化学习论文集合
专知
13+阅读 · 2019年12月18日
强化学习精品书籍
平均机器
24+阅读 · 2019年1月2日
大讲堂 | 深度强化学习在电商推荐中的应用
AI研习社
9+阅读 · 2018年11月8日
OpenAI 发布完整版游戏强化学习研究平台 Gym Retro
OpenAI强化学习实战
炼数成金订阅号
9+阅读 · 2018年5月14日
基于强化学习的量化交易框架
机器学习研究会
28+阅读 · 2018年2月22日
VIP会员
相关VIP内容
专知会员服务
25+阅读 · 2021年6月9日
专知会员服务
137+阅读 · 2020年12月20日
专知会员服务
110+阅读 · 2020年12月17日
【CORL2020最佳系统论文奖】可扩展多智能体强化学习学校
专知会员服务
17+阅读 · 2020年11月30日
专知会员服务
54+阅读 · 2020年7月4日
最新《经济学中的强化学习》2020大综述,42页pdf128篇文献
【综述】金融领域中的深度学习,附52页论文下载
专知会员服务
161+阅读 · 2020年2月27日
【强化学习】深度强化学习初学者指南
专知会员服务
178+阅读 · 2019年12月14日
相关资讯
量化金融强化学习论文集合
专知
13+阅读 · 2019年12月18日
强化学习精品书籍
平均机器
24+阅读 · 2019年1月2日
大讲堂 | 深度强化学习在电商推荐中的应用
AI研习社
9+阅读 · 2018年11月8日
OpenAI 发布完整版游戏强化学习研究平台 Gym Retro
OpenAI强化学习实战
炼数成金订阅号
9+阅读 · 2018年5月14日
基于强化学习的量化交易框架
机器学习研究会
28+阅读 · 2018年2月22日
Top
微信扫码咨询专知VIP会员