Настройка торгового RL-агента в OpenAI Gym / Gymnasium
Gymnasium (форк OpenAI Gym, актуальный с 2022) — стандартный интерфейс для RL сред. Готовые trading-среды: gym-anytrading, gym-trading-env — можно запустить первый агент за несколько часов.
Установка
pip install gymnasium stable-baselines3
pip install gym-anytrading # простые торговые среды
pip install gymnasium-trading-env # более продвинутые
gym-anytrading — быстрый старт
import gymnasium as gym
import gym_anytrading
from stable_baselines3 import A2C
import pandas as pd
# загрузка данных
df = pd.read_csv('AAPL.csv', index_col='Date', parse_dates=True)
# создание среды
env = gym.make('stocks-v0',
df=df,
frame_bound=(50, len(df)),
window_size=10)
# обучение
model = A2C('MlpPolicy', env, verbose=1)
model.learn(total_timesteps=100_000)
# тест
obs, info = env.reset()
done = False
while not done:
action, _ = model.predict(obs)
obs, reward, terminated, truncated, info = env.step(action)
done = terminated or truncated
print(f"Profit: {info['total_profit']:.2%}")
gymnasium-trading-env — продвинутая версия
from gymnasium_trading_env.environments import TradingEnv
env = TradingEnv(
df=df,
positions=[-1, 0, 1], # short / flat / long
trading_fees=0.0015, # 0.15% комиссия
borrow_interest_rate=0.0003, # 0.03% в день для шортов
portfolio_initial_value=10_000,
windows=20, # lookback window
verbose=1
)
Регистрация кастомной среды
from gymnasium.envs.registration import register
register(
id='MyTradingEnv-v1',
entry_point='my_module:MyTradingEnv',
max_episode_steps=252
)
env = gym.make('MyTradingEnv-v1', df=train_df)
Сроки: 3–7 дней
Gymnasium + gym-anytrading + первый работающий агент — 1–2 дня. Кастомная среда с реальными данными и бэктестом — неделя.







