Глава 303: Dreamer Trading
Введение: DreamerV2/V3 - RL на основе модели мира в латентном пространстве
Традиционное обучение с подкреплением (RL) для трейдинга сталкивается с фундаментальной проблемой: неэффективностью использования данных. Обучение непосредственно на рыночных взаимодействиях дорого, медленно и рискованно. Каждая исследовательская сделка стоит реальных денег, а обратная связь между действием и результатом может занимать часы, дни или недели. Именно здесь Dreamer - семейство RL-агентов на основе модели мира - предлагает смену парадигмы.
Dreamer, представленный через последовательные версии DreamerV1 (Hafner et al., 2020), DreamerV2 (Hafner et al., 2021) и DreamerV3 (Hafner et al., 2023), обучает компактную модель мира окружающей среды, а затем тренирует свою стратегию полностью в воображении - на смоделированных траекториях, сгенерированных обученной моделью. Вместо взаимодействия с реальными рынками для обучения агент сначала понимает, как ведут себя рынки, а затем практикует торговые стратегии в своей ментальной симуляции.
Архитектура построена на трёх ключевых компонентах:
-
Модель мира: Обучается предсказывать будущие наблюдения и вознаграждения на основе прошлых данных с использованием рекуррентной модели пространства состояний (RSSM). Модель мира сжимает сырые рыночные наблюдения в компактное латентное представление.
-
Актор (Стратегия): Нейронная сеть, которая выбирает действия (покупка, продажа, удержание, размер позиции) на основе текущего латентного состояния. Ключевой момент: актор обучается исключительно на воображаемых траекториях - последовательностях, сгенерированных моделью мира без какого-либо реального рыночного взаимодействия.
-
Критик (Функция ценности): Оценивает ожидаемую будущую доходность из любого латентного состояния, обеспечивая сигналы обучения для актора во время воображения.
Этот подход особенно привлекателен для финансовых рынков по следующим причинам:
- Эффективность данных: Рынки предоставляют ограниченные нестационарные данные. Обучение модели мира и тренировка в воображении умножают эффективный размер выборки.
- Безрисковое исследование: Агент может исследовать агрессивные стратегии в воображении без риска для капитала.
- Моделирование режимов: Модель мира может захватывать различные рыночные режимы (трендовый, возвратный к среднему, волатильный) в своём латентном пространстве.
- Многошаговое планирование: Воображаемые развёртки позволяют агенту учитывать долгосрочные последствия торговых решений.
DreamerV3 специально ввёл несколько ключевых улучшений: symlog-предсказания для обработки различных масштабов (критично для финансовых данных), свободные биты для балансировки KL и универсальную конфигурацию гиперпараметров, работающую в различных доменах - что делает его особенно подходящим для гетерогенной природы финансовых рынков.
Математические основы
Рекуррентная модель пространства состояний (RSSM)
Сердце Dreamer - это RSSM, которая поддерживает латентное состояние с детерминированной и стохастической компонентами. Эта двойная структура позволяет модели захватывать как предсказуемую динамику рынка, так и присущую ему неопределённость.
RSSM состоит из четырёх компонентов:
Модель последовательности (Детерминированный путь): $$h_t = f_\phi(h_{t-1}, z_{t-1}, a_{t-1})$$
где $h_t$ - детерминированное рекуррентное состояние (захватывающее долгосрочные зависимости, такие как тренды), $z_{t-1}$ - предыдущее стохастическое состояние, а $a_{t-1}$ - предыдущее действие. На практике $f_\phi$ реализуется как ячейка GRU.
Кодировщик (Апостериорное распределение): $$z_t \sim q_\phi(z_t | h_t, x_t)$$
Учитывая текущее детерминированное состояние и фактическое наблюдение $x_t$ (рыночные данные), кодировщик создаёт апостериорное распределение над стохастическим состоянием. Это используется во время обучения, когда доступны реальные данные.
Предсказатель динамики (Априорное распределение): $$\hat{z}t \sim p\phi(\hat{z}_t | h_t)$$
Априорное распределение предсказывает стохастическое состояние только на основе детерминированного состояния, без доступа к фактическому наблюдению. Используется во время воображения при генерации траекторий без реальных данных.
Декодер (Модель наблюдений): $$\hat{x}t \sim p\phi(\hat{x}_t | h_t, z_t)$$
Реконструирует рыночные наблюдения из полного латентного состояния $(h_t, z_t)$.
Предсказатель вознаграждения: $$\hat{r}t \sim p\phi(\hat{r}_t | h_t, z_t)$$
Предсказывает вознаграждение (торговый PnL) из латентного состояния.
В DreamerV2/V3 стохастическое состояние $z_t$ использует категориальные распределения вместо гауссовых, что оказалось более выразительным и стабильным. Конкретно, $z_t$ представлено как вектор независимых категориальных переменных, каждая с конечным числом классов.
Обучение модели мира: нижняя граница правдоподобия (ELBO)
Модель мира обучается путём максимизации нижней границы правдоподобия на логарифм правдоподобия наблюдаемых последовательностей:
$$\mathcal{L}(\phi) = \sum_{t=1}^{T} \Big[ \underbrace{\ln p_\phi(x_t | h_t, z_t)}{\text{реконструкция}} + \underbrace{\ln p\phi(r_t | h_t, z_t)}{\text{предсказание вознаграждения}} - \underbrace{\beta \cdot D{KL}[q_\phi(z_t | h_t, x_t) | p_\phi(z_t | h_t)]}_{\text{KL-регуляризация}} \Big]$$
Член KL-дивергенции служит двум целям:
- Регуляризует апостериорное распределение: Предотвращает переобучение, удерживая выученные представления близко к априорному распределению.
- Обучает априорное распределение: Обеспечивает точное прогнозирование будущих состояний предсказателем динамики.
Балансировка KL
Ключевая инновация DreamerV2/V3 - балансировка KL, которая разделяет потерю KL на две части с различными скоростями обучения:
$$\mathcal{L}{KL} = \alpha \cdot D{KL}[\text{sg}(q_\phi) | p_\phi] + (1 - \alpha) \cdot D_{KL}[q_\phi | \text{sg}(p_\phi)]$$
где $\text{sg}(\cdot)$ обозначает остановку градиента. При $\alpha > 0.5$ (обычно $\alpha = 0.8$) априорное распределение обновляется более агрессивно для соответствия апостериорному, в то время как апостериорному дается больше свободы для представления истинного распределения данных.
DreamerV3 также вводит свободные биты: потеря KL применяется только когда она превышает порог $\tau$ (обычно $\tau = 1$ нат), предотвращая чрезмерную регуляризацию полезной информации:
$$\mathcal{L}{KL}^{\text{free}} = \max(\mathcal{L}{KL}, \tau)$$
Symlog-предсказания (DreamerV3)
Финансовые данные охватывают несколько порядков величин (уровни цен, объёмы, доходности). DreamerV3 решает это с помощью преобразования symlog:
$$\text{symlog}(x) = \text{sign}(x) \cdot \ln(|x| + 1)$$
$$\text{symexp}(x) = \text{sign}(x) \cdot (\exp(|x|) - 1)$$
Все предсказания (наблюдения, вознаграждения, ценности) делаются в пространстве symlog, которое сжимает диапазон, сохраняя информацию о знаке. Это особенно ценно для трейдинга, где доходности могут значительно варьироваться между активами и временными периодами.
Актор-критик в воображении
После обучения модели мира актор и критик обучаются полностью на воображаемых траекториях:
-
Воображение: Начиная с реальных латентных состояний, модель мира генерирует траектории длины $H$ (горизонт воображения): $$\hat{z}t \sim p\phi(\hat{z}t | h_t), \quad h{t+1} = f_\phi(h_t, \hat{z}t, a_t), \quad a_t \sim \pi\psi(a_t | h_t, \hat{z}_t)$$
-
Оценка ценности: Критик оценивает доходности с использованием $\lambda$-возвратов: $$V_t^\lambda = \hat{r}t + \gamma \Big[(1-\lambda) v\xi(h_{t+1}, \hat{z}{t+1}) + \lambda V{t+1}^\lambda \Big]$$
-
Обновление актора: Актор максимизирует ожидаемую воображаемую доходность: $$\max_\psi \mathbb{E}\Big[\sum_{t=0}^{H} V_t^\lambda\Big]$$
-
Обновление критика: Критик минимизирует ошибку предсказания на $\lambda$-возвратах: $$\min_\xi \mathbb{E}\Big[\sum_{t=0}^{H} (v_\xi(h_t, \hat{z}_t) - \text{sg}(V_t^\lambda))^2\Big]$$
Применения: торговля в воображаемых рыночных сценариях
Эффективное обучение стратегий с точки зрения данных
Фреймворк Dreamer трансформирует разработку торговых стратегий несколькими ключевыми способами:
1. Мультипликация данных: Из ограниченного набора данных, скажем, за 1 год минутных данных (~525 600 наблюдений), модель мира может сгенерировать миллионы воображаемых траекторий. Каждая траектория исследует различные последовательности действий, эффективно умножая обучающие данные.
2. Стратегии, учитывающие режимы: Стохастическая компонента RSSM естественно захватывает неопределённость рыночных режимов. Когда модель не уверена (высокая энтропия в $p_\phi(z_t|h_t)$), она генерирует разнообразные воображаемые будущие, приводя к робастным стратегиям, работающим в различных режимах.
3. Управление портфелем из нескольких активов: Латентное пространство может совместно моделировать корреляции между активами. Воображение позволяет исследовать стратегии ребалансировки портфеля по тысячам коррелированных сценариев.
4. Управление рисками через воображение: Генерируя множество воображаемых траекторий из текущего состояния, агент может оценивать хвостовые риски и соответственно корректировать позиции - по сути выполняя моделирование Монте-Карло внутри своей обученной модели мира.
Адаптации для трейдинга
Для финансовых рынков полезны следующие модификации стандартного фреймворка Dreamer:
- Пространство действий: Непрерывный размер позиции в $[-1, 1]$, представляющий экспозицию от шорта до лонга, дискретизированный в категории для актора.
- Формирование вознаграждения: Логарифмические доходности со штрафами за транзакционные издержки и регуляризацией просадки.
- Пространство наблюдений: OHLCV данные, технические индикаторы, характеристики стакана ордеров, нормализованные symlog.
- Расширение состояния: Включение состояния портфеля (текущая позиция, нереализованный PnL) в наблюдение.
Сравнение с подходами без модели
| Аспект | Без модели (PPO/SAC) | Dreamer |
|---|---|---|
| Эффективность данных | Низкая - нужны миллионы шагов | Высокая - обучается в воображении |
| Риск при обучении | Высокий - обучается на реальных сделках | Низкий - тренируется в воображении |
| Скорость адаптации | Медленная - нужны новые данные | Быстрая - обновляет модель мира |
| Интерпретируемость | Чёрный ящик действий | Можно проверить предсказания модели |
| Вычислительная стоимость | Низкая на шаг | Выше - модель мира + воображение |
Реализация на Rust
Реализация предоставляет упрощённую, но функциональную архитектуру Dreamer для трейдинга:
use dreamer_trading::{ DreamerConfig, DreamerAgent, WorldModel, BybitClient, MarketData};
// Настройка агента Dreamerlet config = DreamerConfig { deterministic_size: 200, stochastic_size: 30, num_categories: 32, hidden_size: 200, imagination_horizon: 15, kl_balance_alpha: 0.8, free_bits: 1.0, discount: 0.99, lambda_gae: 0.95, learning_rate: 3e-4,};
// Получение реальных рыночных данныхlet client = BybitClient::new();let data = client.fetch_klines("BTCUSDT", "5", 1000).await?;
// Обучение модели мира на реальных данныхlet mut agent = DreamerAgent::new(config);agent.train_world_model(&data, epochs: 100);
// Обучение стратегии в воображении (без реального рыночного взаимодействия!)agent.train_policy_in_imagination(num_trajectories: 10000);
// Оценка на отложенных реальных данныхlet metrics = agent.evaluate(&test_data);Реализация на Rust фокусируется на:
- RSSM с детерминированными (GRU-подобными) и стохастическими (категориальными) состояниями
- Обучение модели мира с реконструкцией + KL-потерей
- Воображаемые развёртки для обучения актор-критика
- Интеграция с API Bybit для реальных данных BTCUSDT
Смотрите rust/src/lib.rs для полной реализации и rust/examples/trading_example.rs для полного рабочего процесса.
Интеграция с Bybit
Реализация подключается к публичному API Bybit для получения реальных рыночных данных:
let client = BybitClient::new();
// Получение 1000 5-минутных свечей для BTCUSDTlet klines = client.fetch_klines("BTCUSDT", "5", 1000).await?;
// Каждая свеча содержит: временная метка, открытие, максимум, минимум, закрытие, объёмfor k in &klines { println!("Время: {}, OHLCV: {}/{}/{}/{} Объём: {}", k.timestamp, k.open, k.high, k.low, k.close, k.volume);}Конвейер данных:
- Получение сырых OHLCV данных из REST API Bybit
- Нормализация признаков с использованием преобразования symlog
- Создание последовательностей для обучения RSSM
- Разделение на обучающую/валидационную/тестовую выборки
Ключевые выводы
-
Dreamer обучает модель мира рынков и тренирует торговые стратегии полностью в воображении, устраняя необходимость дорогостоящего исследования реального рынка во время обучения.
-
Архитектура RSSM с детерминированными + стохастическими состояниями захватывает как предсказуемые тренды (детерминированный путь), так и рыночную неопределённость (стохастическое состояние), обеспечивая богатое латентное представление.
-
Балансировка KL и свободные биты предотвращают типичные сбои обучения, когда модель либо игнорирует наблюдения, либо не может выучить полезную динамику - критично для шумной, нестационарной природы финансовых данных.
-
Symlog-предсказания обрабатывают мультимасштабную природу финансовых данных (цены, объёмы, доходности) без ручной настройки нормализации.
-
Обучение на основе воображения по своей природе безрисковое: агент может исследовать агрессивные стратегии, испытывать просадки и учиться на крахах без какого-либо риска для реального капитала.
-
Эффективность данных - ключевое преимущество для трейдинга: рынки предоставляют ограниченные невоспроизводимые данные, и способность Dreamer генерировать неограниченный воображаемый опыт из обученной модели уникально подходит для этого ограничения.
-
Модель мира обеспечивает интерпретируемость: изучая предсказания модели и латентные состояния, трейдеры могут понять, что агент “думает” о рынке, укрепляя доверие к системе.
-
Универсальные гиперпараметры DreamerV3 снижают необходимость настройки для каждого актива или рынка, обеспечивая более быстрое развёртывание на различных торговых инструментах.
Ссылки
- Hafner, D., et al. (2020). “Dream to Control: Learning Behaviors by Latent Imagination.” ICLR 2020.
- Hafner, D., et al. (2021). “Mastering Atari with Discrete World Models.” ICLR 2021.
- Hafner, D., et al. (2023). “Mastering Diverse Domains through World Models.” arXiv:2301.04104.
- Ha, D. & Schmidhuber, J. (2018). “World Models.” NeurIPS 2018.
- Schrittwieser, J., et al. (2020). “Mastering Atari, Go, Chess and Shogi by Planning with a Learned Model.” Nature.