Настройка среды OpenAI Gym для торгового RL-агента

Проектируем и внедряем системы искусственного интеллекта: от прототипа до production-ready решения. Наша команда объединяет экспертизу в машинном обучении, дата-инжиниринге и MLOps, чтобы AI работал не в лаборатории, а в реальном бизнесе.
Показано 1 из 1Все 1566 услуг
Настройка среды OpenAI Gym для торгового RL-агента
Простой
~1 день
Часто задаваемые вопросы

Направления AI-разработки

Этапы разработки AI-решения

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1284
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1196
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    901
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1119
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    586
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    853

Настройка торгового 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 дня. Кастомная среда с реальными данными и бэктестом — неделя.