文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

基于Gym Anytrading 的强化学习简单实例

2024-11-30 11:34

关注

强化学习是机器学习的一个子领域,涉及代理学习与环境交互以实现特定目标。代理在环境中采取行动,接收奖励形式的反馈,并学会随着时间的推移最大化累积奖励。代理的目标是发现一个将状态映射到行动的最优策略,从而导致最好的可能结果。

Gym Anytrading

Gym Anytrading是一个建立在OpenAI Gym之上的开源库,它提供了一系列金融交易环境。它允许我们模拟各种交易场景,并使用RL算法测试不同的交易策略。

安装依赖

将使用的主要库是TensorFlow, stable-baselines3和Gym Anytrading。运行以下代码来安装所需的依赖项:

!pip install tensorflow 
 !pip install stable_baselines3 
 !pip install gym
 !pip install gym-anytrading 
 !pip install tensorflow-gpu

导入库

导入必要的库和设置环境开始:

# Gym stuff
 import gym
 import gym_anytrading
 
 # Stable baselines - RL stuff
 from stable_baselines3.common.vec_env import DummyVecEnv
 from stable_baselines3 import A2C
 
 # Processing libraries
 import numpy as np
 import pandas as pd
 from matplotlib import pyplot as plt

加载GME交易数据

将使用GameStop Corp. (GME)的历史交易数据作为示例。我们假设您拥有CSV格式的GME交易数据,没有的话可以通过搜索引擎找到下载地址。

加载GME交易数据并为Gym Anytrading环境做准备:

# Load GME trading data
 df = pd.read_csv('gmedata.csv')
 
 # Convert data to datetime type
 df['Date'] = pd.to_datetime(df['Date'])
 df.dtypes
 
 # Set Date as the index
 df.set_index('Date', inplace=True)
 df.head()

通过Gym创建交易环境

下一步就是使用Gym Anytrading创建交易环境。环境将代表GME交易数据,我们的代理将通过购买、出售和持有股票等行为与环境进行交互。

# Create the environment
 env = gym.make('stocks-v0', df=df, frame_bound=(5, 100), window_size=5)
 
 # View environment features
 env.signal_features
 
 # View environment prices
 env.prices

探索环境

在继续构建RL模型之前,可以先对环境可视化了解其特征。

# Explore the environment
 env.action_space
 
 state = env.reset()
 while True:
    action = env.action_space.sample()
    n_state, reward, done, info = env.step(action)
    if done:
        print("info", info)
        break
 
 plt.figure(figsize=(15, 6))
 plt.cla()
 env.render_all()
 plt.show()

该图显示了GME交易数据的一部分,以及Gym Anytrading环境生成的买入和卖出信号。


构建强化学习模型

我们将使用stable-baselines3库构建RL模型。我们将使用A2C(Advantage Actor-Critic)算法

# Creating our dummy vectorizing environment
 env_maker = lambda: gym.make('stocks-v0', df=df, frame_bound=(5, 100), window_size=5)
 env = DummyVecEnv([env_maker])
 
 # Initializing and training the A2C model
 model = A2C('MlpPolicy', env, verbose=1)
 model.learn(total_timesteps=1000000)

评估模型

在训练模型之后,可以评估它在GME交易数据的不同部分上的表现。

# Create a new environment for evaluation
 env = gym.make('stocks-v0', df=df, frame_bound=(90, 110), window_size=5)
 obs = env.reset()
 while True:
    obs = obs[np.newaxis, ...]
    action, _states = model.predict(obs)
    obs, rewards, done, info = env.step(action)
    if done:
        print("info", info)
        break
 
 plt.figure(figsize=(15, 6))
 plt.cla()
 env.render_all()
 plt.show()

总结

在这篇文章中,我们介绍了如何使用Gym Anytrading环境和stable-baselines3库来构建一个基于强化学习的交易机器人。本文只是一个起点,构建一个成功的交易机器人需要仔细考虑各种因素并不断改进。


来源:DeepHub IMBA内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯