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

Глава 189: Квантовые ядра в трейдинге

1. Введение

Квантовые вычисления обещают произвести революцию во многих областях, и финансовые рынки представляют собой одну из наиболее перспективных сфер применения. В основе этой революции лежит концепция квантовых ядер — математических функций, использующих принципы квантовой механики для обнаружения паттернов в данных, которые классические методы с трудом распознают.

В классическом машинном обучении ядерные методы, такие как метод опорных векторов (SVM), давно используются для задач классификации и регрессии. Ядерный трюк позволяет алгоритмам работать в многомерных пространствах признаков без явного вычисления координат в этих пространствах. Квантовые ядра расширяют эту идею, используя квантовые схемы в качестве карт признаков, проецируя данные в экспоненциально большие гильбертовы пространства, где ранее невидимые паттерны становятся разделимыми.

Для финансовых рынков эта возможность особенно актуальна. Движения цен определяются сложными нелинейными взаимодействиями тысяч переменных — динамикой потока ордеров, макроэкономическими сдвигами, каскадами настроений и сменой режимов. Классическая инженерия признаков может уловить некоторые из этих взаимосвязей, но квантовые ядра предлагают принципиально другой подход: кодирование финансовых данных в квантовые состояния и измерение сходства в пространстве, размерность которого экспоненциально растёт с числом кубитов.

Эта глава исследует теорию квантовых ядер, их математические основы и способы применения к реальным торговым задачам. Мы создаём полную реализацию на Rust, которая моделирует вычисления квантовых ядер и применяет их к определению рыночных режимов, используя данные биржи Bybit в реальном времени.

2. Математические основы

2.1 Квантовые карты признаков

Квантовая карта признаков — это параметризованная квантовая схема $U(\mathbf{x})$, которая отображает классическую точку данных $\mathbf{x} \in \mathbb{R}^d$ в квантовое состояние в $2^n$-мерном гильбертовом пространстве:

$$\mathbf{x} \mapsto |\phi(\mathbf{x})\rangle = U(\mathbf{x})|0\rangle^{\otimes n}$$

где $n$ — число кубитов, а $|0\rangle^{\otimes n}$ — начальное состояние всех кубитов, установленных в ноль. Унитарный оператор $U(\mathbf{x})$ кодирует классические признаки в квантовое состояние через вращения и операции запутывания.

Ключевое наблюдение состоит в том, что, хотя входные данные живут в $\mathbb{R}^d$, квантовое состояние живёт в $\mathbb{C}^{2^n}$ — пространстве, размерность которого экспоненциально растёт с числом кубитов. Именно этот экспоненциальный рост даёт квантовым ядрам потенциальное преимущество перед классическими методами.

2.2 Ядерный трюк в гильбертовом пространстве

В классических ядерных методах функция ядра $K(\mathbf{x}, \mathbf{y})$ вычисляет скалярное произведение точек данных, отображённых в пространство признаков:

$$K(\mathbf{x}, \mathbf{y}) = \langle \phi(\mathbf{x}), \phi(\mathbf{y}) \rangle$$

Для квантовых ядер мы определяем ядро верности (fidelity kernel) как квадрат перекрытия двух квантовых состояний:

$$K(\mathbf{x}, \mathbf{y}) = |\langle \phi(\mathbf{x}) | \phi(\mathbf{y}) \rangle|^2$$

Эта величина имеет прямую физическую интерпретацию: это вероятность того, что квантовое состояние, подготовленное как $|\phi(\mathbf{x})\rangle$, будет измерено как $|\phi(\mathbf{y})\rangle$. Когда $\mathbf{x} = \mathbf{y}$, ядро равно 1. Когда точки данных максимально различаются в квантовом пространстве состояний, ядро стремится к 0.

Ядро верности удовлетворяет требованиям допустимой функции ядра (условие Мерсера): оно симметрично и положительно полуопределено. Это означает, что его можно использовать как замену любого классического ядра в алгоритмах типа SVM.

2.3 Вычисление скалярного произведения

Скалярное произведение $\langle \phi(\mathbf{x}) | \phi(\mathbf{y}) \rangle$ вычисляется как:

$$\langle \phi(\mathbf{x}) | \phi(\mathbf{y}) \rangle = \langle 0|^{\otimes n} U^\dagger(\mathbf{x}) U(\mathbf{y}) |0\rangle^{\otimes n}$$

При моделировании это означает, что мы строим векторы состояний для обоих входов, а затем вычисляем их комплексное скалярное произведение. На реальном квантовом оборудовании это оценивается через повторные измерения с использованием swap-теста или метода вычисление-обратное вычисление.

2.4 Выравнивание квантовых ядер

Не все квантовые ядра одинаково полезны для данной задачи. Выравнивание квантовых ядер измеряет, насколько хорошо матрица ядра соответствует идеальному ядру, определяемому метками:

$$\text{KA}(K, K^) = \frac{\langle K, K^ \rangle_F}{|K|_F |K^*|_F}$$

где $K^*_{ij} = y_i y_j$ — идеальная матрица ядра, $\langle \cdot, \cdot \rangle_F$ — скалярное произведение Фробениуса, а $|\cdot|_F$ — норма Фробениуса. Выравнивание ядра, близкое к 1, указывает, что квантовое ядро хорошо подходит для задачи классификации.

На практике можно оптимизировать параметры схемы квантовой карты признаков для максимизации выравнивания ядра с обучающими данными, фактически выполняя форму квантовой инженерии признаков.

3. Торговое применение

3.1 Определение рыночных режимов

Финансовые рынки чередуются между различными режимами: периоды низкой волатильности с трендом, периоды высокой волатильности со средним возвратом и кризисные периоды с экстремальными хвостовыми событиями. Определение этих режимов критически важно для выбора стратегии — моментум-стратегия процветает на трендовых рынках, но страдает во время возврата к среднему, и наоборот.

Квантовые ядра предлагают естественную основу для определения режимов, потому что:

  1. Нелинейная разделимость: рыночные режимы определяются сложными взаимодействиями признаков (кластеризация волатильности, разрушение корреляций, всплески объёма). Квантовые карты признаков проецируют их в пространства, где режимы становятся линейно разделимыми.
  2. Выразительность: с $n$ кубитами пространство признаков имеет размерность $2^n$, что позволяет ядру улавливать взаимодействия между всеми подмножествами признаков одновременно.
  3. Устойчивость к шуму: квадратичное ядро верности $|\langle \phi(\mathbf{x})|\phi(\mathbf{y})\rangle|^2$ обеспечивает гладкую меру сходства, естественно устойчивую к малым возмущениям входных данных.

3.2 Нелинейное распознавание паттернов в ценовых данных

Традиционный технический анализ опирается на индикаторы ручной работы (RSI, MACD, полосы Боллинджера), которые улавливают определённые паттерны. Квантовые ядра могут обнаруживать паттерны, охватывающие несколько признаков одновременно. Например, квантовое ядро может определить, что конкретная комбинация низкого объёма, сужающихся полос Боллинджера и снижающегося RSI надёжно предшествует расширению волатильности — паттерн, слишком сложный для любого одного классического индикатора.

Рабочий процесс распознавания паттернов на основе квантовых ядер:

  1. Инженерия признаков: вычисление финансовых признаков из необработанных данных OHLCV (доходности, волатильность, объёмные соотношения, технические индикаторы).
  2. Квантовое кодирование: отображение признаков в квантовые состояния с использованием параметризованной схемы.
  3. Вычисление ядра: построение матрицы ядра $K_{ij} = |\langle \phi(\mathbf{x}_i)|\phi(\mathbf{x}_j)\rangle|^2$ для всех пар точек данных.
  4. Классификация: использование матрицы ядра с SVM или ядерным перцептроном для классификации рыночных режимов.
  5. Прогноз: для новых данных вычисляются значения ядра относительно обучающего набора и производится классификация.

3.3 Классификация опорными векторами с квантовыми ядрами

SVM с квантовым ядром решает ту же оптимизационную задачу, что и классический SVM:

$$\min_{\alpha} \frac{1}{2} \sum_{i,j} \alpha_i \alpha_j y_i y_j K(\mathbf{x}_i, \mathbf{x}_j) - \sum_i \alpha_i$$

при условиях $0 \leq \alpha_i \leq C$ и $\sum_i \alpha_i y_i = 0$. Единственное отличие — $K$ теперь является квантовым ядром верности. Решающая функция для новой точки $\mathbf{x}$:

$$f(\mathbf{x}) = \text{sign}\left(\sum_i \alpha_i y_i K(\mathbf{x}_i, \mathbf{x}) + b\right)$$

В нашей реализации мы используем упрощённый подход ядерного перцептрона, который итеративно обновляет веса на основе неправильно классифицированных образцов, избегая сложности полного SMO, но при этом используя дискриминативную мощь квантового ядра.

4. Дизайн квантовой карты признаков

4.1 Угловое кодирование

Угловое кодирование отображает каждый классический признак в угол вращения на отдельном кубите:

$$U(\mathbf{x}) = \bigotimes_{i=1}^{n} R_Y(x_i) = \bigotimes_{i=1}^{n} \begin{pmatrix} \cos(x_i/2) & -\sin(x_i/2) \ \sin(x_i/2) & \cos(x_i/2) \end{pmatrix}$$

Это создаёт состояние:

$$|\phi(\mathbf{x})\rangle = \bigotimes_{i=1}^{n} \left[\cos(x_i/2)|0\rangle + \sin(x_i/2)|1\rangle\right]$$

Угловое кодирование требует $n$ кубитов для $n$ признаков и создаёт состояния в $2^n$-мерном пространстве. Это простейшее кодирование и служит нашим основным подходом.

Ядро верности при угловом кодировании имеет замкнутую формулу:

$$K(\mathbf{x}, \mathbf{y}) = \prod_{i=1}^{n} \cos^2\left(\frac{x_i - y_i}{2}\right)$$

Эта произведённая структура означает, что ядро чувствительно к различиям в каждом измерении признаков, и большое различие в любом одном признаке приводит ядро к нулю.

4.2 Амплитудное кодирование

Амплитудное кодирование представляет весь вектор признаков как амплитуды квантового состояния:

$$|\phi(\mathbf{x})\rangle = \frac{1}{|\mathbf{x}|} \sum_{i=0}^{2^n - 1} x_i |i\rangle$$

Это кодирование экспоненциально более компактно — для $d$ признаков нужно всего $\lceil \log_2 d \rceil$ кубитов — но требует более сложных схем для подготовки. При моделировании его можно реализовать напрямую.

4.3 Кодирование финансовых признаков

Финансовые признаки требуют предварительной обработки перед квантовым кодированием:

  1. Нормализация: признаки должны быть масштабированы в $[0, \pi]$ для углового кодирования или нормализованы до единичной длины для амплитудного кодирования.
  2. Отбор признаков: поскольку каждый кубит добавляет экспоненциальные затраты на моделирование, мы выбираем наиболее информативные признаки: логарифмические доходности, скользящую волатильность, относительный объём и моментум.
  3. Временное кодирование: можно кодировать последовательности признаков по временным шагам, создавая более богатое представление, которое улавливает временную динамику.

5. Пошаговое руководство по реализации

Наша реализация на Rust состоит из нескольких ключевых компонентов. Рассмотрим архитектуру и основные алгоритмы.

5.1 Моделирование квантовых состояний

Мы представляем квантовые состояния как векторы комплексных амплитуд с $2^n$ элементами. Структура QuantumState управляет этим представлением:

pub struct QuantumState {
pub amplitudes: Vec<Complex>,
pub num_qubits: usize,
}

Каждая амплитуда — комплексное число с вещественной и мнимой частями. Состояние должно удовлетворять условию нормировки: сумма квадратов модулей равна 1.

5.2 Квантовая карта признаков

QuantumFeatureMap применяет угловое кодирование для преобразования классических векторов признаков в квантовые состояния. Для каждого признака применяется Y-вращение к соответствующему кубиту:

pub fn encode(&self, features: &[f64]) -> QuantumState {
// Начинаем с состояния |0...0>
// Применяем R_Y(x_i) к кубиту i для каждого признака x_i
// Результат: тензорное произведение одно-кубитных состояний
}

Кодирование масштабирует каждый признак в диапазон $[0, \pi]$ перед применением вращений, обеспечивая использование полной сферы Блоха.

5.3 Ядро верности

Основное вычисление ядра рассчитывает $K(\mathbf{x}, \mathbf{y}) = |\langle \phi(\mathbf{x})|\phi(\mathbf{y})\rangle|^2$:

pub fn fidelity_kernel(state1: &QuantumState, state2: &QuantumState) -> f64 {
let inner = inner_product(&state1.amplitudes, &state2.amplitudes);
inner.norm_squared() // |<phi(x)|phi(y)>|^2
}

Для набора данных из $N$ точек мы строим полную матрицу ядра $N \times N$, которая затем передаётся классификатору.

5.4 Классификатор на основе ядерного перцептрона

Мы реализуем ядерный перцептрон, работающий непосредственно с предвычисленной матрицей ядра:

pub fn train(&mut self, kernel_matrix: &Array2<f64>, labels: &[f64], epochs: usize) {
for _ in 0..epochs {
for i in 0..n_samples {
let prediction = self.predict_with_kernel(kernel_matrix, labels, i);
if prediction != labels[i] {
self.alphas[i] += 1.0;
}
}
}
}

Этот алгоритм обновляет вес для каждой обучающей точки при неправильной классификации, выстраивая границу решения в квантовом пространстве признаков.

5.5 Маркировка рыночных режимов

Мы определяем рыночные режимы на основе скользящей волатильности:

  • Режим высокой волатильности (+1): скользящее стандартное отклонение доходностей превышает медиану.
  • Режим низкой волатильности (-1): скользящее стандартное отклонение ниже медианы.

Эта простая схема маркировки улавливает наиболее фундаментальное различие рыночных режимов и обеспечивает чёткие цели для обучения квантового ядерного классификатора.

6. Интеграция с Bybit

Наша реализация получает реальные рыночные данные с биржи Bybit через их публичный REST API. Конвейер данных работает следующим образом:

6.1 Конечная точка API

Мы используем конечную точку Bybit V5 API для данных kline (свечей):

GET https://api.bybit.com/v5/market/kline?category=linear&symbol=BTCUSDT&interval=60&limit=200

Это возвращает данные OHLCV для бессрочных фьючерсов BTCUSDT с часовыми интервалами.

6.2 Конвейер обработки данных

  1. Получение: HTTP GET запрос к API Bybit, разбор JSON-ответа.
  2. Парсинг: извлечение полей timestamp, open, high, low, close и volume.
  3. Инженерия признаков:
    • Логарифмические доходности: $r_t = \ln(C_t / C_{t-1})$
    • Скользящая волатильность: $\sigma_t = \text{std}(r_{t-w+1}, \ldots, r_t)$ с окном $w = 20$
    • Относительный объём: $v_t = V_t / \text{mean}(V_{t-w+1}, \ldots, V_t)$
    • Моментум: $m_t = C_t / C_{t-w} - 1$
  4. Нормализация: масштабирование всех признаков в $[0, \pi]$ для квантового углового кодирования.
  5. Маркировка: присвоение меток режимов на основе порога волатильности.

6.3 Обработка ошибок

Реализация использует крейт anyhow для обработки ошибок, обеспечивая чистую передачу ошибок от сетевых сбоев, ошибок разбора JSON и числовых проблем.

7. Ключевые выводы

  1. Квантовые ядра расширяют классические ядерные методы, используя квантовые схемы в качестве карт признаков, проецируя данные в экспоненциально большие гильбертовы пространства, где сложные паттерны становятся линейно разделимыми.

  2. Ядро верности $K(\mathbf{x}, \mathbf{y}) = |\langle \phi(\mathbf{x})|\phi(\mathbf{y})\rangle|^2$ является допустимым ядром Мерсера, которое измеряет перекрытие квантовых состояний, обеспечивая естественную метрику сходства для классификации.

  3. Угловое кодирование предлагает простой, но эффективный способ отображения финансовых признаков в квантовые состояния, где каждый признак управляет вращением кубита. Результирующее ядро улавливает нелинейные взаимодействия по всем комбинациям признаков.

  4. Определение рыночных режимов — естественное применение квантовых ядер, поскольку режимы определяются сложными многопризнаковыми взаимодействиями, которые выигрывают от многомерных пространств признаков.

  5. Моделирование практично уже сегодня: хотя реальное квантовое оборудование всё ещё шумное и ограниченное, квантовые ядерные методы можно моделировать классически для умеренного числа кубитов (до ~20-25), что позволяет исследователям разрабатывать и проверять квантовые торговые стратегии уже сейчас.

  6. Выравнивание квантовых ядер предоставляет принципиальный способ оценки и оптимизации квантовых карт признаков для конкретных торговых задач, связывая дизайн схемы с финансовой целью.

  7. Интеграция с реальными данными через биржи вроде Bybit демонстрирует, что квантовые ядерные методы могут применяться к реальным рыночным условиям, а не только к академическим эталонам.

  8. Вопрос квантового преимущества остаётся открытым: для размеров систем, моделируемых сегодня, квантовые ядра могут не превосходить хорошо настроенные классические методы. Однако они предоставляют основу для использования будущего квантового оборудования и уже могут предложить уникальные перспективы структуры рынка через свои экспоненциально богатые пространства признаков.