The Analyst's Path

Phase 12Finance Plus, AI and the quant-code trackFinance trackAA1.0212,990 words1 h 12 min of readingabout 18 hours of study4 concept pagesfree

Black-Litterman, Risk Budgeting, Liability-Relative & Goals-Based

An optimizer is only as good as its inputs and its objective. Black-Litterman fixes the inputs: equilibrium plus disciplined views, rather than noisy history.

Finance-Plus Ring · Asset Allocation & Performance (AA) branch · Node AA1.02 · ~18 focused hours · Mastery gate ≥ 85% in the app, plus the allocation-memo rubric ≥ 80/100

This Ring is additive institutional/CFA breadth, it presents the toolkit and the plumbing alongside, not in place of, the program's process-over-P&L, concentration-over-diversification philosophy.

AA1.01 built the efficient frontier and then, in its final act, broke it on purpose: feed a mean-variance optimizer noisy, ordinary-looking trailing-average returns, and it hands back corner solutions, wild longs, wilder shorts, weights that swing violently when a single input moves by half a point. That was not a bug in the demonstration; it is the single most consequential fact about portfolio optimization in practice, and it is why institutions do not simply run AA1.01's engine on raw historical means and call it a policy. This module is the industry's answer, in four connected pieces. Black-Litterman repairs the input problem directly. It starts from what the market already believes (reverse-engineered from the market itself, not from a spreadsheet of trailing averages) and blends in your own views only where you actually hold one, with the confidence you actually have. Risk budgeting repairs a different blind spot. A portfolio's capital weights and its risk weights are usually nothing alike, and you cannot manage a budget you have not measured. Liability-relative and goals-based allocation repair the question itself, for a pension, an insurer, or a household saving toward something specific, "maximize risk-adjusted return" is the wrong objective; the right one is funding a liability or a goal, and the honest math changes accordingly. Rebalancing policy closes the loop: a policy is not a policy until you have decided, in writing, when you will trade back to it and what that costs. Every number below (every equilibrium return, every risk contribution, every funded ratio, every rebalancing cost) was written into a Python scratch script, run, and checked before it reached this page. Where the arithmetic is small enough to do by hand, you will do it by hand too. The point is that you can audit the software, not merely operate it.


Advertisement

Learning objectives

By the end you can:

  1. Reverse-optimize equilibrium returns from a benchmark's market-cap weights and a covariance matrix (Π = δΣw), explain what the risk-aversion coefficient δ and the scaling parameter τ each do, and verify the "no-view" sanity check that a correctly built model returns you exactly to the benchmark.
  2. Blend a single view into the equilibrium using the closed-form Black-Litterman posterior, computed by hand for a 2–3 asset case, and correctly judge whether a stated view is more or less bullish than what the market already implies, the single most common Black-Litterman misreading.
  3. Compute marginal and component contribution to risk for any portfolio, show that capital weights and risk weights routinely diverge (a 60/40 book is not "60% equity risk"), and solve for risk-parity weights, by the 2-asset closed form and, for three or more assets, by a short iterative algorithm.
  4. Build a liability-relative allocation: compute a funded ratio and surplus, measure the asset–liability duration gap, and show numerically how an unmatched gap converts an ordinary rate move into a funded-ratio shock.
  5. Build a goals-based allocation using mental-accounting buckets, the required return to fund a goal, and Roy's safety-first ratio, and state, from your own computed numbers, exactly where that ratio's normal-distribution assumption breaks down for short, non-negotiable goals.
  6. Set and cost a rebalancing policy (calendar versus threshold) computing the number of trades, the transaction-cost drag, and the trade-off between the two disciplines from an explicit multi-period ledger.
  7. (R10 duality.) Know which parts of this toolkit are safely delegated to a solver (the N-asset, multi-view matrix algebra; the N-asset risk-parity iteration) versus which by-hand fluency you must retain to catch a broken scaffold, and apply the Primary-Source Guardrail (AI0.01) to every AI-assisted build.

The duality, stated once (R10). This branch carries the corpus's highest AI-over-trust risk: everything here is compute-heavy (matrix inversions, iterative solvers, multi-period ledgers) exactly the terrain where a fluent, wrong answer is hardest to eyeball. The gate below is earned by the by-hand mechanics (objectives 1–6); objective 7 is the payoff you keep. A solver can build you a beautiful Black-Litterman posterior from a transposed matrix and never tell you it's wrong.


Prerequisites & connections

Builds on. AA1.01 is this module's direct parent and its motivating failure: it built mean-variance optimization and the efficient frontier, then exposed MVO's acute input-sensitivity, plug in noisy trailing-sample expected returns and the optimizer answers with extreme, unstable, often nonsensical weights (large shorts, corner solutions). Black-Litterman exists because of that finding, and §4.4 below recomputes the exact contrast: the same optimizer, fed (a) a noisy historical-mean vector and (b) a Black-Litterman posterior, produces a reasonable allocation only in the second case. M3.02 supplied the foundations this module assumes without re-deriving: expected return and variance, the two-asset portfolio formula, systematic-vs-idiosyncratic risk, CAPM, beta, and the equity risk premium, you should be able to read Rf + β×ERP on sight. M9.01/M9.02 built the concentrated-investor's view of risk (permanent loss, not variance) and portfolio construction (concentration policy, hurdle rates, the "diworsification" math); this module puts that view in honest dialogue with the institutional, diversified-multi-asset-mandate view a family office, endowment, or pension trustee is actually required to hold. Both are legitimate, and a working analyst needs to speak both languages. M3.03 built the full cost-of-capital machine (clean risk-free rates, bottom-up beta) that supplies the discount-rate inputs a liability-relative build needs when discounting a stream of future obligations. This module does not re-teach duration mechanics (that by-hand skill, PVBP, and convexity belong to the Fixed Income branch, FI1.02) or the time-value-of-money compounding formula (M3.01), both are simply applied here, to a liability and to a goal respectively.

Feeds forward. AA1.03 (the crown of this branch) picks up where this module's weights leave off: once a portfolio is allocated and rebalanced through a live period, AA1.03 measures what actually happened, time- and money-weighted returns, Brinson attribution, Sharpe/Treynor/Information Ratio, and how a GIPS-compliant manager reports it all. None of that performance-measurement machinery is anticipated here; the GIPS seam is deliberate (AA1.03 owns it in full). PW1.01 (Private Wealth) inherits this module's goals-based and liability-relative frameworks directly and applies them to a single household's full financial life, tax location, estate transfer, decumulation, layered on top of, not duplicating, the allocation math built here. MS/AL modules occasionally reference "an allocation to X" in passing; this module is where "allocation" as a formal discipline lives.

An optimizer is only as good as its inputs and its objective. Black-Litterman fixes the inputs: equilibrium plus disciplined views, rather than noisy history. Risk budgeting and risk parity fix the risk lens, which is contribution to risk rather than capital sitting in the account. Liability-relative and goals-based allocation fix the objective itself, which is funding the obligation or the goal rather than an abstract Sharpe ratio. A rebalancing policy keeps any of it from silently drifting into something else.


Core teaching content

Black-Litterman model

The Black-Litterman model is a way to build the expected returns that go into a portfolio optimiser. It starts from the equilibrium returns implied by market-cap weights, found by reverse optimization, then adjusts them only where you hold a view, sized to your confidence. That keeps the inputs small and traceable, so the optimiser no longer swings to wild weights on estimation noise.

9 min read, on its own page

Risk parity

Risk parity sets portfolio weights so that every asset contributes the same amount of risk, which usually means very unequal amounts of capital. For two assets the weights are in inverse proportion to their volatilities; for three or more you solve it by iteration. It matters because a portfolio that looks diversified by capital can be a near-single-factor bet by risk: in the 60/40 example, 60% of the capital carries 93.5% of the risk.

3 min read, on its own page

Modern Data Analysis

By hand first. The single-view Black-Litterman formula (§4.3) and the two-asset risk-parity identity (§4.6) are the ones to own cold, everything past a single view, or past two assets, is a matrix or iteration problem meant for code, not mental arithmetic.

Today's workflow. A working allocator builds this once, as a reusable function, and reuses it forever. Load a covariance matrix (from a return history or a vendor risk model), reverse-optimize Π from the current benchmark weights, blend in one or more views via the full matrix formula, and feed the posterior into the same unconstrained-optimizer routine AA1.01 already built. You swap the input vector, never the engine. The N-asset risk-parity case is solved the same way: the iterative algorithm in §4.6 is a five-line loop, not new theory.

Tools & sources (India + US). numpy/scipy.optimize for the linear algebra and the risk-parity iteration; the open-source PyPortfolioOpt package ships a tested Black-Litterman and hierarchical-risk-parity implementation worth reading before writing your own; return and covariance history via your own downloads, yfinance (US) or the community-maintained jugaad-data (India, NSE/BSE; check that it still works and fall back to the exchanges' bhavcopy archives, since the older nsepy has had no release since 2020). See G2 · QD1.04 ("Portfolio Optimization in Code"), which builds and hardens exactly this stack, mean-variance, Black-Litterman, and risk-parity variants in scipy.optimize, and shows precisely why naive optimizers blow up.

# illustrative single-view Black-Litterman posterior, <=12 lines
import numpy as np
Pi = delta * Sigma @ w_mkt                        # reverse-optimized equilibrium returns
PSP = P @ Sigma @ P.T                              # the view-portfolio's own variance
tilt = 0.5 * (Sigma @ P.T) / PSP * (Q - P @ Pi)    # single-view closed form (Omega = tau*PSP)
posterior = Pi + tilt.flatten()

Verify. Every posterior return, risk contribution, and rebalancing cost in this module was produced exactly this way (computed in Python, cross-checked against the hand formulas above) before a single figure was written down (R3). A real desk's capital-market assumptions (Σ, δ, the view itself) still come from judgment and a named source; a solver only ever amplifies the inputs you hand it.

4.7 Liability-relative investing: funding the obligation, not a Sharpe ratio

A pension trust, an insurer, or any pool of assets held against a specific future obligation is not trying to maximize risk-adjusted return in the abstract, it is trying to fund the liability. Two numbers anchor the whole framework:

Funded ratio  =  Assets / PV(Liabilities)
Surplus       =  Assets − PV(Liabilities)

A funded ratio above 100% (a surplus) gives room to take risk; below 100% (a deficit) means the assets must outperform just to stand still, or the liability shortfall must be plugged some other way. The number that makes or breaks the whole picture is the duration gap: liabilities, being a long-dated stream of promised payments, typically carry a much longer modified duration (FI1.02 builds this concept fully; here it is simply applied) than the asset side unless the asset book is deliberately built to match it. A mismatched gap means an ordinary interest-rate move re-prices the two sides by very different amounts, and the funded ratio itself becomes volatile, often more volatile than either the asset or the liability side alone. Worked Example 4 computes exactly this: a fully-funded plan (105%) that a single 100-basis-point rate move turns into a 96%-funded plan, purely from an unmanaged duration gap, with zero change in any asset's fundamental value. The practical playbook that follows from this arithmetic is a glide path. As the funded ratio rises toward and above 100%, the sensible move is to shrink the duration gap (add long bonds or a swap overlay, cutting return-seeking exposure) and lock in the funded status, rather than "taking the free surplus and swinging for more". The asymmetry is real. A plan that is 130% funded has a large cushion to protect, while a plan at 80% funded has to weigh the temptation to reach for return against the real risk of making the hole permanently unfundable.

4.8 Goals-based allocation: buckets, safety-first, and its honest limits

Goals-based allocation replaces one household portfolio with several mental-accounting buckets, each funding a distinct, dated goal (a house down payment, a child's education, retirement), each sized and invested to that goal's required return and time horizon rather than to a single blended risk tolerance. The tool that makes this rigorous rather than just intuitive is Roy's safety-first criterion (Roy, 1952): given a required return (the return that just barely funds the goal from today's savings) choose the candidate portfolio that minimizes the probability of falling short. Under a normal-returns approximation, minimizing shortfall probability is equivalent to maximizing the safety-first ratio:

SFRatio = (E[R] − R_required) / σ          P(shortfall) = Φ(−SFRatio)     [Φ = the standard normal CDF]

The required return itself is just M3.01's compounding formula run in reverse, solving for the rate rather than the future value: R_required = (FV/PV)^(1/n) − 1.

The limitation is worth computing directly. For a near-term, essential goal (say, three years out) with a required return that sits above what a safe asset yields, Roy's ratio can, and often does, favor the highest-volatility candidate. What the ratio measures is distance-to-hurdle in standard-deviation units, not raw σ, and a higher expected return can widen that distance faster than the extra volatility narrows it. Worked Example 5 computes exactly this for a real three-year goal: the growth-tilted candidate posts the best (least negative) safety-first ratio of three options, and still carries a shortfall probability above 40%. That is the honest lesson goals-based practice has to reckon with: a bare ratio comparison is not, by itself, a safe way to allocate a short, non-negotiable goal. Real goals-based frameworks therefore treat volatility caps by time-to-goal as a hard constraint, a glide path exactly as in §4.7's liability case, so near-term essential buckets sit in low-volatility assets almost by rule. And when a goal's required return is simply too high for a safe posture, change the inputs: contribute more, extend the horizon, or lower the goal, rather than reach for more portfolio risk. AA is a toolkit; judgment about which goals can and cannot be rescued by more risk is not something a ratio supplies.

Calendar vs threshold rebalancing

Calendar vs threshold rebalancing compares two rules for bringing a drifting portfolio back to its target weights. Calendar rebalancing trades on a fixed schedule, such as quarterly or annually, however far the weights have moved, while threshold rebalancing trades only when a holding breaches a stated band, such as plus or minus 5 percentage points. Each has a trading cost and a risk-control benefit, and a written policy has to state the cost.

3 min read, on its own page

Rebalancing bands

Rebalancing bands, or corridors, set how far a holding may drift from its target weight before you trade it back. The right width balances the cost of trading against the risk that the drift adds, so it grows with trading cost and with the sleeve's correlation to the rest of the book, and shrinks as volatility or risk aversion rises. A house rule of plus or minus five points for every sleeve is a default, and it is wrong in a predictable direction for at least two sleeves in a real book.

5 min read, on its own page

4.10 Sanity ranges that catch a broken build

Every framework above has a rough, honest range that a working number should fall inside, not a law, but a tripwire. When your own build lands outside these, suspect the arithmetic before you suspect the market.

QuantitySane planning rangeA build outside it usually means
δ (risk-aversion coefficient)≈ 2.0–4.0 for an equity-anchored benchmarkΣ or the ERP input feeding it is mis-scaled (a common culprit: percentage points entered as whole numbers, e.g. 20 instead of 0.20)
τ (equilibrium-uncertainty scalar)≈ 0.01–0.05Above this, a single thinly-argued view can swamp the whole equilibrium; below it, stating a view becomes nearly pointless
A single view's tilt versus equilibriumA few tenths of a point to a few points, for a modestly-sized ΩA tilt of ten-plus points from one ordinary-confidence view usually means Ω was set far too small (overstated confidence)
%CCTR concentration in the largest sleeveInstitutional multi-asset books routinely run 70–95% of risk in the equity sleeve despite a much lower capital weightA %CCTR that sums to noticeably more or less than 100% means the CCTR arithmetic itself is wrong, this is an exact identity, not an approximation
Funded ratioPension/insurance books are typically flagged for attention below ~90% (funding stress) or scrutinized for de-risking above ~115–120% (large, arguably wasted, surplus)A funded ratio computed without first confirming the liability PV's discount-rate vintage matches the valuation date is the most common silent error
Roy's safety-first shortfall probabilityPractitioners generally treat anything above ~15–20% as an uncomfortable plan for a genuinely non-negotiable, near-term goalA shortfall probability near 50% (a coin flip) signals the goal's inputs (contribution, horizon, size) need revisiting, not the allocation dial alone
Rebalancing band (absolute)Roughly ±3 to ±7 percentage points is a common working range for a core sleeve; tighter for concentrated single-name limits, wider for minor/satellite sleevesA band under ~1 point trades on noise; a band over ~10 points barely functions as risk control at all

Treat this table exactly as you treated M3.02's and M3.03's own sanity bands: a fast, honest check that catches the large majority of transcription and scaling errors before a number ever reaches a client memo, never a substitute for tracing the real inputs to their source.


Common mistakes & how experts think differently

  1. Reading a view as bullish or bearish in isolation, without checking it against PΠ first. §4.3 computed this exactly: a stated view of "equity beats bonds by 3 points" sounds mildly positive, but against an equilibrium spread of 6.70 points it is less bullish than consensus, and the correct posterior tilts equity down. Experts always compute Q − PΠ before forming any intuition about which way a posterior should move.
  1. Confusing δ (risk aversion) with beta or with the ERP itself. δ scales an entire covariance matrix into a return vector; it is not a per-asset number and never appears in the final CAPM-style expected-return line the way β does. Mixing them up produces equilibrium returns off by whatever multiple you conflated.
  1. Setting τ carelessly and being surprised by how hard (or how little) a view pulls. Too large a τ lets a single, thinly-justified view swamp the equilibrium; too small a τ makes stating a view nearly pointless because nothing moves. Experts state their τ explicitly in the memo and sanity-check the resulting tilt's size against their actual conviction, not just its direction.
  1. Skipping the no-view identity check on a new build. Σ⁻¹Π must equal δ·w_mkt exactly, every time, by construction (§4.2). If a fresh implementation doesn't reproduce the benchmark with zero views, the bug is in Σ or δ, this single check catches most transcription and sign errors before a view is ever added.
  1. Capital-weight blindness in risk budgeting. "It's a balanced 60/40 fund" describes the ledger, not the risk. §4.5 computed 93.5% of risk sitting in the 60% equity sleeve, a number every allocator should be able to produce for their own book on demand, and most cannot.
  1. Extending the two-asset risk-parity shortcut (w ∝ 1/σ) to three or more assets. It is exact for two assets and wrong for three or more, because pairwise correlations no longer cancel out of the algebra (Worked Example 3 verifies naive inverse-volatility weights produce visibly unequal risk contributions once a third asset joins). The N-asset case needs the iterative solve, not the shortcut.
  1. Computing a funded ratio without checking the duration gap behind it. A "105% funded" headline is meaningless without knowing how that number moves when rates move. Worked Example 4's plan looked comfortably funded and was one rate move away from a real deficit, invisible to anyone who only ever looks at the ratio's current snapshot.
  1. Trusting Roy's safety-first ratio blindly for a short, essential goal. §4.8 computed the honest surprise directly: the highest-volatility candidate can post the best safety-first ratio and still carry a shortfall probability north of 40% for a three-year house-down-payment goal. A ratio that "wins" a comparison between bad options is still describing bad options; the fix is usually to change the goal's inputs, not to chase the winning ratio into more risk.
  1. Judging a rebalancing policy by the one return path it happened to produce. The quality of a decision and the quality of its outcome are different axes (M9.01). A policy that ends a single simulated period with the highest value did not necessarily make the better decision. Judge calendar against threshold by the logic each trade actually bought, meaning whether it controls drift proportionate to real risk at proportionate cost, not by which path a particular market draw happened to reward.
  1. Trusting a solver's output on any of the above without recomputing a sanity check. An optimizer, a risk-parity iteration, or a rebalancing sweep can all return smooth, plausible-looking numbers built on a transposed matrix or a mis-based cost formula. Every section above ships its own audit (the no-view identity, the CCTR-sums-to-σp check, the trade-by-trade ledger) precisely so that "the software said so" is never the last word.

Worked examples

Worked example 1: Black-Litterman, full build, and the payoff versus naive history (India, ₹)

Given. Ananta Family Office (synthetic) runs a strategic benchmark of Indian Equity / Indian Government Bonds / Gold at 55% / 35% / 10%. Volatilities: equity 20%, bonds 6%, gold 14% (equity and bond figures consistent with M3.02 §4.2's broad-index band; gold's is illustrative). Correlations: equity–bond 0.10, equity–gold 0.05, bond–gold 0.15. δ = 3.0, τ = 0.05. The module's clean INR risk-free rate is carried forward from M3.02 §4.10: Rf = 4.5%.

Step 1: reverse-optimize the equilibrium. Build Σ from the stated volatilities and correlations, then multiply through by δ:

Σ = [0.0400  0.0012  0.0014 ]     w_mkt = [0.55, 0.35, 0.10]
    [0.0012  0.0036  0.00126]
    [0.0014  0.00126 0.0196 ]

Σw = [0.02256, 0.002046, 0.003171]
Π  = 3.0 × Σw = [6.768%, 0.614%, 0.951%]
Equilibrium total E[R] = Rf + Π = [11.27%, 5.11%, 5.45%]

The equilibrium's own equity-minus-bond spread: 6.768% − 0.614% = 6.15 points.

Step 2, state one view and blend it. Ananta's CIO holds a single conviction: equity will beat bonds by 8 points (P = [1,−1,0], Q = 8%), modestly more bullish than the 6.15-point equilibrium spread. Because this is one view, §4.3's closed form applies exactly, even with three assets:

PΣ = [1,-1,0]·Σ = [0.0400-0.0012, 0.0012-0.0036, 0.0014-0.00126] = [0.0388, -0.0024, 0.00014]
PΣP′ = 0.0388(1) + (-0.0024)(-1) + 0.00014(0) = 0.0412
Q - PΠ = 8% - 6.15% = 1.85 points   (a modest positive surprise)

tilt = 0.5 × [0.0388,-0.0024,0.00014] / 0.0412 × 0.0185 = [+0.87pp, -0.05pp, +0.003pp]
Posterior excess E[R] = [7.64%, 0.56%, 0.95%]   →  Total E[R] = Rf+posterior = [12.14%, 5.06%, 5.45%]

Notice gold's tilt is essentially zero (+0.003pp), a view stated purely between equity and bonds barely touches an asset it doesn't name, because gold's covariance with the view portfolio (equity minus bonds) is small (ΣP′'s gold entry is 0.00014, near-zero relative to equity's 0.0388).

Step 3, the payoff: feed both return vectors to the same unconstrained optimizer. AA1.01's engine solves w* ∝ Σ⁻¹μ (normalized to sum to 1) for any excess-return vector μ. Try it with (a) a noisy trailing 3-year sample of average excess returns, equity 15%, bonds 3%, gold −1% (an ordinary bad stretch for gold), and (b) the module's Black-Litterman posterior:

Input μEquityBondGold
(a) Naive trailing 3-yr means36.0%76.6%−12.7%
(b) Black-Litterman posterior62.5%27.5%10.0%

The naive vector recommends shorting gold by 12.7% and abandoning the 10% strategic gold allocation entirely, precisely the corner-solution instability AA1.01 warned about, produced by one unlucky trailing window. The Black-Litterman vector recommends a sensible tilt toward equity (55%→62.5%, funded from bonds, as the stated view asks) while leaving gold at exactly 10.0%, unchanged from the original benchmark, down to the last decimal. That is not a coincidence: because the view never named gold, the mathematics confines the optimizer's reallocation exactly to the two named assets (a property you can verify yourself: Σ⁻¹(posterior − Π) comes out [+0.224, −0.224, 0.0000000000000000236], gold's raw-weight shift is zero to sixteen decimal places). A view stated between two assets moves capital only between those two assets; every other holding is left exactly where the equilibrium, not your noisy history, put it.

Read it. This is Black-Litterman's whole case in one table: the same optimizer, the same three assets, and the only thing that changed is which return vector fed it. One input produces a portfolio no committee would ever approve; the other produces a defensible, explainable tilt that traces to a single stated conviction.

Worked example 2: Risk budgeting on a "balanced" endowment (US, $)

Given. Fieldstone University Endowment (synthetic) holds a 60/40 Equity/Bond sleeve. Equity σ = 18%, Bond σ = 6%, ρ = 0.10 (both inside M3.02 §4.2's index-vol band).

Solution. Σw = [0.019872, 0.002088]; σp = √(0.6×0.019872+0.4×0.002088) = √0.0127584 = 11.30%. MCTR = Σw/σp = [17.59%, 1.85%]. CCTR = w×MCTR = [10.56%, 0.74%] (sum 11.30% = σp, checked). %CCTR = [93.45%, 6.55%].

Read it. The endowment's investment committee sees "60% equity, 40% fixed income" on a one-page pie chart and reads that as roughly-balanced risk-taking. It is not: 93.5% of the endowment's entire risk budget rides on the equity sleeve. A trustee who wants to actually run a 70/30-risk book, not a 93.5/6.5-risk book wearing a 60/40 label, needs this table, not the pie chart.

Worked example 3: Risk parity: two assets by hand, three assets by iteration (US, $)

Given. Continue Fieldstone's book, now adding a third sleeve: Commodities, σ = 16%, with correlations equity–bond 0.10 (as above), equity–commodities 0.20, bond–commodities −0.05.

Solution, the 2-asset closed form, first. For Equity(18%)/Bond(6%) alone: w_eq/w_bond = σ_bond/σ_eq = 6/18 = 1/3 → w_eq = 25%, w_bond = 75%. Verified: at these weights, σp = 6.67% and each asset's component contribution is exactly 3.34 percentage points, a clean 50/50 risk split.

Solution, extend naively to three assets, and watch it fail. Inverse-volatility weights across all three: w ∝ [1/18, 1/6, 1/16] = [0.0556, 0.1667, 0.0625], normalized to [19.5%, 58.5%, 22.0%]. Compute each asset's actual risk contribution at these weights: [37.1%, 30.0%, 32.9%]: nowhere near the equal 33.3% each the naive shortcut was supposed to deliver. Once bonds and commodities carry a different correlation structure to each other than equity does to either, the two-asset shortcut's cancellation stops holding.

Solution, the iterative solve. Starting from those same naive weights, apply the update rule (scale each weight by √(target risk contribution ÷ actual), renormalize, repeat): after just a couple of passes the weights settle at [17.8%, 60.4%, 21.7%], where every asset's risk contribution converges to exactly 33.3% (portfolio σ = 6.41%).

Read it. Bonds end up with the largest risk-parity weight (60.4%) precisely because they are the lowest-volatility, most risk-diluting asset in the set. Risk parity systematically overweights "boring" low-vol assets relative to a cap-weighted or equal-weighted book, which is exactly its point and exactly its own honest critique. A risk-parity book run unlevered typically has a lower expected return than an equity-heavy book, which is why real-world implementations often apply leverage to the low-vol sleeve to restore a competitive expected return, a decision with its own risks and beyond this module's scope.

Worked example 4: Liability-relative: a funded plan undone by a duration gap (India, ₹)

Given. Suraksha Gratuity Trust (synthetic, an Indian corporate retirement trust) reports assets of ₹105 crore against a liability present value of ₹100 crore, a funded ratio of 105%, a ₹5 crore surplus. The liability book carries a modified duration of 12 years. The asset book is 60% equity (assume ~0 direct interest-rate sensitivity, the standard simplifying LDI convention) and 40% bonds with a 6-year modified duration.

Solution. Step 1: measure the gap. Asset blended (rate-sensitivity) duration = 0.40 × 6 + 0.60 × 0 = 2.4 years. Against the liability's 12 years, the duration gap is 9.6 years, the assets are barely rate-sensitive; the liability is acutely so.

Step 2: shock it. Rates fall 100 basis points. Using the modified-duration approximation (%ΔPV ≈ −ModDur × Δy): the liability rises −12 × (−0.01) = +12.0%; the bond sleeve rises −6 × (−0.01) = +6.0%; equity is assumed flat.

New liability:  ₹100cr × 1.12 = ₹112.00cr
New bond value: ₹42cr × 1.06  = ₹44.52cr        (unchanged 40% × ₹105cr = ₹42cr base)
New equity value: ₹63cr (unchanged)
New assets:     ₹44.52 + ₹63.00 = ₹107.52cr
New funded ratio: 107.52 / 112.00 = 96.0%       New surplus: −₹4.48cr (a deficit)

A 100bp rate move, with zero change in any underlying asset's fundamentals, converts a comfortably-funded 105% plan into a 96%-funded plan running a deficit. A quick field approximation (ΔFundedRatio ≈ FR₀ × (R_asset − R_liability)) gives 1.05 × (2.4% − 12.0%) = 1.05 × (−9.6%) = −10.1pp, landing near 94.9%; the gap between that linear shortcut (94.9%) and the exact revaluation (96.0%) is the approximation's own error at a move this large, and it is why a real decision uses the exact reval, not the field shortcut.

Read it. The trust's trustees, looking only at "105% funded," had no visibility into how exposed that number was to a single rate move. The fix is not a better forecast of rates (nobody has one) it is closing the duration gap (extending the bond sleeve, or overlaying a swap) so that whichever way rates move, the funded ratio does not swing on plumbing the trust never chose to run.

Worked example 5: Goals-based: Roy's safety-first, and its honest limit (US, $)

Given. Morgan (synthetic) is saving toward a house down payment: $50,000 today, needs $60,000 in 3 years, no further contributions planned for this bucket. Three candidate mixes for the bucket:

CandidateE[R]σ
Conservative5%4%
Balanced7%9%
Growth9%15%

Solution. Step 1, the required return. R_required = (60,000/50,000)^(1/3) − 1 = 1.20^(1/3) − 1 = 6.27% (M3.01's compounding formula, solved for the rate).

Step 2, Roy's safety-first ratio and shortfall probability for each candidate (SFRatio = (E[R]−R_required)/σ, P(shortfall) = Φ(−SFRatio)):

CandidateSFRatioP(shortfall)
Conservative−0.31762.4%
Balanced+0.08246.8%
Growth+0.18242.8%

Growth wins: it posts the highest safety-first ratio and the lowest shortfall probability of the three, because its expected return clears the 6.27% hurdle by the widest margin measured in units of its own volatility, even though its raw σ (15%) is the largest of the three.

Read it, the honest limit. Growth "won" a three-way comparison and still carries a 42.8% chance of falling short of a non-negotiable, three-year house goal, worse than a coin flip's complement, on a mechanical, normal-distribution approximation that is itself optimistic about real short-horizon return distributions (fat tails, M3.02 §4.2). This is exactly why a competent goals-based plan does not simply hand the allocation decision to whichever candidate posts the best ratio. For a goal this close and this essential, real practice caps volatility by time-to-goal as a hard rule, regardless of what the ratio says. It treats a required return this demanding as a signal to change the inputs: save more, push the purchase out, or lower the target. It is not an invitation to take more portfolio risk in the hope of clearing a hurdle a coin flip barely beats.

Worked example 6: Rebalancing: calendar versus threshold, costed (India, ₹)

Given. Ananta Family Office (Worked Example 1) runs its 55/35/10 policy live for eight quarters. Quarterly returns (equity/bond/gold, %): Q1 (15, 0, 1), Q2 (10, 1, −2), Q3 (2, 1, 1), Q4 (−3, 1, 2), Q5 (3, 1, 0), Q6 (−2, 1, 1), Q7 (4, 1, 0), Q8 (−1, 1, 1). Per-trade cost: 20 basis points on the amount traded. Starting value ₹100 crore.

Solution. Step 1, no rebalancing, for reference. Compounding each sleeve through all eight quarters ends at ₹119.47 crore, drifted to [59.9%, 31.4%, 8.7%], equity has drifted nearly 5 points above target, gold over a point below.

Step 2: threshold policy (±5-point band). After Q1 the maximum drift is 3.4 points (no trade). By the end of Q2, equity's rally has pushed the maximum drift to 5.59 points, above the band: triggering a rebalance: ₹12.84 crore traded, cost ₹0.0257 crore. Reset to 55/35/10, the portfolio never again breaches the band through Q3–Q8 (maximum subsequent drift: 1.02 points). One rebalance, total cost ₹0.0257 crore, ending value ₹119.64 crore.

Step 3, calendar policy (rebalance every 4th quarter). At Q4 the (unmanaged, cumulative) drift stands at 4.81 points: trade anyway, on schedule: ₹11.07 crore traded, cost ₹0.0221 crore. By Q8 the drift since the Q4 reset is only 0.17 points (nearly nothing) yet the calendar discipline trades regardless: ₹0.41 crore traded, cost ₹0.0008 crore. Two rebalances, total cost ₹0.0230 crore, ending value ₹119.42 crore.

PolicyRebalancesTotal costEnding value
None0₹0₹119.47cr
Threshold (±5pp)1₹0.0257cr₹119.64cr
Calendar (quarterly)2₹0.0230cr₹119.42cr

Read it. Total cost is similar across policies in this run, do not conclude from that alone that one policy "won." Look at what each trade actually bought: threshold's single trade corrected a genuine 5.59-point drift; one of calendar's two trades corrected a mere 0.17 points, barely worth crossing the street for. The quality of a decision and the quality of its outcome are different axes (M9.01), judge a rebalancing policy on whether its trades are proportionate to real risk at a proportionate cost, not on which policy happened to end this one simulated path with a marginally higher value.


Practice set

Work each problem before reading its solution. All figures are illustrative/synthetic unless stated otherwise; a calculator is assumed.

P1 (guided). Reverse optimization. A US 70/30 Equity/Bond benchmark: σ_eq = 19%, σ_bond = 5%, ρ = 0.05, δ = 2.8. Compute Π.

Solution. Σ = [[0.0361, 0.000475],[0.000475, 0.0025]]. Σw = [0.0361×0.70+0.000475×0.30, 0.000475×0.70+0.0025×0.30] = [0.025412, 0.001083]. Π = 2.8×[0.025412,0.001083] = [7.12%, 0.30%] (spread 6.81 points).

P2 (guided). Single-view posterior. Using P1's setup and τ = 0.04, blend in the view "equity beats bonds by 9 points" (Q = 9%).

Solution. PΣ = [0.0361−0.000475, 0.000475−0.0025] = [0.035625,−0.002025]; PΣP′ = 0.035625+0.002025=0.03765. PΠ = 6.81%; Q−PΠ = 9%−6.81% = 2.19 points (a positive surprise, more bullish than consensus). tilt = 0.5×[0.035625,−0.002025]/0.03765×0.0219 = [+1.03pp, −0.06pp]. Posterior = [8.15%, 0.24%]. (Note: this direction is intuitive because Q exceeds the equilibrium spread, always check Q against PΠ first, per §4.3 and Common Mistake #1.)

P3 (guided). Risk contribution at a different mix. Equity 18%/Bond 6%, ρ = 0.10 (Worked Example 2's pair), but weighted 50/50 instead of 60/40. Compute %CCTR for each.

Solution. Σw = [0.0324×0.5+0.00108×0.5, 0.00108×0.5+0.0036×0.5] = [0.01674, 0.00234]. σp = √(0.5×0.01674+0.5×0.00234) = √0.00954 = 9.77%. MCTR = [17.14%, 2.40%]; CCTR = [8.57%, 1.20%]; %CCTR = [87.7%, 12.3%]. Even at an apparently "50/50" split, equity still carries 87.7% of the risk, the lesson does not require a 60/40 mix to bite.

P4 (guided). Two-asset risk parity. An Indian pair: Equity σ = 22%, Corporate Bond σ = 8%. Solve for the risk-parity weights.

Solution. w_eq/w_bond = 8/22; normalizing, w_eq = 26.7%, w_bond = 73.3%. Check: 26.7%×22 = 5.87; 73.3%×8 = 5.87: equal, confirming the closed form.

P5. Three-asset risk parity: confirm the naive shortcut fails. Indian Equity σ = 20%, G-Sec σ = 6%, REIT σ = 15%; correlations equity–G-sec 0.05, equity–REIT 0.30, G-sec–REIT 0.10. Compute the naive inverse-volatility weights and their resulting risk contributions; state whether they are equal.

Solution. Naive weights ∝ [1/20,1/6,1/15], normalized = [17.6%, 58.8%, 23.5%]. Their actual risk contributions come out [34.6%, 29.5%, 35.9%], not equal (equity and REIT both run above the 33.3% target, G-sec below), because REIT's high correlation to equity (0.30) is not accounted for by the inverse-vol shortcut. (Iterating converges to [16.9%, 61.2%, 21.9%], where all three land on exactly 33.3%.)

P6. Funded ratio. A US pension reports liabilities of $200 million and assets of $180 million. State the funded ratio and the surplus or deficit.

Solution. FR = 180/200 = 0.90 (90% funded), a $20 million deficit.

P7. Duration gap, and the direction of a rate move. A plan's liabilities carry a 15-year modified duration; 50% of assets are bonds with an 8-year duration, the rest equity (~0 rate sensitivity). Rates rise 50 basis points. Compute the asset blended duration, the gap, and the resulting change in the funded ratio (start both sides at 100 for a clean read).

Solution. Asset blended duration = 0.50×8 = 4.0 years; gap = 15−4 = 11.0 years. A 50bp rise: liability change = −15×0.005 = −7.5%; bond sleeve change = −8×0.005 = −4.0%. On a 100/100 base: new liability = 100×0.925=92.5; new bond value = 50×0.96=48.0; new equity = 50 (unchanged); new assets = 98.0. New funded ratio = 98.0/92.5 = 105.95%. Unlike Worked Example 4 (a rate fall hurting an underhedged plan), a rate rise helps an underhedged plan's funded ratio, for the identical reason: liabilities are more duration-sensitive than assets, so whichever direction rates move, the mismatch amplifies on the liability side.

P8. Goals-based required return. An Indian household needs a goal bucket to grow from ₹8,00,000 to ₹15,00,000 in 7 years, with no further contributions. What return is required?

Solution. R_required = (15,00,000/8,00,000)^(1/7) − 1 = 1.875^(1/7) − 1 = 9.40%.

P9. Roy's safety-first, two candidates. Using P8's required return, compare Debt-heavy (E[R]=7.5%, σ=6%) against Balanced (E[R]=10%, σ=12%) by safety-first ratio.

Solution. Debt-heavy: SFRatio = (7.5−9.40)/6 = −0.316. Balanced: SFRatio = (10−9.40)/12 = +0.050. Balanced has the higher (less negative) ratio, but note both are weak (Debt-heavy's is solidly negative, meaning its expected return does not even clear the hurdle), a signal that the goal itself may need re-sizing rather than a riskier allocation.

P10. Rebalancing count. A 60/40 Equity/Bond book, band = ±4 percentage points. Quarterly returns (equity/bond, %): Q1 (8,1), Q2 (11,0), Q3 (−3,2), Q4 (7,0). How many rebalances trigger, and in which quarter(s)?

Solution. Q1: weights drift to [61.6%,38.4%], max drift 1.6pp, no trigger. Q2: weights drift to [64.0%,36.0%], max drift 4.03pp: triggers; reset to 60/40. Q3 (from the reset): drift to [58.8%,41.2%], max drift 1.21pp, no trigger. Q4: drift to [60.4%,39.6%], max drift 0.42pp, no trigger. One rebalance, at Q2.

P11. Conceptual, the no-view identity. Explain why Σ⁻¹Π must equal δ·w_mkt exactly for any correctly built Black-Litterman model, with zero views.

Solution. By definition Π = δΣw_mkt. Left-multiplying both sides by Σ⁻¹ gives Σ⁻¹Π = δΣ⁻¹Σw_mkt = δw_mkt (since Σ⁻¹Σ = I). This holds as a pure algebraic identity regardless of the specific numbers, if a real implementation fails this check, the bug is in how Σ, Π, or δ were assembled, not in the model's theory.

P12. Conceptual, why the 2-asset risk-parity shortcut fails for N > 2. Explain, without recomputing, why w_i ∝ 1/σ_i is exact for two assets but not for three or more.

Solution. For two assets, setting the two component-contribution-to-risk expressions equal causes the shared covariance (correlation) term to cancel algebraically on both sides, leaving a pure volatility ratio. With three or more assets, each pair can carry a different correlation, and no single cancellation removes all of them simultaneously, the correlation structure genuinely affects the equal-risk-contribution solution, which is why it requires numerical iteration rather than a closed form.

P13 (exam: 10 min). Combined risk budgeting and risk parity. Equity σ=16%, Bond σ=5%, ρ=0.15, weighted 65/35. Compute (a) portfolio σ, (b) %CCTR for each asset, (c) the two-asset risk-parity weights for the same pair.

Solution. (a) Σ=[[0.0256,0.0012],[0.0012,0.0025]]; Σw=[0.0256×0.65+0.0012×0.35,0.0012×0.65+0.0025×0.35]=[0.01706,0.00166]; σp=√(0.65×0.01706+0.35×0.00166)=√0.011687=10.80%. (b) MCTR=[15.80%,1.54%]... following through, %CCTR = [95.04%, 4.96%]. (c) w_eq/w_bond = 5/16, normalized: [23.8%, 76.2%].

P14. Conceptual, the glide path. A pension plan sits at 130% funded; another sits at 80% funded. In one sentence each, state the sensible directional move for each plan's duration gap and return-seeking exposure, and why the two plans should not run the same policy.

Solution. The 130%-funded plan should shrink its duration gap and cut return-seeking exposure, locking in its large surplus rather than risking it on the (unnecessary) hope of more return. The 80%-funded plan faces a harder trade-off: closing the gap protects against further deterioration from rate moves but does nothing to close the funding shortfall, so it must weigh some return-seeking exposure against the real risk of a shortfall that a purely defensive posture can never close, the two plans' funded ratios put them in genuinely different decision regimes, and a single one-size policy serves neither well.

P15. Conceptual: goals-based and Roy's ratio. A colleague proposes funding a 2-year, essential medical-expense goal entirely in growth equity because "the safety-first ratio came out positive." What is the flaw in this reasoning, using this module's own computed example as evidence?

Solution. Worked Example 5 showed that a positive (or "winning") safety-first ratio can still carry a shortfall probability above 40%, "wins the comparison" is not the same as "safe," particularly for a short, essential, non-negotiable goal where the underlying normal-distribution approximation is itself optimistic (real short-horizon returns carry fatter tails than the model assumes, M3.02 §4.2). The colleague should treat a hard volatility cap for near-term essential goals as a rule, independent of what the ratio says, and address a demanding required return by changing contributions, horizon, or goal size rather than allocation risk.

P16 (independent, integrative). Funded ratio and a rebalancing decision. An Indian trust reports assets of ₹102 crore against liabilities of ₹100 crore (funded ratio computed from these). Its trustees, worried about the surplus drifting away, order an immediate rebalancing trade of ₹8 crore at a 15-basis-point cost. (a) State the funded ratio. (b) Compute the rebalancing cost. (c) In a single sentence, connect this trust's funded-ratio level to whether an aggressive, cost-incurring rebalance right now is the more urgent problem, or whether the duration gap is.

Solution. (a) FR = 102/100 = 1.02 (102% funded, a modest ₹2 crore surplus). (b) Cost = ₹8cr × 0.0015 = ₹0.012 crore. (c) At only 102% funded (a thin cushion, not the comfortably-surplus 130% of P14) the more urgent question is almost always the duration gap (§4.7, Worked Example 4): a plan this close to fully funded is one adverse rate move away from a deficit, and a rebalancing trade that doesn't address that mismatch is solving a smaller problem while the larger one sits unexamined. P17 (corridor widths across three sleeves). A book's non-sleeve remainder has a volatility of 11%. Three sleeves are up for a rebalancing policy: a large-cap equity ETF (σ = 18%, ρ = 0.90 with the rest, 10 bp round trip), a listed REIT sleeve (σ = 17%, ρ = 0.45, 35 bp) and an unlisted infrastructure fund (σ = 12%, ρ = 0.20, 150 bp). The equity ETF has been given a ±2.0 point corridor. Using §4.9b's rule, state the corridors the other two should carry, and name the driver doing most of the work in each case.

Solution. Compute σ_diff = √(σᵢ² + σ_c² − 2ρσᵢσ_c) for each. Equity ETF: √(0.0324 + 0.0121 − 2×0.90×0.18×0.11) = 0.094128. REIT: √(0.0289 + 0.0121 − 2×0.45×0.17×0.11) = 0.155467. Infrastructure: √(0.0144 + 0.0121 − 2×0.20×0.12×0.11) = 0.145671. Then d* ∝ (c/σ_diff²)^(1/3) at a common risk aversion. Relative to the ETF, the REIT's ratio is ((35/10) × (0.008860/0.024170))^(1/3) = 1.0866, giving ±2.17 points, and infrastructure's is ((150/10) × (0.008860/0.021220))^(1/3) = 1.8433, giving ±3.69 points. In the REIT's case the two effects nearly cancel: its 3.5-times-higher trading cost argues for a much wider band, and its far larger σ_diff (it diversifies, so its drift genuinely changes portfolio risk) claws almost all of that back, leaving it barely wider than the ETF. In infrastructure's case the fifteen-times-higher cost dominates and nothing offsets it, because its low volatility and its low correlation push in opposite directions and roughly cancel. Note what the naive rule would have said: infrastructure is the least volatile of the three and would have been given the tightest band.


Applied mini-project

The deliverable is an allocation memo. Choose one synthetic client brief below and write it in full. This is a written-deliverable module: the rubric below, scored against your memo, is the memo's pass mark at ≥ 80/100, while the app's mastery gate for the node is the quiz at ≥ 85%.

Brief A: India: a family office. A synthetic Indian family office (you may reuse or adapt Ananta Family Office, or invent your own) holds a multi-asset strategic benchmark across at least three asset classes (equity, debt, and at least one of gold/REIT/other). State your own volatilities and correlations (label them illustrative/synthetic).

Brief B: US: an endowment or pension. A synthetic US institution (you may reuse or adapt Fieldstone University Endowment, or invent your own, including a pension if you want to exercise the liability-relative track) holds a multi-asset benchmark across at least three asset classes.

Your memo must contain, in order:

  1. Capital market assumptions and the equilibrium. State your Σ, δ, and τ; reverse-optimize Π; show the no-view sanity check (Σ⁻¹Π = δw_mkt) actually holds for your build.
  2. One stated view, blended. State it in P/Q form, compute PΠ and the surprise (Q−PΠ), say in one sentence whether your view is more or less bullish than what the market already implies, and compute the posterior (by the single-view formula or the full matrix form, either is acceptable, but show your work).
  3. Risk budgeting on your proposed (not necessarily benchmark) weights. Compute MCTR, CCTR, and %CCTR; state plainly whether your risk budget matches your capital budget.
  4. A second framework, matched to your client. Choose exactly one. (a) A risk-parity comparison (2-asset closed form or N-asset iteration), with a recommendation for or against adopting it for this client. (b) If your client carries a stated liability, a funded ratio and duration-gap analysis with a hedging recommendation. (c) If your client has one or more dated goals, a required-return-per-goal and a Roy's safety-first comparison across at least two candidate mixes, explicitly naming the framework's own limitation from §4.8.
  5. A rebalancing policy. State calendar or threshold, the specific frequency or band, and an estimated annual cost in basis points, shown with visible arithmetic from at least one illustrative period.
  6. A one-page (300–500 word) client-readable cover summary translating 1–5 into a recommendation with no undefined jargon.

Rubric (100 points; pass ≥ 80).

CriterionPoints
Equilibrium returns and Black-Litterman blend: correct arithmetic, no-view identity shown, surprise (Q−PΠ) explicitly checked20
Risk contribution: correct MCTR/CCTR arithmetic, CCTRs sum to σp, plain-English capital-vs-risk-budget statement15
Second framework: correctly computed, appropriately matched to the client, and its own honest limitation stated20
Rebalancing policy: explicit choice and band/frequency, cost shown with visible arithmetic, one sentence on the trade-off versus the alternative15
Sourcing discipline: every figure sourced or labeled synthetic; both India ₹ and US $ appear somewhere in the memo (R6) even if only one brief was chosen10
Cover summary: correct, jargon-free, ≤ 500 words10
Internal consistency: numbers agree across sections; no contradiction between the stated risk budget and the stated policy10

Before you submit, re-run your own no-view identity and your CCTR-sum check one more time. Those two audits alone catch the large majority of scaffold errors. If your second-framework choice doesn't obviously fit your chosen client (a risk-parity memo for a plan that clearly has a stated pension liability, say), reconsider the match before you write the cover summary.


Reading & resources

Treat each source listed here as something to verify against, not as a number to quote uncited (R3).

Black-Litterman, primary and practitioner:

  • Black, F. & Litterman, R., "Global Portfolio Optimization" (Financial Analysts Journal, 1992), the original paper. [Paid via most finance-journal access; free preprint versions circulate widely] [Advanced]
  • He, G. & Litterman, R., "The Intuition Behind Black-Litterman Model Portfolios" (Goldman Sachs working paper, 1999), the clearest derivation of the reverse-optimization and posterior-blend logic taught in §4.2–§4.3. [Free PDF] [Intermediate–Advanced]
  • Idzorek, T., "A Step-by-Step Guide to the Black-Litterman Model" (2005), a practitioner-friendly walkthrough, including the %-confidence Ω convention this module's Ω = τPΣP′ convention is an alternative to. [Free PDF] [Intermediate]

Risk budgeting & risk parity:

  • Qian, E., "Risk Parity Portfolios: Efficient Portfolios Through True Diversification" (PanAgora, 2005), the risk-parity case, from one of the practitioners who popularized it. [Free PDF] [Intermediate]
  • Roncalli, T., Introduction to Risk Parity and Budgeting, the full mathematical treatment of marginal/component contribution and the N-asset solve this module's §4.5–§4.6 introduces. [Paid] [Advanced]

Liability-relative and goals-based:

  • Leibowitz, M., Bova, A. & Kogelman, S., Rethinking Pension Fund Management, the duration-gap and surplus-risk framework behind §4.7. [Paid] [Advanced]
  • Roy, A.D., "Safety First and the Holding of Assets" (Econometrica, 1952), the original safety-first paper behind §4.8. [Paid via JSTOR; widely summarized free in CFA-program materials] [Advanced]
  • Brunel, J., Goals-Based Wealth Management: the practitioner playbook for mental-accounting bucket construction. [Paid] [Intermediate]

Institutional synthesis (covers this whole module in one CFA-program text):

  • Maginn, J., Tuttle, D., McLeavey, D. & Pinto, J. (eds.), Managing Investment Portfolios: A Dynamic Process (CFA Institute Investment Series), the standard institutional reference for asset allocation, risk budgeting, and liability-relative investing together. [Paid] [Core/Advanced]
  • Ang, A., Asset Management: A Systematic Approach to Factor Investing, a rigorous, more modern complement, strong on the factor lens behind risk budgeting. [Paid] [Advanced]
  • Ilmanen, A., Expected Returns: deep, honest treatment of where expected-return inputs (the raw material this whole module exists to discipline) actually come from and how often they mislead. [Paid] [Advanced]

Tools:

  • PyPortfolioOpt documentation, an open-source, tested implementation of Black-Litterman, mean-variance, and hierarchical risk parity; read before writing your own. [Free] [Intermediate], see G2 · QD1.04.

Free primary-source anchors for your own capital market assumptions:

  • NSE/BSE factsheets and index-provider volatility/correlation data (India); a broad-index provider's factsheet (US), for any live σ/ρ inputs, never this module's illustrative ones. [Free] [Beginner–Intermediate]

Teach it back & journal

Feynman prompt. A colleague has only ever run a plain mean-variance optimizer, and their "efficient frontier" spreadsheet keeps recommending they short one asset and load up on another every time they refresh the trailing-return window. Explain to them why, using the sentence "the optimizer is only as stable as its inputs, and ordinary trailing averages are not stable inputs." Then show them, using the India worked example above, exactly how starting from the market's own reverse-optimized equilibrium and adding one stated, sized view produces a portfolio that barely moves from the benchmark unless they actually hold a conviction. Listen for one thing in particular. If your colleague can predict, unprompted, that a view stated between only two named assets leaves every other holding's optimal weight essentially unchanged, and can explain why in terms of the covariance structure, you have installed the real mechanism rather than the vocabulary.

Journal prompt. Pick one framework from this module (Black-Litterman, risk budgeting, liability-relative, or goals-based) and, over the next week, apply it to a real (or realistically detailed synthetic) allocation decision you actually care about: your own savings, a family member's goal, or a hypothetical mandate you find interesting. Write down your capital market assumptions and label explicitly which are sourced and which are your own judgment calls. Compute the framework's key number by hand or in a short script: a posterior return, a risk contribution, a funded ratio, a safety-first ratio. Then run that framework's own sanity check before you trust your output. The no-view identity, the CCTR-sum-to-σp check, the exact liability reval against the linear approximation, the shortfall probability rather than the ratio alone. Then write a paragraph on this: which of this module's four frameworks felt most like it was correcting a mistake you were already making intuitively, and which felt like genuinely new machinery? The gap between those two answers is a good map of where your next study hours should go.


This module's flashcards and mastery quiz are wired into the app: see the node's Quiz and Reviews.

Advertisement

The gate

The module's flashcards and its quiz are in the app. The quiz is the gate: you need 85% to pass it, and the next module opens when you do.