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

Temporal Contrastive Learning для Stocks

Этот репозиторий содержит реализацию Temporal Contrastive Learning (TCL) для автоматического извлечения признаков (Self-Supervised Learning) на финансовых временных рядах. В отличие от методов, которые генерируют искусственный шум или искажения для создания “позитивных пар” (например, SimCLR или BYOL), TCL использует естественное течение времени.

Основная концепция

На финансовых рынках базовый “режим” или состояние рынка меняется относительно медленно по сравнению с минутным шумом. Следовательно, временное окно $x_t$ и его ближайший сосед во времени $x_{t+k}$ (где $k$ невелико) разделяют одно и то же базовое скрытое состояние рынка.

TCL использует эту структурную особенность:

  • Позитивная пара: $(x_t, x_{t+k})$ — архитектурно воспринимаются как два разных взгляда на один и тот же базовый режим.
  • Негативные пары: $(x_t, x_{rand})$ — временные окна, случайно выбранные из отдаленных участков истории случайным образом батча, представляющие другие режимы.

Сеть обучается с использованием функции потерь InfoNCE (Normalized Temperature-scaled Cross Entropy), но вместо искусственных аугментаций в качестве позитивов используются естественно соседствующие отрезки времени.

Преимущества для трейдинга

  • Нет искусственных искажений: Финансовые данные непрерывны. Искусственное добавление случайного шума или инверсия сигналов для аугментации может разрушить финансовый смысл. TCL избегает этого, используя сырую, неизмененную последовательность данных.
  • Временная гладкость (Temporal Smoothness): Эмбеддинги, полученные с помощью TCL, плавно эволюционируют в скрытом пространстве с течением времени. Это делает их исключительно полезными для Скрытых Марковских Моделей (HMM) или классификаторов смены режимов, так как модель естественным образом отслеживает макро-состояния.
  • Понимание уникальности тренда: Контрастируя локальное соседство с глобальными расстояниями, модель учится выделять, что делает конкретный микро-тренд уникальным по сравнению со всей остальной историей торгов.

Структура проекта

  • python/: Реализация на PyTorch CNN1DEncoder, проекционной головы, TemporalContrastiveLoss на базе InfoNCE и кастомного цикла обучения со сэмплингом соседних временных окон.
  • rust/: Высокопроизводительная библиотека на Rust для извлечения временных признаков в реальном времени для торговых систем (production).
  • docs/: Теоретический разбор и детали реализации.