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.