> 文档中心 > 量化投资强化学习(RLTrader模块设计)

量化投资强化学习(RLTrader模块设计)


量化投资强化学习(RLTrader模块设计)

文章目录

    • 量化投资强化学习(RLTrader模块设计)
      • 1.RLTrader 的架构设计图
      • 2.目录结构
      • 3.类图
      • 4.环境模块概述
      • 5.代理模块概述
      • 6.强化学习学习者模块概述
      • 7.神经网络模块概述
      • 8.可视化模块概述
      • 9.学习者模块概述
      • 10.执行模块概述

1.RLTrader 的架构设计图

  通过分析股票投资强化学习中必要的参与因素和作用,RLTrader 的架构主要有数据管理模块(data_manage,py)、主模块(main.py)、学习模块(learners.py)、可视化模块(visualizer.py)组成,其中主模块又分为环境模块(environment.py)、代理模块(agent.py)、神经网络模块组成(networks.py)。每个模块都有自己的角色,并且可能与其他模块有关联。

在这里插入图片描述
RLTrader的主要模块

  上图中一个方块代表个python模块。用实线连接的两个模块之间存在关联关系。这里的核心模块是策略学习器模块,它与作为强化学习一部分的环境、代理和神经网络相关。它还使用可视化模块来记录学习进度。

2.目录结构

  这些模块中的每一个都编写为 Python 文件。在 RLTrader 中,一个模块有一个类。项目目录结构如下:

  • data/
  • models/
  • output/
  • agent.py
  • data_manager.py
  • environment.py
  • learners.py
  • main.py
  • networks.py
  • settings.py
  • utils.py
  • visualizer.py

 主要的 Python 模块 agent.py、data_manager.py、environment.py、learners.py、main.py、networks.py、visualizer.py 和 data 包含输入数据和输出文件,还有一个输出文件夹。

 数据文件夹(data/)主要存储股票的实时数据和训练数据。在输出文件夹(output/)中,主要储存的强化学习过程的日志基于每个 epoch 发生的可视化结果。

3.类图

  上面介绍的主模块包含几个类。下图显示了 RLTrader 的主要类之间的关系。
在这里插入图片描述
  ReinforcementLearner 类,learners 模块的基类,利用 Network 类,networks 模块的基类,用于学习价值神经网络和策略神经网络。

4.环境模块概述

  环境模块(environment.py)包含环境类(Environment)。 环境类管理代理将投资的股票的图表数据。 我们在环境类中有完整的图表数据,按照从过去的时间点到最近的时间点按时间顺序提供数据,其目的是让代理回溯过去并从过去的结果中进行学习。

5.代理模块概述

  代理模块(agent.py)有一个代理类(Agent)。代理类充当购买或出售股票的投资者,并具有称为初始资本、现金余额和股票余额(持有股票余下的股数)的状态。您的现金和股票余额的估值总和就是投资组合价值。我们简称这个PV。投资组合是对一组金融资产(如股票、债券、基金和现金)的估值,但这里只考虑股票,因为本文涉及股票投资强化学习。

PV = 股票余额×当前股价+现金余额 

  如果 PV 高于初始资本,您正在盈利,如果它低,您正在亏损。换句话说,投资的目标是增加PV。

  当代理进行购买时,库存余额将增加,现金余额将减少。相反,当代理卖出时,库存余额减少,现金余额增加

6.强化学习学习者模块概述

  强化学习学习器模块(learners.py)包含实现各种强化学习方法的类。DQNLearner、PolicyGradientLearner、ActorCriticLearner、A2CLearner 和 A3CLearner 分别是基于深度 Q -learning、策略梯度、Actor-critic、A2C 和 A3C 强化学习技术的类实现。根据股票投资的特点,每种技术在理论上可能略有不同。

7.神经网络模块概述

  神经网络模块 (networks.py) 包含各种神经网络类。全连接深度神经网络、LSTM 和 CNN 神经网络分别应用于 DNN、LSTMNetwork 和 CNN 类。

  神经网络类充当代理的大脑,在给定特定时间点的股票数据样本时决定是买入还是卖出。不同类型的神经网络决策可能不同。直观地说,神经网络的学习目标是最大化买卖行为的未来 PV。当您购买股票时,您的现金余额会减少,而您的持有股票股数会增加。如果股票价格上涨而持有股票股数很大,PV 将显着提高。另一方面,如果股价下跌,PV 可能会显着降低。因此,如果预计股价上涨,则增加持有股票股数;如果预计股价下跌,则减少持有股票股数以降低风险。

  RLTrader 可以有价值神经网络和策略神经网络。通过价值神经网络或策略神经网络决定是增加还是减少持有股票股数。将股票数据放入价值神经网络可以预测未来买卖的回报,而政策神经网络可以预测买卖的概率。如果买入的价值或概率高于卖出,则您正在买入,反之亦然。

8.可视化模块概述

  可视化模块(visualizer.py)将环境、代理状态、价值神经网络输出、策略神经网络输出、PV等可视化为图片文件,直观了解股票数据学习过程。如果按顺序查看可视化结果,可以看到神经网络输出随着 epoch 的进展向投资组合价值增加的方向变化,投资组合价值也相应增加。

  如果在足够的 epoch 后投资组合的价值没有增加,则有必要了解训练没有正常工作,并考虑是否对训练数据重新建模或改进算法。

9.学习者模块概述

  学习器模块 (learners.py) 包含应用了主要强化学习技术的学习器类。该模块包含继承自 ReinforcementLearner 类的 DQNLearner、PolicyGradientLearner、ActorCriticLearner、A2CLearner、A3CLearner。学习器类可以说是 RLTrader 的主体,它使用上面介绍的代理、环境和策略神经网络进行强化学习。学习者拥有训练数据,当奖励确定时,它用训练数据训练神经网络。

10.执行模块概述

  执行模块(main.py)是一个执行股票投资强化学习的模块,有几个选项。强化学习可以通过设置代码、强化学习技术、神经网络类型、学习率、折扣率、探索率、初始资本和epoch数来执行。