Implied Volatility and Volatility Smile › The Volatility Smile
Quantitative FinanceAll chapters Implied Volatility and Volatility Smile › The Volatility SmileOne section · Sections in this chapter5 / 12 ↓
Reading tools Definitions & inline links
Choose your expertise level to adjust how many terms are explained. Beginners see more tooltips, experts see fewer to maintain reading flow. Hover over underlined terms for instant definitions.
Article links
Make inline references clickable
If the Black-Scholes model were correct, the log-returns of the underlying asset would be normally distributed with constant volatility . In this ideal world, every option on the same underlying with the same expiration date would have the same implied volatility, regardless of strike price. You could compute the implied volatility from any option, and it would equal the "true" volatility .
Reality contradicts this prediction. When practitioners compute implied volatilities across different strikes for options with the same expiration, they find systematic patterns. These patterns are not random noise but persistent features that appear across markets and time periods, indicating fundamental inadequacies in the Black-Scholes assumptions.
The Classic Smile Pattern
In many markets, particularly foreign exchange, implied volatility is lowest for at-the-money options and increases as you move to either in-the-money or out-of-the-money strikes. When plotted against strike price, this pattern resembles a smile: hence the name. The smile indicates that options with strikes far from the current spot price trade at higher implied volatilities than at-the-money options. This pattern seemingly contradicts the notion that there is a single "true" volatility for the underlying asset.
The smile pattern reveals that market participants collectively believe extreme price movements are more likely than the lognormal distribution would suggest. By pricing out-of-the-money options at higher implied volatilities, the market effectively assigns more probability mass to the tails of the return distribution than the Black-Scholes model assumes.
Let's simulate what market prices might look like if they embedded a volatility smile and then recover the implied volatilities:
import numpy as np
# Define a smile function: IV increases away from ATM
def generate_smile_vol(K, S, atm_vol=0.20, curvature=0.0015):
"""
Generate implied volatility following a symmetric smile pattern.
Volatility increases quadratically away from at-the-money.
"""
moneyness = np.log(K / S)
return atm_vol + curvature * moneyness**2 * 100
# Market parameters
S = 100
T = 0.25 # 3 months
r = 0.05
# Generate strikes from 80 to 120
strikes = np.linspace(80, 120, 41)
# Generate "market prices" using the smile volatilities
smile_vols = [generate_smile_vol(K, S) for K in strikes]
market_prices = [
black_scholes_call(S, K, T, r, vol) for K, vol in zip(strikes, smile_vols)
]
# Now "recover" implied volatilities as a market participant would
recovered_ivs = []
for K, price in zip(strikes, market_prices):
try:
iv = implied_vol_newton(S, K, T, r, price)
recovered_ivs.append(iv)
except:
recovered_ivs.append(np.nan)
The symmetric smile pattern shows that out-of-the-money calls (high strikes) and out-of-the-money puts (low strikes) trade at higher implied volatilities than at-the-money options. This means the market assigns higher probability to large moves in either direction than the lognormal distribution would predict. The quadratic shape of the smile reflects the increasing premium demanded for options that require increasingly extreme price movements to finish in the money.
The Volatility Skew
In equity markets, especially after the stock market crash of October 1987, a different pattern emerged: the volatility skew. Rather than being symmetric, implied volatility is highest for low strikes (out-of-the-money puts) and decreases as strikes increase. This asymmetric pattern reflects the market's fear of downside crashes. The skew represents the cost of crash insurance. Investors are willing to pay significant premiums to protect against sudden, severe market declines.
# Define a skew function: IV decreases with strike (equity-style skew)
def generate_skew_vol(K, S, atm_vol=0.20, skew_slope=-0.002):
"""
Generate implied volatility following an equity skew pattern.
Volatility decreases linearly with log-moneyness.
"""
moneyness = np.log(K / S)
return atm_vol + skew_slope * moneyness * 100
# Generate "market prices" using the skew volatilities
skew_vols = [generate_skew_vol(K, S) for K in strikes]
skew_market_prices = [
black_scholes_call(S, K, T, r, vol) for K, vol in zip(strikes, skew_vols)
]
# Recover implied volatilities
recovered_skew_ivs = []
for K, price in zip(strikes, skew_market_prices):
try:
iv = implied_vol_newton(S, K, T, r, price)
recovered_skew_ivs.append(iv)
except:
recovered_skew_ivs.append(np.nan)
The skew pattern is sometimes called the "smirk" because of its asymmetric shape. It emerged dramatically after Black Monday in 1987, when the S&P 500 fell over 20% in a single day. Before that crash, equity option implied volatilities were relatively flat across strikes. The crash demonstrated that tail events were far more likely than lognormal models predicted, and the skew has persisted ever since as a permanent feature of equity option markets.