VICReg Trading: Регуляризация Дисперсии, Инвариантности и Ковариации
Этот репозиторий содержит реализацию метода VICReg (Variance-Invariance-Covariance Regularization) для самообучения (Self-Supervised Learning) на финансовых временных рядах. VICReg — это метод, который эффективно предотвращает коллапс репрезентаций без использования негативных примеров, асимметричных архитектур или кластеризации.
Основная концепция
VICReg работает с двумя дополненными представлениями одних и тех же данных, $x$ и $x’$, создавая эмбеддинги $z$ и $z’$. Он использует три отдельных терма в функции потерь для формирования пространства эмбеддингов:
- Инвариантность (Sim): Минимизирует расстояние между $z$ и $z’$. Модель учится тому, что разные версии одного и того же рыночного окна должны представлять одно и то же базовое состояние.
- Дисперсия (Var): Заставляет стандартное отклонение каждого измерения по батчу быть выше порога $\gamma$ (обычно 1.0). Это предотвращает точечный коллапс (когда все входы отображаются в один и тот же вектор).
- Ковариация (Cov): Минимизирует внедиагональные элементы матрицы ковариации $z$. Это предотвращает коллапс размерностей (когда все измерения становятся сильно коррелированными), заставляя модель использовать всю емкость эмбеддинга.
Преимущества для трейдинга
- Не требуются негативные примеры: В трейдинге сложно определить, что считать “негативным” примером (отличается ли падение на 1% сегодня от такого же падения год назад?). VICReg избегает этой неопределенности.
- Разнообразие признаков: Благодаря регуляризации матрицы ковариации, VICReg гарантирует, что выученные признаки (волатильность, тренд, импульс) будут независимыми и не избыточными.
- Стабильность обучения: Более стабильная функция потерь по сравнению с контрастивными методами, что критично для нестабильных финансовых данных.
Структура проекта
python/: Реализация модели и цикла обучения на PyTorch.rust/: Высокопроизводительная библиотека на Rust для извлечения признаков в реальном времени.docs/: Теоретический разбор и детали реализации.