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
$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]$:
- $\gamma = 0$ — plain HRP: ignore $B$, allocate top-down on the diagonal blocks.
- $\gamma = 1$ — exact global MVP, recovered hierarchically via the block-inverse identity.
- $\gamma \in (0, 1)$ — pay attention to $B$ in proportion to how much you trust your covariance estimate. Empirically the sweet spot is interior: noisy $\hat\Sigma$ rewards partial trust in the off-diagonal block, not full trust.
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
- Cotton, P. (2024). Schur Complementary Allocation: A Unification of Hierarchical Risk Parity and Minimum Variance Portfolios. arXiv:2411.05807. The canonical write-up.
- Cotton, P. (2023). Schur Complementary Portfolios — CQF slides. PDF. Earlier presentation of the same material.
- López de Prado, M. (2016). “Building Diversified Portfolios that Outperform Out of Sample.” Journal of Portfolio Management 42(4), 59–69. The HRP paper that Schur complementary portfolios extend / fix.
Textbooks
- Palomar, D. P. Portfolio Optimization, §12.3.4 “Schur complementary portfolios”. Online edition.
Theory and extensions
- Wuebben, B. J. (2026). Beyond De Prado and Cotton: Hierarchical and Iterative Methods for General Mean-Variance Portfolios. arXiv:2604.23833. Introduces HRP-μ, HRP-Σμ, and CRISP — signal-aware extensions of both HRP and Schur.
- Knežević, P., and Šimović, P. P. (2026). Bridging Risk Parity and Variance Optimization: A Schur Complement Approach to Recursive Asset Allocation. The Journal of FinTech.
- Mograby, G. (2025). Hierarchical Minimum Variance Portfolios: A Theoretical and Algorithmic Approach. arXiv:2503.12328. Develops the hierarchical-graph view of MVP, using Schur complements.
Return- and signal-aware variants
- Alonso, N. I. (2025). Return-Adjusted Hierarchical Risk Parity and Schur Portfolios: A Comprehensive Theoretical and Empirical Study. SSRN 5370624.
- Alonso, N. I. (2026). Reinforcement Learning Portfolio Optimization (RLPO): From Markowitz to Risk-Sensitive Control. SSRN 6447220.
Applications and surveys
- Bergmeier, J. (2026). The risk parity zoo: Which risk contributions should multi-asset investors equalize?. SSRN 6536678. Out-of-sample comparison of risk-based asset-allocation models.
- Dominguez, A. R. (2025). Causal Portfolio Optimization: Principles and Sensitivity-Based Solutions. arXiv:2504.05743.
- Chitra, T., Diamandis, T., Sheng, N., and Sterle, L. (2025). Perpetual demand lending pools. arXiv:2502.06028. DeFi application area citing Schur complementary methods.
Implementations
- SkFolio (Hugo Delatte) — recommended for production use. Tutorial walks through Schur complementary allocation on real data.
- Nicolini, C., Manzi, M., and Delatte, H. (2025). skfolio: Portfolio Optimization in Python. arXiv:2507.04176. The accompanying paper for the SkFolio package.
-
precise —
original reference implementation with parameterised variants
(
schurmanagers).
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.