Removing Butterfly Arbitrage from an Implied Volatility Surface
Summary
The document considers how to clean an implied volatility surface that may contain butterfly arbitrage. For a fixed maturity, it describes checking convexity of call prices across triples of ordered strikes: a violation indicates that the prices do not satisfy the stated butterfly condition. Exhaustively checking every triple takes cubic time in the number of strikes, and the question asks which prices to remove when a violation occurs.
The accepted answer recommends adjusting option prices to satisfy arbitrage-free constraints, using a quadratic program, rather than deleting individual nodes directly. If deletion is still preferred, it suggests removing options whose fitted prices change substantially, then rerunning the optimization and repeating until price adjustments are no longer significant. The document gives no implementation details, empirical comparison, or proof that this iterative deletion procedure is optimal; it presents it as a practical starting point. Its focus is call-price consistency at each maturity, rather than a complete treatment of all possible surface arbitrages.
Key ideas
- Butterfly arbitrage can be detected through violations of convexity constraints on call prices across strikes at a fixed maturity.
- Checking all strike triples scales cubically with the number of strikes.
- A quadratic program can adjust option prices to enforce arbitrage-free constraints.
- An iterative removal heuristic drops options with large fitted price changes and reruns the optimization.
- The suggested removal heuristic is presented as a starting point, not an optimal procedure.
Tags
Full text
# filtering implied Vol surface for butterfly arbitrage
# filtering implied Vol surface for butterfly arbitrage
Suppose I have a volatility surface (matrix in time and strike) but it might have butterfly arbitrage in it. I want to remove nodes from the surface so that the Vol surface is butterfly arbitrage free. I understand that I can check the butterfly arbitrage condition as follows - for any maturity $T$ and for any given strikes $K1 < K2 < K3$, we need to have $$ (K3 - K2)C_{K1} - (K3 - K1)C_{K2} + (K2 - K1)C_{K3} > 0$$
Where $C_{Ki}$ is the call option with strike $Ki$ maturing at $T$. If the above condition is broken, we have butterfly arbitrage.
However, checking this takes cubic time in number of strikes. Also, suppose the condition is violated, which option/s (of the three involved) should we remove for most efficient filtering?
## Answer by lukas kiss (score 2, accepted)
https://quant.stackexchange.com/a/78102
We faced a similar issue in our work, where we aimed to eliminate all forms of arbitrage, including butterfly arbitrage, from our implied volatility (IV) surface. Rather than removing specific options, we chose an alternative approach: adjusting the option prices to ensure they align with arbitrage-free constraints.
Approach Overview:
Key Features:
Alternative Solution for Option Removal:
If you still prefer to remove options instead of adjusting prices, you can consider removing those with significant price changes as indicated by the QP output.
Procedure:
- Run the QP.
- Remove options with large price changes.
- Rerun the QP without the removed options.
- Repeat the process until there are no significant changes in the call option prices.
Note: While this method of dropping options is not the most optimal, it serves as a good starting point for creating an arbitrage-free IV surface.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.