Skip to main content

SANOS (Non-Parametric Surfaces)

SANOS takes a different approach to building a vol surface. Instead of fitting a formula with a few knobs (like SVI's 5 parameters per slice), SANOS builds the surface directly from market data using a grid of local vol nodes and guaranteed no-arbitrage constraints. A smooth surface that can capture any shape the market produces -- including local features that parametric models structurally cannot fit.

💡
Parametric vs. non-parametric

SVI and SABR decide the shape of the smile in advance (parabola-like, with 3-5 knobs). SANOS makes no shape assumption. It asks: "what is the smoothest surface that passes through the market data without creating arbitrage?" This produces better fits when the market deviates from parametric expectations. The implied volatility at each node is a free variable, not a formula output.

See It in Action

Toggle between views to see how SANOS compares to a parametric SVI fit, how the grid looks, and how arbitrage constraints are enforced.

SANOS Surface Construction

74%92%110%8090ATM110120StrikeImplied Vol (%)Market quotesSVI (parametric)SANOS (non-parametric)
SVI residualsRMSE: 25.66
SANOS residualsRMSE: 0.15

SVI (parametric) uses 5 parameters and may miss local features. SANOS (non-parametric) passes through market quotes while respecting arbitrage constraints.

How It Works

1. A grid of vol nodes instead of a formula

The surface is represented by a grid of local vol values -- one at each (strike, expiry) point. With 15 strikes and 5 expiries, you have 75 free variables instead of SVI's 25. More flexibility, but you need constraints to prevent the optimizer from producing nonsense.

2. No-arbitrage constraints baked in

The two fundamental no-arbitrage rules translate into simple constraints on the grid:

Constraint
What it means
Calendar spread
Total variance must increase with maturity at every strike. Prevents calendar arbitrage.
Butterfly spread
Call prices must be convex in strike. No free money from butterfly trades.
Positivity
Local vol must be positive everywhere. Vol cannot be negative.

The key: with local vol nodes as the variables, all these constraints are linear. That means the optimizer can enforce them perfectly, every time.

3. Solved with linear programming

The constraints and objective are linear, so the whole thing is a linear program.

  • No local minima -- the solver always finds the best answer, not just a nearby one
  • No initialization sensitivity -- you do not need a good starting guess
  • Fast -- modern LP solvers handle this in milliseconds
  • Bid-ask native -- the LP naturally handles bid-ask spreads as ranges, not mid-prices
ℹ️
Why linear programming matters

SVI and SABR require nonlinear optimization: you need a good starting point and might land in a local minimum. SANOS sidesteps all of this. The LP always finds the globally best answer, fast and deterministically. Every strike and expiry node is jointly constrained against calendar arbitrage and butterfly violations in a single pass.

Bid-Ask Spread Handling

Most models fit mid-prices. But mid-prices are a fiction -- the market quotes a bid and an ask, and the "true" value is somewhere in that range. SANOS fits to bid-ask ranges directly: the model only needs to fall within the range at each point. Liquid quotes (tight spreads) tightly constrain the surface. Illiquid quotes (wide spreads) loosely constrain it. No artificial mid-price bias.

💡
SANOS tradeoffs

Most flexible and cleanest approach to surface construction. No-arbitrage by design, native bid-ask handling, captures local features parametric models miss. The cost: new (2025), no dynamic interpretation (no skew dynamics prediction), more infrastructure.

SANOS vs. Parametric Models

Feature
SVI / SSVI
SABR
SANOS
Shape assumption
Parabolic wings
CEV backbone
None
Arbitrage freedom
Post-hoc check
Can violate wings
By construction
Calendar consistency
Per-slice (SSVI for joint)
Not guaranteed
By construction
Fitting method
Nonlinear optimization
2-param optimization
Linear programming (global optimum)
Local features
Cannot capture
Cannot capture
Can capture
Bid-ask handling
Fit mid-prices
Fit mid-prices
Native ranges
Extrapolation
Bounded (linear wings)
Can break
Depends on boundary setup
Dynamic interpretation
None
Sticky-delta
None (static)
Maturity
Industry standard
Decades of use
Recent (2025)

Strengths and Limitations

Strength
What it means for you
No shape bias
The surface shape comes from the data, not from a formula. Captures market features that SVI/SABR structurally miss.
Arbitrage-free by construction
No post-hoc fixups. Calendar and butterfly constraints are enforced during fitting.
LP fitting -- no local minima
Deterministic, fast, always finds the global optimum. No need for good starting guesses.
Bid-ask native
Respects the uncertainty in market quotes. No artificial mid-price bias.
Captures local features
Pre-event vol bumps, large-OI kinks, structural breaks between expiries -- all captured.
Limitation
What it means for you
No dynamic interpretation
Tells you the surface shape now, not how it will move when spot moves. Use SABR for smile dynamics.
Extrapolation needs care
Fits beautifully within the observed range. Beyond the last liquid OTM strike, you need boundary conditions.
Overfitting risk with many nodes
More parameters means you can fit noise in thin markets. Proper smoothing is essential.
New (2025)
Lacks the decades of battle-testing that SVI and SABR have. Edge cases may not be documented yet.
⚠️
Not a replacement for everything

SANOS solves the static fitting problem better than parametric models. But it does not address smile dynamics (use SABR), does not give you a compact representation for storage (SVI's 5 numbers per slice is hard to beat), and requires more infrastructure. Computing Greeks like delta and vega from a SANOS surface requires finite-difference bumping on the grid. Next generation of surface fitting, not a replacement for understanding the parametric models.

Relevance to Crypto

Crypto options markets have several features that favor non-parametric approaches:

  • Sparse, irregular quotes: Not every strike has a quote at every expiry. SANOS handles irregular grids natively.
  • Wide bid-ask spreads: Especially on smaller underlyings. SANOS uses spreads as constraints rather than discarding them.
  • Structural events: Token unlocks, protocol upgrades, and airdrops create localized vol features that SVI cannot capture. These show up as ATM vol bumps at specific expiries.
  • Rapid regime changes: The surface can change shape faster than a parametric model can be re-estimated. SANOS's LP fitting is fast enough to keep up. The term structure can shift dramatically intraday and SANOS adapts without manual intervention.
ℹ️
SANOS and local vol extraction

Because SANOS directly parameterizes local vol nodes, extracting a full Dupire local vol surface is trivial -- it is the fitted grid. This makes SANOS especially useful for pricing path-dependent exotics (barriers, cliquets) where local vol dynamics determine the payoff. Parametric models like Black-Scholes-based SVI require a separate extraction step that can introduce numerical artifacts.

Equation Explorer

Convert between implied vol, total variance, log-moneyness, and option prices.

Equation Explorer

w = σ2 × Ttotal variance = IV2 × time
%
The implied volatility
days
Calendar days to expiration
Total Variance (w)
0.022225
Annualized Variance (σ²)
0.2704
Round-trip IV
52.00%
Total variance is what SVI and other models fit. It scales with time, so a 50% vol for 30 days has less total variance than 50% vol for 90 days.

Test your understanding before moving on.

Q: Why does SANOS use linear programming instead of the nonlinear optimization used by SVI and SABR?
Q: A market maker's SANOS surface has 20 strike nodes and 6 expiry nodes. How many free variables, and how does that compare to SVI?
Q: You need to price a barrier option. Would you prefer a SANOS surface or an SVI surface for local vol extraction?
Q: What is the main limitation of SANOS compared to SABR for a delta-hedging desk?

💡 Tip: Try answering each question yourself before revealing the answer.

Building mathematical intuition

Learn SANOS from scratchInteractive lesson · no prerequisites

This lesson explains SANOS as a node-grid surface rather than a fixed formula, then shows how the optimization and no-arbitrage constraints work together.


See also: