Trading Dev AcademyFree quant education

Free lesson · Portfolio construction

Separate alpha from compensated exposures

Open interactive lessonPractice calculationsExplore labs

Start with the idea

A factor model separates returns associated with common exposures from residual variation. The model you choose defines the meaning of alpha; it cannot reveal skill independently of its specification.

Symbols, units & horizon
  • Rᵢ,ₜ: asset return
  • R_f,ₜ: risk-free return
  • αᵢ: intercept or unexplained average excess return
  • βᵢ: vector of factor sensitivities
  • fₜ: factor-return vector
  • εᵢ,ₜ: residual
  • R_m: market return
  • B: matrix of asset factor loadings
  • Σ_f: factor covariance matrix
  • Σ_ε: residual covariance
  • Σ: model asset covariance
  • T: transpose
  • Cov,Var: covariance and variance

When and why to use this

Use factor exposure to explain a strategy’s returns and to avoid combining several disguised versions of the same market bet.

Ri,t−Rf,t=αi+βi𝖳ft+εi,t
Algebra and arithmetic

Separate fitted factor return from the residual

  1. For one observation, fitted excess return is α^+β^Tf. Rearrange the model to compute ε=Ri−Rf−α−βTf.
  2. Averaging with zero-mean residuals gives α=E[Ri−Rf]−βTE[f]. This is conditional on the factors included.
Work it by hand

Excess return 1.2%, beta .8, market excess return 1%, alpha .1% gives residual=.3%.

Returns on the left and factor returns on the right must share frequency, currency, and return conventions. Alpha is the intercept conditional on the chosen model; adding a relevant factor can change it substantially. It is not an intrinsic property of a strategy.

βi=Cov⁡(Ri,Rm)Var⁡(Rm),Σ=BΣfB𝖳+Σε
Algebra and arithmetic

Derive beta and factor covariance

  1. In a one-factor least-squares model, the normal equations give β=Cov(Ri,Rm)Var(Rm).
  2. For centred returns R=Bf+ε, expand E[RRT]. If factors and residuals are uncorrelated, the cross terms vanish, leaving BΣfBT+Σε.
Work it by hand

Covariance .018 and market variance .0225 imply beta=.8. One asset with beta .8, factor variance .04 and residual variance .01 has total variance .0356.

The covariance decomposition assumes residuals are uncorrelated with factors. B contains exposures, the factor covariance matrix describes joint factor risk, and residual covariance captures what remains. A diagonal residual model is convenient but can miss common sector or crowded-trade risks.

  • Use economically motivated factors: market, sector, size, value, momentum, duration, credit, currency, or volatility, depending on the book.
  • Check rolling exposure stability and use dependence-aware standard errors for estimated alpha.
  • Compare holdings-based exposures with return regressions; a slow regression can miss a rapid portfolio change.

Research sources, review dates and limitations

Python implementation

Self-contained teaching example. Python 3.10+; dependencies and input conventions are shown in the code and notation. Run in your own Python environment.

import numpy as np  # dependency: numpy

def factor_residual(excess_return, alpha, betas, factor_returns):
    return excess_return-alpha-float(np.asarray(betas)@np.asarray(factor_returns))

def market_beta(asset_returns, market_returns):
    cov = np.cov(asset_returns, market_returns, ddof=1)
    if cov[1,1] == 0:
        raise ValueError("Nonzero market variance required")
    return cov[0,1]/cov[1,1]

def factor_covariance(loadings, factor_cov, residual_cov):
    b = np.asarray(loadings)
    return b@np.asarray(factor_cov)@b.T+np.asarray(residual_cov)

print(factor_residual(.02,.001,[1.2],[.01]))

Continue learning

Portfolio Construction & Factors — all lessons
  1. Separate alpha from compensated exposures
  2. Optimise under realistic constraints
  3. Allocate risk, not just capital
  4. Explain results and marginal diversification

Quantitative finance and development glossary · Python resources and libraries · Research sources and limitations