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

Глава 300: Иерархическое обучение с подкреплением для трейдинга

Введение

Традиционные агенты обучения с подкреплением (RL) для трейдинга работают на одном уровне временной абстракции: на каждом шаге они выбирают действие (покупка, продажа, удержание) на основе текущего состояния. Хотя этот плоский подход может работать для простых сценариев, он с трудом справляется с многомасштабной природой реальных финансовых рынков. Торговые решения естественным образом декомпозируются в иерархию: стратегическое распределение активов происходит в течение недель или месяцев, тактическая ребалансировка — в течение дней, а исполнение ордеров — в течение минут или секунд.

Иерархическое обучение с подкреплением (HRL) решает эту задачу, вводя несколько уровней абстракции в процесс принятия решений. Политика высокого уровня (“менеджер”) устанавливает цели или выбирает режимы на более длительных временных масштабах, в то время как политика низкого уровня (“работник”) выполняет конкретные торговые действия для достижения этих целей на более коротких временных масштабах. Эта декомпозиция отражает то, как работают профессиональные торговые фирмы: портфельные менеджеры устанавливают стратегические направления и бюджеты риска, а трейдеры-исполнители занимаются механикой входа и выхода из позиций.

Ключевые преимущества HRL для трейдинга включают:

  • Временная абстракция: Различные политики работают с разной частотой, естественно соответствуя многомасштабной структуре рынков.
  • Перенос и повторное использование: Навыки исполнения низкого уровня переносятся между различными стратегическими целями.
  • Эффективность исследования: Менеджер исследует в сокращённом пространстве целей, а не в полном пространстве действий.
  • Интерпретируемость: Иерархия порождает человекочитаемые промежуточные цели (например, “перейти к защитному позиционированию”).

Эта глава охватывает математические основы HRL — фреймворк опций, феодальные сети и иерархический Actor-Critic (HAC) — и демонстрирует полную реализацию на Rust, интегрированную с рыночными данными Bybit.

Математические основы

Фреймворк опций

Фреймворк опций (Sutton, Precup & Singh, 1999) расширяет стандартный MDP временно расширенными действиями, называемыми опциями. Опция $\omega \in \Omega$ определяется как тройка:

$$\omega = (I_\omega, \pi_\omega, \beta_\omega)$$

где:

  • $I_\omega \subseteq S$ — множество инициации (состояния, в которых опция может начаться)
  • $\pi_\omega: S \times A \rightarrow [0,1]$ — внутриопционная политика (как действовать во время выполнения)
  • $\beta_\omega: S \rightarrow [0,1]$ — функция завершения (вероятность остановки в каждом состоянии)

В торговом контексте опция может представлять “накопить длинную позицию в BTC в течение следующего часа”. Множество инициации включает состояния, в которых портфель имеет место для большей экспозиции BTC, внутриопционная политика определяет стратегию размещения лимитных ордеров, а функция завершения срабатывает при достижении целевой позиции или изменении рыночных условий.

Функция ценности по опциям следует структуре полу-MDP:

$$Q_\Omega(s, \omega) = \sum_a \pi_\omega(a|s) \left[ r(s,a) + \gamma \sum_{s’} P(s’|s,a) \left[ \beta_\omega(s’) \max_{\omega’} Q_\Omega(s’, \omega’) + (1 - \beta_\omega(s’)) Q_\Omega(s’, \omega) \right] \right]$$

Феодальные сети

Феодальное обучение с подкреплением (Dayan & Hinton, 1993; Vezhnevets et al., 2017) вводит архитектуру менеджер-работник:

Менеджер работает с более низким временным разрешением. Каждые $c$ шагов он генерирует вектор цели $g_t$:

$$g_t = f_{\text{manager}}(s_t; \theta_M)$$

Цель менеджера — максимизировать внешнее (средовое) вознаграждение, накопленное за интервал принятия решений.

Работник действует на каждом временном шаге и выбирает примитивные действия для достижения цели менеджера:

$$a_t = f_{\text{worker}}(s_t, g_t; \theta_W)$$

Работник получает внутреннее вознаграждение, измеряющее прогресс к цели менеджера:

$$r_t^{\text{intrinsic}} = \frac{1}{c} \cos(s_{t+c} - s_t, g_t) = \frac{1}{c} \frac{(s_{t+c} - s_t) \cdot g_t}{|s_{t+c} - s_t| \cdot |g_t|}$$

Это вознаграждение на основе косинусного сходства побуждает работника перемещать состояние в направлении, указанном менеджером, без требования точного достижения цели.

Иерархический Actor-Critic (HAC)

HAC (Levy et al., 2019) расширяет методы actor-critic на несколько уровней иерархии. Каждый уровень $k$ имеет:

  • Actor $\mu_k(s; \theta_k^{\mu})$: генерирует подцель для уровня $k-1$ (или примитивное действие на уровне 0)
  • Critic $Q_k(s, g; \theta_k^{Q})$: оценивает пару состояние-цель

Обучение использует три типа переходов опыта:

  1. Переходы с ретроспективным действием: Заменяют подцель, предложенную уровнем $k$, состоянием, фактически достигнутым уровнем $k-1$, корректируя субоптимальное исполнение нижнего уровня.
  2. Переходы с ретроспективной целью: Заменяют исходную цель достигнутым состоянием, позволяя учиться на любой траектории.
  3. Тестовые переходы подцелей: Периодически проверяют, может ли уровень $k-1$ достичь предложенной подцели, штрафуя недостижимые цели.

Обновление HAC для уровня $k$:

$$\mathcal{L}_k = \mathbb{E}\left[(Q_k(s, g) - y_k)^2\right], \quad y_k = r + \gamma Q_k(s’, g’)$$

$$\nabla_{\theta_k^\mu} J = \mathbb{E}\left[\nabla_g Q_k(s, g)\big|{g=\mu_k(s)} \cdot \nabla{\theta_k^\mu} \mu_k(s)\right]$$

Применения в трейдинге

Выбор режима высокого уровня + исполнение низкого уровня

Наиболее естественное применение HRL в трейдинге декомпозирует задачу на:

Менеджер (политика высокого уровня):

  • Наблюдает: макроэкономические индикаторы, режимы волатильности, межактивные корреляции, дисбалансы потока ордеров
  • Принимает решения каждые $N$ свечей (например, ежедневно): текущий рыночный режим (бычий, медвежий, боковой) и целевое распределение портфеля
  • Вознаграждение: коэффициент Шарпа за горизонт принятия решений

Работник (политика низкого уровня):

  • Наблюдает: данные на уровне тиков или минут, состояние книги ордеров, текущую позицию
  • Принимает решения на каждом шаге: конкретное размещение ордеров (рыночный/лимитный, объём, цена)
  • Внутреннее вознаграждение: прогресс к цели менеджера по распределению
  • Внешнее вознаграждение: качество исполнения (проскальзывание, тайминг)

Эта декомпозиция позволяет менеджеру неявно обучаться обнаружению режимов через максимизацию вознаграждения, в то время как работник специализируется на эффективном исполнении независимо от стратегического направления.

Многомасштабное управление портфелем

Трёхуровневая иерархия для управления портфелем:

  1. Стратегический уровень (ежемесячно): Веса распределения по классам активов — акции, криптовалюты, фиксированный доход
  2. Тактический уровень (ежедневно): Внутри каждого класса активов — выбор конкретных инструментов и размеров позиций
  3. Уровень исполнения (внутридневной): Исполнение необходимых сделок с минимальным воздействием на рынок

Каждый уровень получает цели сверху и транслирует их в подцели для уровня ниже. Стратегический уровень может выдать “увеличить долю криптовалют с 10% до 20%”; тактический уровень транслирует это в “купить 5 BTC, 50 ETH за следующие 3 дня”; уровень исполнения обрабатывает фактический поток ордеров.

Иерархическое управление рисками

HRL также может разделить управление рисками и генерацию альфы:

  • Риск-менеджер (высокий уровень): Устанавливает лимиты позиций, пороги максимальной просадки и требования к хеджированию
  • Альфа-трейдер (низкий уровень): Генерирует сделки в рамках ограничений, установленных риск-менеджером

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

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

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

  1. MarketRegime enum: Представляет обнаруженные состояния рынка (Bull, Bear, Sideways)
  2. HighLevelPolicy (Менеджер): Политика, подобная нейронной сети, которая отображает рыночные признаки в классификации режимов и цели распределения. Работает на более грубом временном масштабе, принимая решения каждые decision_interval шагов.
  3. LowLevelPolicy (Работник): Отображает текущее состояние плюс цель менеджера в конкретные торговые действия (размер и направление позиции). Получает внутренние вознаграждения за прогресс к цели.
  4. FeudalNetwork: Объединяет менеджера и работника в согласованную феодальную архитектуру. Менеджер задаёт векторы направления в обученном пространстве целей; работник следует им.
  5. HierarchicalAgent: Агент верхнего уровня, который оркестрирует обучение и вывод на обоих уровнях.
  6. BybitClient: Получает данные OHLCV свечей из публичного API Bybit v5 для бэктестинга.

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

  • Цель менеджера — 4-мерный вектор, представляющий целевые характеристики портфеля (направление, величина, допуск волатильности, временной горизонт).
  • Внутреннее вознаграждение использует косинусное сходство между переходом состояния и вектором цели.
  • Обе политики используют простые линейные слои с активацией ReLU для переносимости и скорости.

См. rust/examples/trading_example.rs для полной демонстрации, которая получает данные BTCUSDT с Bybit, обучает иерархического агента и сравнивает его с плоским (одноуровневым) базовым RL-агентом.

Интеграция с данными Bybit

Реализация подключается к публичному API Bybit v5:

GET https://api.bybit.com/v5/market/kline?category=linear&symbol=BTCUSDT&interval=60&limit=200

Ответ предоставляет OHLCV свечи, которые преобразуются в векторы признаков:

  • Доходности (логарифмические доходности close-to-close)
  • Волатильность (скользящее стандартное отклонение доходностей)
  • Моментум (сигнал пересечения скользящих средних)
  • Коэффициент объёма (текущий vs. средний объём)

Эти признаки питают как менеджера (агрегированные по более длинным окнам), так и работника (на каждом шаге). Для публичных эндпоинтов рыночных данных аутентификация не требуется.

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

  1. Иерархическое RL естественно соответствует многомасштабной структуре финансовых рынков. Стратегические решения (режим, распределение) работают на других частотах, чем решения по исполнению (размещение ордеров, определение размера).

  2. Фреймворк опций обеспечивает формальную основу. Опции расширяют MDP временно расширенными действиями, позволяя принципиальное обучение тому, когда инициировать и завершать торговые стратегии.

  3. Феодальные сети разделяют постановку целей и их достижение. Менеджер задаёт направленные цели; работник учится их достигать. Это разделение позволяет независимо улучшать каждый компонент.

  4. Внутренние вознаграждения решают проблему разреженных вознаграждений. Вместо ожидания P&L в конце эпизода работники получают непрерывную обратную связь о прогрессе к цели через косинусное сходство.

  5. HAC с ретроспективным обучением ускоряет тренировку. Переходы с ретроспективным действием и целью позволяют каждой траектории давать полезный тренировочный сигнал, даже когда нижние уровни исполняют субоптимально.

  6. Иерархия улучшает интерпретируемость. Решения менеджера (“переключиться на медвежий режим”) читаемы человеком, что делает систему проще для мониторинга и отладки в продакшене.

  7. Реализация на Rust обеспечивает развёртывание с низкой задержкой. Абстракции с нулевой стоимостью и отсутствие сборщика мусора делают Rust идеальным для иерархического принятия решений в реальном времени в торговых системах.

Ссылки

  • Sutton, R.S., Precup, D., & Singh, S. (1999). Between MDPs and semi-MDPs: A framework for temporal abstraction in reinforcement learning.
  • Dayan, P., & Hinton, G.E. (1993). Feudal reinforcement learning.
  • Vezhnevets, A.S. et al. (2017). FeUdal Networks for Hierarchical Reinforcement Learning.
  • Levy, A., Konidaris, G., Platt, R., & Saenko, K. (2019). Learning Multi-Level Hierarchies with Hindsight.
  • Nachum, O. et al. (2018). Data-Efficient Hierarchical Reinforcement Learning.
  • Kulkarni, T.D. et al. (2016). Hierarchical Deep Reinforcement Learning: Integrating Temporal Abstraction and Intrinsic Motivation.