深度强化学习实验室
一、关于FinRL
那么FinRL库是怎么来的?有哪些内容组成,包含哪些模块呢?
这还得从强化学习的发展说起,下图是该团队汇总的强化学习到FinRL的发展过程,其中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”》专知下载链接