Перейти к содержимому

Глава 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$ с компонентами:

  1. Доходность: совокупная логарифмическая доходность портфеля
  2. Отрицательная просадка: $-\max_{t’ \le t}(V_{t’} - V_t) / V_{t’}$
  3. Отрицательная волатильность: $-\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 поддерживает популяцию стратегий и итеративно:

  1. Предсказывает перспективные векторы весов с помощью модели производительности
  2. Обучает новые стратегии из популяции, используя предсказанные веса
  3. Обновляет аппроксимацию фронта Парето

Ключевая идея — использование модели предсказания для направления исследования пространства весов, избегая дорогостоящих обучений на неперспективных областях.

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 обнаруживает полную эффективную границу:

  • Агрессивные стратегии: высокая ожидаемая доходность, высокая толерантность к просадке
  • Консервативные стратегии: меньшая доходность, минимальная просадка
  • Сбалансированные стратегии: умеренная доходность с контролируемым риском

Портфельный менеджер может перемещаться по фронту Парето в зависимости от рыночного режима. В спокойных рынках выбирается более агрессивная стратегия; в периоды высокой волатильности — консервативная.

Многоактивный портфель с ограничениями

Для многоактивных портфелей цели могут включать:

  1. Общую доходность портфеля
  2. Максимальную просадку отдельного актива
  3. Оборот портфеля (транзакционные издержки)
  4. Концентрационный риск (обратная диверсификация)

MORL-агент обучает стратегии распределения, балансирующие эти задачи. В отличие от оптимизации среднее-дисперсия, MORL может улавливать нелинейные зависимости и зависящие от пути цели, такие как просадка.

Адаптивный к режиму выбор стратегии

Мета-стратегия может выбирать среди Парето-оптимальных стратегий на основе обнаруженного рыночного режима:

если режим_волатильности == ВЫСОКИЙ:
выбрать стратегию с наименьшей просадкой
иначе_если режим_тренда == СИЛЬНЫЙ:
выбрать стратегию с наибольшей доходностью
иначе:
выбрать сбалансированную стратегию

Это обеспечивает адаптивную систему, реагирующую на изменения рыночных условий без повторного обучения.

Реализация на Rust

Реализация в rust/src/lib.rs предоставляет:

  1. MultiObjectiveReward: Вычисляет 3D вектор вознаграждения (доходность, отрицательная просадка, отрицательная волатильность) из ценовых данных и торговых действий.

  2. ScalarizedQLearning: Табличный Q-learning агент, принимающий вектор весов и обучающийся на скаляризованном вознаграждении. Несколько экземпляров с разными весами аппроксимируют фронт Парето.

  3. ParetoFront: Поддерживает набор недоминируемых решений. Поддерживает вставку с проверкой доминирования и вычисление гиперобъёма.

  4. PolicyEvaluator: Оценивает обученную стратегию по каждой цели независимо, формируя вектор целей для построения фронта Парето.

  5. BybitClient: Получает исторические OHLCV данные из публичного API Bybit для бэктестинга.

Ключевые проектные решения

  • Дискретизированное пространство состояний: доходности цены разбиваются на дискретные уровни (сильное падение, падение, флэт, рост, сильный рост) в сочетании с текущей позицией (шорт, нейтральная, лонг) для реализуемого табличного Q-learning.
  • Пространство действий: три действия — продажа/шорт, удержание, покупка/лонг.
  • Скользящее окно: волатильность и просадка вычисляются по настраиваемому скользящему окну для сохранения отзывчивости сигнала вознаграждения.

Запуск примера

Окно терминала
cd 320_multi_objective_rl_trading/rust
cargo run --example trading_example

Пример:

  1. Получает данные BTCUSDT 1-часовых свечей с Bybit
  2. Обучает нескольких агентов с разными векторами весов
  3. Оценивает каждого агента по всем трём целям
  4. Строит фронт Парето
  5. Отображает компромисс между доходностью, просадкой и волатильностью
  6. Выбирает лучшую стратегию для заданного предпочтения риска

Интеграция с 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 последней известной цены.
  • Синхронизация по времени: свечи сортируются хронологически перед обработкой.

Ключевые выводы

  1. Многоцелевое RL сохраняет полную структуру компромиссов между конкурирующими целями, такими как доходность, просадка и волатильность, вместо сведения их к одному числу.

  2. Фронт Парето — это многоцелевой эквивалент эффективной границы в портфельной теории, но расширяется на нелинейные, зависящие от пути цели, которые классическая оптимизация не может обработать.

  3. Линейная скаляризация проста, но ограничена — она может найти только выпуклые области фронта Парето. Скаляризация Чебышёва и методы огибающей могут обнаружить полный фронт.

  4. PGMORL и CAPQL — современные алгоритмы, эффективно исследующие пространство целей. PGMORL использует предсказание для направления исследования, а CAPQL расширяет дистрибутивное RL.

  5. Адаптивный к режиму выбор стратегии — мощное применение: обучите один раз для получения фронта Парето, затем динамически выбирайте стратегии в зависимости от рыночных условий.

  6. Практическая реализация требует тщательной дискретизации пространства состояний и нормализации вознаграждений по целям с различными масштабами.

  7. Фронт Парето обеспечивает прозрачное принятие решений — портфельные менеджеры видят, чем именно они жертвуют по одной цели ради выигрыша по другой, вместо доверия непрозрачной одномерной оптимизации.

  8. Публичный API Bybit предоставляет доступные данные криптовалют для обучения и оценки многоцелевых RL-агентов на реальной рыночной динамике.