Глава 154: Нейронный Оператор Фурье (FNO) в Алготрейдинге
Обзор
Нейронный Оператор Фурье (Fourier Neural Operator, FNO) — это прорывная архитектура нейронных сетей, изначально созданная для решения параметрических дифференциальных уравнений в частных производных (PDE) на порядки быстрее традиционных солверов. В количественных финансах PDE встречаются повсеместно: от расчёта цен опционов (уравнение Блэка-Шоулза) до моделирования динамики биржевого стакана (LOB).
В то время как Трансформеры и RNN работают во временно́м пространстве, FNO оперирует в частотном пространстве (Frequency Domain). Он учит отображения между бесконечномерными функциональными пространствами (операторы). Для финансовых временных рядов это означает, что нейросеть берет последовательность цен, раскладывает её на базовые частоты (синусы и косинусы), применяет обучаемые комплексные веса к самым важным “медленным” (макро) частотам, а затем собирает всё обратно во временной ряд.
Отсекая высокочастотный рыночный шум и фокусируясь на фундаментальных ценовых волнах, FNO достигает невероятной точности в прогнозировании смены макро-трендов, мгновенном решении PDE оценки опционов и понимании дисбаланса LOB.
Содержание
- Математические основы FNO
- Почему FNO полезен для трейдинга?
- Реализация на Python
- Реализация на Rust
- Методология бэктестинга
- Ссылки
Математические основы FNO
Обычные нейросети отображают векторы в векторы ($R^n \rightarrow R^m$). Операторы отображают функции в функции. FNO использует фундаментальную теорему о преобразовании Фурье.
- Переход в частотное пространство: $\mathcal{F}(x)$ конвертирует входной временной ряд $x$ в комплексные частотные гармоники.
- Обучаемое линейное преобразование (Spectral Convolution): В пространстве частот мы умножаем сигнал на матрицу комплексных весов $R$. Мы сохраняем только $K$ самых низких мод (частот). Таким образом, модель аппаратно работает как адаптивный Low-Pass фильтр, стирая рыночный шум. $Frequency_Out = R \cdot \mathcal{F}(x)[:K]$
- Обратное преобразование Фурье: $\mathcal{F}^{-1}$ собирает модифицированные гармоники обратно в массив временных данных.
- Сложение и активация: $Output = \sigma(\mathcal{F}^{-1}(Frequency_Out) + W \cdot x)$
Важнейшая особенность: веса $R$ инвариантны к разрешению! Если вы обучили FNO на часовых свечах (1H), вы можете теоретически отправить в неё 5-минутные (5M) без переобучения.
Почему FNO полезен для трейдинга?
- Фильтрация шума: Финансовые данные экстремально зашумлены. Обрезая высокие частоты (High-frequency modes) в пространстве Фурье, модель мгновенно оголяет базовую физику тренда и моментума.
- Опционные модели: FNO решает PDE Блэка-Шоулза или модели со скачкообразной диффузией в тысячи раз быстрее классического Монте-Карло, открывая двери к HFT-арбитражу волатильности.
- Глобальное рецептивное поле: Сверточные сети (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 rustcargo run