Beta and CAPM Explained for Traders

Beta and CAPM are simultaneously the most-used and most-misestimated tools on a trading desk. Beta is a regression slope — and like any slope it has an estimator with bias, error, and instability that determine whether a beta hedge actually neutralizes market risk or quietly leaves you long the index. CAPM is the equilibrium story that gives beta meaning, and its empirical failures (the low-beta anomaly, multi-factor structure) are not footnotes but the reason modern desks run multi-factor models. This article treats beta as an estimation problem, derives CAPM's logic, builds a hedge that accounts for estimation error, and is precise about where the model breaks.

Beta as an estimator

Beta is the slope of asset excess returns on market excess returns:

R_i - R_f = alpha + beta * (R_m - R_f) + epsilon

Algebraically beta = cov(Ri, Rm) / var(Rm) = corr(Ri, Rm) sigmai / sigma_m. That second identity matters: beta is correlation scaled by the volatility ratio, so a low-correlation name can still have a high beta if it is volatile. The OLS estimate carries a standard error, and the precision of beta depends on the variance of market returns over the window — you estimate beta worse* in calm markets because there is less market variation to regress against.

The estimator has well-known biases:

  • Attenuation from noise / nonsynchronous trading. If the asset trades less

frequently than the index (illiquid names, different time zones, stale closes), its measured returns lag the market, biasing beta toward zero. The Dimson correction — regressing on contemporaneous and lagged market returns and summing the coefficients — repairs it.

  • Sampling frequency. Daily betas differ from weekly and monthly betas for the

same name, partly because of microstructure and partly because the true exposure is horizon-dependent. Match the estimation frequency to your hedging horizon.

  • Outlier sensitivity. OLS minimizes squared errors, so a few crisis days

dominate the estimate. A handful of observations can swing a beta materially.

import numpy as np
import pandas as pd
import statsmodels.api as sm

def estimate_beta(asset_xs, market_xs, dimson_lags=1):
    """OLS beta with Dimson correction and standard error."""
    df = pd.concat([asset_xs, market_xs], axis=1).dropna()
    df.columns = ["y", "m0"]
    cols = ["m0"]
    for k in range(1, dimson_lags + 1):
        df[f"m{k}"] = df["m0"].shift(k)
        cols.append(f"m{k}")
    df = df.dropna()
    X = sm.add_constant(df[cols])
    res = sm.OLS(df["y"], X).fit(cov_type="HAC", cov_kwds={"maxlags": 5})
    beta = res.params[cols].sum()              # Dimson: sum contemporaneous + lags
    return dict(beta=beta, alpha=res.params["const"],
                se=res.bse["m0"], r2=res.rsquared, n=len(df))

Note the HAC (Newey-West) covariance: returns are heteroskedastic and mildly autocorrelated, so the naive OLS standard error understates beta uncertainty.

CAPM and the cross-sectional claim

CAPM (Sharpe-Lintner-Mossin) states that in equilibrium expected excess return is proportional to beta:

E[R_i] - R_f = beta_i * (E[R_m] - R_f)

The logic is a separation of risk into two parts. Systematic risk (beta) cannot be diversified away, so it must be compensated. Idiosyncratic risk (epsilon) can be diversified away in a broad portfolio, so the market does not pay you to bear it. The strong, testable, and largely rejected claim is that beta is the only priced risk and the intercept (alpha) is zero for all assets in equilibrium.

BetaCAPM expected return (R_f=4%, ERP=6%)
0.04.0%
0.57.0%
1.010.0%
1.513.0%
2.016.0%

Alpha vs beta and why the separation pays

Decompose realized return as Rf + beta*(Rm - R_f) + alpha + noise. Beta return is passive and cheap — you can buy it with an index future. Alpha is the residual after stripping market exposure, and it is what skill is actually paid for. A manager long a beta-1.5 book in a bull market posts huge returns with zero skill; regressing out beta reveals whether any alpha survives. This is why the Sharpe and information ratio exist, and why performance attribution splits returns into factor and residual. The trading implication: never pay alpha fees for beta exposure, and never confuse a bull-market beta payout with edge.

Rolling beta and the instability problem

Beta is not constant — leverage, business mix, and regime change move it. A hedge calibrated on a stale beta leaves residual market exposure that can dominate the idiosyncratic bet you meant to isolate.

def rolling_beta(asset_xs, market_xs, window=126):
    cov = asset_xs.rolling(window).cov(market_xs)
    var = market_xs.rolling(window).var()
    return cov / var

The window is a bias-variance trade-off: short windows track regime shifts but are noisy and crisis-sensitive; 252 days is the convention but lags structural breaks. A shrinkage approach (Vasicek/Blume) that pulls the raw estimate toward 1.0 — the cross- sectional mean — produces more stable, better out-of-sample betas than raw OLS, which is why commercial providers report adjusted betas.

Building a beta hedge honestly

To isolate alpha, short beta * notional of the index against a long position. The naive version ignores that beta is estimated with error and drifts:

def beta_hedge(stock_notional, beta_hat, beta_se):
    """Hedge notional plus a crude residual-exposure flag from estimation error."""
    hedge_notional = -beta_hat * stock_notional
    # 95% beta band implies residual market exposure even if you hedge the point estimate
    resid_lo = -(beta_hat - 1.96 * beta_se) * stock_notional - hedge_notional
    resid_hi = -(beta_hat + 1.96 * beta_se) * stock_notional - hedge_notional
    return dict(hedge_notional=hedge_notional,
                residual_exposure_band=(resid_lo, resid_hi))

The residual band is the point: even a "beta-neutral" book has market exposure bounded by the beta confidence interval, and that exposure is realized precisely in the high-vol periods where beta is least stable. This is the foundation of long/short equity, pairs trades (hedge each leg's beta), and factor-neutral construction — and in all of them the hedge must be rebalanced as rolling beta moves, with the rebalance cost weighed against the residual exposure it removes.

Downside beta and conditional asymmetry

A single OLS beta assumes the asset's sensitivity to the market is symmetric across up and down moves. It is not. Many assets have a higher downside beta — they track the market more tightly when it falls than when it rises, which is exactly the asymmetry that matters for risk. You can estimate it by conditioning the regression on the sign of the market return, or compute the semi-beta directly:

import numpy as np

def conditional_betas(asset_xs, market_xs):
    df = (asset_xs.to_frame("a").join(market_xs.rename("m"))).dropna()
    down = df[df["m"] < 0]
    up = df[df["m"] >= 0]
    beta = lambda d: d["a"].cov(d["m"]) / d["m"].var()
    return dict(beta_down=beta(down), beta_up=beta(up), beta_full=beta(df))

When downside beta exceeds upside beta, a hedge calibrated to the full-sample beta is under-hedged in selloffs — it leaves residual market exposure precisely when the market is falling, which is the worst time to discover it. For a book whose purpose is market neutrality through stress, hedge closer to the downside beta and accept a small upside drag, rather than minimizing average tracking error.

Shrinkage: why adjusted beta beats raw beta

Raw OLS betas are noisy and, importantly, regress toward 1 over time — a structural fact Blume documented. Vasicek shrinkage formalizes the correction as a precision- weighted average of the sample beta and the cross-sectional prior (typically 1.0):

beta_adj = w * beta_ols + (1 - w) * beta_prior,
w = var_prior / (var_prior + se_beta^2)

The weight w falls when the estimate is imprecise (large se_beta), pulling noisy betas harder toward the prior. This is not a heuristic — it is the Bayesian posterior mean under a normal prior, and it reliably improves out-of-sample beta forecasts, which is why commercial data vendors report adjusted rather than raw betas. For hedging, the shrunk beta both predicts next period's exposure better and is more stable, reducing needless rebalancing turnover.

CAPM's documented failures

CAPM is a first approximation that the data rejects in specific, exploitable ways:

  • Low-beta anomaly. The empirical security market line is too flat — low-beta

stocks earn more than CAPM predicts, high-beta stocks less. Betting-against-beta (lever up low beta, short high beta) has been a persistent factor, the opposite of CAPM's prediction.

  • Missing factors. Size, value, momentum, profitability, and investment all carry

premia a single market beta cannot explain; Fama-French and successors exist precisely because one beta is insufficient. A "market-neutral" book that is not also factor-neutral is making unintended factor bets.

  • Unobservable market portfolio (Roll's critique). CAPM's market is all wealth;

the S&P 500 is a proxy, and tests of CAPM are really joint tests of the model and the proxy.

  • Beta instability and in-sample alpha. Rolling betas swing; and regress any

strategy on the market and the in-sample alpha often looks significant but vanishes out of sample — which is why significance testing and out-of-sample validation are mandatory before believing an alpha.

Honest limits

Beta is a noisy, horizon-dependent, time-varying estimate of a single-factor exposure, and CAPM is an equilibrium model the cross-section rejects. None of this makes beta useless — it makes it a first-order term. Estimate it on excess returns with a Dimson correction for illiquid or non-synchronous assets, use HAC standard errors, shrink toward the cross-sectional mean, roll it and rebalance hedges as it drifts, and recognize that a point-estimate hedge leaves a residual exposure band that bites in crises. Then go further: layer in additional factors because one market beta cannot capture the priced risks, and size positions so each name contributes comparable systematic risk via risk-based sizing. Beta is the number that connects your P&L to the market — just never mistake the regression slope for a constant, or CAPM's clean line for how returns are actually earned.

#beta #CAPM #systematic risk #alpha #quant finance