Volatility Trading and Arbitrage Strategies › Dispersion Trading

Michael BrenndoerferDecember 30, 20258 min read
Quantitative FinanceAll chapters
Part 11 of 15Quantitative Trading Strategies
Chapter 63Volatility Trading and Arbitrage Strategies › Dispersion Trading
Reading section 7 of 15 · Dispersion Trading · 8 minSection 7 of 15 · 8 min

Book contents

Section 7 of 15 · 8 min read

Volatility Trading and Arbitrage Strategies › Dispersion TradingOne section · Sections in this chapter7 / 15 ↓
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

Dispersion trading exploits the relationship between index volatility and the volatility of index constituents. The fundamental insight is that index variance depends on constituent variances and correlations between constituents. When you diversify by combining multiple assets, some of their movements cancel out, reducing overall portfolio volatility. This diversification effect creates a wedge between index volatility and the volatilities of individual stocks, and dispersion trading seeks to profit from this relationship.

The Variance Decomposition

For an index composed of nn stocks with weights wiw_i, the index variance is:

σindex2=∑i=1nwi2σi2+∑i=1n∑j≠iwiwjρijσiσj\sigma_{\text{index}}^2 = \sum_{i=1}^{n} w_i^2 \sigma_i^2 + \sum_{i=1}^{n} \sum_{j \neq i} w_i w_j \rho_{ij} \sigma_i \sigma_j

where:

  • σindex2\sigma_{\text{index}}^2: variance of the index
  • nn: number of stocks in the index
  • wi,wjw_i, w_j: weight of stock ii and jj in the index
  • σi,σj\sigma_i, \sigma_j: volatility of stock ii and jj
  • ρij\rho_{ij}: correlation between stocks ii and jj

This formula applies portfolio variance mathematics to an index. It tells us that the total variance of the index comes from two distinct sources. Distinguishing these sources is the basis of dispersion trading.

The formula decomposes index variance into:

  • ∑wi2σi2\sum w_i^2 \sigma_i^2: the weighted sum of individual variances (diagonal terms), representing concentration risk
  • ∑∑wiwjρijσiσj\sum \sum w_i w_j \rho_{ij} \sigma_i \sigma_j: the weighted sum of pair-wise covariances (off-diagonal terms), representing correlation risk

The first component represents what would happen if each stock's movements were entirely independent: you would simply add up the variance contributions from each stock, weighted by the square of their index weights. The second component captures the interaction effects between stocks: when two stocks tend to move together (positive correlation), they add to index variance, while independent or negatively correlated movements partially cancel out.

This can be rewritten using average correlation ρˉ\bar{\rho}:

σindex2≈(∑wi2)σ2‾+(1−∑wi2)ρˉσˉ2\sigma_{\text{index}}^2 \approx \left(\sum w_i^2\right) \overline{\sigma^2} + \left(1 - \sum w_i^2\right) \bar{\rho} \bar{\sigma}^2

where:

  • σindex2\sigma_{\text{index}}^2: variance of the index
  • ∑wi2\sum w_i^2: sum of squared weights (measure of concentration)
  • σ2‾\overline{\sigma^2}: average variance of constituents
  • ρˉ\bar{\rho}: average pairwise correlation between constituents
  • σˉ2\bar{\sigma}^2: square of the average constituent volatility

This simplified form makes the role of correlation crystal clear. The first term depends only on individual volatilities and index concentration, while the second term scales directly with the average correlation. When correlation is zero, the second term vanishes entirely, and the index variance is driven purely by the concentration-weighted individual variances. As correlation increases, the second term grows, and the diversification benefit shrinks.

The key implication is that when correlations are high, index volatility approaches the average constituent volatility. When correlations are low, diversification reduces index volatility below constituent volatility.

In[23]:
Code
def index_volatility(weights, vols, corr_matrix):
    """Calculate index volatility from constituent vols and correlations."""
    n = len(weights)
    cov_matrix = np.outer(vols, vols) * corr_matrix
    portfolio_var = weights @ cov_matrix @ weights
    return np.sqrt(portfolio_var)


# Example: 5-stock equal-weighted index
n_stocks = 5
weights = np.ones(n_stocks) / n_stocks
stock_vols = np.array([0.30, 0.25, 0.35, 0.28, 0.32])  # Individual volatilities

# Calculate index vol at different correlation levels
correlations = np.linspace(0, 1, 50)
index_vols = []

for rho in correlations:
    # Create correlation matrix with uniform correlation
    corr_matrix = np.full((n_stocks, n_stocks), rho)
    np.fill_diagonal(corr_matrix, 1.0)

    idx_vol = index_volatility(weights, stock_vols, corr_matrix)
    index_vols.append(idx_vol)

index_vols = np.array(index_vols)
avg_stock_vol = np.mean(stock_vols)
Out[24]:
Visualization
Index volatility rises from about 14 percent at zero correlation to 30 percent at perfect correlation, closing the shaded diversification gap.
Relationship between average constituent correlation and total index volatility. As correlation rises from 0 to 1, the diversification benefit diminishes and index volatility converges toward the average volatility of its individual components.

The Dispersion Trade

A dispersion trade takes opposing volatility positions on an index versus its constituents. The two main configurations are:

Long Dispersion (Short Correlation):

This trade profits when realized correlation is lower than implied correlation. It is typically the direction you choose because implied correlation tends to be higher than realized correlation, similar to the volatility risk premium. Index option buyers are often hedgers who pay a premium for protection against broad market moves. This demand pushes up index implied volatility relative to what the constituent implied volatilities would suggest.

Short Dispersion (Long Correlation):

  • Buy index options
  • Sell constituent options

This trade profits when correlations spike, typically during market stress. It is a tail hedge. During crises, correlations tend to spike as all assets sell off together, causing index volatility to surge relative to individual stock volatilities. A short dispersion position profits from this correlation spike.

In[25]:
Code
def dispersion_trade_pnl(
    index_implied_vol,
    constituent_implied_vols,
    weights,
    realized_corr_matrix,
    realized_vols,
):
    """
    Calculate P&L from a dispersion trade (simplified).

    Trade: Short 1 unit of index variance, Long weighted constituent variances
    """
    # Realized index volatility
    realized_index_vol = index_volatility(
        weights, realized_vols, realized_corr_matrix
    )

    # Implied index volatility (given)
    # P&L from short index variance swap (notional = 1)
    index_pnl = index_implied_vol**2 - realized_index_vol**2

    # Implied constituent variances (weighted average of implied vols)
    implied_constituent_var = np.sum(weights * constituent_implied_vols**2)

    # Realized constituent variances (weighted average of realized vols)
    realized_constituent_var = np.sum(weights * realized_vols**2)

    # P&L from long constituent variance (weighted)
    constituent_pnl = realized_constituent_var - implied_constituent_var

    # Total dispersion P&L
    total_pnl = index_pnl + constituent_pnl

    return {
        "index_pnl": index_pnl,
        "constituent_pnl": constituent_pnl,
        "total_pnl": total_pnl,
        "realized_index_vol": realized_index_vol,
        "implied_correlation": None,  # Would need to calculate
    }


# Simulate dispersion trade
np.random.seed(42)

# Market-implied values
index_implied = 0.22
constituent_implied = np.array([0.28, 0.25, 0.30, 0.27, 0.26])

# Scenario 1: Low realized correlation (dispersion trade profits)
rho_low = 0.3
low_corr = np.full((5, 5), rho_low)
np.fill_diagonal(low_corr, 1.0)
realized_vols_1 = constituent_implied * 0.95  # Realized slightly below implied

pnl_low_corr = dispersion_trade_pnl(
    index_implied, constituent_implied, weights, low_corr, realized_vols_1
)

# Scenario 2: High realized correlation (dispersion trade loses)
rho_high = 0.8
high_corr = np.full((5, 5), rho_high)
np.fill_diagonal(high_corr, 1.0)

pnl_high_corr = dispersion_trade_pnl(
    index_implied, constituent_implied, weights, high_corr, realized_vols_1
)
Out[26]:
Console
Dispersion Trade P&L Analysis (Variance Points)
==================================================

Scenario 1: Low Correlation (ρ = 0.3)
  Realized Index Vol: 17.2%
  Short Index Variance P&L: 189.8 bps
  Long Constituent Var P&L: -72.4 bps
  Total P&L: 117.4 bps

Scenario 2: High Correlation (ρ = 0.8)
  Realized Index Vol: 23.7%
  Short Index Variance P&L: -77.0 bps
  Long Constituent Var P&L: -72.4 bps
  Total P&L: -149.4 bps
Out[27]:
Visualization
Grouped bars show short-index variance P&L, long-constituent variance P&L, and their total: positive in the low-correlation scenario and negative in the high-correlation scenario.
Decomposition of the simulated dispersion trade P&L across low and high correlation scenarios. In the low-correlation case, the profit on the short index variance position exceeds the loss on long constituent variance, while high correlation reverses that outcome.

In the low correlation scenario, the realized index volatility is significantly lower than the weighted constituent volatility, generating profit for the dispersion trade (short index, long constituents). When realized correlation is high, this diversification benefit disappears, and the trade suffers losses as the short index position moves against you. The dispersion trade is fundamentally a bet on correlation: if correlations come in lower than what option prices imply, the long dispersion trade profits.

Implied Correlation

You can express your views in terms of implied correlation, which can be backed out from index and constituent implied volatilities:

ρimplied=σindex2−∑iwi2σi2∑i≠jwiwjσiσj\rho_{\text{implied}} = \frac{\sigma_{\text{index}}^2 - \sum_i w_i^2 \sigma_i^2}{\sum_{i \neq j} w_i w_j \sigma_i \sigma_j}

where:

  • ρimplied\rho_{\text{implied}}: implied correlation derived from market prices
  • σindex\sigma_{\text{index}}: implied volatility of the index
  • wi,wjw_i, w_j: weights of constituents ii and jj
  • σi,σj\sigma_i, \sigma_j: implied volatilities of constituents ii and jj

This formula inverts the variance decomposition equation to solve for correlation. Given the observed implied volatility of the index and the implied volatilities of all constituents, we can back out the correlation level that would make these prices consistent. This implied correlation represents the market's collective expectation of how correlated stock returns will be over the option's life.

When implied correlation is high relative to expected realized correlation, a long dispersion trade (short correlation) is attractive. You are effectively betting that the market is overpricing co-movement and that individual stocks will move more independently than option prices suggest.