Глава 200: Тензорные сети в трейдинге
1. Введение
Тензорные сети (ТС) возникли в квантовой физике как один из самых мощных математических инструментов для представления и обработки многомерных данных. В физике конденсированного состояния они обеспечили прорыв в моделировании квантовых многочастичных систем, которые ранее были неразрешимы. Теперь тот же математический аппарат находит применение в машинном обучении и, в частности, в количественном трейдинге.
Основная идея проста, но глубока: реальные данные, несмотря на то что они живут в экспоненциально больших пространствах, часто обладают структурой, которую тензорные сети могут захватить с гораздо меньшим числом параметров, чем наивное представление. В трейдинге мы работаем именно с такими многомерными структурированными данными: сотни коррелированных активов, каждый с несколькими признаками, эволюционирующими во времени. Ковариационная матрица для 500 активов уже содержит 125 000 элементов, а корреляции более высокого порядка растут комбинаторно. Тензорные сети предоставляют принципиальный способ сжатия этих структур с сохранением существенной информации.
Эта глава вводит тензорные сети с нуля, связывает их с машинным обучением и демонстрирует их применение к задачам трейдинга, включая классификацию рыночных режимов, моделирование корреляций и построение портфелей. Все реализации предоставлены на Rust для производственной производительности, с данными, полученными через API биржи Bybit.
2. Математические основы
Тензоры
Тензор — это многомерный массив чисел. Скаляр — тензор нулевого порядка, вектор — первого порядка, матрица — второго порядка и так далее. Тензор N-го порядка T с размерностями d_1 x d_2 x … x d_N имеет элементы T(i_1, i_2, …, i_N), где каждый индекс i_k принимает значения от 1 до d_k.
Общее число элементов растет экспоненциально с порядком N. Например, если каждая размерность d = 10 и N = 20, тензор содержит 10^20 элементов — хранить или обрабатывать их напрямую явно невозможно. Это «проклятие размерности», для преодоления которого и предназначены тензорные сети.
Тензорная декомпозиция
Тензорная декомпозиция факторизует тензор высокого порядка в сеть тензоров более низкого порядка. Наиболее важные декомпозиции для наших целей:
CP-декомпозиция (CANDECOMP/PARAFAC): Представляет тензор как сумму тензоров ранга один:
T(i_1, ..., i_N) = sum_r A_1(i_1, r) * A_2(i_2, r) * ... * A_N(i_N, r)где r изменяется от 1 до R (ранг). Это требует только N * d * R параметров вместо d^N.
Декомпозиция Таккера: Обобщает CP введением ядерного тензора G:
T(i_1, ..., i_N) = sum_{r_1,...,r_N} G(r_1,...,r_N) * U_1(i_1, r_1) * ... * U_N(i_N, r_N)Матричные произведения состояний (MPS) / Тензорный поезд (TT)
Матричное произведение состояний (MPS), также известное как декомпозиция тензорного поезда (TT), — наиболее широко используемый формат тензорных сетей. Он представляет тензор как цепочку тензоров третьего порядка:
T(i_1, i_2, ..., i_N) = sum_{a_1,...,a_{N-1}} A_1(i_1, a_1) * A_2(a_1, i_2, a_2) * ... * A_N(a_{N-1}, i_N)Здесь каждый A_k — трехиндексный тензор («ядро») с:
- Одним «физическим» индексом i_k размерности d_k (реальная размерность данных)
- Двумя «связевыми» индексами a_{k-1} и a_k размерностей r_{k-1} и r_k (внутренние размерности)
Граничные ядра A_1 и A_N имеют только два индекса (один связевой индекс тривиально равен 1).
Общее число параметров приблизительно равно N * d * r^2, где r — максимальная размерность связи. Это линейно по N, а не экспоненциально — драматическое сжатие.
Размерность связи
Размерность связи r управляет выразительностью MPS. Большая размерность связи может захватить больше корреляций между узлами, но требует больше памяти и вычислений:
- r = 1: Тензор является произведением состояний без корреляций между узлами.
- r = d^(N/2): MPS может представить любой тензор точно (без сжатия).
- Промежуточные r: Захватывают наиболее важные корреляции при сжатии.
Оптимальная размерность связи зависит от структуры запутанности данных. Здесь связь с квантовой физикой становится конкретной.
Энтропия запутанности
Для данного MPS можно выполнить разбиение на любой связи и вычислить энтропию запутанности S через сингулярные значения соответствующей матрицы:
S = -sum_i lambda_i^2 * log(lambda_i^2)где lambda_i — сингулярные значения. Энтропия запутанности количественно определяет, сколько корреляции существует через разбиение. Если S мала, достаточно малой размерности связи. Это дает принципиальный способ адаптивного выбора размерностей связи.
В трейдинге энтропия запутанности на различных разбиениях показывает, какие группы активов наиболее коррелированы — предоставляя информацию, выходящую за рамки парных корреляционных матриц.
3. ТС для машинного обучения
ТС как классификаторы
Стауденмайер и Шваб (2016) показали, что тензорные сети могут служить мощными классификаторами с учителем. Идея элегантна:
- Кодирование признаков: Отображение каждого входного признака x_j в локальный d-мерный вектор через отображение признаков phi(x_j). Распространенный выбор:
phi(x) = [cos(pi*x/2), sin(pi*x/2)]Это отображает скалярный признак в двумерное локальное гильбертово пространство.
- Тензорное произведение: Полный вектор признаков — это тензорное произведение всех локальных векторов признаков:
Phi(x) = phi(x_1) tensor phi(x_2) tensor ... tensor phi(x_N)Это живет в d^N-мерном пространстве, но структурировано как произведение состояний.
- Классификация: Классификатор — это MPS W, который свертывается с вектором признаков для получения метки:
f(x) = W . Phi(x)где точка обозначает полную тензорную свертку. MPS W имеет дополнительный индекс метки, дающий один выход на класс.
- Обучение: Оптимизация W путем прохода через ядра MPS одно за другим, решая локальные задачи оптимизации. Это аналогично алгоритму DMRG в физике.
Связь с квантовыми схемами
Существует глубокая связь между тензорными сетями и квантовыми вычислениями. MPS с размерностью связи r может быть подготовлен квантовой схемой глубины O(N * log(r)). И наоборот, выход квантовой схемы с ограниченной запутанностью может быть эффективно представлен как MPS. Это означает, что тензорно-сетевые классификаторы можно рассматривать как «классические симуляции» определенных квантовых моделей машинного обучения.
Преимущества перед традиционным МО
Тензорно-сетевые классификаторы предлагают несколько уникальных преимуществ:
- Интерпретируемость: Размерность связи на каждом разрезе показывает, сколько информации проходит между группами признаков.
- Контролируемая сложность: Размерность связи напрямую контролирует емкость модели.
- Отсутствие бесплодных плато: В отличие от глубоких нейронных сетей, ландшафт оптимизации MPS относительно гладкий.
- Гарантированная сходимость: Оптимизация проходом связана с чередующимися наименьшими квадратами, которые имеют хорошо изученные свойства сходимости.
4. Применения в трейдинге
Моделирование корреляций между многими активами
Традиционные ковариационные матрицы захватывают парные корреляции, но упускают зависимости более высокого порядка. Например, три актива могут иметь почти нулевые парные корреляции, но сильные тройные взаимодействия (например, треугольный арбитраж). Тензорные сети естественно захватывают эти корреляции высшего порядка.
MPS-представление совместного распределения вероятностей доходностей N активов:
P(r_1, r_2, ..., r_N) = ||MPS(r_1, r_2, ..., r_N)||^2захватывает корреляции до порядка r^2, где r — размерность связи. Исследуя энтропию запутанности на каждой связи, мы можем идентифицировать кластеры высоко коррелированных активов.
Сжатие больших ковариационных структур
Для вселенной из N активов с T временными шагами полный корреляционный тензор имеет N^2 * T^2 элементов только для парных временных запаздывающих корреляций. MPS-сжатие уменьшает это до O(N * r^2 * d) параметров, делая возможным моделирование тысяч активов со сложными временными зависимостями.
Ключевое наблюдение состоит в том, что финансовые корреляции часто приближенно имеют низкий ранг. Ведущие сингулярные значения эмпирических ковариационных матриц убывают быстро, что предполагает, что умеренная размерность связи захватывает большую часть релевантной структуры.
Моделирование временных рядов с MPS
MPS может моделировать временной ряд, рассматривая каждый временной шаг как «узел» в сети. Размерность связи тогда контролирует, сколько памяти модель имеет о прошлых событиях:
- r = 1: Модель без памяти (марковская).
- r > 1: Модель захватывает временные корреляции длиной до O(log(r)) для экспоненциально убывающих корреляций.
Это обеспечивает естественную основу для обнаружения рыночных режимов: различные режимы соответствуют различным MPS-представлениям, а переходы между режимами проявляются как изменения в структуре размерностей связи.
Обнаружение рыночных режимов
Мы можем обучить MPS-классификатор для различения рыночных режимов:
- Бычий режим: Характеризуется положительным дрифтом, низкой волатильностью, положительной автокорреляцией.
- Медвежий режим: Отрицательный дрифт, высокая волатильность, кластеризация волатильности.
- Боковой режим: Почти нулевой дрифт, умеренная волатильность, возврат к среднему.
MPS-классификатор кодирует ценовые признаки (доходности, волатильность, изменения объема) в локальные тензорные пространства и обучается корреляциям, которые различают режимы.
Построение портфеля
Тензорные сети обеспечивают новый подход к построению портфеля:
- Моделирование совместного распределения доходностей как MPS.
- Эффективное вычисление маргинальных и условных распределений через частичную свертку.
- Оптимизация весов портфеля путем максимизации ожидаемой полезности при MPS-кодированном распределении.
Этот подход естественно обрабатывает негауссовские распределения и моменты высшего порядка без экспоненциальных затрат на полные тензоры моментов.
5. ТС против глубокого обучения
Тензорные сети и глубокие нейронные сети имеют взаимодополняющие сильные стороны:
| Аспект | Тензорные сети | Глубокое обучение |
|---|---|---|
| Параметры | Контролируются размерностью связи | Контролируются архитектурой |
| Интерпретируемость | Высокая (структура запутанности) | Низкая (черный ящик) |
| Обучение | Проходом (выпуклые подзадачи) | Градиентный спуск (невыпуклая) |
| Эффективность данных | Часто лучше на малых данных | Требует больших наборов данных |
| Корреляции высшего порядка | Явные по конструкции | Неявные в слоях |
| Вычислительная стоимость | O(N * r^3 * d) за проход | Варьируется широко |
| Риск переобучения | Контролируется размерностью связи | Требует регуляризации |
Тензорные сети, как правило, превосходят глубокое обучение когда:
- Число признаков умеренное (10-100), но корреляции сложны.
- Обучающих данных мало (сотни — малые тысячи образцов).
- Важна интерпретируемость.
- Данные имеют естественный одномерный порядок (временные ряды, упорядоченные активы).
Глубокое обучение, как правило, выигрывает когда:
- Доступны огромные наборы данных.
- Признаки имеют пространственную или иерархическую структуру.
- Задача требует обучения сильно нелинейных преобразований.
На практике гибридные подходы могут объединить преимущества обоих: использовать тензорные сети для извлечения признаков и моделирования корреляций, затем подавать сжатые представления в нейронные сети для финального предсказания.
6. Пошаговое описание реализации
Наша реализация на Rust предоставляет полную систему тензорно-сетевого трейдинга. Основные компоненты:
Структура ядра MPS
Каждое ядро в MPS — трехиндексный тензор, хранящийся как развернутый массив с размерностями (bond_left, physical, bond_right). Структура MPSCore управляет ядерными тензорами и предоставляет методы для свертки, SVD-усечения и кодирования признаков.
pub struct TensorCore { pub data: Array3<f64>,}
pub struct MPS { pub cores: Vec<TensorCore>, pub bond_dims: Vec<usize>, pub phys_dim: usize,}Кодирование признаков
Признаки кодируются в локальные тензорные пространства с помощью тригонометрического отображения:
pub fn encode_feature(x: f64, phys_dim: usize) -> Array1<f64> { let mut phi = Array1::zeros(phys_dim); phi[0] = (std::f64::consts::FRAC_PI_2 * x).cos(); phi[1] = (std::f64::consts::FRAC_PI_2 * x).sin(); phi}Свертка и классификация
MPS свертывается с закодированными признаками путем последовательного умножения через цепочку. Финальный результат — вектор по индексу метки.
SVD-усечение
Размерности связи контролируются через SVD-усечение после каждого шага обновления. Ошибка усечения предоставляет естественную меру потери информации.
Обучение
Обучение происходит путем прохода через ядра MPS, оптимизируя каждое ядро при фиксированных остальных. Каждая локальная оптимизация — линейная задача наименьших квадратов, решаемая точно.
Полная реализация находится в rust/src/lib.rs с полным примером трейдинга в rust/examples/trading_example.rs.
7. Интеграция с Bybit
Реализация получает реальные рыночные данные через API Bybit:
pub async fn fetch_bybit_klines(symbol: &str, interval: &str, limit: usize) -> Result<Vec<KlineData>>Эта функция извлекает данные OHLCV (Open, High, Low, Close, Volume) для любой торговой пары, доступной на Bybit. Данные затем обрабатываются в признаки, подходящие для тензорно-сетевого кодирования:
- Нормализованные доходности: (close - open) / open, масштабированные в [0, 1].
- Прокси волатильности: (high - low) / open, масштабированные в [0, 1].
- Изменение объема: Отношение текущего к среднему объему, масштабированное в [0, 1].
Несколько активов могут быть загружены параллельно, и их признаки объединены для формирования входа MPS-классификатора или анализа корреляций.
Используемый REST API endpoint Bybit:
GET https://api.bybit.com/v5/market/kline?category=spot&symbol={symbol}&interval={interval}&limit={limit}Аутентификация не требуется для публичных endpoint-ов рыночных данных.
8. Ключевые выводы
-
Тензорные сети обеспечивают экспоненциальное сжатие многомерных данных, используя низкоранговую структуру. Для N активов с d признаками каждый MPS уменьшает число параметров с d^N до O(N * r^2 * d).
-
Размерность связи — ключевой гиперпараметр. Она контролирует компромисс между выразительностью и эффективностью. Энтропия запутанности предоставляет принципиальный способ ее выбора.
-
MPS-классификаторы интерпретируемы. Структура связей показывает, какие признаки и группы активов несут наибольшую предсказательную информацию о рыночных режимах.
-
Корреляции высшего порядка захватываются естественно. В отличие от ковариационных матриц, тензорные сети моделируют взаимодействия между произвольными подмножествами активов.
-
Обучение устойчиво. Оптимизация проходом избегает многих ловушек градиентного обучения (затухающие градиенты, локальные минимумы, бесплодные плато).
-
Тензорные сети дополняют глубокое обучение. Они превосходят в режимах малых данных, при умеренном числе признаков и когда важна интерпретируемость. Гибридные подходы могут использовать оба.
-
Реализация на Rust обеспечивает готовность к продакшену. Сочетание производительности, безопасности памяти и эргономичной обработки ошибок делает Rust идеальным для тензорно-сетевых вычислений в торговых системах.
-
Интеграция с Bybit предоставляет реальные рыночные данные. Реализация демонстрирует полный рабочий процесс от получения данных до классификации режимов и анализа корреляций.