ExamplePrice an option and defend your volatility
Is a 30-day SPY call fairly priced at 18% volatility?
Question
SPY trades at $521 and a 30-day $525 call is quoted around $9.70. Black-Scholes only matches that price at one volatility. Is that volatility believable, given how much SPY has actually moved?
Code
from math import erf, exp, log, sqrt
def N(x):
return 0.5 * (1 + erf(x / sqrt(2)))
def bs_call(S, K, T, r, sigma):
d1 = (log(S / K) + (r + sigma**2 / 2) * T) / (sigma * sqrt(T))
d2 = d1 - sigma * sqrt(T)
return S * N(d1) - K * exp(-r * T) * N(d2)
S, K, T, r = 521, 525, 30 / 365, 0.044
for sigma in (0.13, 0.18, 0.23):
print(f"sigma={sigma:.2f} call={bs_call(S, K, T, r, sigma):.2f}")Results
At 18% volatility the model gives $9.73, almost exactly the quoted price, so the market is implying about 18%. At 13% the call would be worth $6.75; at 23%, $12.70. A 5-point mistake in volatility moves the price by about $3, roughly 30%.
In this example, SPY's realized volatility over the last month was closer to 14%, so buyers would be paying for more movement than recently happened.
Reflection
Realized volatility looks backward and implied looks forward, so "too expensive" isn't proven: an earnings season or a Fed meeting inside the 30 days could justify it. Next I'd compare implied and realized volatility across a year of dates to see how often the premium pays off.