Cleaning Implied Volatility Surfaces with No-Arbitrage Constraints
Summary
For sparse, illiquid index option chains, the response recommends cleaning and fitting prices or total variance rather than removing implied-volatility outliers and interpolating the remaining points. In option-price space, useful restrictions are clearer: call prices should be bounded, decrease with strike, and be convex in strike; calendar spreads should also satisfy monotonicity across maturities. These shape conditions help prevent static arbitrage.
It proposes beginning with hard quote filters for crossed or locked markets, stale data, incompatible contracts, missing values, and quotes too close to intrinsic value for stable implied-volatility calculations. Then check vertical, butterfly, and calendar spreads, repairing violations by projection or constrained smoothing. Suggested fitting approaches include constrained splines and arbitrage-aware SVI or SSVI surfaces. Weighting quotes by liquidity, using factors such as bid-ask spread and vega, can preserve sparse strikes while limiting the influence of unreliable observations. The guidance is qualitative and gives no comparative results or detailed parameter choices.
Key ideas
- Clean and smooth option prices or total variance rather than patching implied volatilities point by point.
- Filter basic quote and contract defects before applying statistical outlier rules.
- Use monotonicity, convexity, and calendar restrictions to check for static arbitrage.
- Repair violations with constrained splines or arbitrage-aware parametric surfaces.
- Weight calibration by quote quality, including liquidity and vega.
Tags
Full text
# Best practices for cleaning market observed implied vols before model calibration # Best practices for cleaning market observed implied vols before model calibration I'm running into the issue that the input for my model calibration can have some quite crazy values due to for example illiquid or one-sided order books in a small subset of the option chain. What are some of the industry-best practices for cleaning these so that my model doesn't miscalibrate? I'm mainly looking at Index options that are overall not very liquid and don't have a lot of strikes available therefore its harder to just discard certain strikes, but outside of that I do see some values that are obviously erroneous. I don't really have granular historical data available to me for these, so the best Ive been able to come up with is finding outliers for each smile based on medians or z scores, deleting those outliers and interpolating between the two 'healthy' values. But I'm hoping for something more rigorous in terms of outlier detection or perhaps some sort of smoothing etc. or anything else that doesn't require loads of additional data. ## Answer by carry_and_pray (score 3, accepted) https://quant.stackexchange.com/a/85593 I would not clean the IVs directly and then interpolate them. The more standard workflow is to clean and smooth in option-price space (or total-variance space) because no-arbitrage restrictions are much easier to express there: for each maturity, call prices should be bounded, decreasing in strike and convex in strike. Across maturities, they should satisfy calendar monotonicity. Carr and Madan show that an absence of call-spread, butterfly-spread and calendar-spread arbitrage is sufficient to exclude all static arbitrage. Fengler explicitly recommends working in call-price space because these become convenient shape constraints. The first pass should be hard quote filters and not statistical outlier filters. Drop or heavily down-weight quotes with zero/locked/crossed markets, stale settlements, non-comparable contract specifications, and quotes whose price is too close to intrinsic value to produce a stable IV. Fengler notes that even using mid prices can create arbitrage and that stale settlement data are often poor quality. Industry implementations such as FactSet also filter our contracts with zero bid/ask, non-comparable contracts, missing IVs, and similar basic pathologies before fitting a surface. After that, enforce static no-arbitrage on the cleaned grid. In practice that means checking, for each maturity slice, that vertical spreads are nonnegative and butterflies are nonnegative, and across maturities that calendar spreads are nonnegative. If the raw quotes violate these conditions, repair them by projecting to the nearest arbitrage-free surface/slice, rather than deleting a few z-score outliers and linearly interpolating IVs. Homescu’s survey describes exactly this “adjust inputs to avoid arbitrage” step, and Fengler’s constrained smoothing spline is designed for the case where the input data are scarce and not arbitrage-free. For the actual repair/smoothing step, I would use either an arbitrage-free constrained spline in price space or an arbitrage-free parametric surface such as SVI/SSVI, rather than ad hoc interpolation of individual vol points. Fengler’s method smooths call prices under shape constraints and then inverts back to IVs. Gatheral and Jacquier show how to calibrate SVI so that the resulting surface is free of static arbitrage. Both approaches are much more defensible than pointwise IV patching. Finally, when calibrating your model, do not give every quote equal weight. Weight by liquidity, typically using some combination of bid-ask spread and vega, so the model is anchored by the reliable center of the surface and not by a handful of noisy wings. FactSet’s production methodology, for example, uses vega-weighted regression after filtering. In an illiquid index chain, this is usually better than discarding many strikes outright: keep the quotes that survive the hard filters, downweight the dubious ones, and fit a regularized arbitrage-free surface through them.
Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)
This summary was written by Stratmill's research agent from the original; it is not a copy of the source.