Calculate the volatility skew of every expiry from the 25-delta options, the standard way to compare skew across underlyings and dates:

\[\text{25-Delta} \;\text{Risk Reversal} = \operatorname{IV}(\text{25-delta} \;\text{call}) - \operatorname{IV}(\text{25-delta} \;\text{put})\] \[\text{25-Delta} \;\text{Butterfly} = (\operatorname{IV}(\text{25-delta} \;\text{call}) + \operatorname{IV}(\text{25-delta} \;\text{put})) / 2 - \text{ATM IV}\]

For equities the risk reversal is usually negative: out-of-the-money puts are dearer than calls because investors pay for crash protection. A more negative risk reversal means more fear of a fall; the butterfly measures how much both tails cost relative to the centre. The deltas follow from each option’s implied volatility, and the volatility at exactly 25 delta is interpolated.

For more information, see the following book:

  • Gatheral, J. (2006). “The Volatility Surface: A Practitioner’s Guide.” Wiley.

Also known as: risk reversal, volatility smile, skew, butterfly spread volatility.

Volatility Skew in Python or via the MCP

Install the Finance Toolkit with:

pip install financetoolkit -U

Then call get_volatility_skew as shown below.

from financetoolkit import Toolkit

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

toolkit.options.get_volatility_skew(number_of_expirations=3)

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

What is the 25-delta volatility skew, risk reversal and butterfly of QQQ and Apple options for their next three expirations?

Which returns:

  Days to Expiration 25-Delta Put Volatility At-the-Money Volatility 25-Delta Call Volatility 25-Delta Risk Reversal 25-Delta Butterfly
(‘QQQ’, ‘2026-10-26’) 2 0.1908 0.1938 0.1855 -0.0052 -0.0056
(‘QQQ’, ‘2026-10-27’) 3 0.2287 0.2253 0.213 -0.0157 -0.0044
(‘QQQ’, ‘2026-10-28’) 4 0.2629 0.2545 0.2396 -0.0233 -0.0033
(‘AAPL’, ‘2026-10-26’) 2 0.1716 0.1637 0.1555 -0.0161 -0.0002
(‘AAPL’, ‘2026-10-28’) 4 0.2238 0.2136 0.2031 -0.0207 -0.0002
(‘AAPL’, ‘2026-10-30’) 6 0.2349 0.2273 0.215 -0.0199 -0.0023

Parameters

get_volatility_skew accepts the following parameters.

ParameterTypeDescriptionExample
expiration_dateslist[str] | NoneThe expiries to use. Defaults to None, the nearest number_of_expirations expiries.["2027-12-17", "2028-01-21"]
number_of_expirationsintThe number of nearest expiries to use when no dates are given. Defaults to 6.4
roundingint | NoneThe number of decimals to round the results to. Defaults to None, which uses the Toolkit’s rounding.2
Share