Factor Exposure Walls: Cap the Theme, Not the Name
Every wall so far guarded a single name (w ≤ cap) or the trading itself (|w - w_prev| ≤ τ). But a book can obey every name-level rule and still be one giant bet, because risk lives in themes that cut across names — market beta, value, momentum, a sector. This lesson is the constraint that guards a theme: the factor exposure wall Fᵀw ≤ limits, the workhorse of every institutional constraint block.
The One-Step Skill
Given factor loadings, compute a portfolio's exposure βᵀw, write the three standard walls on it (cap, band, neutrality), and read the wall's dual as a per-unit factor tax: with rent λ on the wall, the optimizer funds name i only while α_i > λβ_i. When a paper says “subject to factor neutrality Fᵀw = 0,” you should see a handful of tilted walls and know exactly what they cost.
The Picture First: The Hidden Tilt
Exposure is a weighted sum across the whole book. Each name contributes its weight times its loading, and nobody's individual cap sees the total:
four names, every one inside its 40-point cap:
Hot growth 40 pts β 1.5 name-level: legal
Momentum 40 pts β 1.0 name-level: legal
Defensive value 20 pts β 0.5 name-level: legal
book beta = βᵀw = (40×1.5 + 40×1.0 + 20×0.5) / 100 = 1.10
three legal positions; one illegal-feeling portfolio: a leveraged market bet
Nothing here violates any rule you have built so far. That is the problem. Weight caps bound names; only a wall on βᵀw itself bounds the theme.
Now the question you should always ask a new constraint: why this form, and not the obvious alternative? The obvious alternative is to keep using the tool you have — just tighten the weight caps. It fails twice:
Caps are blind
Caps don't know the loadings. Give ten names a 10-point cap each and let all ten carry β = 1.3: the book's beta is 1.3 at any legal weights. No cap short of zero controls a theme every name shares — the exposure rides through the caps.
Caps are blunt
Crush the caps above to 25 points and beta does fall to 0.75 — by forcing equal weight, treating the zero-beta arb book exactly like hot growth. Alpha collected: 5.50%/yr. An exposure wall at the same 0.75 keeps 5.80%/yr, because it charges each name by its loading instead of rationing everyone equally.
Memory hook: caps bound names; walls bound themes. If the risk is something many names share, no per-name rule can price it — you need one wall that reads the whole book.
The Theory: A Wall at an Angle
Lesson 0003's walls were axis-aligned: w_i ≤ cap cuts perpendicular to one coordinate. βᵀw ≤ L is still one linear inequality — a flat wall, feasible set still a polyhedron, convexity license intact — but it sits at an angle, cutting across every name at once. All the standard forms are this one wall in different outfits:
tilt cap: βᵀw ≤ L (one tilted wall)
neutrality: βᵀw = 0 (wall + floor, welded)
band: |βᵀw| ≤ τ → -τ ≤ βᵀw ≤ τ (two walls; Lesson 0015
pattern 1 — NO auxiliaries)
many factors: lower ≤ Fᵀw ≤ upper (one wall per factor column;
F is n × k loadings)
Note the middle line: the factor-neutral band is last lesson's bounded-absolute-value case. The kink costs you nothing here — two tilted walls, zero auxiliary variables.
Because the wall is one constraint, it has one dual — and that single number prices every name's participation in the theme. When the wall binds with rent λ, stationarity (Lesson 0005) picks up a term λβ_i in every name's optimality condition:
fund name i while α_i > λ β_i
i.e. rank by AFTER-TOLL alpha: α_i - λβ_i
one dual, n taxes: each name pays in proportion to its loading.
high-beta alpha must clear a higher bar; zero-beta alpha rides free.
This is Lesson 0014's move, multi-asset: at the right rent λ*, you can delete the wall entirely, run the book on taxed alphas α_i - λ*β_i, and land in the same place. The toll replaces the wall — they are alternatives, never teammates. And the dual still wears its two hats: λ is both the tax rate that reproduces the wall and the alpha you would gain per unit of exposure headroom. Loosen the wall from 0.80 to 1.00 in this lesson's universe and alpha climbs from 6.00 to 6.60 — 0.60 over 0.20 of headroom: λ = 3, read straight off the books.
Lab: Set the Toll, Clear the Wall
You are the toll-setter. Four names (bars, with per-name caps at 40 pts), one factor (the gauge on the right), and a wall drawn on the gauge that nothing enforces — only your toll λ moves the book. Press ▶ and 100 pts of capital deploy 5 at a time, always to the best after-toll alpha α - λβ. Five experiments: (1) run at λ = 0 — the book fills greedily to β = 1.10, over the 0.80 wall, with every name inside its cap: the hidden tilt, live; (2) raise λ and rerun — watch high-beta alpha lose its ranking and capital reroute down the list; hunt the cheapestλ that clears the wall — the verdict tile will tell you when you've found the dual, and the story line will show the marginal names tie after tax, the solver's signature; (3) overshoot to λ = 5 and read what over-tolling costs in alpha; (4) push past λ = 6 — every name's after-toll alpha goes non-positive and the book refuses capital; (5) slide the wall itself and watch the dual jump in steps as the book's composition changes — the active-set story of Lessons 0009–0010, now in exposure space.
Deployed-
Book β-
Alpha collected-
Verdict-
-
Dashed grey outlines: the λ = 0 caps-only book, for contrast. The allocator is deliberately simple — rank by after-toll alpha, fund to caps, ties to the lower beta — but at the natural wall levels (1.00, 0.80, 0.70, 0.50) it reproduces the LP solver's answer exactly, marginal-name tie and all. At in-between walls a real solver splits the tied pair fractionally to sit exactly on the wall; the 5-pt chunks here land just under instead.
Where You'll Meet It in the Wild
Sector neutrality
Give each name a 0/1 loading per sector; Fᵀw = w_bench sector weights (or a band around them). One tilted wall per sector — the constraint block of nearly every long-short equity fund.
Beta-neutral mandates
“Market-neutral” is the equality βᵀw = 0: the fund sells its market exposure entirely and lives on after-toll alpha alone. The toll here is the market return itself.
Paper constraint blocks
Barra/Axioma-style papers write l ≤ Fᵀw ≤ u over dozens of style and industry factors. You now read it as: a stack of tilted walls, each with its own dual, each taxing every name by its loading.
Benchmark-relative books
Index funds constrain active exposure Fᵀ(w - w_bench): the wall guards the bet relative to the benchmark, not the raw holding. Same wall, shifted origin.
Retrieval Practice
Ten names, each capped at 10 points, each with β = 1.3. All caps satisfied. The book's beta is?
The beta wall binds with dual λ = 3. Which name does the optimizer still fund?
Encode “stay market-neutral within a band”: |βᵀw| ≤ 0.05. Auxiliary variables needed?
The wall βᵀw ≤ 0.80 binds with dual λ = 3. You loosen it to 0.90. Expected alpha gain?
Portfolio Reading
Constraint blocks now decompress on sight. “Subject to full investment, long-only, Fᵀw = 0” reads: budget floor+wall, n name floors, k tilted equality walls — an LP/QP with one dual per factor, each dual a factor tax on every name. Boyd et al.'s multi-period trading paper lists factor neutrality among its holding constraints right beside the leverage and turnover constraints you already know; the MOSEK Portfolio Cookbook builds its factor-model chapters on exactly the loadings-matrix notation above. When a paper reports “alpha after adjusting for factor exposures,” you now know the mechanism producing it: α_i - λᵀF_i, the after-toll alpha with a vector of rents.
Ask your agent anything unclear — good prompts: “write the 4-name lab as a CVXPY problem and show the wall's dual_value equals the λ I found by hand,” “why do the marginal names tie after tax at the dual — connect it to complementary slackness,” or “how do sector-neutrality equalities get two signed duals where the inequality wall gets one?”