Глава 304: MuZero для трейдинга
Введение: MuZero - планирование без модели правил среды
MuZero, представленный Schrittwieser и др. (2020) в DeepMind, является выдающимся достижением в области искусственного интеллекта: агент, который осваивает сложные игры и задачи принятия решений, никогда не получая правил среды. В отличие от предшественников AlphaGo и AlphaZero, которым требовался идеальный симулятор игры для планирования наперёд, MuZero обучает собственную внутреннюю модель динамики среды и использует эту обученную модель для планирования через поиск по дереву Монте-Карло (MCTS).
Это различие имеет огромное значение для торговых приложений. Финансовые рынки не имеют известных фиксированных правил. “Динамика” рынка является эмерджентной, нестационарной и частично наблюдаемой. Традиционное модельное обучение с подкреплением испытывает трудности, потому что построить точную прямую модель поведения рынка чрезвычайно сложно. Безмодельные методы (DQN, PPO, A2C) обходят эту проблему, но жертвуют способностью планировать наперёд. MuZero предлагает средний путь: он обучает латентную модель динамики, которая фиксирует аспекты среды, релевантные для принятия решений, без необходимости восстанавливать полное пространство наблюдений.
В контексте алгоритмического трейдинга архитектура MuZero позволяет агенту:
- Обучать сжатые представления рыночных состояний (снимки книги ордеров, данные OHLCV, технические индикаторы) через сеть представления.
- Моделировать будущие рыночные траектории в обученном латентном пространстве с помощью сети динамики, обеспечивая планирование наперёд.
- Оценивать позиции и генерировать распределения действий через сеть предсказания, которая выдаёт как оценки ценности, так и априорные вероятности стратегии.
- Планировать с помощью 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
Эти выходы служат двум целям:
- Априорная стратегия направляет MCTS к исследованию перспективных действий в первую очередь.
- Оценка ценности обеспечивает бутстреп для узлов, которые не были полностью раскрыты.
Поиск по дереву Монте-Карло с обученной моделью
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из состоянияsP(s, a)— априорная вероятность из сети предсказанияN(s)— количество посещений состоянияsN(s, a)— количество посещений действияaиз состоянияsc(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и предсказанной стратегиейpl_v— MSE или кросс-энтропийная потеря между фактическими доходамиzи предсказанными ценностямиvl_r— MSE потеря между фактическими наградамиuи предсказанными наградамиrc * ||theta||^2— L2-регуляризация
Целевые значения берутся из реального опыта торговли, хранящегося в буфере воспроизведения. Реанализ — ключевая техника, при которой старые траектории переоцениваются с текущей (улучшенной) моделью для генерации лучших обучающих целей.
Масштабирование ценности и награды
Для доменов с большим диапазоном ценностей (как P&L в торговле) MuZero использует обратимое преобразование для масштабирования целей:
h(x) = sign(x) * (sqrt(|x| + 1) - 1) + epsilon * xЭто сжимает большие значения, сохраняя знак, что облегчает задачу предсказания для нейронной сети.
Сравнение с AlphaZero и безмодельным RL
AlphaZero vs. MuZero
| Характеристика | AlphaZero | MuZero |
|---|---|---|
| Модель среды | Задана (идеальный симулятор) | Обученная |
| Пространство наблюдений | Полное состояние игры | Произвольные наблюдения |
| Планирование | MCTS с истинной динамикой | MCTS с обученной динамикой |
| Применимость к трейдингу | Нет (нет идеального симулятора рынка) | Да |
| Обучающие данные | Самоигра с симулятором | Реальные траектории + реанализ |
AlphaZero требует идеальный симулятор для планирования — он вызывает реальный игровой движок во время MCTS. Это невозможно для трейдинга, так как мы не можем идеально симулировать рынок. MuZero полностью устраняет это требование.
Безмодельное RL (DQN, PPO) vs. MuZero
| Характеристика | Безмодельное RL | MuZero |
|---|---|---|
| Планирование | Отсутствует (реактивное) | Многошаговый просмотр вперёд |
| Эффективность выборки | Низкая | Выше (повторное использование данных через планирование) |
| Вычислительная стоимость | Низкая при выводе | Выше (MCTS на каждом шаге) |
| Адаптация к смене режимов | Требует переобучения | Может планировать через новые состояния |
| Робастность | Может переобучиться на паттерны | Регуляризуется планированием |
Безмодельные методы принимают решения исключительно на основе текущего наблюдения, без внутренней симуляции. MuZero может “думать наперёд”, моделируя будущие состояния в обученном латентном пространстве, потенциально принимая более робастные решения в сложных рыночных сценариях.
Когда MuZero превосходит в трейдинге
- Многошаговое принятие решений: Когда оптимальное действие зависит от плана (например, постепенное наращивание позиции в несколько этапов).
- Переходы между режимами: Обученная модель динамики может фиксировать различные рыночные режимы в латентном пространстве.
- Управление рисками: Планирование наперёд позволяет агенту оценить наихудшие сценарии перед совершением сделки.
- Разреженные награды: Когда P&L реализуется только при закрытии позиции, MCTS с оценками ценности помогает в распределении вклада.
Приложения: трейдинг как игра
Формулировка трейдинга как последовательной задачи принятия решений
Мы моделируем трейдинг как однопользовательскую игру против рынка:
- Состояние: Рыночные наблюдения (OHLCV, индикаторы, статус портфеля)
- Действия: Дискретные действия {Сильная покупка, Покупка, Удержание, Продажа, Сильная продажа} или непрерывное определение размера позиции
- Награда: Доходность с учётом риска (награда типа Шарпа), реализованная P&L или комбинация
- Переходы: Определяются фактическим движением рынка + влиянием наших действий на рынок
- Горизонт: Фиксированный (например, одна торговая сессия) или неопределённый с дисконтированием
Обученная модель динамики рынка
Сеть динамики обучает неявную модель того, как рынок эволюционирует в ответ на наши действия. Важные свойства:
- Частичная наблюдаемость: Сеть представления может агрегировать множество прошлых наблюдений, эффективно обучаясь выводить скрытое состояние рынка.
- Нестационарность: Обучаясь на скользящем окне недавних данных, модель адаптируется к меняющимся рыночным условиям.
- Влияние действий: Для больших позиций модель динамики может (неявно) обучиться влиянию на рынок и проскальзыванию.
Построение портфеля с MuZero
MCTS MuZero естественным образом обрабатывает последовательную природу построения портфеля:
- На каждом временном шаге агент наблюдает состояние рынка.
- MCTS запускает N симуляций, используя обученную модель для оценки различных последовательностей действий.
- Лучшее действие выбирается на основе количества посещений.
- Реальная среда продвигается на один шаг, и процесс повторяется.
Горизонт планирования MCTS (определяемый количеством симуляций и глубиной дерева) эффективно позволяет агенту учитывать многошаговые последствия текущего действия.
Реализация на Rust
Наша реализация на Rust предоставляет полную систему MuZero для трейдинга:
Обзор архитектуры
muzero_trading/ rust/ src/ lib.rs # Ядро MuZero: сети, MCTS, обучение, API Bybit examples/ trading_example.rs # Сквозной торговый пример Cargo.tomlКлючевые компоненты
-
RepresentationNet: Преобразует сырые рыночные наблюдения в скрытые состояния с помощью многослойной нейронной сети с активацией ReLU.
-
DynamicsNet: Принимает скрытое состояние, конкатенированное с one-hot кодированием действия, и производит следующее скрытое состояние плюс скалярную оценку награды.
-
PredictionNet: Отображает скрытые состояния в вероятности действий (через softmax) и оценки ценности (через масштабирование tanh).
-
MCTS: Реализует полный цикл MCTS — выбор с PUCT, расширение с использованием обученной динамики и обратное распространение ценностей.
-
Обучение: Разворачивает модель на K шагов из выбранных траекторий, вычисляет комбинированную потерю стратегии + ценности + награды и обновляет параметры через градиентный спуск.
-
Интеграция Bybit: Получает реальные данные OHLCV из публичного API Bybit для BTCUSDT и других торговых пар.
Использование
cd 304_muzero_trading/rustcargo buildcargo run --example trading_examplecargo 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, которые предобрабатываются в векторы наблюдений для сети представления. Предобработка включает:
- Преобразование цен в лог-доходность
- Нормализацию объёма
- Создание скользящего окна для временного контекста
Ключевые выводы
-
MuZero учится планировать, не зная правил: В отличие от AlphaZero, MuZero не требует идеального симулятора среды, что делает его применимым к таким областям, как трейдинг, где такого симулятора не существует.
-
Обученная модель работает в латентном пространстве: Модель динамики MuZero не предсказывает будущие цены — она предсказывает будущие релевантные для планирования скрытые состояния. Это делает задачу моделирования более управляемой.
-
MCTS обеспечивает планирование наперёд: Моделируя будущие траектории в обученной модели, MuZero может оценивать многошаговые последствия торговых действий перед их совершением.
-
Три сети, одна цель: Сети представления, динамики и предсказания обучаются сквозным образом, чтобы быть полезными для планирования, а не для восстановления наблюдений.
-
Реанализ повышает эффективность выборки: Переоценивая старые траектории с текущей моделью, MuZero извлекает больше обучающего сигнала из ограниченных данных — это критично для трейдинга, где данных мало относительно сложности задачи.
-
Трейдинг как игра: Формулировка трейдинга как задачи последовательного принятия решений позволяет применять техники из игр. Ключевые отличия от настольных игр — нестационарность, частичная наблюдаемость и непрерывное пространство состояний.
-
Практические соображения: Вычислительная стоимость MuZero при выводе (запуск MCTS) выше, чем у безмодельных методов. Для высокочастотной торговли это может быть непозволительно. Для стратегий с более низкой частотой (от 15 минут до дневных) накладные расходы на планирование приемлемы и потенциально полезны.
-
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.