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

Глава 157: MoCo Trading (Momentum Contrast для финансов)

Обзор

Self-supervised обучение на финансовых временных рядах часто страдает от “коллапса представлений” или необходимости использования огромных размеров батчей для получения достаточного количества негативных примеров. MoCo (Momentum Contrast) решает эту проблему за счет использования большой динамической Очереди (Queue) признаков и Импульсного Энкодера (Momentum Encoder) для обеспечения согласованности.

В этой главе мы адаптируем MoCo для 1D ценовых паттернов акций. Отделяя размер словаря от размера батча, MoCo позволяет сопоставлять текущие движения цен с тысячами исторических паттернов, не требуя при этом огромного объема памяти GPU.

Ключевые механизмы

  1. Словарь как очередь: Мы поддерживаем FIFO-очередь векторов признаков из предыдущих батчей. Это обеспечивает “длинную память” рыночных состояний для контрастивного сравнения.
  2. Импульсное обновление (Momentum Update): Вместо обратного распространения ошибки через оба энкодера, “Ключевой Энкодер” (Momentum Encoder) обновляется как скользящее среднее от “Запросного Энкодера” (Query Encoder): $$\theta_k \leftarrow m\theta_k + (1-m)\theta_q$$ где $m$ обычно составляет $0.999$. Это гарантирует, что признаки в очереди остаются согласованными, даже когда обучается запросный энкодер.
  3. Контрастивная функция потерь: Мы используем InfoNCE loss, чтобы сделать текущий ценовой паттерн (запрос) похожим на его дополненную версию (положительный ключ) и непохожим на все паттерны, хранящиеся в очереди (негативные ключи).

Почему MoCo важен для трейдинга?

  • Временная стабильность: Импульсное обновление предотвращает слишком быстрое изменение представлений, что критически важно для волатильной и нестационарной природы финансовых рынков.
  • Богатый набор негативных примеров: Рыночные паттерны чрезвычайно разнообразны. Наличие большой очереди позволяет модели отличить “бычий пробой” от тысяч различных типов “бокового шума” или “фаз распределения”.
  • Масштабируемость: MoCo можно обучать на стандартном оборудовании, используя при этом обширный “словарь” исторических рыночных поведений.

Содержание

  • python/model.py: Реализация Query/Momentum энкодеров и логики очереди.
  • python/train.py: Цикл обучения с импульсными обновлениями и управлением очередью.
  • python/evaluate.py: Проверка стабильности извлеченных признаков.
  • rust/src/: Высокопроизводительный инференс признаков с использованием обученных импульсных весов.

Ссылки

  1. He, K., Fan, H., Wu, Y., Xie, S., & Girshick, R. (2020). Momentum Contrast for Unsupervised Visual Representation Learning. arXiv:1911.05722.
  2. Contrastive Learning for Time Series - различные финансовые адаптации.