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

Глава 209: Дистилляция данных для трейдинга

1. Введение

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

Концепция была впервые представлена Wang et al. (2018) под названием “Dataset Distillation”, по аналогии с дистилляцией знаний, где меньшая модель-ученик учится имитировать большую модель-учителя. При дистилляции датасетов вместо сжатия модели мы сжимаем сами данные. Дистиллированный датасет состоит из синтетических примеров — часто значительно меньшего числа, чем в оригинале — которые оптимизированы так, чтобы модель, обученная на них, обобщала так же хорошо, как модель, обученная на полном датасете.

Для алгоритмического трейдинга дистилляция датасетов предлагает трансформационный потенциал. Финансовые рынки генерируют огромные объёмы тиковых данных, снимков стакана заявок и OHLCV-свечей по тысячам инструментов. Обучение моделей на многолетних исторических данных требует значительных вычислительных ресурсов и времени. Если бы мы могли дистиллировать годы рыночной истории в небольшой набор репрезентативных синтетических образцов — захватывающих бычьи тренды, медвежьи обвалы, боковое движение, всплески волатильности и смену режимов — мы могли бы кардинально ускорить разработку моделей, бэктестинг и циклы переобучения.

В этой главе мы исследуем математические основы дистилляции датасетов, обзор ключевых алгоритмов и практические применения для торговых систем. Мы реализуем основные техники на Rust, оптимизированные для производительности, и интегрируем реальные рыночные данные с биржи Bybit.

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

Дистилляция датасетов может быть сформулирована как задача двухуровневой оптимизации. Имея большой обучающий набор $\mathcal{T} = {(x_i, y_i)}_{i=1}^{N}$ и модель с параметрами $\theta$, мы хотим найти небольшой синтетический датасет $\mathcal{S} = {(\tilde{x}_j, \tilde{y}j)}{j=1}^{M}$, где $M \ll N$, такой что модель, обученная на $\mathcal{S}$, хорошо работает на невиданных данных.

2.1 Сопоставление градиентов

Сопоставление градиентов, представленное Zhao et al. (2021) в Dataset Condensation (DC), является одним из наиболее элегантных подходов. Основная идея состоит в том, что если градиенты, создаваемые синтетическими данными, совпадают с градиентами от реальных данных, то обучение на синтетических данных будет следовать аналогичной траектории оптимизации.

Формально мы минимизируем расстояние между градиентами, вычисленными на реальных и синтетических данных:

$$\min_{\mathcal{S}} \mathbb{E}{\theta_0 \sim P{\theta_0}} \sum_{t=0}^{T-1} D\left(\nabla_\theta \mathcal{L}(\mathcal{S}; \theta_t), \nabla_\theta \mathcal{L}(\mathcal{T}; \theta_t)\right)$$

где $D(\cdot, \cdot)$ — функция расстояния (обычно косинусное расстояние), $\theta_t$ — параметры модели на шаге обучения $t$, а $P_{\theta_0}$ — распределение случайных инициализаций.

Косинусное расстояние предпочтительнее евклидова, поскольку оно инвариантно к величине градиента, фокусируясь на направлении обновления:

$$D_{\cos}(g_1, g_2) = 1 - \frac{g_1 \cdot g_2}{|g_1| |g_2|}$$

2.2 Сопоставление распределений

Сопоставление распределений (Zhao & Bilen, 2023) использует ядерный подход. Вместо сопоставления градиентов оно сопоставляет распределения признаков реальных и синтетических данных в обученном пространстве вложений:

$$\min_{\mathcal{S}} \left| \frac{1}{|\mathcal{T}|} \sum_{x \in \mathcal{T}} \phi(x) - \frac{1}{|\mathcal{S}|} \sum_{\tilde{x} \in \mathcal{S}} \phi(\tilde{x}) \right|^2$$

где $\phi(\cdot)$ — экстрактор признаков (часто предпоследний слой нейронной сети). Этот подход вычислительно дешевле сопоставления градиентов, поскольку избегает производных второго порядка, хотя может уступать в качестве.

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

2.3 Сопоставление траекторий

Сопоставление траекторий, предложенное Cazenavette et al. (2022) в MTT (Matching Training Trajectories), оптимизирует синтетические данные так, чтобы модели, обученные на них, следовали той же траектории в пространстве параметров, что и модели, обученные на реальных данных:

$$\min_{\mathcal{S}} \mathbb{E} \left| \theta_{t+N}^{\mathcal{S}} - \theta_{t+M}^{\mathcal{T}} \right|^2$$

где $\theta_{t+N}^{\mathcal{S}}$ обозначает параметры после $N$ шагов на синтетических данных, начиная с $\theta_t$, а $\theta_{t+M}^{\mathcal{T}}$ — параметры после $M$ шагов на реальных данных. Этот метод захватывает более длинные динамики обучения и часто даёт лучшие результаты.

2.4 Ядерные индуцирующие точки

Ядерные индуцирующие точки (KIP), представленные Nguyen et al. (2021), используют ядерную гребневую регрессию. В рамках ядра нейронного касательного (Neural Tangent Kernel, NTK) оптимальный синтетический датасет можно найти решением:

$$\min_{\mathcal{S}} | K_{\mathcal{T}\mathcal{S}} (K_{\mathcal{S}\mathcal{S}} + \lambda I)^{-1} \tilde{Y} - Y_{\mathcal{T}} |^2$$

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

3. Алгоритмы дистилляции датасетов

3.1 DD (Wang et al., 2018)

Оригинальная работа по дистилляции датасетов сформулировала задачу как обучение синтетических данных через обратное распространение. Ключевая идея заключалась в трактовке точек данных как обучаемых параметров. Алгоритм:

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

Это требует развёртки вычислительного графа через внутренний цикл оптимизации, что требует много памяти, но даёт высококачественные дистиллированные данные.

3.2 Dataset Condensation (DC)

DC от Zhao et al. (2021) заменила дорогостоящую двухуровневую оптимизацию DD одношаговым сопоставлением градиентов. Это кардинально снизило вычислительные затраты при сохранении конкурентоспособных результатов. Алгоритм выбирает случайные инициализации сети, вычисляет градиенты на реальных и синтетических данных и обновляет синтетические данные для минимизации расстояния между градиентами. DC — подход, который мы реализуем в этой главе, благодаря балансу простоты и эффективности.

3.3 CAFE (Выравнивание признаков)

CAFE (Wang et al., 2022) комбинирует выравнивание признаков на нескольких уровнях нейронной сети. Вместо сопоставления только признаков последнего слоя или градиентов, CAFE выравнивает промежуточные представления, захватывая многомасштабную информацию. Для торговых данных это означает захват как локальных паттернов (формы отдельных свечей), так и глобальных (трендовые структуры, характеристики режимов).

3.4 MTT (Сопоставление траекторий обучения)

MTT от Cazenavette et al. (2022) предварительно вычисляет экспертные траектории обучения на полном датасете, а затем оптимизирует синтетические данные для воспроизведения этих траекторий. Метод достигает наилучших результатов на бенчмарках, но требует хранения множества экспертных траекторий, увеличивая требования к хранилищу. Для трейдинга экспертные траектории могут представлять процесс обучения прибыльной стратегии в различных рыночных условиях.

4. Торговые применения

4.1 Сжатие рыночной истории

Рассмотрим торговую систему, обученную на 10 годах минутных баров для 500 акций — миллиарды точек данных. Дистилляция датасетов может сжать их в синтетический датасет, захватывающий существенные рыночные динамики: трендовые периоды, периоды возврата к среднему, динамику обвалов, паттерны восстановления и режимы ликвидности. Модель, обученная на этом сжатом датасете, выучит те же паттерны, что и модель на полной истории, но за долю времени.

4.2 Эффективный бэктестинг

Бэктестинг стратегий на десятилетиях данных медленен. С дистиллированными данными, представляющими ключевые рыночные режимы, начальная оценка стратегий может происходить на порядки быстрее. Только многообещающие стратегии потребуют полного бэктестинга, кардинально снижая вычислительные затраты на разработку стратегий.

4.3 Быстрое переобучение моделей

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

4.4 Данные, репрезентативные для режимов

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

5. Практические аспекты

5.1 Интерпретируемость дистиллированных данных

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

На практике мы обнаруживаем, что дистиллированные точки рыночных данных часто демонстрируют преувеличенные характеристики: экстремальные всплески объёма в сочетании с определёнными ценовыми паттернами или необычные комбинации значений технических индикаторов. Они представляют усвоенную моделью «сущность» того, что важно в данных.

5.2 Эффективность хранения

Типичный торговый датасет с 5 годами минутных баров для одного инструмента содержит примерно 1,3 миллиона свечей. Если каждая свеча имеет 6 признаков (OHLCV + временная метка), это примерно 60 МБ данных float64. Дистилляция до 20 синтетических точек сокращает хранение до менее 1 КБ — коэффициент сжатия превышает 60 000x. Это позволяет развёртывание на периферийных устройствах, мобильные торговые приложения и эффективное версионирование моделей.

5.3 Стратегии обновления

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

  • Периодическая ре-дистилляция: повторный запуск полного процесса дистилляции еженедельно или ежемесячно на скользящем окне данных
  • Инкрементальные обновления: дообучение существующих дистиллированных данных с учётом новых рыночных наблюдений
  • Обновления по триггеру режима: ре-дистилляция только при обнаружении смены режима, сохранение стабильных дистиллированных данных в стабильных рыночных условиях
  • Ансамблевая дистилляция: поддержание отдельных дистиллированных датасетов для разных временных горизонтов (внутридневной, дневной, недельный) и их комбинирование для обучения

6. Описание реализации

Наша реализация на Rust предоставляет полный конвейер дистилляции датасетов для торговых данных. Основные компоненты:

Представление данных

Мы представляем рыночные данные как векторы признаков. Каждая свеча трансформируется в нормализованный вектор признаков, содержащий доходности, меры волатильности, отношения объёмов и метрики ценового диапазона. Структура MarketData хранит сырые OHLCV-данные, а DistillationConfig управляет процессом дистилляции.

Движок сопоставления градиентов

Сердце реализации — цикл сопоставления градиентов. Мы поддерживаем набор обучаемых синтетических точек данных (инициализированных случайно или из центроидов кластеров) и простую линейную модель. На каждой итерации:

  1. Вычисляем градиент функции потерь на батче реальных данных
  2. Вычисляем градиент функции потерь на синтетических данных
  3. Вычисляем косинусное расстояние между векторами градиентов
  4. Обновляем синтетические точки данных для минимизации этого расстояния

Обучение модели и оценка

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

Базовый метод отбора корсетов

Для сравнения мы реализуем отбор корсетов методом k-медоидов, который выбирает реальные точки данных, лучше всего представляющие геометрию датасета. Это создаёт сильную базовую линию — если дистилляция не превосходит простой отбор корсетов, дополнительная сложность не оправдана.

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

Мы интегрируемся с API биржи Bybit для получения OHLCV-данных в реальном времени и исторических. Реализация использует REST API Bybit v5:

GET https://api.bybit.com/v5/market/kline?category=linear&symbol=BTCUSDT&interval=15&limit=200

Структура BybitClient в нашей реализации обрабатывает:

  • Получение исторических данных свечей (kline)
  • Парсинг JSON-ответов в структуры MarketData
  • Ограничение частоты запросов и обработку ошибок
  • Поддержку различных интервалов (1m, 5m, 15m, 1h, 4h, 1d)

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

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

  1. Дистилляция датасетов создаёт синтетические обучающие данные, которые кодируют существенную информацию полного датасета в значительно меньшем количестве примеров. Это фундаментально отличается от выборки или сжатия.

  2. Сопоставление градиентов — наиболее практичный подход для торговых приложений, обеспечивающий хороший баланс между вычислительными затратами и качеством дистилляции.

  3. Торговые применения убедительны: сжатие лет рыночных данных в десятки синтетических точек обеспечивает быстрый бэктестинг, быстрое переобучение и эффективное развёртывание на периферии.

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

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

  6. Метрики качества необходимы: всегда проверяйте дистиллированные данные, сравнивая показатели «обучение на дистиллированных / тест на реальных» с базовыми линиями на полных данных и случайных подвыборках.

  7. Коэффициенты сжатия экстремальны: сокращение миллионов свечей до десятков синтетических точек (60 000x+ сжатие) открывает новые сценарии развёртывания, невозможные с полными датасетами.

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

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

Ссылки

  • Wang, T., Zhu, J.Y., Torralba, A., & Efros, A.A. (2018). Dataset Distillation. arXiv:1811.10959.
  • Zhao, B., Mopuri, K.R., & Bilen, H. (2021). Dataset Condensation with Gradient Matching. ICLR 2021.
  • Zhao, B. & Bilen, H. (2023). Dataset Condensation with Distribution Matching. WACV 2023.
  • Cazenavette, G., Wang, T., Torralba, A., Efros, A.A., & Zhu, J.Y. (2022). Dataset Distillation by Matching Training Trajectories. CVPR 2022.
  • Nguyen, T., Chen, Z., & Lee, J. (2021). Dataset Meta-Learning from Kernel Ridge-Regression. ICLR 2021.
  • Wang, K., Zhao, B., Peng, X., Zhu, Z., Yang, S., Wang, S., Huang, G., Bilen, H., Wang, X., & You, Y. (2022). CAFE: Learning to Condense Dataset by Aligning Features. CVPR 2022.