Calculate the Implied Volatility (IV) based on the Black Scholes Model and the actual option prices for any of the available expiration dates.

Implied Volatility (IV) is a measure of how much the market expects the price of the underlying asset to fluctuate in the future. It is a key component of options pricing and can also be used to calculate the theoretical value of an option.

The most recent stock price, risk free rate and dividend yield are used, and the implied volatility is the volatility at which the Black Scholes price equals the option’s last traded price.

The formulas are as follows:

\[d_{1} = (\ln(S / K) + (r - q + (\sigma ^{2}) / 2) \cdot t) / (\sigma \cdot \sqrt{t})\] \[d_{2} = d_{1} - \sigma \cdot \sqrt{t}\] \[\text{Call Option Price} = S \cdot e ^{- q \cdot t} \cdot N(d_{1}) - K \cdot e ^{- r \cdot t} \cdot N(d_{2})\] \[\text{Put Option Price} = K \cdot e ^{- r \cdot t} \cdot N(- d_{2}) - S \cdot e ^{- q \cdot t} \cdot N(- d_{1})\]

Where S is the stock price, K is the strike price, r is the risk free rate, q is the dividend yield, σ is the volatility, t is the time to expiration, N(d1) is the cumulative normal distribution of d1 and N(d2) is the the cumulative normal distribution of d2.

In which the Implied Volatility is then calculated as follows:

\[\text{Implied Volatility} = \text{the}\; \sigma \;\text{for which Black Scholes Theoretical Price} (\sigma) - \text{Actual Option Price} = 0\]

To determine the Implied Volatility, the Black Scholes Model is used to calculate the theoretical option price in which sigma (σ) is the only unknown variable. Since that price rises strictly with σ, the implied volatility is the root of the difference between the theoretical and actual option price, found with Brent’s method on the interval [1e-6, 5]. Prices outside the no-arbitrage bounds have no root and return NaN.

The implied volatility is solved from each option’s last traded price, which can be hours or days old for illiquid strikes, while the stock price is the latest close. Deep in-the-money and far out-of-the-money strikes therefore often show extreme values (above 100%) that say more about stale quotes than about the market’s view. Practitioners read the smile around the money, where trading is liquid, and use get_volatility_surface, which filters outliers and fits a smooth curve, when they need values across all strikes.

The quotes and the days to expiration are live, while the stock price is the close of the last historical date. When that date lies more than five days before today (for example with an end_date in the past), a warning is logged, since the implied volatilities then pair today’s option prices with an old stock price.

Also known as: IV, option-implied volatility.

Implied Volatility in Python or via the MCP

Install the Finance Toolkit with:

pip install financetoolkit -U

Then call get_implied_volatility as shown below.

from financetoolkit import Toolkit

toolkit = Toolkit(["AAPL"], api_key="FINANCIAL_MODELING_PREP_KEY")

implied_volatility = toolkit.options.get_implied_volatility()

implied_volatility.loc["AAPL"].tail(20)

Or, after setting up the Finance Toolkit MCP, ask:

What is the implied volatility of Apple's call options at the 20 highest strikes for the nearest expiration?

Which returns:

Strike Price 2026-10-26
337.5 0.1868
340 0.1847
342.5 0.1965
345 0.1994
347.5 0.1877
350 0.1839
352.5 0.179
355 0.1778
357.5 0.1914
360 0.1865
362.5 0.2381
365 0.2723
367.5 0.2829
370 0.3138
372.5 0.3441
375 0.4376
377.5 0.4035
380 0.4326
385 0.4896
410 0.7561

Parameters

get_implied_volatility accepts the following parameters.

ParameterTypeDescriptionExample
expiration_datestr | NoneThe expiration date to use for the calculation. Defaults to None which means it will use the most recent expiration date."2028-01-21"
put_optionboolWhether to calculate the put option price. Defaults to False which means it will calculate the call option price.True
risk_free_ratefloatThe risk free rate to use for the calculation. Defaults to None, which uses the Toolkit’s risk-free rate on the pricing date: the 10-year Treasury yield unless the Toolkit’s risk_free_rate parameter selects ‘13w’, ‘5y’ or ‘30y’, converted from its semi-annual bond-equivalent quote to continuous compounding. A rate passed here is used as given, as a continuously compounded rate.0.04
dividend_yieldfloatThe dividend yield to use for the calculation. Defaults to None, which uses the dividend yield on the pricing date (the dividends of the 365 days up to it relative to its close, as the continuously compounded ln(1 + q)). A given value is used as a continuous yield.0.02
show_expiration_datesboolWhether to show the expiration dates. Defaults to False.True
show_input_infoboolWhether to show the input information. Defaults to False.True
roundingint | NoneThe number of decimals to round the results to. Defaults to None, which uses the rounding of the Toolkit (4 unless set otherwise).2
standardizeboolWhether to standardize (Z-Score) the result across the time to expiration columns for each ticker and strike price. Defaults to False.True
Share