Reinforcement Learning (RL) ha recibido mucha atención en el campo del comercio algorítmico en los últimos años. Los algoritmos de aprendizaje por refuerzo aprenden de la experiencia y optimizan las acciones en función de las recompensas, lo que los hace ideales para los bots comerciales. En este artículo, presentaremos brevemente cómo usar el entorno Gym Anytrading y el conjunto de datos comerciales de GME (GameStop Corp.) para construir un robot comercial basado en el aprendizaje por refuerzo.
El aprendizaje por refuerzo es un subcampo del aprendizaje automático que implica que un agente aprenda a interactuar con un entorno para lograr un objetivo específico. El agente realiza acciones en el entorno, recibe retroalimentación en forma de recompensas y aprende a maximizar las recompensas acumuladas con el tiempo. El objetivo del agente es descubrir una política óptima que asigne estados a acciones, lo que lleva al mejor resultado posible.
Gimnasio Anytrading
Gym Anytrading es una biblioteca de código abierto construida sobre OpenAI Gym, que proporciona una serie de entornos de comercio financiero. Nos permite simular varios escenarios comerciales y probar diferentes estrategias comerciales utilizando algoritmos RL.
instalar dependencias
Las principales bibliotecas que se utilizarán son TensorFlow, stable-baselines3 y Gym Anytrading. Ejecute el siguiente código para instalar las dependencias requeridas:
!pip install tensorflow
!pip install stable_baselines3
!pip install gym
!pip install gym-anytrading
!pip install tensorflow-gpu
importar biblioteca
Importe las bibliotecas necesarias y configure el entorno para comenzar:
# 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
Cargar datos de transacciones de GME
Los datos históricos de transacciones de GameStop Corp. (GME) se utilizarán como ejemplo. Suponemos que tiene datos de transacciones de GME en formato CSV, si no, puede encontrar la dirección de descarga a través de motores de búsqueda.
Cargue los datos comerciales de GME y prepárese para el entorno 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()
Cree un entorno comercial a través de Gym
El siguiente paso es crear un entorno comercial con Gym Anytrading. El entorno representará los datos de transacciones de GME y nuestro agente interactuará con el entorno a través de acciones como comprar, vender y mantener acciones.
# 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
explorar el entorno
Antes de proceder a construir el modelo RL, es posible visualizar el entorno para comprender sus características.
# 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()
El gráfico muestra una parte de los datos comerciales de GME, junto con las señales de compra y venta generadas por el entorno Gym Anytrading.
Cree modelos de aprendizaje por refuerzo
Usaremos la biblioteca stable-baselines3 para construir el modelo RL. Usaremos el algoritmo 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)
modelo de evaluación
Después de entrenar el modelo, es posible evaluar su desempeño en diferentes partes de los datos de transacciones de 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()
Resumir
En esta publicación, describimos cómo usar el entorno Gym Anytrading y la biblioteca stable-baselines3 para construir un robot comercial basado en el aprendizaje por refuerzo. Este artículo es solo un punto de partida, construir un robot comercial exitoso requiere una cuidadosa consideración de varios factores y una mejora continua.
https://evitar.overfit.cn/post/77466ba1f1d34ccca01aa4096c0cf8d7
Dirección:Kabila MD Musa