The better way to value volatility for options

July 12, 2025
Facebook logo.
Twitter logo.
LinkedIn logo.

The better way to value volatility for options

Your volatility estimates are probably wrong.

Most models lag behind when markets get wild or quiet.

I struggled with this too. My option pricing blew up after an earnings shock because historic volatility missed the spike.

There’s a better way to keep up with market changes.

Python makes it easy to use ARCH and GARCH models for real-time volatility.

You can build smarter, more responsive volatility estimates.

By reading today’s newsletter, you'll get Python code to estimate and use conditional volatility for real-world equity options pricing.

Let's go!

The better way to value volatility for options

ARCH models are statistical tools that model time-varying volatility using historical financial data. They help predict periods of high or low market risk essential for accurate equity options pricing.

These models have become a cornerstone topic in financial econometrics.

ARCH (Autoregressive Conditional Heteroskedasticity) was introduced by Robert Engle in 1982, enabling systematic modeling of volatility clustering seen in financial returns. Its extension, GARCH, added persistence and realism by tracking both recent shocks and old volatility levels. Most financial institutions now see ARCH and GARCH as defaults for modeling risk in options pricing and portfolio management.

Most desk quants and experienced options traders layer ARCH or GARCH conditional volatility outputs directly into their pricing, hedging, and risk workflows.

They apply these forecasts daily to account for volatility clustering, bypassing stale averages and improving speed and accuracy in risk decisions. Comparing ARCH-based volatility to implied volatility routinely reveals market mispricings and helps shape smarter, responsive trades.

Let's see how it works with Python.

Imports and setup

We load key libraries to pull in market data and apply a statistical model that helps us analyze how daily price swings cluster over time.

1import yfinance as yf
2from arch import arch_model

Then we collect daily pricing data for NVIDIA shares, then reshape that data by removing any blanks and expressing day-to-day price changes as percentages.

1nvidia_data = yf.download("NVDA", start="2018-01-01", end="2024-01-01")
2nvidia_close = nvidia_data["Close"].dropna()
3nvidia_returns = 100 * nvidia_close.pct_change().dropna()
4nvidia_returns.plot(title="Daily returns")

We pull the full daily price record for NVIDIA over the last several years and focus only on the closing value for each day. By turning these prices into percent changes, we get a view of how much the stock moves day by day. We remove any missing days so nothing throws off our calculations. The resulting plot looks like this.

Apply a volatility modeling approach

We apply a GARCH-family model that’s well suited for analyzing the way market swings often bunch together, then we look over a detailed report of the results.

1am = arch_model(nvidia_returns, p=1, q=1, o=1)
2res = am.fit(update_freq=5, disp="off")
3print(res.summary())

This example sets o to 1, which includes one lag of an asymmetric shock which transforms a GARCH model into a GJR-GARCH model with variance dynamics.

The log likelihood improves substantially with the introduction of an asymmetric term, and the parameter estimate is highly significant. Here are the results.

By fitting this model, we get a read on how today’s volatility relates to yesterday’s news and past patterns. The summary shows us which parts of the model really matter and how well it matches our data. This kind of approach is a mainstay in quant finance for measuring risk.

Show volatility modeling results visually

We plot the fitted volatility and related model output, making it easy to see periods of turbulence or calm in our data over time.

1fig = res.plot(annualize="D")

The chart visually separates volatile episodes from stable ones, using our fitted model's results. We spot stretches where risk has surged or dropped quickly and track how well the model fits the day-to-day action. Having the visual makes our analysis more concrete and actionable.

The top panel shows that standardized residuals remain mostly within ±3, with a few outliers indicating periods of unusual market shocks. The bottom panel, which displays annualized conditional volatility, highlights distinct spikes in early 2020 and again in mid-2022 to early 2023, aligning with known macroeconomic stress periods.

Options traders use standardized residuals and conditional volatility to assess mispricing and dynamically adjust strategies like straddles, strangles, or volatility spreads based on expected changes in implied versus realized volatility.

Your next steps

You’ve just run a full volatility analysis on NVIDIA’s stock history. Try swapping out the ticker to analyze other stocks or ETFs. Adjust the date range to see how the model responds to different market cycles. Watch how volatility patterns shift when you make those direct changes.

Man with glasses and a wristwatch, wearing a white shirt, looking thoughtfully at a laptop with a data screen in the background.