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

Глава 281: Самообучение без учителя (Self-Supervised Learning) для трейдинга

Введение

Самообучение без учителя (Self-Supervised Learning, SSL) представляет собой смену парадигмы в машинном обучении, где модели извлекают богатые представления из немаркированных данных, решая вспомогательные задачи (pretext tasks), полученные из самих данных. На финансовых рынках размеченные данные дороги, зашумлены и зачастую ограничены по сравнению с огромным объёмом доступных необработанных рыночных данных. Самообучение без учителя решает это фундаментальное ограничение, извлекая значимые признаки из обильных неразмеченных данных о ценах, объёмах и потоке ордеров, а затем дообучаясь на меньших размеченных наборах данных для последующих задач — прогнозирования доходности, определения рыночного режима и оценки риска.

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

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

Контрастивное обучение

Контрастивное обучение — один из наиболее успешных подходов SSL. Для якорного примера $x$ мы формируем позитивную пару $x^+$ (аугментированную версию $x$) и негативные пары ${x_i^-}_{i=1}^{K}$ (другие примеры). Функция потерь InfoNCE:

$$\mathcal{L}{\text{InfoNCE}} = -\log \frac{\exp(\text{sim}(z, z^+) / \tau)}{\exp(\text{sim}(z, z^+) / \tau) + \sum{i=1}^{K} \exp(\text{sim}(z, z_i^-) / \tau)}$$

где $z = f_\theta(x)$ — закодированное представление, $\text{sim}(u, v) = \frac{u^\top v}{|u| |v|}$ — косинусное сходство, а $\tau$ — температурный гиперпараметр, управляющий резкостью распределения.

Аугментация данных для финансовых временных рядов

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

  1. Временная обрезка (Temporal Cropping): Извлечение перекрывающихся подпоследовательностей из окна: $$x_{\text{crop}} = x[t_0 : t_0 + L], \quad t_0 \sim \text{Uniform}(0, T - L)$$

  2. Инъекция гауссовского шума: Добавление калиброванного шума для имитации микроструктурного шума: $$x_{\text{noisy}} = x + \epsilon, \quad \epsilon \sim \mathcal{N}(0, \sigma^2 I)$$ где $\sigma$ пропорционально типичному спреду bid-ask актива.

  3. Временной джиттер: Небольшие случайные возмущения временных меток для обработки асинхронных данных: $$x_{\text{jitter}}(t) = x(t + \delta_t), \quad \delta_t \sim \mathcal{N}(0, \sigma_t^2)$$

  4. Маскирование признаков: Случайное обнуление подмножеств признаков для принудительного изучения межпризнаковых зависимостей: $$x_{\text{masked}} = x \odot m, \quad m_i \sim \text{Bernoulli}(1 - p)$$

  5. Масштабирование амплитуды: Изменение масштаба при сохранении временной структуры: $$x_{\text{scaled}} = \alpha \cdot x, \quad \alpha \sim \text{Uniform}(0.8, 1.2)$$

Предиктивные задачи самообучения

Помимо контрастивных методов, предиктивные задачи SSL обучаются путём прогнозирования замаскированных или будущих частей входа:

Предсказание замаскированных признаков: Для многомерного временного ряда $X \in \mathbb{R}^{T \times D}$ маскируется доля $p$ записей, и модель обучается их восстанавливать:

$$\mathcal{L}{\text{mask}} = \frac{1}{|\mathcal{M}|} \sum{(t,d) \in \mathcal{M}} \left( X_{t,d} - \hat{X}_{t,d} \right)^2$$

где $\mathcal{M}$ — множество замаскированных позиций.

Предсказание следующего шага: Прогнозирование следующего наблюдения по контекстному окну:

$$\mathcal{L}{\text{next}} = \sum{t=C}^{T-1} | x_{t+1} - g_\phi(f_\theta(x_{t-C+1:t})) |^2$$

Целевая функция Barlow Twins

Альтернатива контрастивному обучению, не требующая отрицательных примеров:

$$\mathcal{L}{\text{BT}} = \sum_i (1 - \mathcal{C}{ii})^2 + \lambda \sum_i \sum_{j \neq i} \mathcal{C}_{ij}^2$$

где $\mathcal{C}$ — матрица кросс-корреляции между двумя батчами аугментированных эмбеддингов:

$$\mathcal{C}{ij} = \frac{\sum_b z{b,i}^A z_{b,j}^B}{\sqrt{\sum_b (z_{b,i}^A)^2} \sqrt{\sum_b (z_{b,j}^B)^2}}$$

Первый член поощряет диагональ $\mathcal{C}$ быть единичной (инвариантность), а второй — обнуляет внедиагональные элементы (уменьшение избыточности).

VICReg: регуляризация дисперсии-инвариантности-ковариации

VICReg объединяет три слагаемых без необходимости негативных примеров:

$$\mathcal{L}_{\text{VICReg}} = \lambda \cdot s(Z^A, Z^B) + \mu \cdot [v(Z^A) + v(Z^B)] + \nu \cdot [c(Z^A) + c(Z^B)]$$

где:

  • $s(Z^A, Z^B) = \frac{1}{N}\sum_i | z_i^A - z_i^B |^2$ — слагаемое инвариантности
  • $v(Z) = \frac{1}{D}\sum_j \max(0, \gamma - \sqrt{\text{Var}(z_j) + \epsilon})$ — слагаемое дисперсии (предотвращает коллапс)
  • $c(Z) = \frac{1}{D}\sum_{i \neq j} [\text{Cov}(Z)]_{ij}^2$ — слагаемое ковариации (декорреляция)

Применение в трейдинге

Вспомогательные задачи для рыночных данных

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

  1. Межактивное предсказание: Маскирование признаков одного актива и предсказание по коррелированным активам, что помогает изучить структуру корреляций.

  2. Предсказание временного контекста: По данному ценовому сегменту определить, находится ли он до или после другого сегмента, изучая временной порядок.

  3. Предсказание режима волатильности: Предсказание режима волатильности замаскированного окна, что вынуждает модель изучать режимозависимую динамику.

  4. Восстановление потока ордеров: Маскирование частей книги ордеров и их восстановление, что помогает изучить паттерны микроструктуры.

Конвейер переноса обучения

Типичный конвейер SSL для трейдинга:

  1. Фаза предобучения: Обучение энкодера $f_\theta$ на большом неразмеченном наборе данных с использованием SSL-функции потерь. Это захватывает общую рыночную динамику.

  2. Фаза дообучения: Замораживание или частичное размораживание $f_\theta$ и обучение небольшой головы предсказания $g_\phi$ на размеченной целевой задаче.

  3. Оценка: Тестирование на отложенных данных, сравнение SSL-предобученных моделей с моделями, инициализированными случайно.

Преимущества при малом количестве меток

В трейдинге размеченные данные по своей природе ограничены:

  • Будущие доходности известны только постфактум
  • Метки режимов требуют экспертной разметки
  • Метки событий (обвалы, шорт-сквизы) редки
  • Метки стратегий являются проприетарными

SSL решает эту проблему, обучаясь на 99%+ неразмеченных данных, а затем перенося знания на 1% размеченных.

Обзор реализации на Rust

Наша реализация на Rust предоставляет основные строительные блоки для самообучения без учителя на финансовых временных рядах:

  1. TimeSeriesAugmentor: Применяет специфические для предметной области аугментации (инъекция шума, временная обрезка, маскирование признаков, масштабирование амплитуды) для создания позитивных пар для контрастивного обучения.

  2. ContrastiveEncoder: Простой прямой энкодер, отображающий необработанные признаки в пространство представлений меньшей размерности. В продакшене его заменят Transformer или TCN.

  3. BarlowTwinsLoss: Вычисляет целевую функцию Barlow Twins из двух наборов эмбеддингов, поощряя инвариантность и уменьшая избыточность.

  4. SelfSupervisedTrainer: Управляет циклом предобучения, применяя аугментации, вычисляя кодирования и обновляя веса.

  5. DownstreamClassifier: Простой линейный классификатор, который берёт замороженные SSL-представления и обучается на размеченных данных для целевых задач (например, предсказание направления доходности).

Реализация демонстрирует ключевые концепции:

  • Как аугментации создают значимые позитивные пары для финансовых данных
  • Вычисление кросс-корреляции для функции потерь Barlow Twins
  • Конвейер «предобучение — дообучение»
  • Интеграция с API Bybit для получения рыночных данных в реальном времени

Интеграция с Bybit

Интеграция с Bybit обеспечивает получение рыночных данных в реальном времени и исторических данных для формирования неразмеченного корпуса предобучения. Мы используем публичный REST API для:

  1. Получения данных OHLCV-свечей по нескольким таймфреймам
  2. Построения многомерных векторов признаков (доходности, коэффициенты объёма, оценки волатильности)
  3. Применения SSL-предобучения на необработанных признаках
  4. Дообучения для предсказания направления движения цены

Ключевая идея в том, что Bybit предоставляет обильные бесплатные рыночные данные по сотням торговых пар, что делает его идеальным источником для самообучающего предобучения. Предобучаясь одновременно на множестве пар, модель изучает универсальные рыночные паттерны, которые переносятся на предсказание отдельных пар.

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

  1. Самообучение без учителя извлекает ценность из неразмеченных данных: В трейдинге подавляющее большинство рыночных данных не имеет явных меток. SSL-методы, такие как контрастивное обучение и Barlow Twins, изучают полезные представления без учителя.

  2. Специфические для предметной области аугментации критически важны: В отличие от аугментаций изображений (поворот, изменение цвета), финансовые аугментации должны сохранять рыночную семантику. Инъекция шума, временная обрезка, маскирование признаков и масштабирование амплитуды подходят для временных рядов.

  3. Целевая функция Barlow Twins избегает коллапса без негативных примеров: Оптимизируя инвариантность (диагональ кросс-корреляции близка к 1) и уменьшение избыточности (внедиагональные элементы близки к 0), она обеспечивает стабильный обучающий сигнал.

  4. Предобученные представления улучшают задачи с малым количеством меток: Когда размеченных данных мало (определение режима, предсказание событий, поиск альфа-сигналов), SSL-предобученные энкодеры значительно превосходят случайную инициализацию.

  5. Мультиактивное предобучение захватывает универсальные паттерны: Обучение на множестве инструментов одновременно заставляет энкодер изучать общую рыночную динамику (кластеризацию волатильности, возврат к среднему, моментум), а не особенности конкретного актива.

  6. Парадигма «предобучение — дообучение» работает для трейдинга: Как и в NLP и компьютерном зрении, двухфазный подход (неконтролируемое предобучение, контролируемое дообучение) эффективен для финансового ML, особенно при ограниченных размеченных данных.

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

Литература

  • Chen, T. et al. (2020). “A Simple Framework for Contrastive Learning of Visual Representations” (SimCLR)
  • Zbontar, J. et al. (2021). “Barlow Twins: Self-Supervised Learning via Redundancy Reduction”
  • Bardes, A. et al. (2022). “VICReg: Variance-Invariance-Covariance Regularization for Self-Supervised Learning”
  • Yue, Z. et al. (2022). “TS2Vec: Towards Universal Representation of Time Series”
  • Eldele, E. et al. (2021). “Time-Series Representation Learning via Temporal and Contextual Contrasting”
  • Oord, A. et al. (2018). “Representation Learning with Contrastive Predictive Coding”