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

Глава 291: Торговля портфелем с использованием TD3

Введение в Twin Delayed Deep Deterministic Policy Gradient (TD3)

Глубокое обучение с подкреплением добилось значительных успехов в решении задач непрерывного управления, и управление портфелем является одним из наиболее естественных применений. Среди семейства алгоритмов «актор-критик» Deep Deterministic Policy Gradient (DDPG) был одним из первых методов, эффективно работающих с непрерывными пространствами действий. Однако DDPG страдает от хорошо известной проблемы: смещение переоценки Q-функции, что приводит к неоптимальным и часто нестабильным стратегиям.

Twin Delayed Deep Deterministic Policy Gradient (TD3), предложенный Фудзимото, Хуфом и Мегером в 2018 году, решает основные слабости DDPG с помощью трёх критических модификаций:

  1. Обрезанное двойное Q-обучение (двойные критики) — поддержка двух независимых сетей-критиков и использование минимума их оценок Q-значений для борьбы с переоценкой.
  2. Отложенные обновления политики — обновление сети-актора (политики) реже, чем сетей-критиков, что позволяет критику стабилизироваться перед тем, как направлять актора.
  3. Сглаживание целевой политики — добавление обрезанного шума к целевому действию, используемому в резервном копировании Беллмана, регуляризируя функцию ценности и предотвращая эксплуатацию узких пиков в ландшафте Q-функции.

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


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

Обзор фреймворка «актор-критик»

В методах «актор-критик» актор $\mu_\theta(s)$ — это детерминированная политика, отображающая состояния $s$ в действия $a$, а критик $Q_\phi(s, a)$ оценивает ожидаемое кумулятивное вознаграждение за выполнение действия $a$ в состоянии $s$ и следование политике далее.

Цель актора — максимизировать ожидаемое Q-значение:

$$J(\theta) = \mathbb{E}{s \sim \mathcal{D}} \left[ Q\phi(s, \mu_\theta(s)) \right]$$

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

$$\mathcal{L}(\phi) = \mathbb{E}{(s, a, r, s’) \sim \mathcal{D}} \left[ \left( Q\phi(s, a) - y \right)^2 \right]$$

где $y = r + \gamma Q_{\phi’}(s’, \mu_{\theta’}(s’))$ — целевое значение, а $\phi’$, $\theta’$ — параметры целевых сетей.

Двойные критики: обрезанное двойное Q-обучение

Ключевое наблюдение TD3 заключается в том, что ошибки аппроксимации функции в критике приводят к переоценке Q-значений. Это аналогично смещению максимизации в Q-обучении. Для смягчения этого TD3 поддерживает две независимые сети-критика, $Q_{\phi_1}$ и $Q_{\phi_2}$, и вычисляет целевое значение с использованием минимума:

$$y = r + \gamma \min_{i=1,2} Q_{\phi’_i}(s’, \tilde{a}’)$$

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

$$\mathcal{L}(\phi_i) = \mathbb{E}{(s, a, r, s’) \sim \mathcal{D}} \left[ \left( Q{\phi_i}(s, a) - y \right)^2 \right], \quad i = 1, 2$$

Сглаживание целевой политики

Вместо использования необработанного действия целевой политики $\mu_{\theta’}(s’)$, TD3 добавляет обрезанный гауссовский шум:

$$\tilde{a}’ = \mu_{\theta’}(s’) + \text{clip}(\epsilon, -c, c), \quad \epsilon \sim \mathcal{N}(0, \sigma^2)$$

где $\sigma$ — стандартное отклонение сглаживающего шума, а $c$ — граница обрезки. Это приводит к сглаживанию Q-функции по похожим действиям, предотвращая эксплуатацию узких ненадёжных пиков в изученном ландшафте ценности.

Отложенные обновления политики

В DDPG актор и критик обновляются на каждом шаге. TD3 вводит задержку: актор обновляется только раз в $d$ обновлений критика (обычно $d = 2$). Целевые сети также обновляются по этому же отложенному расписанию:

$$\phi’_i \leftarrow \tau \phi_i + (1 - \tau) \phi’_i, \quad \theta’ \leftarrow \tau \theta + (1 - \tau) \theta’$$

Обоснование в том, что критику нужно время для сходимости, прежде чем актор должен менять своё поведение на основе указаний критика.

Полный алгоритм обновления TD3

Для каждого шага обучения t:
Выбрать батч (s, a, r, s') из буфера воспроизведения D
# Целевое действие со сглаживанием
a_tilde = mu_theta'(s') + clip(N(0, sigma), -c, c)
a_tilde = clip(a_tilde, a_low, a_high)
# Обрезанная двойная Q-цель
y = r + gamma * min(Q_phi1'(s', a_tilde), Q_phi2'(s', a_tilde))
# Обновление обоих критиков
Обновить phi1 минимизируя (Q_phi1(s, a) - y)^2
Обновить phi2 минимизируя (Q_phi2(s, a) - y)^2
# Отложенное обновление политики
если t mod d == 0:
Обновить theta максимизируя Q_phi1(s, mu_theta(s))
Мягкое обновление целевых сетей

Почему TD3 решает проблемы DDPG для волатильных крипторынков

Проблема переоценки на финансовых рынках

Криптовалютные рынки печально известны своей волатильностью. Цены могут колебаться на 10-20% за один день, создавая зашумлённый сигнал вознаграждения. Когда единственный критик DDPG переоценивает Q-значения, актор учится занимать чрезмерно агрессивные позиции, полагая, что они более прибыльны, чем на самом деле. Это катастрофично для криптоторговли:

  1. Ложная уверенность в рискованных позициях: Переоценённые Q-значения заставляют агента думать, что позиции с высоким левериджем или концентрированные позиции безопаснее, чем есть.
  2. Погоня за фантомной альфой: Актор оптимизируется по завышенному ландшафту ценности, что приводит к стратегиям, которые хорошо выглядят на обучении, но проваливаются на реальном рынке.
  3. Нестабильность обучения: На волатильных рынках ошибки единственного критика накапливаются, приводя к осциллирующим политикам, которые никогда не сходятся.

Как три механизма TD3 помогают

Двойные критики обеспечивают консервативную оценку ценности действий. В контексте портфеля с BTC и ETH, если один критик считает, что 80% BTC стоит $Q = 5.0$, а другой — $Q = 3.2$, TD3 использует $3.2$. Это предотвращает чрезмерное вложение в позиции на основе оптимистичных ошибок.

Отложенные обновления политики особенно ценны на финансовых рынках с низким соотношением сигнал-шум. Давая критику больше обновлений для обработки рыночных данных перед изменением стратегии распределения портфеля, TD3 производит более плавные и обдуманные решения о ребалансировке. Это также снижает транзакционные издержки, поскольку политика меняется реже.

Сглаживание целевой политики предотвращает эксплуатацию агентом ложных пиков в Q-ландшафте. На финансовых рынках могут существовать узкие области пространства весов, где Q-функция искусственно завышена из-за подгонки под шум. Сглаживая цель, TD3 отдаёт предпочтение робастным распределениям, которые работают хорошо для ряда близких конфигураций весов.

Эмпирические наблюдения

На практике агенты TD3 для торговли криптопортфелем обычно:

  • Производят более стабильные траектории весов портфеля
  • Достигают меньшей максимальной просадки по сравнению с DDPG
  • Показывают оценки Q-значений, более близкие к реализованной доходности
  • Требуют меньше итераций настройки гиперпараметров

Применения: непрерывная ребалансировка портфеля

Формулировка задачи

Мы моделируем ребалансировку портфеля как марковский процесс принятия решений (MDP):

  • Состояние $s_t$: Вектор признаков, содержащий недавние доходности цен, скользящие волатильности, данные об объёмах и текущие веса портфеля для $N$ активов.
  • Действие $a_t$: Вектор целевых весов портфеля $w \in \mathbb{R}^N$, где $w_i \in [0, 1]$ и $\sum_i w_i = 1$. Ограничение симплекса обеспечивается нормализацией softmax выхода актора.
  • Вознаграждение $r_t$: Логарифмическая доходность портфеля минус штраф за транзакционные издержки:

$$r_t = \log\left(\sum_{i=1}^{N} w_{t,i} \cdot \frac{p_{t+1,i}}{p_{t,i}}\right) - \lambda \sum_{i=1}^{N} |w_{t,i} - w_{t-1,i}|$$

где $\lambda$ — коэффициент транзакционных издержек.

Многоактивные аспекты

Для портфеля с $N$ активами пространство действий $N$-мерное и непрерывное. TD3 обрабатывает это естественно, поскольку алгоритмы семейства DDPG предназначены для непрерывных пространств действий.

Почему не дискретные действия?

Традиционные подходы на основе DQN дискретизируют пространство весов. Для $N$ активов с $K$ уровнями дискретизации пространство действий растёт как $K^N$. С 5 активами и 20 уровнями весов это $20^5 = 3.2$ миллиона действий. TD3 полностью избегает этого комбинаторного взрыва.


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

Наша реализация на Rust предоставляет:

  • Actor: Простая сеть прямого распространения, производящая детерминированные веса портфеля через softmax.
  • TwinCritic: Две независимые сети-критика, каждая отображающая (состояние, действие) в скалярное Q-значение.
  • TD3Agent: Оркестрирует обучение с обрезанными двойными Q-целями, отложенными обновлениями политики и сглаживанием целевой политики.
  • ReplayBuffer: Хранилище опыта с равномерной случайной выборкой.
  • BybitClient: Получает исторические данные kline из публичного API Bybit.

Реализация использует ndarray для тензорных операций и избегает тяжёлых зависимостей ML-фреймворков для прозрачности и образовательной ценности.


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

Реализация получает данные OHLCV kline из публичного REST API Bybit (/v5/market/kline). Мы извлекаем данные для нескольких торговых пар (например, BTCUSDT, ETHUSDT) и вычисляем:

  • Логарифмические доходности: $r_t = \log(p_t / p_{t-1})$
  • Скользящую волатильность по настраиваемым окнам
  • Признаки, взвешенные по объёму

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

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

  2. Смещение переоценки опасно в финансах: В отличие от игровых сред, где переоценка приводит к неоптимальной игре, в торговле она приводит к реальной потере капитала.

  3. Непрерывные пространства действий подходят для управления портфелем: TD3 нативно обрабатывает задачу непрерывного распределения весов портфеля без дискретизации.

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

  5. Сглаживание цели улучшает робастность: Сглаживание целевой политики предотвращает переобучение на шуме Q-функции.

  6. Rust обеспечивает производительность и безопасность: Реализация демонстрирует, что TD3 может быть эффективно построен на Rust с явными тензорными операциями.

  7. Начинайте просто, добавляйте сложность: Модульный дизайн позволяет начать с портфеля из двух активов (BTC + ETH) и масштабировать к большему количеству активов.


Ссылки

  • Fujimoto, S., Hoof, H., & Meger, D. (2018). Addressing Function Approximation Error in Actor-Critic Methods. ICML.
  • Lillicrap, T. P., et al. (2016). Continuous control with deep reinforcement learning. ICLR.
  • Jiang, Z., Xu, D., & Liang, J. (2017). A Deep Reinforcement Learning Framework for the Financial Portfolio Management Problem. arXiv.
  • Silver, D., et al. (2014). Deterministic Policy Gradient Algorithms. ICML.