Checking SABR Implied Volatility Surfaces for Arbitrage
Summary
The document outlines checks for whether a SABR-fitted option surface is free of static arbitrage. For a fixed maturity, it proposes deriving the risk-neutral density from the second strike derivative of call prices, then checking that the density is nonnegative, integrates to one, and reproduces call prices when integrated. Across maturities, it identifies nonnegative calendar call spreads as a necessary condition for avoiding calendar arbitrage.
The author fits SABR parameters to call prices, fixing beta and estimating the remaining parameters by least squares, and asks whether analytical derivatives or finite differences are more efficient and reliable. They also ask how to handle integration over an unbounded strike range. The document presents these as open methodological questions; it gives no comparison, numerical results, or recommended derivative and integration scheme. Its checks focus on necessary arbitrage conditions, so passing them alone may not establish that a fitted surface satisfies every no-arbitrage constraint.
Key ideas
- A risk-neutral density derived from call prices should be nonnegative and integrate to one.
- Integrating the density against option payoffs should recover call prices.
- A nonnegative calendar call spread across maturities is a necessary condition for no calendar arbitrage.
- The document leaves open whether analytical differentiation or finite differences are preferable for a SABR fit.
- Numerical integration over an unbounded strike range requires a suitable treatment that the document does not specify.
Tags
Full text
# Checking arbitrage for the SABR model - analytical vs numerical approach # Checking arbitrage for the SABR model - analytical vs numerical approach I wish to check if the fitted volatility smile/surface from the SABR model for a fixed time period is arbitrage free. Through my research, I've learnt the following need to be checked: - The RND (risk neutral density) should be non negative and integrates to 1, and recovers all call prices when numerically integrated. - [Necessary for no arbitrage across time] The value of a calendar call spread for any arbitrary maturities must be non negative at any horizon. I'm looking for the most efficient (computationally) way to do this. Here is what I have decided - - Construct the vol surface using call price data for the time horizon. For each day, fix beta (from historic data) and use least squares to estimate alpha, rho and mu for the day. - Obtain RND by second order derivative of the call price w.r.t strike. I'm confused if I should do this analytically (since this is essentially the second partial of Black Scholes call price fitted with SABR vol., both of which are in closed form) or numerically (by taking finite differences). Also, since integration here is essentially infinite, would I run into problems by using the usual >integrate< function?
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.