Forward and Futures Pricing and Hedging › Hedging Equity Portfolio Risk

Michael BrenndoerferNovember 14, 20256 min read
Quantitative FinanceAll chapters
Part 3 of 15Forwards, Futures, and Options
Chapter 15Forward and Futures Pricing and Hedging › Hedging Equity Portfolio Risk
Reading section 7 of 11 · Hedging Equity Portfolio Risk · 6 minSection 7 of 11 · 6 min

Book contents

Section 7 of 11 · 6 min read

Forward and Futures Pricing and Hedging › Hedging Equity Portfolio RiskOne section · Sections in this chapter7 / 11 ↓
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

Let's work through a complete example of hedging equity portfolio risk with index futures. This practical application brings together the theoretical concepts we've developed and demonstrates how professional portfolio managers implement hedging strategies.

Problem Setup

You hold $10 million in a diversified US equity portfolio. The portfolio has a beta of 1.15 relative to the S&P 500. With market uncertainty rising, you want to reduce market exposure over the next three months using E-mini S&P 500 futures.

The E-mini S&P 500 futures contract has a multiplier of $50 per index point. Current futures price is 5,000. Your goal is to determine how many contracts to sell to neutralize your portfolio's market sensitivity.

Calculating the Hedge

For equity portfolios, beta serves a similar role to the minimum variance hedge ratio. If the portfolio has beta β\beta, a 1% market move translates to approximately a β%\beta\% portfolio move. The hedge ratio is therefore β\beta. This makes intuitive sense: a portfolio that moves more than the market (high beta) requires more futures contracts to hedge than a portfolio that moves less than the market (low beta). We can calculate the required number of contracts as follows:

In[22]:
Code
# Portfolio hedging calculation
portfolio_value = 10_000_000  # $10 million
portfolio_beta = 1.15
futures_price = 5000
contract_multiplier = 50

# Value of one futures contract
futures_contract_value = futures_price * contract_multiplier

# Number of contracts to fully hedge
n_contracts_full = portfolio_beta * portfolio_value / futures_contract_value

# Round to nearest whole number (can't trade fractional contracts)
n_contracts = round(n_contracts_full)
Out[23]:
Console
Equity Portfolio Hedge Calculation
=============================================
Portfolio value:        $10,000,000
Portfolio beta:         1.15
Futures price:          5,000
Contract multiplier:    $50
Futures contract value: $250,000

Contracts needed (exact): 46.00
Contracts to trade:       46

You should short 46 E-mini S&P 500 futures contracts to hedge your portfolio's market exposure. The slight difference between the exact calculation and the rounded number creates a small residual exposure, but this is unavoidable since fractional contracts cannot be traded.

Simulating Hedge Effectiveness

We can verify the hedge by simulating portfolio values across a range of market returns. This analysis demonstrates how the hedge performs in different market scenarios, from sharp declines to strong rallies:

In[24]:
Code
import numpy as np

# Simulate hedge performance across different market scenarios
market_returns = np.linspace(-0.20, 0.20, 100)  # -20% to +20%

# Portfolio return approximation: alpha + beta * market_return
alpha = 0.02  # Assume 2% alpha from stock selection
portfolio_returns = alpha + portfolio_beta * market_returns

# Futures P&L (short position)
actual_contracts = n_contracts
futures_notional = actual_contracts * futures_contract_value
futures_pnl = (
    -futures_notional * market_returns
)  # Short futures gains when market falls

# Unhedged vs hedged portfolio values
unhedged_values = portfolio_value * (1 + portfolio_returns)
hedged_values = portfolio_value * (1 + portfolio_returns) + futures_pnl
Out[25]:
Visualization
Line chart comparing hedged and unhedged portfolio values across market return scenarios.
Hedge effectiveness across market return scenarios. The unhedged portfolio (blue) exhibits high sensitivity to market moves (beta = 1.15), while the hedged portfolio (green) remains nearly flat, preserving the portfolio's value regardless of whether the market rises or falls.

The hedged portfolio remains relatively stable regardless of market moves. The slight upward slope in the hedged line reflects the portfolio's alpha: stock-specific returns that aren't eliminated by the index hedge. This is the intended result. You retain alpha while eliminating beta (market) risk. In essence, the hedge isolates your stock-picking skill from the market's overall direction.

Partial Hedging and Beta Targeting

Sometimes full hedging isn't the goal. You might want to reduce beta from 1.15 to 0.5 rather than eliminating it entirely. Perhaps market conditions warrant caution but not complete defensive positioning. The number of contracts becomes:

N=(βcurrent−βtarget)×VF×mN = (\beta_{\text{current}} - \beta_{\text{target}}) \times \frac{V}{F \times m}

where:

  • NN: number of contracts
  • βcurrent\beta_{\text{current}}: current portfolio beta
  • βtarget\beta_{\text{target}}: desired target beta
  • VV: portfolio value
  • FF: futures price
  • mm: contract multiplier

This formula generalizes our full hedge calculation. When the target beta is zero, we recover the full hedge formula. When the target beta equals current beta, zero contracts are needed. The formula can also produce negative contract counts when you want to increase beta, indicating that long futures positions are required rather than short positions.

In[26]:
Code
def contracts_for_target_beta(
    portfolio_value, current_beta, target_beta, futures_price, multiplier
):
    """Calculate contracts needed to achieve target beta."""
    return (
        (current_beta - target_beta)
        * portfolio_value
        / (futures_price * multiplier)
    )


# Different beta targets
targets = [1.0, 0.5, 0.0, -0.5]
contracts_needed = [
    contracts_for_target_beta(
        portfolio_value, portfolio_beta, t, futures_price, contract_multiplier
    )
    for t in targets
]
Out[27]:
Console
Beta Targeting with Futures
==================================================
Current portfolio beta: 1.15

Target Beta    Contracts           Action
--------------------------------------------------
1.0            6.0                 Short
0.5            26.0                Short
0.0            46.0                Short
-0.5           66.0                Short
Out[28]:
Visualization
Line chart showing portfolio value in millions of dollars versus market return percentage for four beta strategies: unhedged at beta 1.15, partial hedge at beta 0.5, full hedge at beta 0, and inverse at beta negative 0.5.
Portfolio value profiles under different target beta strategies, where steeper slopes indicate higher market sensitivity. The unhedged portfolio (blue, β=1.15) tracks the market, while the fully hedged portfolio (orange, β=0) is market-neutral and the negative beta strategy (red, β=-0.5) profits from market declines.

To go from beta 1.15 to a negative beta of -0.5, you would short significantly more contracts, effectively reversing market exposure. A negative beta means the portfolio profits when the market falls and loses when it rises. This might seem extreme, but some macro hedge funds deliberately take negative beta positions when they believe markets will decline.