Portfolio construction
Hierarchical risk parity (HRP)
Groups the tickers into a family tree by correlation and splits the money down the tree, so similar tickers share their risk budget.
The idea in plain words
Optimisers that invert the covariance matrix become unstable when tickers are highly correlated. HRP never inverts it. It first clusters the tickers (indices with indices, currencies with currencies), orders them so that similar ones sit together, and then divides the money between the two halves of the tree by their risk, again and again down to single tickers.
How it is calculated
1) Distance between tickers dᵢⱼ = √((1 − ρᵢⱼ) ÷ 2); single-linkage clustering builds the tree. 2) The tree gives an order with similar tickers side by side. 3) Recursive bisection: split the ordered list in two, measure each half's variance with inverse-variance weights inside it, give each half money in inverse proportion to its variance, repeat inside each half.
dᵢⱼ = √((1 − ρᵢⱼ) ÷ 2)
V(half) = w̃ᵀ Σ_half w̃, w̃ ∝ 1 ÷ diag(Σ_half)
α = 1 − V_left ÷ (V_left + V_right); left × α, right × (1 − α)How to use it
- With many tickers, or groups of similar ones (several indices, several currency pairs).
- When other models give unstable weights from one study to the next.
- It is long only and needs no expected returns.
Drawing conclusions
- Tickers that cluster together share one budget, so adding a third stock index takes money from the other indices, not from gold.
- The order in the study's notes shows how it grouped the tickers.
Example
Running example (used in every portfolio guide): US500, GER40, gold (XAUUSD) and EURUSD, two years of daily data. Expected returns 8%, 7%, 7% and 1% a year; volatilities 18%, 20%, 15% and 7%. US500 and GER40 move together (correlation about 0.7); gold hardly moves with the indices (about 0.04). HRP orders the tickers US500, GER40 | gold, EURUSD and splits the money between the two pairs by risk: 8% US500, 6% GER40, 15% gold, 70% EURUSD. Return 2.9%, volatility 7.1%. It is more defensive than ERC here because the indices' pair, measured as a block, is very volatile.
The example's inputs are illustrative; the weights and figures are what our optimiser returns for them.
Watch out for
- Results depend on how the tree splits; with few tickers it can be lopsided.
- It ignores expected returns entirely.
A little history
Marcos López de Prado, "Building Diversified Portfolios that Outperform Out of Sample" (Journal of Portfolio Management, 2016). It brought machine-learning style clustering into portfolio construction.
Educational content only. No portfolio model knows the future: every one of them works on estimates from the past, and nothing here is investment advice.