Volatility Trading and Arbitrage Strategies › Dispersion Trading
Quantitative FinanceAll chapters 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 stocks with weights , the index variance is:
where:
- : variance of the index
- : number of stocks in the index
- : weight of stock and in the index
- : volatility of stock and
- : correlation between stocks and
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:
- : the weighted sum of individual variances (diagonal terms), representing concentration risk
- : 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 :
where:
- : variance of the index
- : sum of squared weights (measure of concentration)
- : average variance of constituents
- : average pairwise correlation between constituents
- : 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.
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)
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.
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
)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

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:
where:
- : implied correlation derived from market prices
- : implied volatility of the index
- : weights of constituents and
- : implied volatilities of constituents and
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.