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

Глава 154: Нейронный Оператор Фурье (FNO) в Алготрейдинге

Обзор

Нейронный Оператор Фурье (Fourier Neural Operator, FNO) — это прорывная архитектура нейронных сетей, изначально созданная для решения параметрических дифференциальных уравнений в частных производных (PDE) на порядки быстрее традиционных солверов. В количественных финансах PDE встречаются повсеместно: от расчёта цен опционов (уравнение Блэка-Шоулза) до моделирования динамики биржевого стакана (LOB).

В то время как Трансформеры и RNN работают во временно́м пространстве, FNO оперирует в частотном пространстве (Frequency Domain). Он учит отображения между бесконечномерными функциональными пространствами (операторы). Для финансовых временных рядов это означает, что нейросеть берет последовательность цен, раскладывает её на базовые частоты (синусы и косинусы), применяет обучаемые комплексные веса к самым важным “медленным” (макро) частотам, а затем собирает всё обратно во временной ряд.

Отсекая высокочастотный рыночный шум и фокусируясь на фундаментальных ценовых волнах, FNO достигает невероятной точности в прогнозировании смены макро-трендов, мгновенном решении PDE оценки опционов и понимании дисбаланса LOB.

Содержание

  1. Математические основы FNO
  2. Почему FNO полезен для трейдинга?
  3. Реализация на Python
  4. Реализация на Rust
  5. Методология бэктестинга
  6. Ссылки

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

Обычные нейросети отображают векторы в векторы ($R^n \rightarrow R^m$). Операторы отображают функции в функции. FNO использует фундаментальную теорему о преобразовании Фурье.

  1. Переход в частотное пространство: $\mathcal{F}(x)$ конвертирует входной временной ряд $x$ в комплексные частотные гармоники.
  2. Обучаемое линейное преобразование (Spectral Convolution): В пространстве частот мы умножаем сигнал на матрицу комплексных весов $R$. Мы сохраняем только $K$ самых низких мод (частот). Таким образом, модель аппаратно работает как адаптивный Low-Pass фильтр, стирая рыночный шум. $Frequency_Out = R \cdot \mathcal{F}(x)[:K]$
  3. Обратное преобразование Фурье: $\mathcal{F}^{-1}$ собирает модифицированные гармоники обратно в массив временных данных.
  4. Сложение и активация: $Output = \sigma(\mathcal{F}^{-1}(Frequency_Out) + W \cdot x)$

Важнейшая особенность: веса $R$ инвариантны к разрешению! Если вы обучили FNO на часовых свечах (1H), вы можете теоретически отправить в неё 5-минутные (5M) без переобучения.

Почему FNO полезен для трейдинга?

  1. Фильтрация шума: Финансовые данные экстремально зашумлены. Обрезая высокие частоты (High-frequency modes) в пространстве Фурье, модель мгновенно оголяет базовую физику тренда и моментума.
  2. Опционные модели: FNO решает PDE Блэка-Шоулза или модели со скачкообразной диффузией в тысячи раз быстрее классического Монте-Карло, открывая двери к HFT-арбитражу волатильности.
  3. Глобальное рецептивное поле: Сверточные сети (CNN) видят лишь узкое локальное окно. FNO обладает глобальной сверткой — он “ощупывает” весь исторический контекст (каждую свечу в массиве) за одну операцию.

Реализация на Python

Мы реализовали архитектуру через PyTorch (torch.fft.rfft).

  • model.py: Содержит слои SpectralConv1d и FNO1d.
  • train.py: Генерирует суровую рыночную симуляцию с жестким скрытым бизнес-циклом и огромным белым шумом. FNO тренируется находить макро-сигнал, который уничтожен шумом.
  • backtest.py: Стратегический модуль прогона по историческим данным без Data Leakage.

Запуск:

Окно терминала
python python/train.py

Реализация на Rust

Для интеграции в боевые высокочастотные (Low-latency) системы мы создали скрипт на языке Rust. Используется библиотека rustfft для быстрых преобразований стакана заявок (Order Book).

  • rust/src/lib.rs: Базовые спектральные свёрточные функции.
  • rust/src/main.rs: Бинарник исполнения торговых циклов.

Запуск:

Окно терминала
cd rust
cargo run