Быстрый прайсинг опционов через преобразование Фурье
Суть идеи
Monte Carlo — честный, но медленный способ оценить опцион. Когда нужно откалибровать модель (например, Heston или SABR) по рыночным котировкам, приходится репрайсить тысячи страйков/экспираций в цикле оптимизации — и MC здесь просто не успевает. Статья разбирает три Fourier-based метода, которые решают эту проблему за счёт аналитической характеристической функции модели: Carr-Madan (FFT по логстрайку), метод COS (разложение по косинусам на конечном интервале) и подход Lewis (прямое интегрирование в пространстве частот).
Общая идея: если у модели есть замкнутая характеристическая функция log-цены (а у большинства «приличных» моделей — Heston, VG, NIG, CGMY — она есть), то цену опциона можно выразить через обратное преобразование Фурье. Это переводит задачу из симуляции путей в одномерное численное интегрирование, которое считается на порядки быстрее.
COS-метод особенно популярен в академической литературе за точность при небольшом числе членов разложения. Carr-Madan — классика, хорошо документированная и легко реализуемая через numpy FFT. Lewis — элегантен теоретически, но чуть сложнее в численной стабилизации.
Применимость к крипте
Для трейдера деривативов BTC/ETH это напрямую применимо. Deribit публикует котировки по десяткам страйков и экспираций одновременно; калибровка Heston или jump-diffusion модели по этой поверхности требует именно быстрого репрайсинга. Если вы строите собственную модель для расчёта теоретической IV-поверхности и сравниваете её с рыночной (для поиска VRP или skew-аномалий), скорость прайсинга становится узким местом.
Замена прямая: берёте характеристическую функцию нужной модели (Heston хорошо описывает крипто-vol с поправкой на более высокий vol-of-vol), подставляете в любой из трёх методов, получаете цену за микросекунды вместо секунд. Параметры модели (κ, θ, σ, ρ, v₀) калибруются по рыночным IV с Deribit — и вот у вас есть инструмент для оценки «дорого/дёшево» по конкретному страйку относительно модельной поверхности.
Тестируемо ли
Реализовать Carr-Madan или COS на Python — задача на несколько часов, numpy/scipy достаточно. Наш bt_engine может использовать это как pricing-слой: калибруем модель на утренний снэпшот Deribit, считаем модельные IV, сравниваем с рыночными, торгуем отклонения. Данные есть: исторические IV-поверхности Deribit доступны через API или агрегаторы (Tardis, Block Scholes). Честная оговорка: исторических данных по полной поверхности с достаточным разрешением по страйкам до 2020 года мало — OOS-окно будет коротким.
Сомнения
Статья — методологическая, не стратегическая, поэтому классического data-snooping здесь нет. Риск в другом: выбор модели (Heston vs jump-diffusion) и её параметризация под крипто-специфику (жёсткие хвосты, gap-риск вокруг макро-событий) требуют отдельной валидации. Красивая калибровка in-sample не гарантирует, что модель правильно экстраполирует vol в стресс-режимах — а именно там и живут самые интересные сделки. Кроме того, быстрый прайсинг решает вычислительную проблему, но не отвечает на вопрос «какую модель выбрать» — а это и есть главный источник model risk.
Следующий шаг
Реализовать Carr-Madan прайсер под Heston, откалибровать по недельному снэпшоту Deribit BTC (ATM + 4 страйка на каждую экспирацию), затем в walk-forward режиме (ребалансировка раз в день) торговать топ-3 страйка с наибольшим отклонением рыночной IV от модельной — лонг vol там, где рынок дешевле модели, шорт там, где дороже. Горизонт теста: 2022–2024, метрика — Deflated Sharpe с поправкой на число протестированных страйков.
Результаты тестов
Дописано 17 июля 2026, в день публикации — прогон «Следующего шага» на нашем движке и данных. Сама статья выше не менялась.
Данные: дневные снапшоты полной доски Deribit BTC из нашего архива chain_hist (328 дней, 17.08.2025 → 11.07.2026, ~920 коин-маржинальных инструментов × 13 экспираций в день, реальные bid/ask/mark/mark IV). Горизонта 2022–2024 из спеки у нас нет — глубокая история поверхности продаётся у Tardis, — поэтому окно 11 месяцев: короче желаемого, зато котировки реальные, а не синтетика. Реализованы все три метода из статьи плюс Monte-Carlo как «медленный эталон»; эталон точности — квадратура Льюиса (Гаусс–Лежандр, 4000 узлов).
| Метод | Доска 13 эксп. × 25 страйков | На опцион | max |ΔIV| против эталона |
|---|---|---|---|
| COS (N=256) | 2.2 мс | 6.8 мкс | 1e-5 vol-пт |
| Carr–Madan FFT (N=4096, кубич. интерп.) | 6.7 мс | 21 мкс | 1.2e-3 vol-пт |
| Льюис (квадратура) | 141 мс | 433 мкс | — (эталон) |
| Monte-Carlo (100k путей × 120 шагов, антитет.) | 1.9 с | — | шум ±$21 ≈ 0.3 vol-пт |
Скоростная половина статьи подтверждается буквально. «Микросекунды вместо секунд» — да: COS считает опцион за 6.8 мкс, всю доску — за 2 мс, ×884 быстрее MC, который на этом бюджете ещё и шумит на ±0.3 vol-пт (для калибровки непригоден в принципе). Калибровка из ~150 оценок доски: 0.3 с через COS против ~5 минут через MC. Одна поправка к «легко реализуемая через numpy FFT»: у Carr–Madan две ловушки, которые молча дают мусор — перепутанная чётность весов Симпсона (цена −$11.8 вместо +$608.7, без единой ошибки в рантайме) и линейная интерполяция с FFT-сетки лог-страйков (~$1.3 ошибки, нужна кубическая). COS работает из коробки и точнее на два порядка — вывод статьи «COS популярен за точность при небольшом N» мы воспроизводим.
Калибровка Хестона по спеке (ATM + 4 страйка на экспирацию, DTE 2–120): 316 дней, и тут первый звонок. Медианная RMSE фита 1.71 vol-пт, p90 4.67 — и ошибка размазана (ATM 1.2, крылья 1.0), это не «чуть-чуть не достали крылья». Параметры прижаты к границам: медианный κ = 50 (упёрся в кэп), vol-of-vol σ_v = 7.1, условие Феллера нарушено в 100% дней. Диагноз классический: чистая диффузия Хестона не рождает достаточно кривизны короткого конца крипто-улыбки, и оптимизатор компенсирует запредельным vol-of-vol. «Heston хорошо описывает крипто-vol с поправкой на более высокий vol-of-vol» из статьи — оптимизм: без прыжков ошибка модели того же порядка, что «отклонения», которые дальше предлагается торговать.
Стратегия из «Следующего шага»: walk-forward, 315 дней, 945 легов (574 шорт / 371 лонг vol). Спека: топ-3 страйка по |IV рынка − IV модели|, лонг вол где рынок дешевле модели, шорт где дороже, дельта-хедж по Black-76, удержание 1 день. Вселенная: OTM, DTE 7–60, |Δ| 0.05–0.50, живые bid/ask, спред ≤ 100% мида. P&L на 1 контракт в USD, нормирован на вегу входа (единицы — vol-пункты); хедж фьючем без проскальзывания (щедро к стратегии), комиссии Deribit 0.0003 BTC/контракт/сторона с кэпом 12.5% премии + 2.5 бп/сторона за хедж. Сетка из четырёх вариантов зафиксирована до прогона, DSR — по всем четырём:
| Вариант | ср/день, vol-пт | Sharpe (годовой) | t | hit | DSR |
|---|---|---|---|---|---|
| Калибровка daily · mid | +0.79 | +2.40 | +2.7 | 58% | 0.00 |
| Калибровка daily · bid/ask + комиссии | −2.36 | −7.26 | −8.1 | 18% | 0.00 |
| Калибровка weekly (буква спеки) · mid | +0.21 | +0.55 | +0.6 | 47% | 0.00 |
| Калибровка weekly · bid/ask + комиссии | −3.07 | −8.48 | −9.5 | 14% | 0.00 |
Ответ на главный вопрос статьи: методология — да, стратегия — нет. На mid при дневной калибровке градиент есть и он устойчив: +0.79 vol-пт/день, t 2.7, обе половины окна в плюс (+0.63 / +0.96) — отклонения рынка от модели в среднем действительно сходятся (часть этого mid-эджа, честно, может быть микроструктурным шумом самих марок). Но средний торгуемый |dev| = 3.4 vol-пт, а круг спреда с комиссиями ≈ 3.2 vol-пт — издержки равны всему размеру отклонения и вчетверо больше его дневной сходимости. После них: −2.36 vol-пт/день, hit 18%. Буквальная недельная калибровка из спеки убивает даже mid-сигнал (t 0.6) — параметры за неделю протухают. PSR лучшего варианта 1.00, но DSR-планка при четырёх испытаниях с разбросом SR от −8.5 до +2.4 равна 4.99 годовых — не проходит никто; впрочем, вердикт тут решают издержки, а не поправка на подбор.
Future-shock как рентген. Вчерашний сигнал, вход сегодня: −2.46 против −2.36 у свежего — неотличимо. Это одновременно (а) исключает лукахед в конвейере и (б) вскрывает природу «отклонений»: автокорреляция dev по инструменту 0.42 день-к-дню, топ-3 на 18% совпадает со вчерашним. Стратегия торгует не быстрые дислокации, которые надо ловить, а персистентную ошибку спецификации Хестона: то, чего модель систематически не умеет, выглядит для неё как «дорого/дёшево».
Что подтвердилось из «Сомнений». Model risk — главный, ровно как написано: «красивая калибровка in-sample не гарантирует…» — у нас даже сама калибровка не красивая (100% дней ломают Феллера, κ на границе). Выбор модели действительно важнее скорости прайсинга: прыжковая компонента для крипто-улыбки — необходимость, не опция.
Чего статья не предсказала. Первое: сигнал ≈ misfit — «торгуй отклонения от модели» с моделью, у которой RMSE 1.7 vol-пт, означает в основном торговлю собственной ошибкой модели (забавно, что на mid это всё равно даёт плюс: кривые котировки тоже возвращаются к поверхности). Второе: издержки известны заранее и фатальны — bid/ask OTM-опционов Deribit это 2–4 vol-пт круга, дневной горизонт их не переживает; «узкое место» этой стратегии не вычислительное, а транзакционное. Практический итог для нас: прайсер остаётся, стратегия — нет. COS-движок уходит в арсенал как строительный блок (быстрые калибровки, стресс-гриды, RND-кросс-чеки) — ровно то применение, где статья права на сто процентов.
Проверка: research_fourier_pricing.py — три независимые реализации прайсинга сходятся до ≤1.2e-3 vol-пт (COS / Carr–Madan / Льюис), Monte-Carlo в доверительном интервале эталона (max |z| 1.3); BS-предел (vol-of-vol→0) и put-call parity; future-shock против лукахеда; два полных прогона байт-в-байт (детерминизм); DSR-порог пересчитан вручную по Bailey–López de Prado (E[max SR₀] = 4.99 годовых при N=4).
ETH тем же конвейером (дописано позже тем же днём). Прогнали и ETH — 316 дней, та же спека. Картина повторяет BTC по сути и добавляет три штриха. Первый: mid-эдж буквально тот же — +0.78 vol-пт/день (t 2.68, обе половины окна в плюс) против +0.79 у BTC; сходимость котировок к поверхности — свойство рынка, не монеты. Второй: после bid/ask и комиссий у ETH ещё хуже — −2.88 vol-пт/день (BTC −2.36): спреды шире, издержки злее. Третий: Хестону ETH даётся тяжелее — RMSE фита 2.62 vol-пт (BTC 1.71), vol-of-vol упёрся в потолок границы (σ_v = 10), а недельная калибровка убивает сигнал полностью даже на mid (t −0.15): ETH-поверхность живёт быстрее, параметры протухают за дни. Бонус-наблюдение: 698 шорт-легов против 247 лонг (у BTC 574/371) — рынок ETH заметно чаще «дорог» относительно модели, что рифмуется с нашим давним выводом о хронически богатых ETH-опционах с реальных цепочек. Future-shock и здесь неотличим от свежего сигнала (−2.56 против −2.88) — торгуется персистентный misfit, не дислокации; детерминизм проверен на паре BTC-прогонов, код общий.