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

Глава 304: MuZero для трейдинга

Введение: MuZero - планирование без модели правил среды

MuZero, представленный Schrittwieser и др. (2020) в DeepMind, является выдающимся достижением в области искусственного интеллекта: агент, который осваивает сложные игры и задачи принятия решений, никогда не получая правил среды. В отличие от предшественников AlphaGo и AlphaZero, которым требовался идеальный симулятор игры для планирования наперёд, MuZero обучает собственную внутреннюю модель динамики среды и использует эту обученную модель для планирования через поиск по дереву Монте-Карло (MCTS).

Это различие имеет огромное значение для торговых приложений. Финансовые рынки не имеют известных фиксированных правил. “Динамика” рынка является эмерджентной, нестационарной и частично наблюдаемой. Традиционное модельное обучение с подкреплением испытывает трудности, потому что построить точную прямую модель поведения рынка чрезвычайно сложно. Безмодельные методы (DQN, PPO, A2C) обходят эту проблему, но жертвуют способностью планировать наперёд. MuZero предлагает средний путь: он обучает латентную модель динамики, которая фиксирует аспекты среды, релевантные для принятия решений, без необходимости восстанавливать полное пространство наблюдений.

В контексте алгоритмического трейдинга архитектура MuZero позволяет агенту:

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

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

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

Базовая архитектура

Архитектура MuZero состоит из трёх нейронных сетей, работающих вместе:

1. Функция представления h

Функция представления отображает сырое наблюдение (состояние рынка) в начальное скрытое состояние:

s_0 = h_theta(o_1, ..., o_t)

Где o_1, ..., o_t — последовательность прошлых наблюдений (например, последние T свечей с объёмом, спредом и техническими индикаторами). Скрытое состояние s_0 — это обученное компактное представление, которое не обязано быть интерпретируемым или соответствовать какой-либо физической величине.

Для трейдинга наблюдение может быть вектором, содержащим:

  • Данные OHLCV за последние N свечей
  • Текущую позицию портфеля (длинная, короткая, нейтральная)
  • Нереализованную прибыль/убыток
  • Технические индикаторы (RSI, MACD, полосы Боллинджера)
  • Дисбаланс книги ордеров

2. Функция динамики g

Функция динамики предсказывает следующее скрытое состояние и немедленную награду по данному скрытому состоянию и действию:

r_k, s_k = g_theta(s_{k-1}, a_k)

Это обученная “модель мира”. По текущему латентному состоянию и торговому действию (покупка, продажа, удержание или параметризованные размеры ордеров) она предсказывает, как будет выглядеть следующее латентное состояние и какая немедленная награда (изменение P&L, доходность с учётом риска) будет получена.

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

3. Функция предсказания f

Функция предсказания отображает скрытое состояние в стратегию и ценность:

p_k, v_k = f_theta(s_k)

Где:

  • p_k — распределение вероятностей по действиям (априорная стратегия)
  • v_k — оценка ценности (ожидаемый будущий дисконтированный доход) из состояния s_k

Эти выходы служат двум целям:

  1. Априорная стратегия направляет MCTS к исследованию перспективных действий в первую очередь.
  2. Оценка ценности обеспечивает бутстреп для узлов, которые не были полностью раскрыты.

Поиск по дереву Монте-Карло с обученной моделью

MCTS MuZero работает следующим образом для каждого шага принятия решений:

Выбор: Начиная от корня (текущее реальное состояние), обходим дерево, выбирая действия, максимизирующие формулу PUCT:

a_k = argmax_a [ Q(s, a) + c(s) * P(s, a) * (sqrt(N(s)) / (1 + N(s, a))) ]

Где:

  • Q(s, a) — средняя ценность действия a из состояния s
  • P(s, a) — априорная вероятность из сети предсказания
  • N(s) — количество посещений состояния s
  • N(s, a) — количество посещений действия a из состояния s
  • c(s) — константа исследования, адаптирующаяся на основе количества посещений

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

Обратное распространение: Значения ценности распространяются обратно вверх по дереву, обновляя Q-значения и количества посещений.

После фиксированного числа симуляций (например, 50-200) выбирается действие в корне пропорционально количеству посещений.

Целевая функция обучения

MuZero обучается сквозным образом путём разворачивания модели на K шагов и минимизации комбинированной функции потерь:

L = sum_{k=0}^{K} [ l_p(pi_t+k, p_k) + l_v(z_t+k, v_k) + l_r(u_t+k, r_k) ] + c * ||theta||^2

Где:

  • l_p — кросс-энтропийная потеря между улучшенной MCTS стратегией pi и предсказанной стратегией p
  • l_v — MSE или кросс-энтропийная потеря между фактическими доходами z и предсказанными ценностями v
  • l_r — MSE потеря между фактическими наградами u и предсказанными наградами r
  • c * ||theta||^2 — L2-регуляризация

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

Масштабирование ценности и награды

Для доменов с большим диапазоном ценностей (как P&L в торговле) MuZero использует обратимое преобразование для масштабирования целей:

h(x) = sign(x) * (sqrt(|x| + 1) - 1) + epsilon * x

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

Сравнение с AlphaZero и безмодельным RL

AlphaZero vs. MuZero

ХарактеристикаAlphaZeroMuZero
Модель средыЗадана (идеальный симулятор)Обученная
Пространство наблюденийПолное состояние игрыПроизвольные наблюдения
ПланированиеMCTS с истинной динамикойMCTS с обученной динамикой
Применимость к трейдингуНет (нет идеального симулятора рынка)Да
Обучающие данныеСамоигра с симуляторомРеальные траектории + реанализ

AlphaZero требует идеальный симулятор для планирования — он вызывает реальный игровой движок во время MCTS. Это невозможно для трейдинга, так как мы не можем идеально симулировать рынок. MuZero полностью устраняет это требование.

Безмодельное RL (DQN, PPO) vs. MuZero

ХарактеристикаБезмодельное RLMuZero
ПланированиеОтсутствует (реактивное)Многошаговый просмотр вперёд
Эффективность выборкиНизкаяВыше (повторное использование данных через планирование)
Вычислительная стоимостьНизкая при выводеВыше (MCTS на каждом шаге)
Адаптация к смене режимовТребует переобученияМожет планировать через новые состояния
РобастностьМожет переобучиться на паттерныРегуляризуется планированием

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

Когда MuZero превосходит в трейдинге

  1. Многошаговое принятие решений: Когда оптимальное действие зависит от плана (например, постепенное наращивание позиции в несколько этапов).
  2. Переходы между режимами: Обученная модель динамики может фиксировать различные рыночные режимы в латентном пространстве.
  3. Управление рисками: Планирование наперёд позволяет агенту оценить наихудшие сценарии перед совершением сделки.
  4. Разреженные награды: Когда P&L реализуется только при закрытии позиции, MCTS с оценками ценности помогает в распределении вклада.

Приложения: трейдинг как игра

Формулировка трейдинга как последовательной задачи принятия решений

Мы моделируем трейдинг как однопользовательскую игру против рынка:

  • Состояние: Рыночные наблюдения (OHLCV, индикаторы, статус портфеля)
  • Действия: Дискретные действия {Сильная покупка, Покупка, Удержание, Продажа, Сильная продажа} или непрерывное определение размера позиции
  • Награда: Доходность с учётом риска (награда типа Шарпа), реализованная P&L или комбинация
  • Переходы: Определяются фактическим движением рынка + влиянием наших действий на рынок
  • Горизонт: Фиксированный (например, одна торговая сессия) или неопределённый с дисконтированием

Обученная модель динамики рынка

Сеть динамики обучает неявную модель того, как рынок эволюционирует в ответ на наши действия. Важные свойства:

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

Построение портфеля с MuZero

MCTS MuZero естественным образом обрабатывает последовательную природу построения портфеля:

  1. На каждом временном шаге агент наблюдает состояние рынка.
  2. MCTS запускает N симуляций, используя обученную модель для оценки различных последовательностей действий.
  3. Лучшее действие выбирается на основе количества посещений.
  4. Реальная среда продвигается на один шаг, и процесс повторяется.

Горизонт планирования MCTS (определяемый количеством симуляций и глубиной дерева) эффективно позволяет агенту учитывать многошаговые последствия текущего действия.

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

Наша реализация на Rust предоставляет полную систему MuZero для трейдинга:

Обзор архитектуры

muzero_trading/
rust/
src/
lib.rs # Ядро MuZero: сети, MCTS, обучение, API Bybit
examples/
trading_example.rs # Сквозной торговый пример
Cargo.toml

Ключевые компоненты

  1. RepresentationNet: Преобразует сырые рыночные наблюдения в скрытые состояния с помощью многослойной нейронной сети с активацией ReLU.

  2. DynamicsNet: Принимает скрытое состояние, конкатенированное с one-hot кодированием действия, и производит следующее скрытое состояние плюс скалярную оценку награды.

  3. PredictionNet: Отображает скрытые состояния в вероятности действий (через softmax) и оценки ценности (через масштабирование tanh).

  4. MCTS: Реализует полный цикл MCTS — выбор с PUCT, расширение с использованием обученной динамики и обратное распространение ценностей.

  5. Обучение: Разворачивает модель на K шагов из выбранных траекторий, вычисляет комбинированную потерю стратегии + ценности + награды и обновляет параметры через градиентный спуск.

  6. Интеграция Bybit: Получает реальные данные OHLCV из публичного API Bybit для BTCUSDT и других торговых пар.

Использование

Окно терминала
cd 304_muzero_trading/rust
cargo build
cargo run --example trading_example
cargo test

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

Реализация включает полный клиент API Bybit для получения исторических данных свечей (kline):

let candles = fetch_bybit_klines("BTCUSDT", "15", 200).await?;

Параметры:

  • symbol: Торговая пара (например, “BTCUSDT”, “ETHUSDT”)
  • interval: Интервал свечей (“1”, “5”, “15”, “60”, “240”, “D”)
  • limit: Количество свечей (макс. 200)

API возвращает данные OHLCV, которые предобрабатываются в векторы наблюдений для сети представления. Предобработка включает:

  • Преобразование цен в лог-доходность
  • Нормализацию объёма
  • Создание скользящего окна для временного контекста

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

  1. MuZero учится планировать, не зная правил: В отличие от AlphaZero, MuZero не требует идеального симулятора среды, что делает его применимым к таким областям, как трейдинг, где такого симулятора не существует.

  2. Обученная модель работает в латентном пространстве: Модель динамики MuZero не предсказывает будущие цены — она предсказывает будущие релевантные для планирования скрытые состояния. Это делает задачу моделирования более управляемой.

  3. MCTS обеспечивает планирование наперёд: Моделируя будущие траектории в обученной модели, MuZero может оценивать многошаговые последствия торговых действий перед их совершением.

  4. Три сети, одна цель: Сети представления, динамики и предсказания обучаются сквозным образом, чтобы быть полезными для планирования, а не для восстановления наблюдений.

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

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

  7. Практические соображения: Вычислительная стоимость MuZero при выводе (запуск MCTS) выше, чем у безмодельных методов. Для высокочастотной торговли это может быть непозволительно. Для стратегий с более низкой частотой (от 15 минут до дневных) накладные расходы на планирование приемлемы и потенциально полезны.

  8. Rust для продакшена: Реализация на Rust обеспечивает безопасность памяти и производительность, критичные для продакшен-торговых систем, с абстракциями нулевой стоимости для эффективных операций с деревом MCTS.

Ссылки

  • Schrittwieser, J., et al. (2020). “Mastering Atari, Go, Chess and Shogi by Planning with a Learned Model.” Nature, 588, 604-609.
  • Silver, D., et al. (2018). “A General Reinforcement Learning Algorithm that Masters Chess, Shogi, and Go Through Self-Play.” Science, 362(6419), 1140-1144.
  • Ye, W., et al. (2021). “Mastering Atari Games with Limited Data.” NeurIPS.
  • Hubert, T., et al. (2021). “Learning and Planning in Complex Action Spaces.” ICML.