本页由机器翻译。英文原文为权威版本。 阅读英文版
跳转到主要内容

从零开始学 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 最优拟合以供对比。

节点网格 vs 参数化拟合
15%
55%点击单元格调整波动率
波动率微笑 T=0.25y
节点: 45SVI 参数: 5

点击任意单元格调整其波动率。观察 SANOS 微笑曲线(绿色)如何在网格捕捉到局部结构的位置偏离 SVI(黄色虚线)。SVI 被迫保持全局平滑;而网格可以逐点跟随数据。

自由度
SVI: 5 params per expiry smooth, global shape
SANOS: N_K × N_T nodes local flexibility
参数越多意味着灵活性越高,但过拟合的风险也越大。SANOS 通过无套利约束和平滑性惩罚项来控制这一风险,而非限制参数数量。

以线性约束表达无套利

有了 100 个自由变量,就需要护栏。SANOS 通过静态无套利条件获得这些护栏,它们以网格值上的线性不等式表达。

两个关键约束:

日历价差约束。 总方差(w = σ^2 × T)在每个行权价上必须随 T 非递减。如果它递减,您可以在同一行权价卖出短期期权并买入长期期权,获得无风险利润。在网格上,这意味着每一列必须从上到下递增。

蝶式价差约束。 在每个到期日上,看涨期权价格必须对行权价呈凸性。等价地,相邻行权价之间总方差的二阶差分必须非负。这防止了负概率密度——在物理上不可能的情况。

3x3 网格上的无套利约束
K=90
K=100
K=110
T=0.25
4.5w=0.045
3.5w=0.035
5.0w=0.050
T=0.5
8.5w=0.085
7.0w=0.070
9.0w=0.090
T=1
16.0w=0.160
13.5w=0.135
17.0w=0.170
日历:总方差随 T 增加
蝶式:每个 T 上关于 K 的凸性
正值性:所有值均 > 0
数值为总方差 (w = σ^2 × T)。点击增加,右键点击减少。
请尝试让某个单元格违反约束条件。由于 SANOS 将这些约束作为硬性不等式强制执行,网格会自动恢复原状。

两个约束在网格值上都是线性的。日历: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 可行域
已启用: 0/8
尚无约束条件。点击"+ 添加约束"可缩小可行域。

观察可行域(绿色)如何随约束的加入而收缩。正性、日历、蝶式和买价/卖价——每一个约束都剔除掉不可能的曲面。LP 解(黄点)位于最终多面体的一个顶点。该顶点保证是与所有数据一致的最平滑无套利曲面。

LP 表述
minimise |second differences| (smoothness)
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)
每个约束都是线性的。目标函数也是线性的(对二阶差分使用 L1 范数)。标准 LP 求解器可在毫秒内完成求解,即使是大规模网格。

SANOS 何时占优、何时不占优

SANOS 并非在所有情况下都优于参数化模型。它有特定的适用场景,而知道何时使用它比知道它如何运作更为重要。

SANOS 占优的情形:

数据稀疏。 当您只有 5 条报价却需要完整曲面时,参数化模型会因数据点不足以确定参数而陷入困境。SANOS 能从稀疏数据构建曲面,因为无套利约束本身就提供信息——即便没有市场报价,它们也能缩小可行集。

买价/卖价价差过宽。 对中间价的参数化拟合可能产生落在买价/卖价区间之外的无套利曲面。SANOS 将价差视为特征而非噪音。价差越宽,寻找平滑、无套利曲面的自由度就越大。

局部特征。 事件驱动的波动率凸起、集中持仓造成的折角、特定到期日的效应。任何五参数公式无法表达的结构。

买卖价拟合:中间价 vs SANOS
价差:12%
买卖价区间中间价拟合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 模型 —— 一种具有动态解释的随机波动率模型

从零学习局部波动率 —— 如何从隐含波动率提取局部波动率曲面

插值方法 —— 各方法的对比