Markets: A Rigorous Course

8.10 Implied volatility

Core about 15 min

Motivation

Markets quote options by price; traders think in volatility. Implied volatility (IV) is the σ\sigma that makes the model price equal the market price. It converts prices across strikes and expiries into comparable numbers, and its pattern across strikes (the smile) records what the market thinks of tails. Before trusting any IV you need to know it exists, is unique, and that your solver finds it.

Existence and uniqueness#

Proposition 8.10.1existence and uniqueness

Fix S,K,τ>0S,K,\tau>0, r,qr,q. The map σ↦c(σ)\sigma\mapsto c(\sigma) is a continuous, strictly increasing bijection from (0,∞)(0,\infty) onto (max⁡(Se−qτ−Ke−rτ,0), Se−qτ)\big(\max(Se^{-q\tau}-Ke^{-r\tau},0),\ Se^{-q\tau}\big). Hence every call price strictly inside the bounds (8.6) has exactly one implied volatility, and no price outside them has one. The same holds for puts with (8.7), and by parity a call and a put with the same strike and expiry have the same IV.

Proof

Continuity is clear. V=Se−qτφ(d1)τ>0\mathcal V=Se^{-q\tau}\varphi(d_1)\sqrt\tau>0, so cc is strictly increasing. The limits as σ↓0\sigma\downarrow0 and σ→∞\sigma\to\infty are the two bounds (Remark 8.7.3). Intermediate value theorem plus strict monotonicity give the bijection. For the put, p(σ)=c(σ)−Se−qτ+Ke−rτp(\sigma)=c(\sigma)-Se^{-q\tau}+Ke^{-r\tau} is a vertical shift of cc, so p(σ)=pmktp(\sigma)=p^{\text{mkt}} iff c(σ)=pmkt+Se−qτ−Ke−rτc(\sigma)=p^{\text{mkt}}+Se^{-q\tau}-Ke^{-r\tau}, which by parity is the call price.∎

The last statement holds only if market prices satisfy parity with the same SS, qq and rr. In practice call and put IVs at the same strike differ slightly, and the gap measures the parity residual of 8.2 divided by vega.

Newton's method and its fallback#

Shape of c(σ)c(\sigma) Differentiate vega with respect to σ\sigma (this is vomma or volga). Using ∂σd1=−d2/σ\partial_\sigma d_1=-d_2/\sigma (check: d1=x/(στ)+στ/2d_1=x/(\sigma\sqrt\tau)+\sigma\sqrt\tau/2 with x=ln⁡(S/K)+(r−q)τ=ln⁡(F/K)x=\ln(S/K)+(r-q)\tau=\ln(F/K)),

∂2c∂σ2=V d1d2σ,d1d2=x2σ2τ−σ2τ4.(8.29)\frac{\partial^2c}{\partial\sigma^2}=\mathcal V\,\frac{d_1d_2}{\sigma},\qquad d_1d_2=\frac{x^2}{\sigma^2\tau}-\frac{\sigma^2\tau}{4}. \tag{8.29}

So c(σ)c(\sigma) is convex for σ<σ∗\sigma<\sigma^* and concave for σ>σ∗\sigma>\sigma^*, where

σ∗=2∣x∣/τ=2∣ln⁡(F/K)∣/τ.(8.30)\sigma^*=\sqrt{2|x|/\tau}=\sqrt{2|\ln(F/K)|/\tau}. \tag{8.30}

Proposition 8.10.2global convergence of Newton from σ∗\sigma^*; Manaster and Koehler 1982

Let f(σ)=c(σ)−cmktf(\sigma)=c(\sigma)-c^{\text{mkt}} with root σ^\hat\sigma. Newton's iteration σk+1=σk−f(σk)/V(σk)\sigma_{k+1}=\sigma_k-f(\sigma_k)/\mathcal V(\sigma_k) started at σ0=σ∗\sigma_0=\sigma^* converges monotonically to σ^\hat\sigma, and quadratically near it.

Proof

Case σ^>σ∗\hat\sigma>\sigma^*. On [σ∗,∞)[\sigma^*,\infty), ff is increasing and concave, and f(σ0)<0f(\sigma_0)<0. Suppose σ∗≤σk<σ^\sigma^*\le\sigma_k<\hat\sigma. Then f(σk)<0f(\sigma_k)<0 and σk+1>σk\sigma_{k+1}>\sigma_k. Concavity puts the graph below its tangent: 0=f(σ^)≤f(σk)+f′(σk)(σ^−σk)0=f(\hat\sigma)\le f(\sigma_k)+f'(\sigma_k)(\hat\sigma-\sigma_k), so σ^−σk≥−f(σk)/f′(σk)=σk+1−σk\hat\sigma-\sigma_k\ge-f(\sigma_k)/f'(\sigma_k)=\sigma_{k+1}-\sigma_k, i.e. σk+1≤σ^\sigma_{k+1}\le\hat\sigma. The iterates increase and are bounded by σ^\hat\sigma, so they converge to some σˉ≤σ^\bar\sigma\le\hat\sigma; passing to the limit in the iteration gives f(σˉ)=0f(\bar\sigma)=0, so σˉ=σ^\bar\sigma=\hat\sigma by uniqueness. Case σ^<σ∗\hat\sigma<\sigma^*: on (0,σ∗](0,\sigma^*], ff is convex, f(σ0)>0f(\sigma_0)>0, and the mirror argument (graph above tangent) shows the iterates decrease to σ^\hat\sigma. Quadratic convergence near σ^\hat\sigma is standard for Newton with f′(σ^)=V>0f'(\hat\sigma)=\mathcal V>0.∎

When F=KF=K exactly, σ∗=0\sigma^*=0 and cc is concave on all of (0,∞)(0,\infty); start at any small positive σ\sigma. The code uses max⁡(σ∗,10−3)\max(\sigma^*,10^{-3}).

Why a fallback anyway With a careless start Newton fails. For a deep OTM option two days from expiry, starting at σ0=5%\sigma_0=5\% gives d1≈−91d_1\approx-91 and a vega of order 10−180010^{-1800}: the first step is a division by (numerical) zero. Production code wraps Newton in a bracketing method. Brent's method (Brent 1973) combines bisection, the secant method and inverse quadratic interpolation; it keeps a bracket [a,b][a,b] with f(a)f(b)<0f(a)f(b)<0 and guarantees convergence at least as fast as bisection, usually superlinearly. Since f(10−6)<0<f(5)f(10^{-6})<0<f(5) for any admissible price at realistic maturities, [10−6,5][10^{-6},5] is a valid bracket. m08_implied_vol.solve_iv tries Newton and falls back to scipy.optimize.brentq; the tests force the fallback with σ0=5%\sigma_0=5\% and check that the Manaster–Koehler start needs no fallback for the same option. For industrial use, Jäckel's "Let's Be Rational" (2015) attains machine precision in two iterations everywhere.

Nifty IVs and the skew#

Worked example 8.11IV of a real Nifty option

Nifty Dec 24,700 call, settlement 476.90 on 5 Nov 2026, with the inputs of Worked example 8.8. Here x=ln⁡(F/K)=0.000773x=\ln(F/K)=0.000773, so σ∗=2×0.000773/0.147945=0.1022\sigma^*=\sqrt{2\times0.000773/0.147945}=0.1022.

kk σk\sigma_k c(σk)c(\sigma_k) vega σk+1\sigma_{k+1}
0 0.102223 393.973 3,759.44 0.124281488
1 0.124281488 476.89914 3,759.33 0.124281718
2 0.124281718 476.90000 3,759.33 0.124281718

IV is 12.43%. Starting from a careless 30% instead takes one more iteration (30% → 12.415% → 12.4281718%). The put at 454.95 gives 12.35%. The gap of 0.08 vol points is the parity residual of +3.0+3.0 points at this strike divided by vega (3.0/3,759 ≈ 0.0008).

The smile, previewed Repeating this across strikes for the December expiry on 5 Nov 2026 (Black-76 on F=24,719.10F=24{,}719.10, using OTM options: puts below the forward, calls above) gives roughly: 24,000 put 13.4%; 24,300 put 12.9%; 24,500 put 12.6%; 24,800 call 12.3%; 25,000 call 12.2%; 25,500 call 12.0%. IV falls as the strike rises: the equity-index skew. Under Black–Scholes this curve would be flat. M09 explains what the skew prices (crash risk, the leverage effect) and how to trade it.

Practitioner notes

  • Compute IV from mid quotes, not last trades, when you have them. Settlement prices of illiquid strikes produce noisy IVs; filter by volume and open interest.
  • For short-dated options, IV is very sensitive to the time convention. A quote of 12% on 2 trading days and on 4 calendar days are different statements.
  • Prices below intrinsic (stale quotes, or after a dividend) have no IV. Return an error, not a number.

Create a free account

Reading is open to everyone. An account keeps your progress, answers, notes and code drafts, and gives you the study plan, the journals and the simulator. Running code needs an account approved for it.