Мультиагентное обучение в трейдинге: снижение просадок до 35%

Проектируем и внедряем системы искусственного интеллекта: от прототипа до production-ready решения. Наша команда объединяет экспертизу в машинном обучении, дата-инжиниринге и MLOps, чтобы AI работал не в лаборатории, а в реальном бизнесе.
Показано 1 из 1Все 1564 услуг
Мультиагентное обучение в трейдинге: снижение просадок до 35%
Сложный
от 2 недель до 3 месяцев
Часто задаваемые вопросы

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

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

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

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

Вы обучили DRL-агента на истории — бэктест блестящий, но на live-рынке капитал тает. Причина — concept drift: рыночные режимы сменяют друг друга (bull, bear, sideways, high-vol), и единая политика не успевает адаптироваться. Multi-Agent Reinforcement Learning (MARL) решает это, разбивая задачу на специализированных агентов. Мы занимаемся разработкой RL систем для трейдинга более 7 лет и предлагаем внедрение MARL на стеке PyTorch, Ray и PettingZoo, используя проверенные архитектуры: CTDE, COMA, иерархический MARL.

В одном проекте с портфелем из 10 активов MARL снизил максимальную просадку с 18% до 12% и увеличил Sharpe с 1.2 до 1.7. Инвестиции в разработку окупились за 6 месяцев торговли. По сравнению с single-agent RL, MARL позволяет снижать просадки на 20–35% и повышать Sharpe ratio на 0.3–0.7, что делает его предпочтительным для управления капиталом.

Почему MARL эффективнее single-agent RL в трейдинге?

Single-agent RL страдает от concept drift: стратегия, работавшая в bull market, теряет эффективность при смене режима. MARL решает эту проблему через специализацию. Каждый агент обучается на определённом типе рыночных движений, а мета-агент (координатор) адаптивно взвешивает их рекомендации. Это снижает просадки на 20–35% и увеличивает Sharpe ratio на 0.3–0.7 по сравнению с single-agent RL. Кроме того, MARL позволяет диверсифицировать стратегии, что критично для портфелей с несколькими активами.

Как MARL справляется с изменением рыночных режимов?

Один универсальный агент страдает от concept drift: при bull market работает momentum-стратегия, при sideways — mean reversion, при high-volatility — хеджирование. MARL решает через специализацию и ансамблирование. Декомпозиция задачи:

  • Agent₁: Momentum/Trend following (RSI, MACD, Moving Averages)
  • Agent₂: Mean Reversion (Bollinger Bands, Z-score)
  • Agent₃: Volatility/Options-like hedging
  • Meta-agent (coordinator): взвешивает рекомендации агентов

Разделение по активам:

  • Agent per asset: каждый агент специализируется на одном инструменте
  • Hierarchical: master agent управляет капиталом, sub-agents торгуют секторами

Как распределить reward между агентами?

Ключевой вопрос MARL — как делить общий PnL между агентами. Варианты:

  • Individual rewards: каждый оптимизирует свой PnL — возможны конфликты (агенты торгуют друг против друга).
  • Shared team reward: все получают одинаковый reward (общий PnL) — решает конфликты, но затрудняет атрибуцию.
  • COMA (Counterfactual Multi-Agent): reward агента i = общий reward - counterfactual (что было бы без агента i). Справедливая атрибуция вклада.
Метод Описание Стабильность Применимость
Individual Каждый агент получает свой PnL Низкая (конфликты) Простые задачи, 2–3 агента
Shared Все получают общий PnL Высокая Командные сценарии
COMA Counterfactual baseline Очень высокая Комплексные портфели, 5+ агентов
def counterfactual_reward(global_reward, baseline_rewards, agent_idx):
    """global_reward - E[reward | other agents' actions, marginalizing over agent_i]"""
    return global_reward - baseline_rewards[agent_idx]

Сравнение подходов MARL

Подход Обучение Исполнение Стабильность Сложность Рекомендуемый сценарий
Independent Learners (IL) Независимое Локальное Низкая Низкая Простые среды, 2–3 агента
CTDE (MADDPG) Централизованное Локальное Высокая Средняя Continuous actions, до 5 агентов
COMA CTDE с counterfactual Локальное Очень высокая Высокая Комплексные портфели, 5+ агентов

Как мы это делаем: стек и кейс

Мы используем Centralized Training, Decentralized Execution (CTDE) через MADDPG на Ray RLlib. Пример иерархической системы:

Level 0 (Portfolio Manager):
    Input: market regime + agent signals
    Output: capital allocation weights

Level 1 (Strategy Agents):
    Agent Trend: signal ∈ {buy, hold, sell} + confidence
    Agent MeanRev: signal ∈ {buy, hold, sell} + confidence
    Agent Momentum: signal ∈ {buy, hold, sell} + confidence

Level 2 (Risk Manager):
    Input: proposed positions + portfolio state
    Output: position limits + stop-loss levels

Портфельный менеджер как meta-learner:

class PortfolioManager(nn.Module):
    def __init__(self, n_agents, n_assets):
        super().__init__()
        self.regime_detector = RegimeDetector()
        self.allocation_net = nn.Sequential(
            nn.Linear(n_agents * 3 + regime_dim, 128), nn.ReLU(),
            nn.Linear(128, n_assets), nn.Softmax(dim=-1)
        )

    def forward(self, agent_signals, market_features):
        regime = self.regime_detector(market_features)
        x = torch.cat([agent_signals.flatten(1), regime], dim=1)
        return self.allocation_net(x)

Для определения рыночного режима используем скрытую марковскую модель (HMM) с тремя состояниями: bull, bear, sideways.

Архитектура HMM для regime detection

Скрытая марковская модель (HMM) с 3 состояниями и эмиссионными распределениями Гаусса. Параметры обучаются на исторических данных методом максимизации правдоподобия (алгоритм Баума-Уэлча). На каждом шаге фильтр частиц (particle filter) оценивает текущее состояние. Это позволяет адаптивно взвешивать стратегии агентов.

Выбор фреймворка для MARL

Рекомендуем Ray RLlib с PettingZoo. Он поддерживает CTDE, COMA и распределённое обучение из коробки.

from ray.rllib.algorithms.maddpg import MADDPGConfig

config = (MADDPGConfig()
    .environment(env="MultiAgentTradingEnv")
    .multi_agent(
        policies={
            "trend_agent": (None, obs_space, act_space, {"gamma": 0.99}),
            "meanrev_agent": (None, obs_space, act_space, {"gamma": 0.95}),
        },
        policy_mapping_fn=lambda agent_id, **kw: agent_id,
    )
    .training(n_step=1, tau=0.01)
)
trainer = config.build()
for i in range(1000):
    result = trainer.train()

Процесс работы

  1. Аналитика: сбор требований, анализ рыночных данных, определение агентов и режимов.
  2. Проектирование: выбор архитектуры (IL/CTDE/COMA), спецификация наблюдений и действий.
  3. Реализация: написание кода, обучение на исторических данных, настройка гиперпараметров (learning rate, gamma, tau).
  4. Тестирование: backtest на OOS данных, stress-test, paper trading.
  5. Деплой: интеграция с брокерским API, настройка мониторинга (Weights & Biases, MLflow).

Что входит в работу

  • Документация архитектуры и решений.
  • Обученные модели с конфигами и логами.
  • Исходный код с CI/CD (GitHub Actions).
  • Мониторинг агентов (Weights & Biases, MLflow).
  • Документация по эксплуатации.
  • Обучение вашей команды (1–2 мастер-класса).

Практические соображения

Coordination overhead: MARL система сложнее в отладке. Нужны инструменты для мониторинга каждого агента отдельно + их взаимодействия. Overfitting к ансамблю: если агенты слишком похожи (correlation сигналов > 0.8) — ансамбль не даёт диверсификации. Вычислительная стоимость: MARL в 3–5× дороже single-agent по GPU часам. Окупается снижением просадок на 20–35% и ростом Sharpe.

Сроки

  • Базовая иерархия с 2–3 агентами: 8 недель.
  • Полноценная MARL система с CTDE, counterfactual rewards, regime detection: 20–24 недели.

Точная стоимость рассчитывается индивидуально после анализа ваших данных и требований. Наш опыт — 7+ лет в RL, 40+ проектов в quantitative finance. Свяжитесь с нами для оценки вашего проекта. Закажите разработку MARL-системы и повысьте доходность портфеля. Получите консультацию по MARL для вашего портфеля.

Обучение с подкреплением: PPO, SAC, DQN и промышленное применение

Мы каждый день видим проекты, которые умирают не из‑за слабого алгоритма, а из‑за неправильной награды. Инженер пишет reward = +1 за правильное действие, запускает обучение, а через 10 млн шагов агент находит способ получить максимум, не решив задачу. Это reward hacking — системная боль промышленного RL. Наш опыт показывает: правильный reward занимает 70% успеха.

Почему RL сложнее, чем supervised learning?

В supervised learning есть датасет с правильными ответами. В RL правильного ответа нет — есть скалярный сигнал «лучше/хуже», который приходит с задержкой в сотни шагов. Агент сам исследует пространство и находит стратегию.

Следствия: нестабильность обучения, высокая чувствительность к гиперпараметрам, медленная сходимость. PPO (Proximal Policy Optimization) на Atari сходится за 10 млн шагов — это часы. На роботизированных задачах с реальной физикой — дни или недели в симуляторе.

Выбор алгоритма под задачу:

Задача Алгоритм Причина
Непрерывное управление (роботика, техпроцессы) SAC, TD3 Sample efficiency, стабильность
Дискретные действия, game‑playing PPO, DQN + Rainbow Простота, изучен в индустрии
Multi‑agent MAPPO, QMIX Кооперация/конкуренция
Offline RL (датасет без среды) CQL, IQL, TD3+BC Обучение без среды
RLHF (alignment LLM) PPO, GRPO Интеграция с reward model

Как настроить PPO и избежать типичных проблем?

PPO — рабочая лошадка RL. Основная идея: ограничиваем обновление политики через клиппирование ratio clip_range=0.2. Это даёт стабильность по сравнению с vanilla policy gradient. Но без грамотной настройки агент не сходится.

Одна из частых ловушек — entropy collapse: агент слишком быстро становится детерминированным, перестаёт исследовать. Симптом — entropy coefficient падает до нуля. Лечение — ent_coef=0.01–0.05 и не снижать ниже 0.001. Другая проблема — value function расходится, когда vf_loss_coef высокий, а explained_variance отрицательный. Рекомендуем vf_coef=0.5 и gradient clipping max_grad_norm=0.5.

Неправильный n_steps тоже ломает обучение. n_steps=2048 — дефолт Stable‑Baselines3. Для задач с длинным горизонтом (>500 шагов) нужно увеличивать, для быстрых (10–50 шагов) — уменьшать до 256–512.

Для быстрого старта используем stable‑baselines3 + sb3‑contrib. Для research и кастомных алгоритмов — tianshou или CleanRL.

SAC для непрерывного управления

SAC (Soft Actor‑Critic) добавляет в objective максимизацию энтропии — агент учится быть и эффективным, и разнообразным. Это даёт отличную sample efficiency и устойчивость к шуму в reward.

На задачах управления техпроцессами SAC обычно обходит PPO по сходимости: требуется меньше взаимодействий для того же качества. Ключевой параметр — target_entropy. Стандартное значение ‑dim(action_space) часто подходит, но для специфических задач лучше настраивать вручную.

Как перенести обученного агента на реальное устройство?

Обучать RL на реальном роботе — дорого и опасно. Стандартный подход: обучение в симуляторе → трансфер на реальное железо. Основная проблема — reality gap: симулятор не воспроизводит физику, трение, шум датчиков.

Главный инструмент — domain randomization. Во время обучения случайно варьируем параметры среды: масса объектов ±30%, коэффициент трения ±50%, задержка действий 0–100 мс, шум наблюдений σ=0.01–0.1. Агент обучается быть робастным к вариациям, и реальный мир становится лишь ещё одной вариацией.

Сравнение популярных симуляторов:

Симулятор Особенности Производительность
MuJoCo Стандарт для роботики, физика среднего уровня Один робот — CPU
Isaac Gym / Isaac Lab (NVIDIA) GPU‑accelerated, 10 000+ параллельных сред Высокая (на A100 до 50 000 fps)
PyBullet Бесплатный, удобный для прототипов Низкая, CPU
Gazebo Интеграция с ROS, полный цикл Средняя, CPU+GPU
Кейс: манипулятор для сортировки компонентов на PCB

Использовали Isaac Gym с 4096 параллельными средами на A100, PPO с domain randomization (случайная масса, освещение, позиция камеры). 500 млн шагов — 18 часов. После трансфера на реальный UR5 success rate 78% без дополнительного fine‑tuning. После 2 часов на реальном роботе (10 k шагов) — 94%. Весь process — 3 недели.

RLHF: обучение LLM из человеческой обратной связи

RLHF стал стандартом после InstructGPT. Классическая схема: supervised fine‑tuning → reward model → PPO.

Проблемы классического PPO: нестабильность (KL‑дивергенция может взорваться), медленная сходимость, сложность настройки. Поэтому популярны альтернативы:

  • DPO — обходит reward model, учится на парах предпочтений. Проще, стабильнее, но менее гибкий.
  • GRPO — используется в DeepSeek‑R1, хорош для reasoning tasks.
  • ORPO — объединяет SFT и alignment в одну стадию.

Библиотека trl от Hugging Face — стандарт. Поддерживает PPO, DPO, ORPO, GRPO из коробки, работает с PEFT/LoRA для memory‑efficient fine‑tuning.

«Reward hacking — одна из основных причин провалов в RL, наряду с неправильно выбранной архитектурой среды.» — Wikipedia: Reward hacking

Что входит в работу

  • Архитектурное решение и обоснование выбора алгоритма
  • Разработка и документирование reward‑функции
  • Создание симулятора или настройка существующего
  • Обучение, hyper‑parameter sweep (Optuna / Ray Tune)
  • Трансфер на реальное железо или интеграция в продукт
  • Документация, доступы к коду и симуляторам
  • Обучение команды и 3‑месячная поддержка после деплоя

Процесс работы

  1. Аудит задачи — фиксируем цели, ресурсы, ограничения.
  2. Reward engineering — формализация желаемого поведения, проверка на reward hacking.
  3. Выбор среды и алгоритма — baseline, первые прогоны.
  4. Систематический hyperparameter sweep — используем Optuna.
  5. Обучение в симуляторе с domain randomization.
  6. Тестирование на реальном оборудовании (при необходимости).
  7. Деплой, мониторинг, поддержка.

Сроки: proof of concept — 2–4 недели; production‑система с sim‑to‑real — 3–8 месяцев; RLHF для LLM — 4–10 недель. Стоимость рассчитывается индивидуально — оценим ваш проект за 2 дня. Свяжитесь с нами для консультации.

Наша команда — 5+ лет опыта в RL, 30+ успешных проектов в роботике, оптимизации цепочек поставок и LLM alignment. Гарантируем прозрачную архитектуру и полную техническую документацию. Закажите разработку системы RL — мы поможем обойти типовые ловушки и получить работающую систему в сжатые сроки.