- GuruFinance Insights
- Posts
- Measuring Volatility Mean-Reversion
Measuring Volatility Mean-Reversion
Quantify reversion speeds, regime persistence and visualize when volatility shocks fade or linger using Python.
Where the smartest investors start their day
The Alternative Investing Report (A.I.R.) helps you get smarter on alternative assets from crypto treasury companies to Pre-IPO venture secondaries to private credit and more.
Join 100,000+ investors to get the latest insights and trends driving private markets, a weekly investment pick from a notable investor, and bonus offers to join top private market platforms and managers. And it’s totally free.
🚀 Your Investing Journey Just Got Better: Premium Subscriptions Are Here! 🚀
It’s been 4 months since we launched our premium subscription plans at GuruFinance Insights, and the results have been phenomenal! Now, we’re making it even better for you to take your investing game to the next level. Whether you’re just starting out or you’re a seasoned trader, our updated plans are designed to give you the tools, insights, and support you need to succeed.
Here’s what you’ll get as a premium member:
Exclusive Trading Strategies: Unlock proven methods to maximize your returns.
In-Depth Research Analysis: Stay ahead with insights from the latest market trends.
Ad-Free Experience: Focus on what matters most—your investments.
Monthly AMA Sessions: Get your questions answered by top industry experts.
Coding Tutorials: Learn how to automate your trading strategies like a pro.
Masterclasses & One-on-One Consultations: Elevate your skills with personalized guidance.
Our three tailored plans—Starter Investor, Pro Trader, and Elite Investor—are designed to fit your unique needs and goals. Whether you’re looking for foundational tools or advanced strategies, we’ve got you covered.
Don’t wait any longer to transform your investment strategy. The last 4 months have shown just how powerful these tools can be—now it’s your turn to experience the difference.
Volatility fades faster than many headlines often suggest.
Over the last decade a shock to VIX loses half its value in roughly 20 trading days. The S&P 500 realized variance needs around 60 days.
Yet, when markets cross into a high-stress regime, the mean-reversion engine stalls. Half-life estimates stretch from days to months.
13 Investment Errors You Should Avoid
Successful investing is often less about making the right moves and more about avoiding the wrong ones. With our guide, 13 Retirement Investment Blunders to Avoid, you can learn ways to steer clear of common errors to help get the most from your $1M+ portfolio—and enjoy the retirement you deserve.
For example, Covid forced the clock off track and distored decade-long averages.
In these environments, “high-vol” states can linger for 93 days, with transition probabilities stacked 99-to-1 against a quick return to calm.
This article shows you how to track these volatility mechanics, i.e. how to estimate half-lives and detect volatility regime flips.
The complete Python notebook for the analysis is provided below.

Here, we’ll discuss the following:
VIX vs SP500 Realized Variance
Testing for Mean-Reversion
Measuring Volatility Half-Life
Volatility Regime Transition Probabilities
1. Volatility Clusters, But Always Mean-Reverts
Volatility clusters. High-risk periods don’t arrive alone, but travel in packs.
This “volatility clustering” is one of the most persistent features in financial data.
Yet, even as volatility surges, it does not drift aimlessly. Instead, it shows a stubborn tendency to snap back toward its historical average.
This is mean-reversion, and it defines the typical flow of market risk. A growing body of contemporar evidence confirms these patterns.
Studies show that volatility, whether measured from price returns or implied by options, routinely exhibits both short bursts and a strong pull back to the mean.
According to Gatheral and Oomen (2010), volatility shocks are sharp but temporary. Mean-reversion resets risk, even if the path is rough.

Figure 1. Volatility Clustering and Mean-Reversion Illustration. Simulated volatility (cyan) exhibits a sustained high-volatility cluster from t = 50 to 80 (orange annotation) before decaying back toward the long-run mean (magenta dashed line) around t = 120 (green annotation).
Andersen et al. (2020) extend this view and show how realized volatility in global equities consistently reverts after crisis spikes (though the “speed” of reversion varies by market and regime).
Markets expect volatility to settle. This expectation gets built into option premiums and portfolio hedges.
Empirical work also shows that implied volatility (like VIX) usually reverts faster than realized volatility (e.g. see Doran et al., 2021).
2. VIX vs SP500 Realized Variance in Python
By design, the VIX estimates the market’s expectation of S&P 500 realized volatility (‘RV’) over the next 30 calendar days.
To compare apples to apples, we use a 21-trading-day window, i.e. about one month of market activity, to measure the S&P 500 RV.
Decades of research, including Carr & Wu (2006), show that VIX systematically overestimates the volatility that actually occurs.
This “variance risk premium” compensates option sellers for bearing tail risk and uncertainty about the future.
With the code below, we retrieve the VIX and S&P500 data from yfinance using Python and plot them.
The first subplot shows both VIX and 21-day realized volatility since 2015. The second subplot shows the difference between VIX and S&P500 RV.
import warnings
warnings.filterwarnings('ignore')
import numpy as np
import pandas as pd
import yfinance as yf
import matplotlib.pyplot as plt
from matplotlib.dates import MonthLocator, DateFormatter
# 1. Download data
tickers = ['^VIX', '^GSPC']
start, end = '2015-01-01', '2025-07-02'
raw = yf.download(
tickers,
start=start,
end=end,
progress=False,
auto_adjust=False
)
# 2. Extract series
vix = raw['Close']['^VIX']
spx = raw['Close']['^GSPC']
# 3. Flatten columns
if isinstance(raw.columns, pd.MultiIndex):
raw.columns = raw.columns.get_level_values(0)
df = raw.copy()
df.columns = df.columns.map(str.title)
# 4. Compute 21-day realized volatility
window = 21
daily_ret = np.log(spx).diff()
real_vol = daily_ret.rolling(window).std() * np.sqrt(252)
real_vol = real_vol.dropna()
# 5. Align VIX to realized-vol dates
vix = vix.loc[real_vol.index]
# 6. Scale realized vol and compute difference
scale = vix.mean() / real_vol.mean()
real_scaled = real_vol * scale
diff = vix - real_scaled
# 7. Plot both charts as subplots
plt.style.use('dark_background')
fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(14, 9), sharex=True)
# Subplot 1: VIX vs Realized Vol
ax1.plot(vix.index, vix, color='cyan', linewidth=1, label='VIX')
ax1.set_ylabel('VIX', color='cyan')
ax1.tick_params(axis='y', labelcolor='cyan')
ax1b = ax1.twinx()
ax1b.plot(real_vol.index, real_vol,
color='magenta', linewidth=1,
label=f'{window}-day Realized Vol')
ax1b.set_ylabel('Realized Vol', color='magenta')
ax1b.tick_params(axis='y', labelcolor='magenta')
lines1, labs1 = ax1.get_legend_handles_labels()
lines1b, labs1b = ax1b.get_legend_handles_labels()
ax1.legend(lines1 + lines1b, labs1 + labs1b, loc='upper left')
ax1.set_title('VIX vs 21-Day Realized Vol of SPX')
# Subplot 2: Difference (scaled)
ax2.plot(diff.index, diff,
color='white', linewidth=1,
label='VIX – Scaled Realized Vol')
ax2.axhline(0, color='gray', linestyle='--', linewidth=0.8)
ax2.set_xlabel('Date')
ax2.set_ylabel('Difference')
ax2.legend(loc='upper left')
ax2.set_title('Difference: VIX minus Scaled 21-Day Realized Vol')
# Common X-axis formatting
locator = MonthLocator(bymonth=(1, 4, 7, 10))
formatter = DateFormatter('%Y-%m')
ax2.xaxis.set_major_locator(locator)
ax2.xaxis.set_major_formatter(formatter)
plt.setp(ax2.get_xticklabels(), rotation=45, ha='right')
plt.tight_layout()
plt.show()

Figure 2. VIX and 21-Day Realized Vol of SPX Difference. The twin-axis view shows how options-implied risk and actual market variance evolve together and diverge across market cycles.
Most of the time, VIX leads, especially during shocks. The largest spike, March 2020, shows how quickly implied volatility reacts to market stress.
It often overshoot realized risk in the short term. The lower panel quantifies that difference.
The VIX exceeds scaled RV in nearly every window. Peaks in 2016, 2018, and 2022 flag market stress and uncertainty where option sellers demand more compensation.
The sharp dip in early 2020 is notable: RV briefly surpasses VIX. This reflected the speed and severity of the COVID market crash.
After major shocks, both VIX and RV mean-revert. The difference narrows as fear fades and RV “catches up” to implied expectations.
The baseline premium, i.e. that implied volatility consistently above realized, is a persistent feature and key take away.
How 433 Investors Unlocked 400X Return Potential
Institutional investors back startups to unlock outsized returns. Regular investors have to wait. But not anymore. Thanks to regulatory updates, some companies are doing things differently.
Take Revolut. In 2016, 433 regular people invested an average of $2,730. Today? They got a 400X buyout offer from the company, as Revolut’s valuation increased 89,900% in the same timeframe.
Founded by a former Zillow exec, Pacaso’s co-ownership tech reshapes the $1.3T vacation home market. They’ve earned $110M+ in gross profit to date, including 41% YoY growth in 2024 alone. They even reserved the Nasdaq ticker PCSO.
The same institutional investors behind Uber, Venmo, and eBay backed Pacaso. And you can join them. But not for long. Pacaso’s investment opportunity ends September 18.
Paid advertisement for Pacaso’s Regulation A offering. Read the offering circular at invest.pacaso.com. Reserving a ticker symbol is not a guarantee that the company will go public. Listing on the NASDAQ is subject to approvals.

Subscribe to Starter Investor Plan to read the rest.
Become a paying subscriber of Starter Investor Plan to get access to this post and other subscriber-only content.
Already a paying subscriber? Sign In.
A subscription gets you:
- • Exclusive Trading Strategies: Access proven trading strategies used by me and my team.
- • Research Insights: Get bi-weekly summaries of key research papers and strategies built upon them.
- • Monthly Market Insights Newsletter: Stay informed with exclusive updates on market trends and analysis.