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

Глава 294: A2C (Advantage Actor-Critic) для трейдинга

1. Введение

Advantage Actor-Critic (A2C) --- это фундаментальный алгоритм обучения с подкреплением на основе градиента политики, который объединяет две взаимодополняющие идеи: актёр (actor), обучающий стохастическую политику выбора действий, и критик (critic), оценивающий функцию ценности для снижения дисперсии обновлений градиента политики. В контексте алгоритмического трейдинга A2C предоставляет математически обоснованную основу для обучения последовательному принятию решений о покупке, удержании или продаже путём прямой оптимизации ожидаемой кумулятивной доходности при сохранении стабильной динамики обучения.

Традиционные методы градиента политики, такие как REINFORCE, страдают от высокой дисперсии оценок градиента, поскольку полагаются исключительно на выборочные доходности для оценки действий. Вычитая обученный базовый уровень (функцию ценности) из наблюдаемых доходностей, A2C вычисляет преимущество (advantage) каждого действия --- меру того, насколько лучше или хуже действие по сравнению с ожидаемым результатом в данном состоянии. Эта простая модификация значительно снижает дисперсию без внесения смещения, что приводит к более быстрой и стабильной сходимости.

A2C получил известность как синхронный вариант A3C (Asynchronous Advantage Actor-Critic), представленного Mnih et al. (2016). В то время как A3C использует множество асинхронных воркеров, обновляющих общую модель, A2C синхронизирует всех воркеров, собирая батчи опыта перед выполнением единого обновления градиента. Исследования показали, что A2C достигает сопоставимой или лучшей производительности по сравнению с A3C при правильной настройке, с более простой реализацией и воспроизводимыми результатами.

В торговых приложениях A2C превосходно справляется с обучением политик как для направленной торговли одним активом, так и для распределения многоактивного портфеля. Непрерывное взаимодействие между актёром (принимающим решения о позициях) и критиком (оценивающим рыночные состояния) отражает интуицию трейдера, который одновременно действует на основе рыночных сигналов и поддерживает ментальную модель ожидаемых результатов. Эта глава представляет комплексное рассмотрение A2C для трейдинга, включая математические основы, архитектурный дизайн и полную реализацию на Rust с интеграцией API биржи Bybit.

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

2.1 Фреймворк «Актёр-Критик»

Мы моделируем трейдинг как марковский процесс принятия решений (MDP), определяемый кортежем $(S, A, P, R, \gamma)$:

  • Пространство состояний $S$: Рыночные признаки, включая ценовые доходности, объём, технические индикаторы и состояние портфеля.
  • Пространство действий $A$: Дискретные торговые решения ${0: \text{Удержание}, 1: \text{Покупка}, 2: \text{Продажа}}$.
  • Динамика переходов $P(s’|s,a)$: Эволюция рынка (неизвестна агенту).
  • Функция вознаграждения $R(s,a,s’)$: Торговая прибыль/убыток, доходность с поправкой на риск.
  • Коэффициент дисконтирования $\gamma \in [0,1]$: Определяет горизонт будущих вознаграждений, учитываемых агентом.

Актёр --- это параметризованная политика $\pi_\theta(a|s)$, отображающая состояния в вероятности действий. Критик --- это функция ценности $V_\phi(s)$, оценивающая ожидаемую дисконтированную доходность из состояния $s$:

$$V_\phi(s) = \mathbb{E}{\pi\theta}\left[\sum_{t=0}^{\infty} \gamma^t r_t \mid s_0 = s\right]$$

2.2 Функция преимущества

Функция преимущества измеряет, насколько лучше действие $a$ по сравнению со средним действием при текущей политике:

$$A(s, a) = Q(s, a) - V(s)$$

где $Q(s, a)$ --- функция ценности действия. Поскольку у нас нет доступа к истинной функции $Q$, мы оцениваем преимущество с помощью остатков временной разности (TD):

$$\hat{A}t = r_t + \gamma V\phi(s_{t+1}) - V_\phi(s_t)$$

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

2.3 Обобщённая оценка преимущества (GAE)

Для более точных оценок преимущества используется GAE (Schulman et al., 2016), которая интерполирует между оценками с высоким смещением (одношаговый TD) и высокой дисперсией (Монте-Карло):

$$\hat{A}t^{GAE(\gamma,\lambda)} = \sum{l=0}^{T-t-1} (\gamma\lambda)^l \delta_{t+l}$$

где $\delta_t = r_t + \gamma V_\phi(s_{t+1}) - V_\phi(s_t)$ --- ошибка TD, а $\lambda \in [0,1]$ управляет компромиссом между смещением и дисперсией. При $\lambda = 0$ GAE сводится к одношаговому TD; при $\lambda = 1$ --- к доходностям Монте-Карло с базовым уровнем.

2.4 Градиент политики с базовым уровнем

Градиент политики A2C:

$$\nabla_\theta J(\theta) = \mathbb{E}{\pi\theta}\left[\nabla_\theta \log \pi_\theta(a_t|s_t) \cdot \hat{A}_t\right]$$

Критик обучается минимизировать ошибку предсказания ценности:

$$L_{\text{critic}}(\phi) = \mathbb{E}\left[\left(V_\phi(s_t) - R_t^{\text{target}}\right)^2\right]$$

где $R_t^{\text{target}} = \hat{A}t + V\phi(s_t)$ --- бутстрэп-целевая доходность.

2.5 Энтропийная регуляризация

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

$$H(\pi_\theta(\cdot|s)) = -\sum_a \pi_\theta(a|s) \log \pi_\theta(a|s)$$

Общая функция потерь:

$$L = -L_{\text{actor}} + c_1 L_{\text{critic}} - c_2 H(\pi)$$

где $c_1$ --- коэффициент потерь ценности (обычно 0.5), а $c_2$ --- коэффициент энтропии (обычно 0.01—0.05). Энтропийный член поощряет исследование, что особенно важно на финансовых рынках, где режимы меняются и оптимальная стратегия изменяется со временем.

3. Синхронный vs. асинхронный: A2C vs. A3C

3.1 A3C: Асинхронный Advantage Actor-Critic

A3C (Mnih et al., 2016) представил идею запуска множества агентов параллельно в отдельных копиях среды. Каждый воркер независимо собирает опыт и асинхронно отправляет обновления градиента в общую глобальную модель. Асинхронность естественным образом декоррелирует обучающие данные, устраняя необходимость в буфере воспроизведения опыта.

3.2 Почему A2C предпочтительнее

A2C упрощает A3C, синхронизируя всех воркеров. Все воркеры одновременно собирают батч опыта, затем градиенты усредняются и применяется единое обновление. Ключевые преимущества:

  1. Воспроизводимость: Детерминированная агрегация градиентов делает результаты воспроизводимыми --- критично для финансовых приложений, где важна аудируемость.
  2. Эффективность GPU: Единое большое батч-обновление лучше использует параллелизм GPU, чем множество мелких асинхронных обновлений.
  3. Равная производительность: Эмпирические исследования (Wu et al., 2017) показали, что A2C соответствует или превосходит производительность A3C при использовании одинакового объёма данных.
  4. Простота реализации: Нет блокировок, нет гонок, нет устаревших градиентов --- код прост и понятен.

3.3 Особенности для трейдинга

В трейдинге синхронный дизайн A2C имеет дополнительные преимущества:

  • Консистентность рыночного состояния: Все воркеры наблюдают одинаковые рыночные условия, предотвращая конфликтующие сигналы градиента из разных рыночных режимов.
  • Батч-нормализация: Синхронные батчи позволяют правильно нормализовать признаки по батчу --- важно для обработки нестационарности финансовых данных.
  • Контроль рисков: Единое синхронизированное обновление упрощает реализацию ограничений на риск и размер позиции.

4. Применение в трейдинге

4.1 Торговля одним активом

Для направленной торговли одним активом (например, BTC/USDT) агент A2C наблюдает окно недавних рыночных признаков и выдаёт распределение вероятностей над ${\text{Удержание}, \text{Покупка}, \text{Продажа}}$. Состояние обычно включает:

  • Нормализованные ценовые доходности на разных горизонтах (1-бар, 5-бар, 20-бар)
  • Коэффициенты объёма и индикаторы моментума
  • Текущую позицию портфеля (нейтральная, длинная, короткая)
  • Нереализованную прибыль/убыток текущей позиции

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

4.2 Управление портфелем

Для многоактивных портфелей пространство действий становится вектором весов распределения $w = (w_1, w_2, \ldots, w_n)$ с ограничениями $\sum_i w_i = 1, w_i \geq 0$. Головка политики выдаёт распределение Дирихле или использует softmax по активам. A2C естественно справляется с этим:

  • Разделение признаков между активами через общий бэкбон
  • Неявное обучение корреляциям между активами через общего критика
  • Динамическая корректировка аллокаций при изменении рыночных условий

4.3 Преимущества перед методами на основе ценности

В отличие от методов на основе DQN, которые дискретизируют действия и с трудом работают с непрерывными весами портфеля, A2C:

  • Непосредственно параметризует политику, допуская гладкие распределения действий
  • Естественно обрабатывает стохастические политики, что полезно в состязательных рыночных условиях
  • Предоставляет явный механизм исследования через энтропийную регуляризацию
  • Лучше масштабируется на большие пространства действий (много активов)

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

Наша реализация на Rust предоставляет высокопроизводительный торговый агент A2C со следующей архитектурой:

5.1 Архитектура сети

Общий бэкбон --- это многослойная полносвязная сеть, извлекающая признаки из сырого рыночного состояния. Две отдельные головки ответвляются от этого бэкбона:

  • Головка политики: Выдаёт логиты действий, пропущенные через softmax для получения $\pi_\theta(a|s)$.
  • Головка ценности: Выдаёт единственный скаляр $V_\phi(s)$.

Эта разделяемая архитектура эффективна по параметрам и позволяет функции ценности и политике извлекать пользу из общих представлений признаков.

5.2 Цикл обучения

Каждая итерация обучения:

  1. Сбор роллаута длиной $T$ шагов с использованием текущей политики.
  2. Вычисление доходностей и преимуществ с помощью GAE.
  3. Вычисление потерь актёра (градиент политики, взвешенный преимуществами).
  4. Вычисление потерь критика (MSE между предсказанными ценностями и целевыми доходностями).
  5. Вычисление энтропийного бонуса.
  6. Комбинирование потерь и выполнение градиентного спуска.

5.3 Интеграция с Bybit

Реализация получает исторические данные свечей (kline) через публичный REST API Bybit. Эти данные преобразуются в нормализованные признаки, подходящие для агента A2C. Интеграция поддерживает:

  • Настраиваемые торговые пары и таймфреймы
  • Автоматическое вычисление признаков (доходности, коэффициенты объёма, скользящие средние)
  • Реалистичное моделирование с настраиваемыми транзакционными издержками

5.4 Ключевые детали реализации

  • Нормализация признаков: Все входные признаки нормализуются z-score с использованием скользящей статистики для обработки нестационарных рыночных данных.
  • Обрезка градиентов: Градиенты обрезаются по глобальной норме для предотвращения дестабилизирующих обновлений в периоды волатильного рынка.
  • Планирование скорости обучения: Скорость обучения линейно убывает на протяжении обучения для обеспечения сходимости.
  • Воспроизводимость: Генераторы случайных чисел с фиксированным seed обеспечивают детерминированное поведение для валидации бэктестинга.

6. Интеграция данных Bybit

REST API Bybit предоставляет исторические рыночные данные через эндпоинт /v5/market/kline. Наша реализация:

  1. Получает данные OHLCV: Open, High, Low, Close, Volume для указанных торговых пар.
  2. Вычисляет признаки: Логарифмические доходности, нормализованный объём, приближения RSI и пересечения скользящих средних.
  3. Конструирует состояния: Скользящие окна признаков, объединённые с состоянием портфеля (позиция, нереализованная прибыль/убыток).
  4. Моделирует торговлю: Реалистичная торговая среда применяет рыночные ордера по ценам закрытия с настраиваемым проскальзыванием и комиссиями.

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

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

  1. A2C сочетает оптимизацию политики с оценкой ценности, используя функцию преимущества $A(s,a) = Q(s,a) - V(s)$ для снижения дисперсии обновлений градиента политики без внесения смещения.

  2. Синхронный дизайн A2C предпочтительнее A3C для торговых приложений благодаря лучшей воспроизводимости, более простой реализации и эквивалентной производительности.

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

  4. GAE обеспечивает гибкое управление компромиссом смещение-дисперсия через параметр $\lambda$. Для трейдинга хорошо работают умеренные значения ($\lambda \approx 0.95$), балансирующие краткосрочную точность с долгосрочным распределением кредита.

  5. Архитектура с общим бэкбоном эффективна по параметрам и позволяет актёру и критику извлекать пользу из общих представлений признаков, что особенно полезно при высокой размерности рыночных признаков.

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

  7. Правильное формирование вознаграждения критически важно: Метрики с поправкой на риск (коэффициент Шарпа, коэффициент Сортино) создают более робастные политики, чем чистая прибыль/убыток. Штрафы за транзакционные издержки побуждают агента искать значимые сигналы, а не чрезмерно торговать.

  8. A2C служит сильным базовым алгоритмом для более продвинутых методов актёр-критик (PPO, SAC, TD3), что делает его необходимым строительным блоком в любом наборе инструментов RL для трейдинга.