Implied volatility is the annualized volatility value that makes an option-pricing model match an option's market price.

The result is quoted as a percentage, such as 33%. It reflects the volatility implied by the option's current price, not a guaranteed forecast of future price movement.

For a standard European option, the process is:

  1. Select the option's market price, preferably the bid-ask midpoint.
  2. Enter the underlying price, strike price, time to expiration, interest rate and dividend yield.
  3. Choose an option-pricing model, usually Black-Scholes-Merton for a European option.
  4. Solve for the volatility that makes the model price equal the market price.

Inputs for an Implied Volatility Calculation

Item What you need
Option price Current market price, usually the bid-ask midpoint
Underlying price Current stock, ETF, index or futures price
Strike price The option's exercise price
Time to expiration Expressed in years
Interest rate The relevant risk-free rate
Dividend yield Needed when the underlying pays dividends
Pricing model Black-Scholes for European options, or a tree-based model for many American options
Output Implied volatility, usually shown as a percentage

The Black-Scholes Implied Volatility Formula

For a European call with a continuous dividend yield, the Black-Scholes-Merton model gives the following price:

[ C = S e^{-qT}N(d_1) - K e^{-rT}N(d_2) ]

where:

[ d_1 = \frac{\ln(S/K)+(r-q+\frac{1}{2}\sigma^2)T} {\sigma\sqrt{T}} ]

[ d_2 = d_1-\sigma\sqrt{T} ]

The variables are:

  • (C) = theoretical call price
  • (S) = underlying asset price
  • (K) = strike price
  • (T) = time to expiration in years
  • (r) = continuously compounded risk-free interest rate
  • (q) = continuous dividend yield
  • (\sigma) = volatility
  • (N()) = cumulative standard normal distribution

Implied volatility is the value of (\sigma) that satisfies:

[ \text{Model price}(\sigma) = \text{Observed market price} ]

Cboe describes the process as matching the Black-Scholes model price to the observed option price until the pricing error falls within a defined tolerance.

Volatility cannot usually be isolated through a simple algebraic rearrangement. A numerical solver is used instead.

Worked Example: Calculating Implied Volatility

Assume a European call has these inputs:

Input Value
Underlying price, (S) $100
Strike price, (K) $100
Time to expiration, (T) 0.50 years
Risk-free rate, (r) 5%
Dividend yield, (q) 0%
Market call price $10.46

The calculation works as follows:

  1. Start with a volatility estimate, such as 20%.
  2. Calculate the theoretical call price.
  3. Compare that price with the $10.46 market price.
  4. Raise or lower the volatility estimate.
  5. Repeat until the two prices are close enough.

At approximately 33% volatility, the Black-Scholes call value is approximately $10.46.

[ \boxed{\text{Implied volatility} \approx 33%} ]

The result means that, under the selected model assumptions, the option price is consistent with an annualized volatility of about 33%.

How to Solve for Implied Volatility with Bisection

Bisection is simple and dependable. It begins with a low and high volatility bound, then repeatedly cuts the interval in half.

  1. Set a low volatility, such as 0%.
  2. Set a high volatility, such as 500%.
  3. Calculate the midpoint.
  4. Price the option using the midpoint volatility.
  5. If the model price is too high, lower the upper bound.
  6. If the model price is too low, raise the lower bound.
  7. Continue until the price difference is smaller than the chosen tolerance.
low = 0.000001
high = 5.00

repeat:
    volatility = (low + high) / 2
    model_price = option_price(volatility)

    if model_price > market_price:
        high = volatility
    else:
        low = volatility

until abs(model_price - market_price) < tolerance

return volatility

For standard calls and puts, the model price generally rises as the volatility input rises. That relationship lets the solver narrow the range.

Newton-Raphson Method

Newton-Raphson often reaches an answer in fewer iterations than bisection when the starting estimate is reasonable.

The update formula is:

[ \sigma_{\text{new}}

\sigma_{\text{old}}

\frac{\text{Model price} - \text{Market price}} {\text{Vega}} ]

Vega measures the change in an option's price for a change in volatility:

[ \text{Vega}

S e^{-qT}\phi(d_1)\sqrt{T} ]

Here, (\phi(d_1)) is the standard normal probability density function.

This formula uses volatility as a decimal. If vega is quoted for a one-percentage-point change in volatility, divide the formula's vega by 100 before using it in the update.

Newton-Raphson can fail when an option is close to expiration, far in or out of the money, or paired with a poor starting estimate. Bisection or a Brent-style hybrid method is usually a safer choice in those cases.

How to Calculate Implied Volatility in Excel

Excel can calculate implied volatility without a custom numerical solver.

Method 1: Goal Seek

  1. Create a cell for volatility and enter an initial value, such as 20%.
  2. Create a cell containing the Black-Scholes option-price formula.
  3. Enter the market option price in another cell.
  4. Open Data → What-If Analysis → Goal Seek.
  5. Set the model-price cell equal to the market-price cell.
  6. Set the volatility cell as the changing cell.
  7. Run Goal Seek.

Excel will return the volatility that makes the two prices match.

Method 2: Solver

Solver can minimize the squared difference between the model price and market price:

[ \text{Pricing error}

(\text{Model price} - \text{Market price})^2 ]

Set volatility as the changing cell and minimize the pricing error.

Python Example

from math import log, exp, sqrt
from scipy.optimize import brentq
from scipy.stats import norm

def call_price(S, K, T, r, q, sigma):
    d1 = (log(S / K) + (r - q + 0.5 * sigma**2) * T) / (sigma * sqrt(T))
    d2 = d1 - sigma * sqrt(T)

    return (
        S * exp(-q * T) * norm.cdf(d1)
        - K * exp(-r * T) * norm.cdf(d2)
    )

S = 100
K = 100
T = 0.50
r = 0.05
q = 0.00
market_price = 10.46

implied_volatility = brentq(
    lambda sigma: call_price(S, K, T, r, q, sigma) - market_price,
    1e-8,
    5.0
)

print(implied_volatility)
print(implied_volatility * 100)

The result is approximately:

0.33
33.0%

Put Options Use the Same Process

For a European put, use:

[ P = K e^{-rT}N(-d_2)

S e^{-qT}N(-d_1) ]

The solver still finds the volatility that makes the theoretical price equal the observed market price.

Call and put implied volatilities with the same strike and expiration should generally agree after accounting for interest rates, dividends and market frictions. Put-call parity provides the relationship between the two prices.

Which Model Should You Use?

European Options

Black-Scholes or Black-76 is commonly used for European-style options. The choice depends on whether the model takes the underlying price or the forward price as its input. Cboe methodologies calculate implied volatility by inverting a Black-Scholes or Black-style pricing relationship.

American Equity Options

American-style stock and ETF options can be exercised before expiration. A binomial tree, trinomial tree or finite-difference model usually fits these contracts better than basic Black-Scholes.

The Options Industry Council notes that American-style equity options are commonly priced with a binomial model because of the early-exercise feature.

Dividends matter for American calls because early exercise can become economically rational before an ex-dividend date.

Which Option Price Should You Use?

When the spread is reasonably tight, use the bid-ask midpoint:

[ \text{Mid price}

\frac{\text{Bid}+\text{Ask}}{2} ]

For a quote of $4.80 bid and $5.20 ask:

[ \text{Mid price} = \frac{4.80+5.20}{2} = 5.00 ]

Cboe LiveVol states that its implied volatility analytics use option mid-prices based on the NBBO. It also specifies calendar time to expiration and uses a binomial model with discrete dividends for American-style options.

A wide spread can make the calculated volatility misleading. In that case, calculate implied volatility from both the bid and ask to create a range.

Why Can an Implied Volatility Calculation Fail?

An option may not have a usable implied volatility when:

  • The market price is below the option's theoretical intrinsic-value boundary.
  • The market price is above the model's maximum value.
  • The bid is zero or the quote is stale.
  • The bid-ask spread is extremely wide.
  • The option is close to expiration and numerical precision becomes unstable.
  • The dividend, interest rate or time-to-expiration assumption is wrong.
  • An American option is priced with a European model.

For a European call, the price must generally fall within these bounds:

[ \max(0, S e^{-qT} - K e^{-rT}) \leq C \leq S e^{-qT} ]

For a European put:

[ \max(0, K e^{-rT} - S e^{-qT}) \leq P \leq K e^{-rT} ]

If the market price falls outside these limits, a conventional implied volatility may not exist.

How Should You Interpret the Result?

An implied volatility of 33% is annualized. A rough one-standard-deviation price move over 30 calendar days can be estimated as:

[ \text{Expected move} \approx S \times \sigma \times \sqrt{\frac{30}{365}} ]

For a $100 underlying:

[ 100 \times 0.33 \times \sqrt{\frac{30}{365}} \approx $9.47 ]

That produces a rough 30-day range of $90.53 to $109.47.

This is not a price target. It does not account for volatility skew, jumps, changing volatility or the exact distribution of possible prices.

Every Option Has Its Own Implied Volatility

Implied volatility belongs to a specific contract. It depends on the:

  • Strike price
  • Expiration date
  • Option type
  • Underlying asset
  • Market price

An option chain can therefore show a volatility smile or skew, with implied volatility changing across strikes. Implied volatility can also vary across expiration dates, creating a term structure.

A single volatility figure for an entire stock is an oversimplification. Check the contract, quote, model and assumptions before interpreting the result.