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

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

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

Часто задаваемые вопросы

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

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

Вы обучили 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 для вашего портфеля.