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.
Separate fitted factor return from the residual
- For one observation, fitted excess return is . Rearrange the model to compute .
- Averaging with zero-mean residuals gives . This is conditional on the factors included.
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.
Derive beta and factor covariance
- In a one-factor least-squares model, the normal equations give .
- For centred returns , expand . If factors and residuals are uncorrelated, the cross terms vanish, leaving .
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- Separate alpha from compensated exposures
- Optimise under realistic constraints
- Allocate risk, not just capital
- Explain results and marginal diversification
Quantitative finance and development glossary · Python resources and libraries · Research sources and limitations