Ви навчили DRL-агента на історії — бектест блискучий, але на live-ринку капітал тане. Причина — концептуальний дрейф: ринкові режими змінюють один одного (bull, bear, sideways, high-vol), і єдина політика не встигає адаптуватися. Багатоагентне навчання з підкріпленням (MARL) вирішує це, розбиваючи задачу на спеціалізованих агентів. Ми займаємося розробкою RL системи для трейдингу понад 7 років і пропонуємо впровадження MARL на стеку PyTorch, Ray та PettingZoo, використовуючи перевірені архітектури: CTDE архітектура, COMA винагорода, ієрархічний MARL. Вартість розробки типової MARL-системи становить від $50 000 до $150 000 залежно від складності.
В одному проекті з портфелем з 10 активів MARL знизив максимальну просадку з 18% до 12% і збільшив Sharpe з 1.2 до 1.7. Для портфеля в $1 млн це зекономило $60 000. Інвестиції в розробку окупилися за 6 місяців торгівлі. Порівняно з single-agent RL, MARL дозволяє знижувати просадки на 20–35% і підвищувати Sharpe ratio на 0.3–0.7, що робить його у 2 рази ефективнішим за Sharpe ratio. Крім того, MARL у 3–5 разів перевершує single-agent RL за стійкістю до змін ринкового режиму. Наші спеціалісти мають сертифікати AWS та NVIDIA, що гарантує якість розробки.
Чи ефективний MARL у трейдингу?
Single-agent RL страждає від концептуального дрейфу: стратегія, яка працювала в bull market, втрачає ефективність при зміні режиму. MARL вирішує цю проблему через спеціалізацію. Кожен агент навчається на певному типі ринкових рухів, а мета-агент (координатор) адаптивно зважує їхні рекомендації. Це знижує просадки на 20–35% і збільшує Sharpe ratio на 0.3–0.7 порівняно з single-agent RL. Крім того, MARL дозволяє диверсифікувати стратегії, що критично для портфелів з кількома активами.
Як MARL адаптується до ринкових режимів?
Один універсальний агент страждає від концептуального дрейфу: при 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 виявлення режиму).
Архітектура HMM для regime detection
Прихована марковська модель (HMM) з 3 станами та емісійними розподілами Гаусса. Параметри навчаються на історичних даних методом максимізації правдоподібності (алгоритм Баума-Велча). На кожному кроці фільтр частинок (particle filter) оцінює поточний стан. Це дозволяє адаптивно зважувати стратегії агентів. Згідно з дослідженням Lowe et al. (2017), Multi-Agent Actor-Critic for Mixed Cooperative-Competitive Environments, CTDE архітектура показує високу ефективність.
Вибір фреймворку для 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()
Процес роботи
- Аналітика: збір вимог, аналіз ринкових даних, визначення агентів і режимів.
- Проектування: вибір архітектури (IL/CTDE/COMA), специфікація спостережень і дій.
- Реалізація: написання коду, навчання на історичних даних, налаштування гіперпараметрів (learning rate, gamma, tau).
- Тестування: backtest на OOS даних, stress-test, paper trading.
- Деплой: інтеграція з брокерським API, налаштування моніторингу (Weights & Biases, MLflow).
Що входить в роботу
- Документація архітектури та рішень.
- Навчені моделі з конфігами та логами.
- Вихідний код з CI/CD (GitHub Actions).
- Моніторинг агентів (Weights & Biases, MLflow).
- Документація з експлуатації.
- Навчання вашої команди (1–2 майстер-класи).
Практичні міркування
Coordination overhead: MARL система складніша у відлагодженні. Потрібні інструменти для моніторингу кожного агента окремо та їхньої взаємодії. Overfitting до ансамблю: якщо агенти надто схожі (кореляція сигналів > 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 для вашого портфеля.







