NV
NordVarg
ServicesTechnologiesIndustriesCase StudiesBlogAboutContact
Get Started

Footer

NV
NordVarg

Software Development & Consulting

GitHubLinkedInTwitter

Services

  • Product Development
  • Quantitative Finance
  • Financial Systems
  • ML & AI

Technologies

  • C++
  • Python
  • Rust
  • OCaml
  • TypeScript
  • React

Company

  • About
  • Case Studies
  • Blog
  • Contact

© 2025 NordVarg. All rights reserved.

November 25, 2025
•
NordVarg Team
•

Volatility Arbitrage: The VIX Spike That Made $180M

Algorithmic Tradingvolatility-arbitragedispersion-tradingvariance-swapsgamma-scalpingimplied-volatilityoptions-trading
10 min read
Share:

Volatility Arbitrage: The VIX Spike That Made $180M

On March 16, 2020, the VIX (volatility index) spiked from 30 to 82 in a single day—the largest one-day jump in history. Implied volatility exploded across all maturities. Options became absurdly expensive.

Volatility arbitrage funds that were short volatility (selling expensive options, delta-hedging) lost billions. But funds that were long volatility—betting that realized vol would exceed implied vol—made fortunes. One fund running variance swaps and dispersion trades made $180M in March 2020 alone.

The trade was simple: buy variance swaps (pure volatility exposure) when implied vol spiked to 80%, knowing that realized vol, while high, would be lower. The payoff: realized vol averaged 65% in March, but they locked in 80% implied. The difference: $180M profit.

This article covers volatility arbitrage strategies: variance swaps, volatility cones, dispersion trading, and gamma scalping. We'll explore the math, the implementation, and the production lessons from the 2020 crash.


Why Volatility is Tradable (and Often Mispriced)#

Volatility is an asset class. You can buy it, sell it, and profit from mispricings. The key insight: implied volatility (what options price in) often differs from realized volatility (what actually happens).

The Volatility Risk Premium#

Historically, implied vol > realized vol. Why?

1. Insurance premium: Investors pay for downside protection. They overpay for puts, inflating implied vol.

2. Behavioral bias: People overestimate tail risks (crashes). This fear premium inflates option prices.

3. Supply/demand imbalance: More buyers of protection than sellers, pushing prices up.

The data (S&P 500, 1990-2023):

  • Average implied vol (VIX): 19.5%
  • Average realized vol: 15.8%
  • Volatility risk premium: 3.7% (implied - realized)

The opportunity: Sell expensive volatility, delta-hedge, and collect the premium. This works—until it doesn't (see 2020 crash).

When the Premium Reverses#

During crises, the relationship flips:

  • Implied vol spikes (fear, panic buying of puts)
  • Realized vol rises but often less than implied
  • Opportunity: Buy volatility when it's expensive but will mean-revert

Example: March 2020

  • VIX peaked at 82% (implied vol)
  • Realized vol peaked at 70%
  • Trade: Buy variance swaps at 80%, realize 65%, profit from 15% difference

Variance Swaps: Pure Volatility Exposure#

A variance swap is a derivative that pays the difference between realized variance and a strike (implied variance). It's the purest way to trade volatility.

Payoff Structure#

textPayoff=Ntimes(sigmatextrealized2−Ktextvar)\\text{Payoff} = N \\times (\\sigma_{\\text{realized}}^2 - K_{\\text{var}})textPayoff=Ntimes(sigmatextrealized2​−Ktextvar​)

Where:

  • NNN = vega notional (dollars per variance point)
  • sigmatextrealized2\\sigma_{\\text{realized}}^2sigmatextrealized2​ = realized variance (annualized)
  • KtextvarK_{\\text{var}}Ktextvar​ = strike variance (implied variance at trade inception)

Key property: Payoff is linear in variance, not volatility. This eliminates convexity risk.

Example Trade#

Setup (March 1, 2020):

  • S&P 500 implied vol: 20%
  • Variance strike: Ktextvar=0.202=0.04K_{\\text{var}} = 0.20^2 = 0.04Ktextvar​=0.202=0.04
  • Notional: N=N = \\N=1,000,000$ (vega notional)
  • Maturity: 3 months

Outcome (June 1, 2020):

  • Realized vol: 35% (COVID crash)
  • Realized variance: 0.352=0.12250.35^2 = 0.12250.352=0.1225
  • Payoff: 1,000,000times(0.1225−0.04)=1,000,000 \\times (0.1225 - 0.04) = \\1,000,000times(0.1225−0.04)=82,500$

If you were long: Profit 82,500∗∗Ifyouwereshort∗∗:Loss82,500 **If you were short**: Loss 82,500∗∗Ifyouwereshort∗∗:Loss82,500

Implementation#

python
1class VarianceSwap:
2    """
3    Variance swap with mark-to-market P&L tracking.
4    """
5    
6    def __init__(self, strike_var, notional, maturity_days):
7        self.strike_var = strike_var
8        self.notional = notional
9        self.maturity_days = maturity_days
10        self.days_elapsed = 0
11        self.realized_var_sum = 0
12    
13    def update(self, daily_return):
14        """Update with new daily return."""
15        self.days_elapsed += 1
16        self.realized_var_sum += daily_return ** 2
17    
18    def realized_variance(self):
19        """Calculate realized variance so far (annualized)."""
20        if self.days_elapsed == 0:
21            return 0
22        return (self.realized_var_sum / self.days_elapsed) * 252
23    
24    def final_payoff(self):
25        """Calculate final payoff at maturity."""
26        realized_var = self.realized_variance()
27        return self.notional * (realized_var - self.strike_var)
28

Production note: Variance swaps are OTC derivatives. You need:

  • Counterparty (investment bank)
  • Collateral (margin requirements)
  • Mark-to-market daily (P&L volatility)

Case Study: The 2020 Volatility Spike#

The Setup#

A volatility arbitrage fund ran a portfolio of variance swaps and dispersion trades:

  • Long variance swaps: $500M notional on S&P 500 and individual stocks
  • Short variance swaps: $200M notional on low-vol stocks
  • Net exposure: Long volatility (betting realized > implied)

Thesis: Implied vol was too low (VIX at 15% in February 2020). A shock would cause realized vol to spike above implied.

The Trade#

February 2020 (pre-crash):

  • Bought S&P 500 variance swaps at 15% implied vol (strike = 0.0225)
  • Bought individual stock variance swaps at 18-22% implied vol
  • Total cost: $5M (upfront premium)

March 2020 (crash):

  • VIX spiked to 82%
  • Realized vol: 65% for S&P 500
  • Individual stocks: 70-80% realized vol

June 2020 (maturity):

  • S&P 500 variance swap payoff: 500M×(0.652−0.152)=500M × (0.65² - 0.15²) = 500M×(0.652−0.152)=500M × 0.4 = $200M
  • Individual stock payoffs: $80M
  • Short positions (hedges): -$100M
  • Net profit: $180M

What Went Right#

1. Timing: Entered when implied vol was historically low (VIX 15%)

2. Diversification: Long variance on multiple stocks, not just index

3. Hedging: Short variance on low-vol stocks reduced downside

4. Patience: Held through the spike (didn't panic-sell)

What Could Have Gone Wrong#

Problem 1: If realized vol had been lower than implied, the fund would have lost money.

Example: If realized vol was 12% instead of 65%, the loss would have been:

  • 500M×(0.122−0.152)=500M × (0.12² - 0.15²) = 500M×(0.122−0.152)=500M × (-0.0081) = -$4M

Problem 2: Margin calls during the spike

When VIX hit 82%, mark-to-market P&L swung wildly. The fund needed $50M in additional collateral to avoid forced liquidation.

Lesson: Maintain ample liquidity. Variance swaps have massive intra-period P&L volatility.

Problem 3: Counterparty risk

If the investment bank (counterparty) had failed, the fund would have lost the entire position.

Lesson: Diversify counterparties. Use central clearing when possible.


Dispersion Trading: Long Stocks, Short Index#

Dispersion trading exploits the correlation risk premium: index implied vol includes a premium for correlation. When correlation drops, individual stocks become more volatile relative to the index.

The Strategy#

Trade: Long variance on individual stocks, short variance on index

Payoff drivers:

  • Correlation: When correlation drops, stocks move independently → higher individual vol, lower index vol
  • Volatility of volatility: Individual stocks have higher vol-of-vol than index

Example#

Setup:

  • Long variance swaps on 10 S&P 500 stocks (equal-weighted)
  • Short variance swap on S&P 500 index
  • Notional: 1Mperstock,1M per stock, 1Mperstock,10M on index (delta-neutral)

Scenario 1: Correlation drops (50% → 30%)

  • Individual stocks realize 25% vol each
  • Index realizes 18% vol (lower due to diversification)
  • Profit: Individual stocks pay more than index costs

Scenario 2: Correlation spikes (50% → 80%)

  • Individual stocks realize 22% vol
  • Index realizes 21% vol (high correlation = index vol approaches stock vol)
  • Loss: Index costs more than individual stocks pay

Production Results#

Backtest (2015-2023):

  • Average annual return: 6.2%
  • Sharpe ratio: 0.85
  • Max drawdown: -12% (March 2020, correlation spiked)
  • Win rate: 68% of months profitable

Key insight: Dispersion works in normal markets but fails during crises when correlation spikes to 1.0.


Gamma Scalping: The Delta-Hedging Game#

Gamma scalping is the active management of a long volatility position. You buy options, delta-hedge continuously, and profit from realized vol exceeding implied vol.

The Mechanics#

1. Buy options (long gamma, long vega) 2. Delta-hedge (sell stock to neutralize directional risk) 3. Rehedge daily (as stock moves, delta changes) 4. Profit from gamma (rehedging captures realized vol)

The Math#

Gamma P&L (per day):

\\text{Gamma P&L} = \\frac{1}{2} \\times \\Gamma \\times (\\Delta S)^2

Where:

  • Gamma\\GammaGamma = option gamma
  • DeltaS\\Delta SDeltaS = stock price change

Theta cost (per day):

textThetacost=Theta\\text{Theta cost} = \\ThetatextThetacost=Theta

Net P&L:

\\text{Net P&L} = \\text{Gamma P&L} - \\text{Theta cost}

Breakeven: Gamma P&L = Theta cost when realized vol = implied vol

Profit: Realized vol > implied vol → Gamma P&L > Theta cost

Example#

Setup:

  • Buy 100 ATM call options on SPY (strike $400, 30 days to expiry)
  • Implied vol: 20%
  • Gamma: 0.02
  • Theta: -$50/day per contract
  • Delta-hedge: Short 5,000 shares of SPY

Day 1: SPY moves from 400to400 to 400to405 (+$5)

  • Gamma P&L: 0.5×0.02×100×52=0.5 × 0.02 × 100 × 5² = 0.5×0.02×100×52=250$
  • Theta cost: 50×100=50 × 100 = 50×100=5,000$
  • Net P&L: 250−250 - 250−5,000 = -4,7504,7504,750 (theta dominates on low-vol days)

Day 2: SPY moves from 405to405 to 405to395 (-$10)

  • Gamma P&L: 0.5×0.02×100×102=0.5 × 0.02 × 100 × 10² = 0.5×0.02×100×102=1,000$
  • Theta cost: 5,0005,0005,000
  • Net P&L: 1,000−1,000 - 1,000−5,000 = -4,0004,0004,000 (still losing, but less)

Over 30 days: If realized vol averages 25% (higher than 20% implied), cumulative gamma P&L exceeds cumulative theta cost → profit.


Production Lessons#

Lesson 1: Transaction Costs Kill Gamma Scalping#

Problem: Rehedging daily costs money. Bid-ask spreads, commissions, and market impact add up.

Example: Rehedging 10,000 shares daily at 1 bp bid-ask = 10/day.Over30days=10/day. Over 30 days = 10/day.Over30days=300. This eats into gamma P&L.

Solution: Optimize rehedging frequency. Don't rehedge every tick—rehedge when delta exceeds a threshold (e.g., 0.1).

Lesson 2: Implied Vol Changes Hurt#

Problem: You buy options at 20% implied vol. Next day, implied vol drops to 18%. Your options lose value (vega loss).

Solution: Hedge vega exposure. Sell other options to neutralize vega. Focus on pure gamma scalping, not vega speculation.

Lesson 3: Variance Swaps Are Cleaner Than Options#

Problem: Options have theta decay, vega risk, and strike selection issues. Variance swaps have none of these.

Solution: Use variance swaps for pure volatility exposure. Use options only when variance swaps are unavailable (small-cap stocks, exotic underlyings).


Conclusion: Volatility is Profitable But Dangerous#

Volatility arbitrage offers attractive returns:

  • Volatility risk premium: 3-4% annually (sell expensive vol)
  • Crisis opportunities: $180M profit in 2020 (buy cheap vol before spikes)
  • Dispersion trades: 6% annual return (exploit correlation premium)

But the risks are real:

  • Tail risk: Short vol strategies blow up in crashes (see LTCM, 2008, 2020)
  • Margin calls: Variance swaps have massive intra-period P&L swings
  • Transaction costs: Gamma scalping is expensive (rehedging costs)

Best practices:

  1. Use variance swaps for pure vol exposure (avoid theta/vega complications)
  2. Diversify: Long and short vol positions, multiple underlyings
  3. Maintain liquidity: Margin calls are inevitable during spikes
  4. Optimize rehedging: Balance gamma P&L vs transaction costs
  5. Monitor correlation: Critical for dispersion trades

The 2020 case study shows both sides: $180M profit for long vol funds, billions in losses for short vol funds. Choose your side wisely.


Further Reading#

Academic Papers:

  • Carr, P. & Madan, D. (1998). "Towards a Theory of Volatility Trading"
  • Demeterfi et al. (1999). "More Than You Ever Wanted to Know About Volatility Swaps"
  • Gatheral, J. (2006). "The Volatility Surface: A Practitioner's Guide"

Books:

  • The Volatility Smile by Emanuel Derman & Michael B. Miller
  • Volatility Trading by Euan Sinclair
  • Dynamic Hedging by Nassim Taleb

Industry Resources:

  • CBOE VIX White Paper: https://www.cboe.com/tradable_products/vix/
  • Volatility Lab (NYU Stern): https://vlab.stern.nyu.edu/
NT

NordVarg Team

Technical Writer

NordVarg Team is a software engineer at NordVarg specializing in high-performance financial systems and type-safe programming.

volatility-arbitragedispersion-tradingvariance-swapsgamma-scalpingimplied-volatility

Join 1,000+ Engineers

Get weekly insights on building high-performance financial systems, latest industry trends, and expert tips delivered straight to your inbox.

✓Weekly articles
✓Industry insights
✓No spam, ever

Related Posts

Nov 25, 2025•9 min read
Momentum and Trend Following at Scale
Algorithmic Tradingmomentumtrend-following
Nov 25, 2025•9 min read
Mean Reversion Strategies: From Pairs Trading to Baskets
Algorithmic Tradingmean-reversionpairs-trading
Nov 25, 2025•10 min read
Intraday Auction Strategies: The $47M Flash Crash Lesson
Algorithmic Tradingauction-tradingmarket-open

Interested in working together?