Reference 0017

Factor Risk Model Card

Nobody hands you Σ. The sample covariance asks the data n(n+1)/2 questions; the factor model asks n·k + k(k+1)/2 + n. The model that asks less, lies less.

The Decomposition

r = F f + ε                  F: n×k loadings,  f: factor returns,  ε: idio
Σ = F Σ_F Fᵀ + D             Σ_F: k×k,  D: diagonal (idio variances)

wᵀΣw = eᵀΣ_F e + Σ d_i w_i²      with  e = Fᵀw   (same e the walls read; Ref 0016)

invertible whenever D > 0  —  never singular, at any n

Parameter Arithmetic

sample:  n(n+1)/2          n=100: 5,050    n=500: 125,250   n=3000: 4.5M
factor:  nk + k(k+1)/2 + n  n=100,k=10: 1,155   n=500,k=10: 5,555

danger line:  T < n  ⇒  sample Σ rank-deficient  ⇒  phantom ZERO-risk
directions  ⇒  the risk minimizer piles into pure estimation noise

Bias–Variance Verdict

factor model:  converges FAST to slightly wrong   (structure = bias)
sample Σ:      converges SLOWLY to exactly right   (parameters = variance)
realistic T:   slightly-wrong wins;  shrinkage (Ledoit-Wolf) = tunable middle

CVXPY Snippet

e = F.T @ w
risk = cp.quad_form(e, Sigma_F) + cp.sum_squares(cp.multiply(np.sqrt(d), w))
# never form the dense n-by-n Sigma; the solver exploits the structure

Use this page with Lesson 0017 (the estimation race lab), Reference 0016 (walls on the same e), and Reference 0002 (the quadratic form itself). Source: MOSEK Portfolio Cookbook, factor-model and estimation-error chapters.