Глава 307: Поведенческое клонирование для трейдинга
Введение: Обучение с учителем через имитацию экспертных трейдеров
Поведенческое клонирование (Behavioral Cloning, BC) — одна из самых простых и прямолинейных форм имитационного обучения. Основная идея проста: имея датасет экспертных демонстраций — пар состояние-действие, собранных у прибыльного трейдера или торговой стратегии — мы обучаем нейросеть-политику методом обучения с учителем для воспроизведения поведения эксперта. В отличие от обучения с подкреплением, которое требует разработки функций вознаграждения и исследования среды, поведенческое клонирование рассматривает задачу как стандартную классификацию (или регрессию): по текущему состоянию рынка предсказать действие, которое совершил бы эксперт.
В контексте алгоритмического трейдинга “эксперт” может быть человеком-трейдером с устойчивой историей прибыли, прибыльной количественной стратегией или даже симуляцией идеализированного агента. “Состояния” — это рыночные наблюдения (цены, объёмы, снимки книги заявок, технические индикаторы), а “действия” — торговые решения (покупка, продажа, удержание или непрерывные размеры позиций).
Привлекательность поведенческого клонирования заключается в его простоте и эффективности использования данных. При наличии качественного датасета экспертных решений можно обучить модель за минуты, а не за часы или дни, необходимые для обучения с подкреплением. Однако эта простота сопряжена с фундаментальным ограничением: сдвиг распределения ковариат (covariate shift). Во время обучения модель видит состояния из распределения траекторий эксперта. При развёртывании собственные ошибки модели перемещают её в состояния, которые эксперт никогда не посещал, что приводит к накоплению ошибок.
В этой главе рассматриваются математические основы поведенческого клонирования, его ограничения, практические решения вроде DAgger (агрегация датасетов) и полная реализация на Rust для клонирования торговых стратегий с использованием рыночных данных Bybit.
Математические основы
Оценка максимального правдоподобия на парах состояние-действие
Пусть экспертная политика обозначена как $\pi^*(a|s)$, отображающая состояния $s \in \mathcal{S}$ в распределение по действиям $a \in \mathcal{A}$. Имея датасет из $N$ экспертных демонстраций:
$$\mathcal{D} = {(s_1, a_1), (s_2, a_2), \ldots, (s_N, a_N)}$$
где каждая пара $(s_i, a_i)$ взята из распределения траекторий эксперта $d^{\pi^*}$, поведенческое клонирование обучает параметризованную политику $\pi_\theta(a|s)$ максимизацией логарифма правдоподобия:
$$\theta^* = \arg\max_\theta \sum_{i=1}^{N} \log \pi_\theta(a_i | s_i)$$
Для дискретных действий (покупка, продажа, удержание) это сводится к минимизации кросс-энтропийных потерь:
$$\mathcal{L}(\theta) = -\frac{1}{N} \sum_{i=1}^{N} \sum_{k=1}^{K} \mathbf{1}[a_i = k] \log \pi_\theta(k | s_i)$$
где $K$ — количество дискретных действий. Для непрерывных действий (размер позиции) обычно используется среднеквадратичная ошибка или моделирование выхода как гауссиана с минимизацией отрицательного логарифма правдоподобия.
Сдвиг ковариат и накопление ошибок
Фундаментальная проблема поведенческого клонирования — несоответствие между распределениями при обучении и развёртывании. Во время обучения политика видит состояния из $d^{\pi^*}$ (распределение состояний эксперта). При исполнении политика посещает состояния из $d^{\pi_\theta}$ (собственное индуцированное распределение).
Пусть $\epsilon$ — ошибка классификации на каждом шаге обученной политики. При распределении эксперта ожидаемая суммарная стоимость за горизонт $T$ составляет $O(\epsilon T)$. Однако из-за сдвига ковариат ошибки накапливаются: небольшая ошибка в момент $t$ сдвигает распределение состояний в момент $t+1$, приводя к всё более незнакомым состояниям. Фактическая ожидаемая стоимость масштабируется как:
$$J(\pi_\theta) - J(\pi^*) = O(\epsilon T^2)$$
Эта квадратичная зависимость от горизонта $T$ — центральное ограничение наивного поведенческого клонирования.
DAgger: Агрегация датасетов
DAgger (Dataset Aggregation) от Ross, Gordon и Bagnell (2011) решает проблему сдвига ковариат через итеративный процесс:
- Инициализация: Обучить $\pi_1$ на экспертном датасете $\mathcal{D}_1$
- Для итерации $i = 1, 2, \ldots, N$:
- Исполнить $\pi_i$ для сбора траекторий, посещая состояния $s \sim d^{\pi_i}$
- Запросить у эксперта действия $a^* = \pi^*(s)$ в этих состояниях
- Агрегировать: $\mathcal{D}_{i+1} = \mathcal{D}_i \cup {(s, a^*)}$
- Обучить $\pi_{i+1}$ на $\mathcal{D}_{i+1}$
DAgger снижает границу ошибки до:
$$J(\pi_\theta) - J(\pi^*) = O(\epsilon T)$$
Линейная зависимость — значительное улучшение, достигнутое обучением на собственном распределении состояний обучаемого, а не только на распределении эксперта.
Смешанная политика
На практике при сборе данных используется стратегия смешивания. На итерации $i$ политика сбора данных:
$$\hat{\pi}_i = \beta_i \pi^* + (1 - \beta_i) \pi_i$$
где $\beta_i$ — параметр отжига, начинающийся с 1.0 (чистый эксперт) и убывающий к 0 (чистая обученная политика). Это обеспечивает плавный переход и гарантирует, что ранние итерации не отклоняются слишком далеко от осмысленных траекторий.
Ограничения и способы их преодоления
Ограничение 1: Несоответствие распределений (сдвиг ковариат)
Проблема: Обученная политика встречает состояния за пределами обучающего распределения, что приводит к непредсказуемому поведению.
Решения:
- DAgger: Как описано выше, итеративная агрегация данных из распределения обученной политики.
- Прямое обучение (FTR): Обучение отдельных политик для каждого временного шага, снижающее эффект накопления.
- Стохастическое смешивание: Внесение шума при обучении для экспозиции политики к состояниям вне траектории.
Ограничение 2: Мультимодальное поведение эксперта
Проблема: Когда эксперт демонстрирует мультимодальное поведение (например, иногда покупает, иногда продаёт в похожих рыночных условиях), оценка максимального правдоподобия усредняет моды, создавая посредственную политику.
Решения:
- Смесь плотностей (Mixture Density Networks): Моделирование выхода как смеси гауссиан.
- Категориальные политики с температурой: Использование softmax с масштабированием температуры.
- Условный VAE: Обучение скрытой переменной, захватывающей моду поведения.
Ограничение 3: Ограниченные экспертные данные
Проблема: Качественные экспертные демонстрации скудны и дорогостоящи.
Решения:
- Аугментация данных: Применение трансформаций к существующим траекториям — масштабирование по времени, добавление шума, перестановка признаков.
- Генерация синтетического эксперта: Использование стратегий на основе правил (следование за трендом, возврат к среднему) как прокси-экспертов.
- Трансферное обучение: Предобучение на связанных рынках или инструментах, затем дообучение на скудных экспертных данных.
Ограничение 4: Немарковское поведение эксперта
Проблема: Решения эксперта могут зависеть от истории, выходящей за пределы текущего состояния.
Решения:
- Рекуррентные политики: Использование LSTM или GRU для захвата временных зависимостей.
- Стекированные наблюдения: Включение окна последних наблюдений как состояния.
- Механизмы внимания: Позволение политике обращать внимание на релевантные прошлые наблюдения.
Применения в трейдинге
Клонирование прибыльных HFT-стратегий
Высокочастотные торговые стратегии сложно реверс-инжинирить по их коду (который является проприетарным), но их наблюдаемое поведение — поток заявок, паттерны исполнения и тайминг — можно записать. Поведенческое клонирование позволяет:
- Записать данные уровня заявок от прибыльной HFT-системы за тысячи торговых сессий.
- Извлечь признаки: дисбаланс книги заявок, спред, позиция в очереди, недавний поток сделок, микроструктура волатильности.
- Разметить действия: фактические заявки HFT-системы (лимитная покупка, лимитная продажа, отмена, рыночная покупка, рыночная продажа, удержание).
- Обучить нейросеть воспроизводить эти решения по тем же признакам микроструктуры.
Клонированная политика может служить отправной точкой для дальнейшей оптимизации через обучение с подкреплением или как бенчмарк для оценки новых стратегий.
Имитация сигналов покупки/продажи аналитиков
Финансовые аналитики выдают рекомендации покупки, продажи и удержания на основе фундаментального и технического анализа. Поведенческое клонирование может захватить этот процесс принятия решений:
- Собрать исторические рекомендации аналитиков в паре с рыночными данными на момент рекомендации.
- Инженерия признаков: P/E, рост выручки, ценовой моментум, динамика сектора, показатели настроений рынка.
- Обучить BC-политику предсказывать рекомендацию аналитика по этим признакам.
- Развернуть: Использовать клонированную политику для автоматической генерации сигналов, фильтрации или как один вход в ансамбле.
Репликация портфеля
Поведенческое клонирование может реплицировать решения по аллокации успешных портфельных менеджеров:
- Наблюдать за весами портфеля менеджера во времени.
- Связать с макро-признаками (процентные ставки, инфляция, рост ВВП, кредитные спреды).
- Обучить регрессионную BC-модель предсказывать целевые веса портфеля.
- Использовать клонированную политику для автоматической ребалансировки, имитирующей стиль менеджера.
Реализация на Rust
Наша реализация на Rust предоставляет полный пайплайн поведенческого клонирования:
Основные компоненты
-
ExpertDataset: Конструирует размеченные пары состояние-действие из ценовых данных с использованием настраиваемых экспертных стратегий (следование за трендом, возврат к среднему). -
BCPolicy: Нейросеть прямого распространения с настраиваемыми скрытыми слоями, активациями ReLU и выходом softmax. Обучается минимизацией кросс-энтропии с помощью стохастического градиентного спуска. -
DAggerTrainer: Реализует цикл DAgger с настраиваемым убыванием параметра смешивания, поддерживая итеративную агрегацию датасетов для борьбы со сдвигом ковариат. -
CovariateShiftAnalyzer: Количественно оценивает несоответствие распределений между экспертными и политическими распределениями состояний, используя оценку KL-дивергенции и статистики среднего/дисперсии. -
BybitClient: Получает исторические данные kline (OHLCV) из API Bybit для бэктестинга и развёртывания в реальном времени.
Архитектура
Архитектура политической сети:
Вход (state_dim) -> Линейный -> ReLU -> Линейный -> ReLU -> Линейный -> Softmax (3 действия)Состояния конструируются из скользящего окна нормализованных ценовых доходностей, коэффициентов объёма и простых технических индикаторов (пересечения скользящих средних, моментум типа RSI).
Интеграция с Bybit
Реализация получает реальные рыночные данные из публичного API Bybit:
let client = BybitClient::new();let klines = client.fetch_klines("BTCUSDT", "15", 200).await?;Это возвращает свечи OHLCV, которые обрабатываются в:
- Нормализованные доходности: $(close_t - close_{t-1}) / close_{t-1}$
- Коэффициенты объёма: $volume_t / \text{MA}(volume, 20)$
- Признаки моментума: Различия между краткосрочной и долгосрочной скользящими средними
Экспертная стратегия размечает каждое состояние действием на основе настраиваемых правил (например, следование за трендом: покупка когда короткая MA > длинной MA, продажа когда короткая MA < длинной MA, удержание в остальных случаях).
Ключевые выводы
-
Поведенческое клонирование — простейшая форма имитационного обучения: оно сводит обучение политики к обучению с учителем на парах состояние-действие эксперта, делая его доступным и быстрым для обучения.
-
Сдвиг ковариат — основная проблема: наивное BC страдает от квадратичного накопления ошибок ($O(\epsilon T^2)$), что делает его ненадёжным для длинных торговых горизонтов без смягчающих мер.
-
DAgger предоставляет принципиальное решение: итеративно агрегируя данные из собственного распределения состояний обученной политики, DAgger снижает ошибку до $O(\epsilon T)$ и значительно повышает робастность.
-
Качество эксперта определяет потолок: BC никогда не может превзойти производительность эксперта. Качество, согласованность и покрытие экспертных демонстраций — важнейшие факторы.
-
Аугментация данных и синтетические эксперты помогают: при нехватке реальных экспертных данных синтетические эксперты (стратегии на основе правил) и техники аугментации данных могут запустить процесс обучения.
-
BC — отличная инициализация для RL: даже если BC само по себе недостаточно, оно обеспечивает сильную инициализацию для алгоритмов обучения с подкреплением, кардинально сокращая время исследования.
-
Мультимодальное поведение требует особого подхода: стандартное BC усредняет по модам; модели смесей или подходы со скрытыми переменными необходимы, когда эксперт демонстрирует разнообразные стратегии.
-
Реализация на Rust обеспечивает развёртывание с низкой задержкой: компилируемая природа Rust с абстракциями нулевой стоимости делает BC-политики пригодными для систем торговли в реальном времени, где важны микросекунды.