Глава 190: Квантовый SVM для трейдинга
1. Введение
Метод опорных векторов (SVM) долгое время был рабочей лошадкой финансового машинного обучения. Его способность находить оптимальные разделяющие гиперплоскости в многомерных пространствах признаков делает его естественно подходящим для задач классификации в трейдинге: различение бычьих и медвежьих режимов, прогнозирование направления сделок и обнаружение аномальных паттернов. Однако по мере роста размерности и сложности данных классические SVM сталкиваются с вычислительными узкими местами, особенно при вычислении ядерных функций в экспоненциально больших пространствах признаков.
Квантовые машины опорных векторов (QSVM) предлагают убедительную альтернативу. Используя принципы квантовых вычислений, QSVM могут вычислять ядерные функции в пространствах признаков, недоступных для классических компьютеров. Ключевая идея заключается в том, что квантовые схемы могут эффективно отображать классические данные в квантовые гильбертовы пространства экспоненциальной размерности, вычислять скалярные произведения между отображёнными состояниями и тем самым строить ядерные матрицы, улавливающие паттерны, невидимые для классических ядер.
В этой главе мы строим полную систему квантового SVM для трейдинга на языке Rust. Мы моделируем вычисление квантового ядра классически (поскольку отказоустойчивое квантовое оборудование остаётся ограниченным), но математический аппарат полностью совместим с выполнением на реальных квантовых процессорах. Наша система получает рыночные данные с биржи Bybit, конструирует финансовые признаки, размечает рыночные режимы, обучает классификатор QSVM и оценивает точность прогнозов.
2. Математические основы
2.1 Алгоритм QSVM
Классический SVM решает следующую задачу оптимизации. Дана обучающая выборка {(x_i, y_i)}, где x_i — вектора признаков, а y_i — метки классов из {-1, +1}. Мы ищем максимизацию зазора между классами, находя оптимальную разделяющую гиперплоскость. Двойственная формулировка включает вычисление ядерной матрицы K, где K_ij = K(x_i, x_j) = phi(x_i) . phi(x_j), где phi — отображение признаков в пространство более высокой размерности.
В QSVM отображение признаков phi реализуется параметризованной квантовой схемой. Ключевые шаги:
- Кодирование: Отображение классических данных x в квантовое состояние |phi(x)> с помощью квантовой схемы отображения признаков U(x).
- Оценка ядра: Вычисление квантового ядра как K(x_i, x_j) = |<phi(x_i)|phi(x_j)>|^2 — квадрат перекрытия квантовых состояний.
- Оптимизация: Использование квантовой ядерной матрицы в классической оптимизации SVM (например, алгоритм SMO).
- Прогнозирование: Классификация новых точек данных с использованием обученной модели с квантовыми ядерными вычислениями.
2.2 Квантовое отображение признаков phi(x)
ZZ-отображение признаков — одно из наиболее изученных квантовых отображений для задач классификации. Для n-мерного входного вектора x = (x_1, x_2, …, x_n) схема ZZ-отображения действует на n кубитов и состоит из двух слоёв:
Слой 1 — Однокубитные вращения: Применяем гейт Адамара H к каждому кубиту, затем Z-вращение:
U_phi(x) = exp(i * x_k * Z_k) * H_k для каждого кубита kСлой 2 — Запутывающие взаимодействия: Применяем управляемые Z-вращения между парами кубитов:
U_ZZ(x) = exp(i * (pi - x_j)(pi - x_k) * Z_j Z_k) для каждой пары (j, k)Полная схема отображения: U(x) = U_ZZ(x) * U_phi(x), а квантовое состояние: |phi(x)> = U(x)|0…0>.
Отображение может быть повторено r раз (параметр глубины) для увеличения выразительности:
U(x)^r = [U_ZZ(x) * U_phi(x)]^r2.3 Оценка ядра через квантовые схемы
Квантовое ядро K(x_i, x_j) оценивается путём подготовки состояния:
|psi> = U(x_j)^dagger * U(x_i) |0...0>и измерения вероятности получения результата |0…0>. Эта вероятность равна |<phi(x_j)|phi(x_i)>|^2, что и является значением нашего ядра.
На реальном квантовом компьютере это оценивается многократной подготовкой и измерением состояния (сэмплированием). В нашей классической симуляции мы вычисляем это точно с помощью матричной алгебры.
2.4 Гиперплоскость в квантовом пространстве признаков
Решающая функция QSVM:
f(x) = sign( sum_i alpha_i * y_i * K(x_i, x) + b )где alpha_i — двойственные переменные (множители Лагранжа), полученные из оптимизации SVM, y_i — обучающие метки, K(x_i, x) — квантовое ядро, b — смещение. Опорные вектора — это обучающие точки с alpha_i > 0.
Разделяющая гиперплоскость существует в квантовом гильбертовом пространстве признаков, имеющем размерность 2^n для n кубитов. Это экспоненциально большое пространство позволяет QSVM находить разделяющие границы, невозможные для классических ядер, работающих в пространствах полиномиальной размерности.
3. Классический SVM против квантового SVM
3.1 Сравнение вычислительной сложности
| Аспект | Классический SVM (RBF-ядро) | Квантовый SVM |
|---|---|---|
| Размерность пространства признаков | Бесконечная (для RBF), но структурированная | 2^n (гильбертово пространство) |
| Вычисление ядра (классически) | O(d) на пару | O(4^n) на пару (симуляция) |
| Вычисление ядра (квантовое оборудование) | Н/Д | O(poly(n)) на пару |
| Обучение (при данной ядерной матрице) | O(N^2) до O(N^3) | O(N^2) до O(N^3) |
| Выразительность | Ограничена выбором ядра | Настраиваема через дизайн схемы |
3.2 Когда квантовые вычисления дают преимущество
Квантовое преимущество в SVM возникает в конкретных сценариях:
-
Сложные задачи классификации: Когда данные встроены в пространство признаков, где классические ядра не могут эффективно разделить классы, но квантовые ядра могут. Это происходит, когда процесс генерации данных имеет квантоподобные корреляции.
-
Многомерные пространства признаков: Когда число признаков велико, квантовые отображения могут исследовать экспоненциально большие гильбертовы пространства без экспоненциальных вычислительных затрат (на квантовом оборудовании).
-
Выравнивание ядер: Квантовые ядра наиболее выгодны, когда они имеют высокое выравнивание с идеальным ядром для задачи. Случайные квантовые схемы производят ядра, сходящиеся к тривиальным (близким к единичной) матрицам по мере роста числа кубитов, поэтому тщательный дизайн схемы критически важен.
-
Финансовые приложения: Рынки — это сложные адаптивные системы со множеством взаимодействующих агентов. Нелинейная, многомерная природа ценовой динамики может извлечь пользу из квантовых пространств признаков, улавливающих многочастичные корреляции между признаками.
На практике, для малых размерностей признаков, типичных в трейдинге (5-20 признаков), квантовое преимущество в основном теоретическое. Наша реализация служит каркасом, готовым к развёртыванию на квантовом оборудовании по мере его развития.
4. Торговое приложение
4.1 Классификация рыночных режимов
Классификация рыночных режимов — естественное применение QSVM. Мы определяем три режима на основе скользящих доходностей и волатильности:
- Бычий режим (+1): Положительная доходность выше порога при умеренной волатильности
- Медвежий режим (-1): Отрицательная доходность ниже порога
- Боковой режим (0): Доходность в узком диапазоне около нуля
QSVM обучается отображать многомерные вектора признаков (доходности, волатильность, индикаторы моментума) в эти метки режимов. Квантовое ядро может улавливать нелинейные взаимодействия между признаками, характеризующие переходы между режимами.
4.2 Прогнозирование направления сделки
Помимо классификации режимов, QSVM может прогнозировать краткосрочное направление сделки. На основе признаков, вычисленных в момент t, модель предсказывает, будет ли цена в момент t+1 выше или ниже. Это формулируется как бинарная классификация с метками +1 (вверх) и -1 (вниз).
4.3 Обнаружение аномальных торговых паттернов
Варианты одноклассного SVM с квантовыми ядрами могут обнаруживать аномальное поведение рынка. Обучаясь на «нормальных» рыночных данных, модель изучает границу типичной рыночной динамики. Точки данных, выходящие за эту границу, сигнализируют о необычной активности, которая может указывать на смену режимов, мгновенные обвалы или манипуляции.
4.4 Конструирование признаков
Наш набор признаков включает:
- Логарифмические доходности: r_t = ln(P_t / P_{t-1}) для нескольких окон наблюдения
- Реализованная волатильность: Стандартное отклонение доходностей по скользящему окну
- Моментум типа RSI: Отношение средних прибылей к средним убыткам за период наблюдения
- Коэффициент объёма: Текущий объём относительно скользящего среднего объёма
- Позиция цены: Где текущая цена находится относительно недавних максимума и минимума
Признаки нормализуются в диапазон [0, pi] для кодирования квантовым отображением, поскольку ZZ-отображение использует эти значения как углы вращения.
5. Пошаговый обзор реализации
5.1 Структура проекта
190_quantum_svm_trading/ rust/ Cargo.toml src/ lib.rs # Основная реализация QSVM examples/ trading_example.rs # Полный торговый пайплайн5.2 Кодирование квантовым отображением признаков
ZZ-отображение реализовано как функция, вычисляющая унитарную матрицу U(x) для заданного входного вектора x. Для n признаков мы используем n кубитов. Реализация строит схему слой за слоем:
// Псевдокод для ZZ-отображенияfn zz_feature_map(x: &[f64], depth: usize) -> Array2<Complex64> { let n_qubits = x.len(); let dim = 1 << n_qubits; let mut state = Array2::eye(dim); // единичная матрица
for _ in 0..depth { // Применяем гейты H ко всем кубитам // Применяем Rz(x_k) к каждому кубиту k // Применяем RZZ((pi - x_j)(pi - x_k)) к каждой паре (j,k) } state}5.3 Квантовая ядерная матрица
Ядерная матрица вычисляется оценкой K(x_i, x_j) для всех пар обучающих примеров:
fn quantum_kernel_matrix(data: &[Vec<f64>], depth: usize) -> Array2<f64> { let n = data.len(); let mut kernel = Array2::zeros((n, n)); for i in 0..n { for j in i..n { let k = quantum_kernel(&data[i], &data[j], depth); kernel[[i, j]] = k; kernel[[j, i]] = k; } } kernel}5.4 Обучение SVM
Мы используем упрощённый подход Sequential Minimal Optimization (SMO) для решения двойственной задачи SVM с квантовой ядерной матрицей. Основной цикл оптимизации выбирает пары множителей Лагранжа и обновляет их для улучшения целевой функции.
5.5 Интеграция с Bybit
Данные получаются через публичный API Bybit (аутентификация не требуется для рыночных данных):
let url = format!( "https://api.bybit.com/v5/market/kline?category=linear&symbol={}&interval={}&limit={}", symbol, interval, limit);Ответ содержит OHLCV-свечи, которые разбираются во внутренние структуры данных для конструирования признаков.
6. Интеграция данных Bybit
API Bybit предоставляет исторические данные kline (свечей), служащие нашим входом. Мы получаем данные бессрочных фьючерсов BTCUSDT на различных таймфреймах. API возвращает массивы [timestamp, open, high, low, close, volume, turnover], которые мы разбираем в структурированные данные свечей.
Ключевые аспекты интеграции данных:
- Ограничение частоты запросов: Bybit допускает щедрые лимиты для публичных эндпоинтов, но мы реализуем разумные задержки между запросами.
- Качество данных: Мы обрабатываем пропущенные свечи и проверяем непрерывность временных меток.
- Нормализация: Сырые цены преобразуются в доходности и нормализованные индикаторы перед подачей в квантовое отображение.
- Разделение train/test: Мы используем временное разделение (более ранние данные для обучения, более поздние для тестирования) во избежание заглядывания в будущее, что критически важно в финансовом ML.
Конвейер:
- Получить N свечей BTCUSDT из Bybit
- Вычислить признаки (доходности, волатильность, RSI, коэффициент объёма, позиция цены)
- Разметить каждую свечу рыночным режимом
- Нормализовать признаки в [0, pi]
- Разделить на обучающую и тестовую выборки
- Вычислить квантовые ядерные матрицы
- Обучить QSVM на обучающей выборке
- Прогнозировать на тестовой выборке и оценить результат
7. Ключевые выводы
-
Квантовые SVM расширяют классические SVM, заменяя классическое ядро квантовым ядром, вычисляемым параметризованными квантовыми схемами. Квантовое отображение признаков кодирует данные в экспоненциально большое гильбертово пространство.
-
ZZ-отображение — практичный выбор для вычисления квантового ядра. Оно кодирует как значения отдельных признаков (через однокубитные вращения), так и взаимодействия признаков (через двухкубитные запутывающие гейты).
-
Оценка ядра на квантовом компьютере требует лишь полиномиальных ресурсов по числу кубитов, но классическая симуляция масштабируется экспоненциально. Именно здесь квантовое оборудование в конечном счёте обеспечит ускорение.
-
Классификация рыночных режимов — естественное применение. Многоклассовая природа идентификации режимов (бычий/медвежий/боковой) и нелинейные взаимодействия финансовых признаков делают эту задачу хорошим кандидатом для квантовых ядерных методов.
-
Конструирование признаков остаётся критически важным. Даже при мощном квантовом ядре выбор и качество входных признаков определяют производительность модели. Стандартные финансовые признаки (доходности, волатильность, моментум) обеспечивают прочную основу.
-
Классическая симуляция достаточна для разработки. Наша реализация на Rust точно моделирует квантовые схемы, позволяя разрабатывать и тестировать полный пайплайн без квантового оборудования. Та же логика кода напрямую отображается на квантовое выполнение при появлении соответствующего оборудования.
-
Практические соображения: Для промышленного трейдинга текущее квантовое преимущество ограничено аппаратными ограничениями (шум, количество кубитов, время когерентности). Фреймворк, который мы здесь строим, спроектирован для бесшовного перехода на реальные квантовые бэкенды по мере их развития.
-
Rust обеспечивает преимущества в производительности для вычислительно интенсивного вычисления ядерной матрицы и оптимизации SVM. Строгая система типов также помогает выявлять ошибки в сложных операциях линейной алгебры на этапе компиляции.