SANOS с нуля
1/5У параметрических моделей есть предвзятость формы
Любая параметрическая модель — SVI, SABR, полиномиальные аппроксимации — начинается с выбора семейства формул. Это семейство определяет, какие формы вообще возможны, ещё до того, как вы взглянете на первую рыночную котировку.
У SVI пять параметров. Это даёт пять степеней свободы для подгонки под рыночную улыбку. Для ликвидных, спокойных рынков пяти обычно достаточно: улыбка гладкая, примерно параболическая, и SVI отлично её описывает.
Но рынки не всегда ведут себя спокойно. Выход отчётности, эксплойт протокола, регуляторные новости — всё это может создавать локальные всплески подразумеваемой волатильности на отдельных страйках. Кривая с пятью параметрами не может дать всплеск при K=90, оставаясь плоской везде остальное — ей пришлось бы исказить всю кривую ради одной локальной особенности.
SANOS идёт противоположным путём. Вместо выбора семейства формул он задаёт значение в каждом узле сетки и позволяет данным самим определить форму поверхности. Единственные требования: поверхность должна быть гладкой, безарбитражной и соответствовать наблюдаемым котировкам бид/аск.
SVI — как подгонка гибкой лекальной линейки к набору точек: линейка может изгибаться, но не может дать излом. SANOS — как наложение эластичной сетки на точки, где каждое пересечение двигается независимо. Сетка улавливает локальные особенности, которые линейке недоступны.
Сетка вместо формулы
В SANOS поверхность волатильности задаётся сеткой узлов: одно значение на каждом пересечении (страйк, экспирация). 9 страйков и 5 экспираций дают 45 свободных переменных. Увеличьте до 20 страйков и 5 экспираций — получите 100.
Каждый узел хранит значение суммарной дисперсии (или, эквивалентно, подразумеваемой волатильности). Поверхность между узлами интерполируется. Ключевое отличие от параметрических моделей: нет формулы, связывающей эти значения друг с другом. Каждый узел — свободная переменная, ограниченная лишь безарбитражностью и гладкостью.
Ниже сетка показывает значения подразумеваемой волатильности по страйкам и экспирациям. Обратите внимание на локальный всплеск около K=90, T=0.25 — именно такую особенность параметрическая модель упустила бы. На правой панели показана улыбка для выбранной экспирации с наложенной наилучшей аппроксимацией SVI для сравнения.
Кликните любую ячейку, чтобы изменить её волатильность. Понаблюдайте, как улыбка SANOS (зелёная) отклоняется от SVI (жёлтый пунктир) всюду, где сетка улавливает локальную структуру. SVI вынуждена оставаться глобально гладкой; сетка может следовать данным точка за точкой.
SANOS: N_K × N_T nodes → local flexibility
Безарбитражность как линейные ограничения
При 100 свободных переменных нужны ограничители. SANOS получает их из условий статической безарбитражности, выраженных как линейные неравенства на значения узлов сетки.
Два ключевых ограничения:
Ограничение календарного спреда. Суммарная дисперсия (w = σ^2 × T) должна быть неубывающей по T для каждого страйка. Если бы она убывала, можно было бы продать короткий опцион и купить более длинный на том же страйке, получив безрисковую прибыль. На сетке это значит, что каждый столбец должен возрастать сверху вниз.
Ограничение спреда «бабочка». Цены колл-опционов должны быть выпуклыми по страйку для каждой экспирации. Эквивалентно: вторая разность суммарной дисперсии по соседним страйкам должна быть неотрицательной. Это исключает отрицательную плотность вероятности — физически невозможную.
Оба ограничения линейны по значениям сетки. Календарь: w(K, T_2) ≥ w(K, T_1) for T_2 > T_1. Butterfly: w(K-1, T) - 2·w(K, T) + w(K+1, T) ≥ 0. Никаких нелинейных членов, никакой сложной связанности. Просто неравенства, которые можно передать линейному солверу.
В этом глубокое преимущество работы в пространстве суммарной дисперсии на сетке: условия безарбитражности, нелинейные в терминах подразумеваемой волатильности, становятся линейными в терминах суммарной дисперсии. Вся задача построения поверхности остаётся в рамках линейного программирования.
Ответ находит линейное программирование
Соберём всё вместе: значения узлов — неизвестные, границы бид/аск — блочные ограничения, безарбитражность — линейные неравенства, гладкость — целевая функция. В целом это задача линейного программирования.
У LP есть ключевое свойство: отсутствие локальных минимумов. Допустимая область — выпуклый многогранник, и оптимум всегда лежит в вершине. В отличие от калибровки SVI (нелинейной задачи, которая может застрять в локальном минимуме в зависимости от начального приближения), LP всегда находит глобальный оптимум.
Котировки бид/аск задают блочные ограничения: на каждом наблюдаемом страйке суммарная дисперсия должна лежать между значениями, подразумеваемыми бидом и аском. Чем уже спред, тем меньше «коробка». Чем шире спред, тем больше свободы у SANOS для построения гладкой безарбитражной поверхности.
Понаблюдайте, как допустимая область (зелёная) сжимается по мере добавления ограничений. Положительность, календарь, бабочка и бид/аск — каждое отсекает невозможные поверхности. Решение LP (жёлтая точка) лежит в вершине итогового многогранника. Эта вершина гарантированно даёт самую гладкую безарбитражную поверхность, согласованную со всеми данными.
subject to: bid_i ≤ w_i ≤ ask_i (data)
w(K, T_2) ≥ w(K, T_1) (calendar)
w(K-1) - 2w(K) + w(K+1) ≥ 0 (butterfly)
Где SANOS выигрывает, а где — нет
SANOS не всегда лучше параметрических моделей. У него есть своя ниша, и понимать, когда его применять, важнее, чем знать, как он устроен.
SANOS выигрывает, когда:
Данных мало. Когда у вас 5 котировок, а нужна полная поверхность, параметрическим моделям трудно: точек не хватает, чтобы зафиксировать параметры. SANOS может построить поверхность по разреженным данным, потому что сами безарбитражные ограничения несут информацию — они сужают допустимое множество даже без рыночных котировок.
Широкие спреды бид/аск. Параметрическая подгонка по средним ценам может дать безарбитражную поверхность, выходящую за пределы бид/аск. SANOS рассматривает спред как полезную информацию, а не шум. Чем шире спред, тем больше свободы для построения гладкой безарбитражной поверхности.
Локальные особенности. Событийные всплески волатильности, изломы от концентрированного позиционирования, эффекты, привязанные к конкретной экспирации. Любая структура, которую формула с пятью параметрами выразить не может.
Расширьте спред ползунком и понаблюдайте, как аппроксимация SANOS (зелёная) расходится с серединой спреда (оранжевый пунктир). Обе проходят через полосы бид/аск, но SANOS использует дополнительную свободу, чтобы оставаться более гладкой. При узких спредах обе аппроксимации сходятся.
SANOS проигрывает, когда:
Нет динамической интерпретации. Параметры SVI (a, b, rho, m, sigma) имеют экономический смысл: общая дисперсия, величина скью, корреляция, смещение. Узлы SANOS — просто числа на сетке. Вы теряете возможность сказать «скью вырос на 0.02» — можно лишь сказать «эти 20 узлов сдвинулись».
Хранение и передача. Поверхность SVI — это 5 чисел на экспирацию: её тривиально хранить и передавать. Поверхность SANOS — сотни значений узлов. Для баз данных, кэшей и сетевых протоколов это существенно.
Проверенность временем. SVI используется уже более 20 лет. SANOS появился недавно. В продакшн-системах, где важны надёжность и знакомство команды с инструментом, это реальная цена.
Практическая схема: используйте SANOS для подгонки и прайсинга (где важна локальная точность), а SVI — для хранения и передачи (где важна компактность). Они дополняют друг друга.
Что изучить дальше:
Параметризация SVI — параметрическая модель, которую SANOS призван дополнять
Модель SABR — модель стохастической волатильности с динамической интерпретацией
Локальная волатильность с нуля — как поверхность локальной волатильности извлекается из подразумеваемой
Методы интерполяции — сравнение всех методов