Глава 320: Многоцелевое обучение с подкреплением для трейдинга
Введение
Традиционное обучение с подкреплением (RL) для трейдинга обычно оптимизирует одну цель — как правило, совокупную доходность или метрику с учётом риска, такую как коэффициент Шарпа. Однако реальный трейдинг требует одновременного балансирования нескольких, часто конфликтующих целей: максимизация доходности при минимизации просадки, контроль волатильности, ограничение транзакционных издержек и поддержание диверсификации. Единая скалярная функция вознаграждения вынуждает разработчика выбирать фиксированные веса этих факторов до обучения, что является хрупким подходом и может упустить лучшие компромиссные решения.
Многоцелевое обучение с подкреплением (MORL) расширяет рамки RL для работы с векторными вознаграждениями. Вместо сведения нескольких целей к одному числу, алгоритмы MORL обнаруживают набор стратегий, представляющих различные компромиссы — фронт Парето. Портфельный менеджер может затем выбрать стратегию, наилучшим образом соответствующую его склонности к риску, без повторного обучения с нуля.
В этой главе рассматриваются математические основы многоцелевой оптимизации в контексте RL, обзор современных алгоритмов MORL (PGMORL, Envelope Q-learning, CAPQL) и демонстрируется полная реализация на Rust, которая обучает многоцелевого RL-агента на данных криптовалют с биржи Bybit.
Математические основы
Многоцелевой марковский процесс принятия решений (MOMDP)
MOMDP расширяет стандартный MDP векторным вознаграждением. Формально, MOMDP — это кортеж $(S, A, P, \mathbf{R}, \gamma)$, где:
- $S$ — пространство состояний
- $A$ — пространство действий
- $P(s’ | s, a)$ — функция переходов
- $\mathbf{R}: S \times A \times S \to \mathbb{R}^d$ — $d$-мерная функция вознаграждения
- $\gamma \in [0, 1)$ — коэффициент дисконтирования
Каждая стратегия $\pi$ индуцирует векторную доходность:
$$\mathbf{V}^{\pi}(s) = \mathbb{E}{\pi}\left[\sum{t=0}^{\infty} \gamma^t \mathbf{R}(s_t, a_t, s_{t+1}) \mid s_0 = s\right] \in \mathbb{R}^d$$
В трейдинге естественным выбором является $d = 3$ с компонентами:
- Доходность: совокупная логарифмическая доходность портфеля
- Отрицательная просадка: $-\max_{t’ \le t}(V_{t’} - V_t) / V_{t’}$
- Отрицательная волатильность: $-\sigma$ доходностей за скользящее окно
Доминирование по Парето и фронт Парето
Для двух стратегий $\pi_1$ и $\pi_2$ говорят, что $\pi_1$ доминирует по Парето $\pi_2$ (записывается $\pi_1 \succ \pi_2$), если:
$$\forall i: V_i^{\pi_1} \ge V_i^{\pi_2} \quad \text{и} \quad \exists j: V_j^{\pi_1} > V_j^{\pi_2}$$
Фронт Парето $\mathcal{P}^*$ — это множество всех недоминируемых стратегий:
$$\mathcal{P}^* = {\pi \mid \nexists \pi’ : \pi’ \succ \pi}$$
В плоскости доходность-риск фронт Парето прочерчивает эффективную границу — наилучшую достижимую доходность для каждого уровня риска.
Методы скаляризации
Простейший подход к MORL — линейная скаляризация, которая преобразует векторное вознаграждение в скаляр с помощью вектора весов $\mathbf{w} \in \Delta^{d-1}$ (симплекс):
$$R_{\text{scalar}}(s, a, s’) = \mathbf{w}^T \mathbf{R}(s, a, s’)$$
Перебирая различные векторы весов, можно получить разные точки на фронте Парето. Однако линейная скаляризация может найти точки только на выпуклой оболочке фронта Парето. Для нахождения невыпуклых областей используется скаляризация Чебышёва:
$$R_{\text{cheb}}(s, a, s’) = \min_i ; w_i \cdot (R_i(s, a, s’) - z_i^*)$$
где $\mathbf{z}^*$ — опорная точка (например, идеальная точка, где каждая цель независимо максимизирована).
Алгоритмы MORL
PGMORL (Prediction-Guided Multi-Objective RL)
PGMORL поддерживает популяцию стратегий и итеративно:
- Предсказывает перспективные векторы весов с помощью модели производительности
- Обучает новые стратегии из популяции, используя предсказанные веса
- Обновляет аппроксимацию фронта Парето
Ключевая идея — использование модели предсказания для направления исследования пространства весов, избегая дорогостоящих обучений на неперспективных областях.
CAPQL (Continuous Action Pareto Q-Learning)
CAPQL расширяет дистрибутивное RL на многоцелевую постановку, обучая отдельную Q-функцию для каждой цели и используя оператор огибающей для аппроксимации фронта Парето. Работает с непрерывным пространством действий, что делает его подходящим для распределения портфеля.
Envelope Q-Learning
Для дискретных действий Envelope Q-learning поддерживает набор Q-функций $Q_w(s, a)$, индексированных векторами весов. Оптимальная Q-функция удовлетворяет:
$$Q^{\mathbf{w}}(s, a) = \mathbb{E}\left[\mathbf{w}^T \mathbf{R} + \gamma \max{a’} Q^_{\mathbf{w}}(s’, a’)\right]$$
Обучаясь на распределении векторов весов одновременно, агент учится обобщать на всё пространство предпочтений.
Применение в трейдинге
Компромисс доходность-риск
Наиболее естественное применение — классический компромисс доходность-риск. Вместо выбора одного параметра неприятия риска, MORL обнаруживает полную эффективную границу:
- Агрессивные стратегии: высокая ожидаемая доходность, высокая толерантность к просадке
- Консервативные стратегии: меньшая доходность, минимальная просадка
- Сбалансированные стратегии: умеренная доходность с контролируемым риском
Портфельный менеджер может перемещаться по фронту Парето в зависимости от рыночного режима. В спокойных рынках выбирается более агрессивная стратегия; в периоды высокой волатильности — консервативная.
Многоактивный портфель с ограничениями
Для многоактивных портфелей цели могут включать:
- Общую доходность портфеля
- Максимальную просадку отдельного актива
- Оборот портфеля (транзакционные издержки)
- Концентрационный риск (обратная диверсификация)
MORL-агент обучает стратегии распределения, балансирующие эти задачи. В отличие от оптимизации среднее-дисперсия, MORL может улавливать нелинейные зависимости и зависящие от пути цели, такие как просадка.
Адаптивный к режиму выбор стратегии
Мета-стратегия может выбирать среди Парето-оптимальных стратегий на основе обнаруженного рыночного режима:
если режим_волатильности == ВЫСОКИЙ: выбрать стратегию с наименьшей просадкойиначе_если режим_тренда == СИЛЬНЫЙ: выбрать стратегию с наибольшей доходностьюиначе: выбрать сбалансированную стратегиюЭто обеспечивает адаптивную систему, реагирующую на изменения рыночных условий без повторного обучения.
Реализация на Rust
Реализация в rust/src/lib.rs предоставляет:
-
MultiObjectiveReward: Вычисляет 3D вектор вознаграждения (доходность, отрицательная просадка, отрицательная волатильность) из ценовых данных и торговых действий. -
ScalarizedQLearning: Табличный Q-learning агент, принимающий вектор весов и обучающийся на скаляризованном вознаграждении. Несколько экземпляров с разными весами аппроксимируют фронт Парето. -
ParetoFront: Поддерживает набор недоминируемых решений. Поддерживает вставку с проверкой доминирования и вычисление гиперобъёма. -
PolicyEvaluator: Оценивает обученную стратегию по каждой цели независимо, формируя вектор целей для построения фронта Парето. -
BybitClient: Получает исторические OHLCV данные из публичного API Bybit для бэктестинга.
Ключевые проектные решения
- Дискретизированное пространство состояний: доходности цены разбиваются на дискретные уровни (сильное падение, падение, флэт, рост, сильный рост) в сочетании с текущей позицией (шорт, нейтральная, лонг) для реализуемого табличного Q-learning.
- Пространство действий: три действия — продажа/шорт, удержание, покупка/лонг.
- Скользящее окно: волатильность и просадка вычисляются по настраиваемому скользящему окну для сохранения отзывчивости сигнала вознаграждения.
Запуск примера
cd 320_multi_objective_rl_trading/rustcargo run --example trading_exampleПример:
- Получает данные BTCUSDT 1-часовых свечей с Bybit
- Обучает нескольких агентов с разными векторами весов
- Оценивает каждого агента по всем трём целям
- Строит фронт Парето
- Отображает компромисс между доходностью, просадкой и волатильностью
- Выбирает лучшую стратегию для заданного предпочтения риска
Интеграция с Bybit
Реализация использует публичный API Bybit V5 для получения исторических данных свечей (kline):
GET https://api.bybit.com/v5/market/kline?category=linear&symbol=BTCUSDT&interval=60&limit=200Аутентификация для публичных рыночных данных не требуется. Ответ предоставляет OHLCV свечи, которые преобразуются в доходности для среды RL.
Ключевые аспекты:
- Ограничение частоты запросов: публичный API допускает до 10 запросов в секунду. Реализация включает соответствующие задержки.
- Качество данных: пропущенные свечи обрабатываются путём forward-fill последней известной цены.
- Синхронизация по времени: свечи сортируются хронологически перед обработкой.
Ключевые выводы
-
Многоцелевое RL сохраняет полную структуру компромиссов между конкурирующими целями, такими как доходность, просадка и волатильность, вместо сведения их к одному числу.
-
Фронт Парето — это многоцелевой эквивалент эффективной границы в портфельной теории, но расширяется на нелинейные, зависящие от пути цели, которые классическая оптимизация не может обработать.
-
Линейная скаляризация проста, но ограничена — она может найти только выпуклые области фронта Парето. Скаляризация Чебышёва и методы огибающей могут обнаружить полный фронт.
-
PGMORL и CAPQL — современные алгоритмы, эффективно исследующие пространство целей. PGMORL использует предсказание для направления исследования, а CAPQL расширяет дистрибутивное RL.
-
Адаптивный к режиму выбор стратегии — мощное применение: обучите один раз для получения фронта Парето, затем динамически выбирайте стратегии в зависимости от рыночных условий.
-
Практическая реализация требует тщательной дискретизации пространства состояний и нормализации вознаграждений по целям с различными масштабами.
-
Фронт Парето обеспечивает прозрачное принятие решений — портфельные менеджеры видят, чем именно они жертвуют по одной цели ради выигрыша по другой, вместо доверия непрозрачной одномерной оптимизации.
-
Публичный API Bybit предоставляет доступные данные криптовалют для обучения и оценки многоцелевых RL-агентов на реальной рыночной динамике.