Solving for Model-Free Implied Volatility with a Root Finder
Summary
The document presents a numerical problem for calculating model-free implied volatility from option prices across strikes. The variance expression sums strike-weighted option-price terms and includes a forward level that itself depends on the unknown volatility. This dependence makes direct evaluation appear circular, prompting the question of how to use nonlinear optimization when the unknown enters the calculation.
The response reframes the equation as a root-finding problem: define a function of the candidate volatility by moving the target variance term to one side, then solve for a value where that function is zero. A MATLAB root solver can be used for this purpose. The explanation gives the core numerical formulation but does not specify a particular solver, starting value, convergence checks, or treatment of discretization and input data. Implementers still need to construct the function consistently and verify that a root is numerically stable and meaningful.
Key ideas
- The implied-volatility equation is implicit because the unknown also affects the forward level.
- Move all terms to one side to define a scalar function of candidate volatility.
- Find the volatility by solving for a zero of that function.
- A MATLAB root-finding routine can perform the numerical solve.
- Solver choice, initial conditions, convergence, and data handling are left unspecified.
Tags
Full text
# Implementing nonlinear optimization to find model free implied volatility using Matlab
# Implementing nonlinear optimization to find model free implied volatility using Matlab
I am trying to calculate model free implied volatility $\sigma_{MF}$ for a relative performance index using the following method:
$\sigma_{MF}^2=2\sum_{i} [\frac{C(T,K_{i})}{K_{i}^2} - \frac{max(0,F-K_{i})}{K_{i}^2}]\Delta K_{i}$, where $F=Ie^{(\frac{\sigma_{M}^2-\sigma_{S}^2+\sigma_{MF}^2}{2})T}$
The only unknown here is $\sigma_{MF}$.How can I implement this using Matlab? I am confused as to how I can use nonlinear optimization functions when the unknown $\sigma_{MF}$ is itself inside a loop.
## Answer by Christian Fries (score 4)
https://quant.stackexchange.com/a/7289
Write the equation as $\sigma_{MF} \to G(\sigma_{MF}) = 0$ (by subtracting $\sigma_{MF}^2$) and use a root finder. As how to solve $G(\sigma_{MF}) = 0$ in MatLab check the MatLab documentation (see e.g. "solver" there).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.