← Back to Learn
IV ExpertWeek 20 • Lesson 60Duration: 35 min

PN Portfolio Neutrality

Removing market exposure — dollar-neutral, beta-neutral, and beyond

Learning Objectives

  • Understand different types of portfolio neutrality
  • Implement dollar-neutral and beta-neutral constructions
  • Know when each type of neutrality applies

Explain Like I'm 5

Neutrality means removing exposure to directional market moves. Dollar-neutral means your long positions equal your short positions in dollar terms. Beta-neutral goes further — it adjusts for the fact that some assets move faster than the market. Sector-neutral removes industry biases. Factor-neutral removes exposure to systematic risk factors. Each layer of neutrality reduces your exposure to systematic risk and isolates pure alpha more cleanly.

Think of It This Way

Think of portfolio neutrality as balancing a scale. Dollar-neutral puts equal weight on both sides. But if one side has lead weights (high-beta stocks) and the other has feathers (low-beta), the scale still tips when the ground shakes (market moves). Beta-neutral adjusts for the weight difference, so the scale stays balanced no matter what.

1Types of Neutrality

Each type removes a different source of systematic risk: Dollar-neutral: Long positions=Short positions\sum \text{Long positions} = \sum \text{Short positions} - Simplest form of neutrality - If you have \200K long, you have \200K short - Does NOT protect against beta differences - Example: \200K in low-beta utilities long, \200K in high-beta tech short — this is dollar-neutral but has massive beta exposure Beta-neutral: βiwi=0\sum \beta_i \cdot w_i = 0 - Adjusts each position by its market sensitivity - Much better protection than dollar-neutral - The standard for most stat arb operations - Example: \200K in a beta-0.5 asset long requires only \100K in a beta-1.0 asset short Sector-neutral: Zero net exposure to each sector - Eliminates sector rotation risk - Valuable in equity stat arb, less relevant in FX - Tighter constraint reduces opportunity set Factor-neutral: Zero net exposure to Fama-French factors (value, size, momentum, etc.) - Institutional-grade neutrality - Requires factor model and continuous rebalancing - Practically hard to achieve perfectly

2When Neutrality Matters (and When It Doesn't)

Neutrality is critical when: - Your alpha is spread-based (stat arb, relative value) - You want consistent returns regardless of market direction - Drawdown limits are tight (FTMO-style: 10% max) - You need to sleep at night without worrying about overnight gaps Neutrality is less important when: - Your alpha IS directional (you explicitly bet on market moves) - You're trading a single instrument (neutrality requires multiple positions) - Your holding period is very short (intrabar: market moves are tiny) For FTMO-style trading with tight drawdown limits, beta-neutrality is the sweet spot. It's achievable, meaningful, and dramatically reduces the chance of a correlated drawdown across your portfolio. Important nuance: true neutrality requires continuous rebalancing. As prices move, your dollar weights and beta exposures drift. You need to rebalance periodically (daily at minimum) to maintain neutrality.

Key Formulas

Beta-Neutral Hedge Ratio

Adjusts the short position size so that market beta is zero across the portfolio. Higher beta on the long side requires proportionally larger short-side exposure.

Hands-On Code

Portfolio Neutrality Checker

python
def check_neutrality(positions):
    """Check portfolio neutrality across multiple dimensions.
    
    positions: list of dicts with keys:
      'name', 'notional', 'beta', 'sector', 'side' ('long'/'short')
    """
    long_notional = sum(p['notional'] for p in positions if p['side'] == 'long')
    short_notional = sum(p['notional'] for p in positions if p['side'] == 'short')
    
    long_beta = sum(p['notional'] * p['beta'] for p in positions if p['side'] == 'long')
    short_beta = sum(p['notional'] * p['beta'] for p in positions if p['side'] == 'short')
    
    dollar_imbalance = (long_notional - short_notional) / max(long_notional, 1)
    beta_imbalance = (long_beta - short_beta) / max(long_notional, 1)
    
    print(f"=== NEUTRALITY CHECK ===")
    print(f"Long notional:  ${long_notional:,.0f}")
    print(f"Short notional: ${short_notional:,.0f}")
    print(f"Dollar imbalance: {dollar_imbalance:+.1%}")
    print(f"  {'[PASS]' if abs(dollar_imbalance) < 0.05 else '[FAIL]'} Dollar-neutral")
    print(f"")
    print(f"Long beta-$:  {long_beta:,.0f}")
    print(f"Short beta-$: {short_beta:,.0f}")
    print(f"Beta imbalance:   {beta_imbalance:+.1%}")
    print(f"  {'[PASS]' if abs(beta_imbalance) < 0.05 else '[FAIL]'} Beta-neutral")
    
    return abs(dollar_imbalance) < 0.05, abs(beta_imbalance) < 0.05

Checks whether a portfolio achieves dollar-neutral, beta-neutral, and sector-neutral conditions, and reports any imbalances.

Knowledge Check

Q1.You have $200K long and $100K short. Is this dollar-neutral?

Assignment

Construct a dollar-neutral and beta-neutral portfolio from 4-6 instruments. Verify neutrality before and after a simulated 5% market move. How much does each neutrality type protect you?