Skip to main content

SANOS from zero

1/5

Parametric models have a shape bias

Every parametric model — SVI, SABR, polynomial fits — begins by choosing a formula family. That family determines what shapes are possible before you look at a single market quote.

SVI has five parameters. That gives it five degrees of freedom to match the market smile. For liquid, well-behaved markets, five is usually enough. The smile is smooth, vaguely parabolic, and SVI nails it.

But markets are not always well-behaved. An earnings event, a protocol exploit, a regulatory headline — these can produce localized bumps in implied vol at specific strikes. A five-parameter curve cannot develop a bump at K=90 while staying flat everywhere else. It would have to warp the entire curve to accommodate one local feature.

SANOS takes the opposite approach. Instead of picking a formula family, it puts a value at every node in a grid and lets the data decide what shape the surface takes. The only requirements: it must be smooth, it must be arbitrage-free, and it must respect the observed bid-ask quotes.

SVI is like fitting a bendable template ruler to a set of points — the ruler can curve, but it cannot develop a kink. SANOS is like laying a flexible mesh over the points, where each intersection can move independently. The mesh can capture local features the ruler cannot.

The grid replaces the formula

In SANOS, the vol surface is defined by a grid of nodes: one value at each (strike, expiry) intersection. 9 strikes and 5 expiries gives you 45 free variables. Scale to 20 strikes and 5 expiries and you have 100.

Each node holds a total variance value (or equivalently, an implied vol). The surface between nodes is interpolated. The key difference from parametric models: there is no formula linking these values to each other. Each node is a free variable, constrained only by no-arbitrage and smoothness.

Below, the grid shows implied vol values across strikes and expiries. Notice the localized bump near K=90, T=0.25 — this is the kind of feature a parametric model would miss. The right panel shows the smile at a selected expiry, with the SVI best-fit overlaid for comparison.

Node Grid vs Parametric Fit
15%
55%Click cells to adjust vol
Smile at T=0.25y
Nodes: 45SVI params: 5

Click any cell to adjust its vol. Watch how the SANOS smile (green) deviates from SVI (yellow dashed) wherever the grid captures local structure. SVI is forced to stay smooth globally; the grid can follow the data point by point.

Degrees of freedom
SVI: 5 params per expiry smooth, global shape
SANOS: N_K × N_T nodes local flexibility
More parameters means more flexibility, but also more risk of overfitting. SANOS controls this risk through no-arbitrage constraints and smoothness penalties, not by limiting the number of parameters.

No-arbitrage as linear constraints

With 100 free variables, you need guardrails. SANOS gets them from static no-arbitrage conditions, expressed as linear inequalities on the grid values.

Two key constraints:

Calendar spread constraint. Total variance (w =σ^2 × T) must be non-decreasing in T for each strike. If it decreased, you could sell a short-dated option and buy a longer-dated one at the same strike for a riskless profit. On the grid, this means each column must increase from top to bottom.

Butterfly spread constraint. Call prices must be convex in strike at each expiry. Equivalently, the second difference of total variance across adjacent strikes must be non-negative. This prevents negative probability density — a physical impossibility.

No-Arbitrage Constraints on a 3x3 Grid
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
Calendar: total variance increases with T
Butterfly: convexity in K at each T
Positivity: all values > 0
Values are total variance (w = σ^2 × T). Click to increase, right-click to decrease.
Try to make a cell violate a constraint. The grid snaps back because SANOS enforces these as hard inequalities.

Both constraints are linear in the grid values. Calendar: 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. No nonlinear terms, no complicated coupling. Just inequalities you can hand to a linear solver.

This is the deep advantage of working in total-variance space on a grid: the no-arbitrage conditions that would be nonlinear in implied vol become linear in total variance. The whole surface construction problem stays in the realm of linear programming.

Linear programming finds the answer

Collect all the pieces: node values as unknowns, bid-ask bounds as box constraints, no-arbitrage as linear inequalities, smoothness as the objective. The whole thing is a linear program.

An LP has a crucial property: no local minima. The feasible region is a convex polytope, and the optimum is always at a vertex. Unlike SVI calibration (which is nonlinear and can get stuck in local minima depending on initialization), the LP always finds the global optimum.

The bid-ask quotes define box constraints: at each observed strike, the total variance must lie between the bid-implied and ask-implied values. The tighter the spread, the smaller the box. The wider the spread, the more freedom SANOS has to find a smooth, arb-free surface.

LP Feasible Region
Active: 0/8
No constraints yet. Click "+ Add constraint" to shrink the feasible region.

Watch the feasible region (green) shrink as constraints are added. Positivity, calendar, butterfly, and bid-ask — each one carves away impossible surfaces. The LP solution (yellow dot) sits at a vertex of the final polytope. That vertex is guaranteed to be the smoothest arb-free surface consistent with all the data.

The LP formulation
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)
Every constraint is linear. The objective is linear (using L1 norm on second differences). Standard LP solvers handle this in milliseconds, even for large grids.

When SANOS wins and when it doesn't

SANOS is not universally better than parametric models. It has a specific sweet spot, and knowing when to use it matters more than knowing how it works.

SANOS wins when:

Sparse data. When you have 5 quotes and need a full surface, parametric models struggle because there are not enough points to pin down the parameters. SANOS can build a surface from sparse data because the no-arbitrage constraints themselves provide information — they narrow the feasible set even without market quotes.

Wide bid-ask spreads. Parametric fits to mid-prices can produce arb-free surfaces that lie outside the bid-ask. SANOS treats the spread as a feature, not noise. The wider the spread, the more freedom to find a smooth, arb-free surface.

Local features. Event-driven vol bumps, kinks from concentrated positioning, expiry-specific effects. Any structure that a five-parameter formula cannot express.

Bid-Ask Fitting: Mid-Price vs SANOS
Spread:12%
Bid-ask rangeMid-price fitSANOS fit

Widen the spread slider and watch the SANOS fit (green) diverge from mid (orange dashed). Both pass through the bid-ask bars, but SANOS uses the extra freedom to stay smoother. When spreads are tight, the two fits converge.

SANOS loses when:

No dynamic interpretation. SVI parameters (a, b, rho, m, sigma) have economic meanings: overall variance, skew magnitude, correlation, displacement. SANOS nodes are just numbers on a grid. You lose the ability to say "skew increased by 0.02" — you can only say "these 20 nodes moved."

Storage and communication. An SVI surface is 5 numbers per expiry — trivially storable and transmittable. A SANOS surface is hundreds of node values. For databases, caches, and wire protocols, this matters.

Battle-tested track record. SVI has been used for 20+ years. SANOS is newer. In production systems where reliability and team familiarity matter, this is a real cost.

The practical pattern: use SANOS for fitting and pricing (where local accuracy matters), use SVI for storage and communication (where compactness matters). They complement each other.

Where to go next:

SVI Parameterization — the parametric model SANOS is designed to complement

SABR Model — a stochastic vol model with dynamic interpretation

Local Vol from zero — how the local vol surface is extracted from implied vol

Interpolation Methods — all methods compared