QF-Learn

Implied volatility: what it is and how to calculate it

Implied volatility is the volatility that, plugged into the Black-Scholes formula, gives an option’s market price. It is the market’s estimate of how much the stock will move between now and expiry, expressed as an annualised standard deviation of returns.

Historical volatility looks backwards at how much a stock did move. Implied volatility looks forwards: it is read from what people are paying for options today. Traders quote options in implied volatility rather than in price, because it lets them compare options with different strikes and expiries on one scale.

What an implied volatility number means

An implied volatility of 20% says the market prices the stock as if its annual returns had a standard deviation of 20%. Because volatility scales with the square root of time, that is about 20% ÷ √252 ≈ 1.26% a trading day, or 20% ÷ √12 ≈ 5.8% a month. Under the model’s normal assumption, the stock has roughly a two-in-three chance of ending the year within one standard deviation of where it started.

The best-known implied volatility is the Cboe Volatility Index (VIX), which measures the 30-day volatility implied by S&P 500 index options. It tends to jump when markets fall, which is why it is called the fear gauge.

How to calculate implied volatility

There is no formula that gives implied volatility directly, so it is found numerically: guess a volatility, price the option with Black-Scholes, compare with the market price, and adjust. It always has exactly one answer, because a call’s price rises steadily with volatility:

Black-Scholes call price against volatilityFor a one-year at-the-money call with strike 100 and a 5% rate, the price rises smoothly from about 4.9 at near-zero volatility. The line where the price is 12.00 crosses the curve once, at about 24% volatility.5101520102030405024.1%Volatility (%)Call priceBlack-Scholes call priceMarket price 12.00
The market price crosses the model curve once. That crossing is the implied volatility.

Newton’s method finds the crossing fast. Each step moves the guess by the pricing error divided by vega, the slope of the curve. For a one-year at-the-money call trading at 12.00 it takes three steps:

Python
from math import exp, log, sqrt
from statistics import NormalDist

nd = NormalDist()
N, n = nd.cdf, nd.pdf


def bs_call(S, K, T, r, sigma):
    d1 = (log(S / K) + (r + 0.5 * sigma**2) * T) / (sigma * sqrt(T))
    d2 = d1 - sigma * sqrt(T)
    return S * N(d1) - K * exp(-r * T) * N(d2)


def implied_vol(price, S, K, T, r, guess=0.3, tol=1e-8):
    """Newton's method: step sigma by (model - market) / vega until they agree."""
    sigma = guess
    for i in range(50):
        d1 = (log(S / K) + (r + 0.5 * sigma**2) * T) / (sigma * sqrt(T))
        vega = S * n(d1) * sqrt(T)
        diff = bs_call(S, K, T, r, sigma) - price
        print(f"step {i}: sigma = {sigma:.6f}, model - market = {diff: .6f}")
        if abs(diff) < tol:
            return sigma
        sigma -= diff / vega
    raise RuntimeError("did not converge")


iv = implied_vol(price=12.00, S=100, K=100, T=1, r=0.05)
print(f"implied volatility = {iv:.4%}")
Output
step 0: sigma = 0.300000, model - market =  2.231255
step 1: sigma = 0.241195, model - market =  0.002953
step 2: sigma = 0.241117, model - market =  0.000000
step 3: sigma = 0.241117, model - market = -0.000000
implied volatility = 24.1117%

So a price of 12.00 implies a volatility of 24.11%, above the 20% that gives the model price of 10.45. Newton’s method can overshoot for options far from the money, where vega is tiny, so production code falls back to bisection there. The Black-Scholes calculator on this site uses bisection and solves for calls or puts.

The volatility smile and skew

If Black-Scholes were exactly right, every option on the same stock and expiry would have the same implied volatility. In real markets they do not. Plot implied volatility against strike and you usually get a smile or, for stock indices, a skew: low strikes carry higher implied volatility than high ones.

The skew exists because traders pay extra for protection against crashes, and because real returns have fatter tails than the normal distribution the model assumes. It is the clearest evidence of the model’s limits, and models such as local volatility and stochastic volatility (Heston, SABR) were built to reproduce it.

How traders use implied volatility

Learn this on your phone, one short lesson at a time

QF-Learn turns topics like this into five-minute lessons with quizzes, finance games and certificates. It is free, and it is coming to Android and iOS. Leave your email and you will be first to get it.