Quant Memo
Advanced

Implied Volatility Inversion Algorithms

Black-Scholes turns a volatility guess into a price, but the market only ever gives you a price. Getting volatility back out means solving the formula backwards, and there is no algebra that does it — only iteration.

Prerequisites: The Black-Scholes Model, The Newton-Raphson Method, The Bisection Method

The Black-Scholes formula takes a volatility number and hands back a price. Every trading desk wants to run it the other way: they see a price — it just traded on the exchange — and they want the volatility that produced it, because volatility, not price, is what lets you compare a one-month option to a two-year one, a call to a put, Apple to a barrel of oil. That reverse direction has no algebra. You cannot rearrange the formula to isolate σ\sigma the way you'd rearrange y=mxy=mx to solve for xx; volatility is buried inside a cumulative normal distribution with no closed-form inverse. So every implied volatility ever quoted, on every options exchange, was found by a computer guessing, checking, and improving its guess — an algorithm, not a formula.

The hot-and-cold shower

Tune a shower with no temperature markings, just a dial. Turn it, wait, feel whether it's too hot or too cold. Two honest strategies exist. One: always turn to exactly halfway between your hottest-known-too-cold setting and coldest-known-too-hot setting — guaranteed to close in, but slowly, one bit of precision per try. Two: notice how fast the temperature changed when you last nudged the dial, and use that rate to jump almost straight to the right setting — fast when it works, but overshoot badly if you nudge hard where temperature barely responds to the dial at all.

Those are, respectively, the bisection method and the Newton-Raphson method. Inverting an option price for implied volatility is exactly this shower-dial problem: guess a volatility, price the option, compare to the market price, adjust, repeat.

Setting it up as a root

Fix everything about the option except volatility — stock price SS, strike KK, time to expiry TT, and interest rate rr are all observed. Define CBS(σ)C_{BS}(\sigma) as "the Black-Scholes price if volatility were σ\sigma," now a function of one variable. The market already tells you the actual traded price, CmktC_{mkt}. You want the σ\sigma that makes model and market agree, so define an error function

f(σ)  =  CBS(σ)    Cmkt,f(\sigma) \;=\; C_{BS}(\sigma) \;-\; C_{mkt} ,

and implied volatility is whatever σ\sigma^{*} makes f(σ)=0f(\sigma^{*}) = 0 — a root of ff. This is guaranteed to exist and be unique for any sensible market price, because CBS(σ)C_{BS}(\sigma) is strictly increasing in σ\sigma: more volatility never makes an option cheaper. That monotonicity is what makes both algorithms below reliable.

Newton-Raphson uses the slope of ff — which is exactly vega, the option's sensitivity to volatility — to jump toward the root:

σn+1  =  σn    f(σn)f(σn)  =  σn    CBS(σn)CmktVega(σn).\sigma_{n+1} \;=\; \sigma_n \;-\; \frac{f(\sigma_n)}{f'(\sigma_n)} \;=\; \sigma_n \;-\; \frac{C_{BS}(\sigma_n) - C_{mkt}}{\text{Vega}(\sigma_n)} .

In plain English: price the option at your current volatility guess, see how far off you are in dollars, and divide that dollar error by "dollars of price per unit of volatility" — vega — to convert the error into a volatility correction. If your price is too low, this pushes σ\sigma up; too high, it pulls σ\sigma down, and it does so in proportion to how sharply price reacts to volatility right now.

Bisection never uses the slope at all. Start with two guesses aa and bb where f(a)f(a) and f(b)f(b) have opposite signs — one prices too low, one too high — and repeatedly replace whichever endpoint agrees in sign with the midpoint m=(a+b)/2m = (a+b)/2. Each step exactly halves the width of the bracket that must contain the answer. It is slower, but it cannot fail as long as the starting bracket is valid.

Volatility surface
21201919181817212120202019192221212120202022222221212121232222222222228088951001051121201m3m6m12m24mstrike →
ATM 3m 20.0%90% put 3m 20.8%skew 1.4 pts

Every point on a surface like the one above is the output of exactly this root-finding process, run once per strike and maturity, thousands of times, to turn a grid of traded option prices into a grid of comparable volatilities.

Worked example 1: Newton-Raphson

A one-year, at-the-money option: S=KS = K = $100, T=1T = 1, r=0r = 0 (to keep the arithmetic clean). It trades in the market at CmktC_{mkt} = $10.00. Start the guess at σ0=20%\sigma_0 = 20\%.

Iteration 1. Price the option at σ0=0.20\sigma_0 = 0.20: d1=0.5×0.202×10.201=0.10d_1 = \frac{0.5 \times 0.20^{2} \times 1}{0.20\sqrt{1}} = 0.10, d2=0.10d_2 = -0.10. From the normal table, Φ(0.10)=0.5398\Phi(0.10) = 0.5398 and Φ(0.10)=0.4602\Phi(-0.10) = 0.4602, so CBS(0.20)=100(0.53980.4602)C_{BS}(0.20) = 100(0.5398 - 0.4602) = $7.96. The error is f(0.20)=7.9610.00=2.04f(0.20) = 7.96 - 10.00 = -2.04.

Vega at this point is Vega=Sϕ(d1)T=100×0.3970×1=39.70\text{Vega} = S\,\phi(d_1)\sqrt{T} = 100 \times 0.3970 \times 1 = 39.70 (dollars of price per 1.00 of volatility, where ϕ\phi is the bell-curve height, 0.39700.3970 at d1=0.10d_1 = 0.10).

σ1=0.202.0439.70=0.20+0.0514=0.2514.\sigma_1 = 0.20 - \frac{-2.04}{39.70} = 0.20 + 0.0514 = 0.2514 .

Iteration 2. Price the option again, now at σ1=0.2514\sigma_1 = 0.2514: d1=0.5×0.251420.2514=0.1257d_1 = \frac{0.5 \times 0.2514^{2}}{0.2514} = 0.1257, d2=0.1257d_2 = -0.1257. Interpolating the normal table, Φ(0.1257)0.5500\Phi(0.1257) \approx 0.5500, Φ(0.1257)0.4500\Phi(-0.1257) \approx 0.4500, so CBS(0.2514)=100(0.55000.4500)C_{BS}(0.2514) = 100(0.5500-0.4500) = $10.00 — matching the market price to the cent. f(σ1)0f(\sigma_1) \approx 0: converged.

Implied volatility is 25.14%, found in a single correction because vega was large and the price curve nearly straight over that range. This near-instant convergence is Newton-Raphson's signature: each iteration roughly squares the number of correct digits, once you're close.

Worked example 2: bisection, same option

Suppose instead you distrust your vega calculation and want the safety of bisection. Bracket the answer with a=0.10a = 0.10 (too cheap) and b=0.50b = 0.50 (too expensive) — check: CBS(0.10)=3.98<10C_{BS}(0.10) = 3.98 < 10 (i.e. $3.98) and CBS(0.50)=19.74>10C_{BS}(0.50) = 19.74 > 10 (i.e. $19.74), so the root is trapped between them.

StepMidpoint σ\sigmaCBS(σ)C_{BS}(\sigma)Compare to $10.00New bracket
10.300$11.92too high[0.10, 0.30]
20.200$7.96too low[0.20, 0.30]
30.250$9.96too low[0.25, 0.30]
40.275$10.64too high[0.25, 0.275]

After four steps the bracket has shrunk from 40 volatility points wide to 2.5 points wide, centered near the true 25.14%, but it still isn't there — bisection would need roughly a dozen more steps to match the precision Newton-Raphson reached in one. That's the trade-off made concrete: Newton used the shape of the curve to leap, bisection only used its sign and crawled, one halving at a time.

option price volatility guess: 20% Newton: one jump to 25.1% bisection: crawling brackets
Newton-Raphson follows the tangent line at the current guess (amber) straight toward where the curve crosses the market price. Bisection (the ticks along the axis) only ever narrows a bracket by half, needing many more steps to land on the same answer.

What this means in practice

Every options exchange, pricing vendor, and trading desk runs this inversion millions of times a day to build the implied volatility surface that the smile, skew, term structure, and every vol-arbitrage strategy get read off of. Production systems rarely use raw Newton-Raphson from a fixed starting guess, because vega collapses to nearly zero for deep in- or out-of-the-money options; dividing by a near-zero vega sends the next guess flying off to a nonsensical or negative volatility. The fix is a good analytic starting guess (Brenner-Subrahmanyam or Corrado-Miller get within a point or two in one shot) followed by a few Newton steps, with a bisection or Brent's-method fallback (The Secant and Brent Methods) that kicks in if a Newton step ever leaves the sensible bracket.

Implied volatility is not read off a formula — it is the fixed point of a search. Every quoted implied vol is the output of an iterative algorithm converging on the volatility that reprices the option back to its market price, run fresh for every strike and expiry, every time the market moves.

The classic mistake is assuming Newton-Raphson always converges quickly, the way it did in the worked example above. It only converges quickly when vega is comfortably large, which is true for near-the-money, not-too-short-dated options. For a deep out-of-the-money option a week from expiry, vega can be a tiny fraction of a cent per volatility point, so the Newton step f(σ)/Vega(σ)f(\sigma)/\text{Vega}(\sigma) divides by almost nothing and can propose a wildly wrong next guess — sometimes even a negative volatility, which is meaningless. A production-quality solver always checks that each new guess stays inside a sane bracket (say, 1% to 500%) and falls back to bisection or Brent's method if it doesn't; naive code that skips this check will occasionally return garbage or fail to converge at all on exactly the option you most needed a number for.

Key terms

  • f(σ)=CBS(σ)Cmktf(\sigma) = C_{BS}(\sigma) - C_{mkt} — the error function whose root is the implied volatility.
  • Vega — the slope f(σ)f'(\sigma); how much the model price moves per unit of volatility, and the engine of Newton-Raphson's speed.
  • Bracket — a pair of volatility guesses known to straddle the true answer, required by bisection and used as a safety net for Newton-Raphson.
  • Analytic starting guess — a closed-form approximation (Brenner-Subrahmanyam, Corrado-Miller) used to seed the iteration close enough that Newton-Raphson converges in one or two steps.
  • Vol surface — the grid of implied volatilities, one per strike and maturity, that this inversion is run to produce.

Related concepts

Practice in interviews

Further reading

  • Manaster & Koehler (1982), The Calculation of Implied Variances from the Black-Scholes Model
  • Jäckel, Let's Be Rational (2015)
  • Press et al., Numerical Recipes (Ch. 9, Root Finding)
ShareTwitterLinkedIn