Schur Complementary Portfolios

A unification of top-down and bottom-up portfolio construction.

Top-down portfolio construction — build a hierarchy, allocate between clusters, then within them — and bottom-up portfolio construction — solve one optimisation over the whole covariance matrix — are usually presented as opposing camps. They aren't. Block matrix inversion makes the connection explicit: when you allocate top-down between two clusters and then within each, you are also implicitly solving a global optimisation — with the off-diagonal cross-cluster covariance compressed into a Schur complement.

Schur complementary portfolios exploit this. Augment the within-cluster covariance with the relevant Schur complement before allocating, and the hierarchical construction recovers the optimisation result exactly. Drop the augmentation and you fall back to plain hierarchical risk parity. The augmentation interpolates between the two and fixes a long-standing under-performance of HRP relative to direct optimisation.

What HRP misses

Cluster the assets into two groups. Partition the covariance accordingly: $\Sigma = \begin{pmatrix} A & B \\ B^\top & D \end{pmatrix}.$ Standard Hierarchical Risk Parity allocates between the two clusters using only the diagonal blocks — effectively pretending the cross-cluster covariance $B$ is zero. That's wrong, and it's the dominant source of HRP's under-performance against direct mean-variance optimisation. The cross block is information; HRP throws it on the floor.

What the Schur complement puts back

The block-inverse identity tells you exactly how to put $B$ back. The inverse of a partitioned covariance is

$\Sigma^{-1} = \begin{pmatrix} S_A^{-1} & \star \\ \star & S_D^{-1} \end{pmatrix}, \qquad S_A = A - B D^{-1} B^\top, \qquad S_D = D - B^\top A^{-1} B$

$S_A$ is the Schur complement of $D$ in $\Sigma$ — the within-cluster covariance with the cross-cluster effect already absorbed. So if you allocate between clusters using $S_A$ and $S_D$ (instead of $A$ and $D$), you reproduce the global minimum-variance result exactly — top-down. The hierarchical decomposition stops being a heuristic and becomes an identity.

The interpolation

Schur complementary portfolios introduce a single dial $\gamma \in [0, 1]$:

$S_A(\gamma) = A - \gamma\,B D^{-1} B^\top, \qquad S_D(\gamma) = D - \gamma\,B^\top A^{-1} B$

The recursion

Cluster the assets, partition $\Sigma$. Compute $S_A(\gamma)$ and $S_D(\gamma)$. Use the inverse-volatility of the Schur complements (or any reasonable allocator) to split mass between the two clusters. Recurse inside each cluster on its own sub-covariance. That's the whole algorithm. Set $\gamma = 1$ and the recursion is mathematically equivalent to solving global MVP. Set $\gamma = 0$ and you get HRP back. Everything in between is a smoothly tunable trade-off between estimation noise and information content.

The same idea generalises beyond the two-block case — see the paper for the recursion at arbitrary hierarchy depth, the connection to Newton's method on the Riccati equation, and the empirical comparisons.

Where to start

SkFolio implementation

Recommended for production use. Hugo Delatte's clean port with a tutorial that walks through the method end-to-end on real data.

CQF slides

Formal write-up — derivation, empirical comparisons, the interpolation argument. A good first read if you want the maths.

Medium article

“Schur Complementary Portfolios Fix Hierarchical Risk Parity.” The plain-language take with the intuition for why HRP underperforms and what the fix changes.

LinkedIn post (paper release)

Author's LinkedIn post announcing the arXiv paper and summarising the unification argument.

precise package

Original reference implementation by the author. The schurmanagers module ships a family of variants (e.g. schur_weak_pm_t0_d0_r025_n50_g100_long_manager) parameterised by interpolation weight and regularisation.

M6 commentary

Note on how the method performed (and didn't) in the M6 forecasting competition.

In the textbooks

Schur complementary portfolios are covered in §12.3.4 of Daniel P. Palomar's Portfolio Optimization, alongside HRP and the global minimum-variance portfolio. The textbook derives the Schur-complement form of the global MV solution and describes the “continuum from hierarchical to minimum-risk” that the method opens up.

Cite

Cotton, P. (2024). “Schur Complementary Allocation: A Unification of Hierarchical Risk Parity and Minimum Variance Portfolios.” arXiv preprint arXiv:2411.05807.
@article{cotton2024schur,
  author  = {Cotton, Peter},
  title   = {Schur Complementary Allocation: A Unification of Hierarchical
             Risk Parity and Minimum Variance Portfolios},
  journal = {arXiv preprint arXiv:2411.05807},
  year    = {2024},
  url     = {https://arxiv.org/abs/2411.05807}
}

Bibliography

Selected works on, citing, or directly extending Schur complementary portfolios.

Foundational

Textbooks

Theory and extensions

Return- and signal-aware variants

Applications and surveys

Implementations

Citation list maintained from Google Scholar forward citations. Working on a related paper or implementation? Open an issue on the schur repo and we'll add it.

This site is intentionally small — it points at the canonical resources rather than duplicating them. For an executable reference, prefer SkFolio; for the maths, the arXiv paper.