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?

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:

• Methodology: We employed Quadratic Programming (QP) to address this issue. The objective was to minimize the sum of squared changes in the call option prices.
• Constraints: The adjustments were made under the arbitrage-free constraints, ensuring the absence of arbitrage opportunities in the revised pricing.

Key Features:

• Weighting: This method allows for weighting adjustments, which can be based on factors like open interest or moneyness.
• Error Function: By defining the error function as the sum of squared changes, it ensures a convex problem, which is solvable in polynomial time.
• Efficiency: In practical applications, this method has proven to be highly efficient, typically running in milliseconds.

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:

1. Run the QP.
2. Remove options with large price changes.
3. Rerun the QP without the removed options.
4. 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.