Implementations
Three libraries: batch, streaming, estimation.
Use skfolio when the universe and covariance are fixed (backtests, batch rebalancing). Use allocation when assets arrive, leave, and update one observation at a time. Use precise for the covariance machinery itself: online estimators and the Schur pseudo-likelihood for scoring them.
skfolio: batch, fixed universe
The scikit-learn-ecosystem portfolio library ships a SchurComplementary
optimizer. Pipelines, cross-validation, and model selection come for free from the sklearn
idiom. The library is described in Nicolini, Manzi & Delatte (2025),
arXiv:2507.04176.
- Install:
pip install skfolio - Repository: github.com/skfolio/skfolio
- Start here: the Schur Complementary tutorial
allocation: streaming, changing universe
Online Schur allocation for universes that evolve: assets are ordered by Fiedler
seriation, covariance is maintained incrementally, and names can enter or leave without a
refit. The Fiedler vector is continuous in the covariance, and the order changes only
when two of its coordinates cross, each crossing a finite jump in the allocation; the lower
turnover is empirical, not a continuity result. Its SchurBridge is the pair-form engine,
with constructors named by their endpoints:
hrp_to_min_variance, hmv_to_min_variance,
herc_to_min_variance, nco_to_min_variance,
inverse_variance_to_min_variance, each exact at both ends, and a
companion of 'vol' or 'mean' for maximum
diversification or tangency. The older SchurComplementary is kept as the
collapsed encoding that matches skfolio to machine precision.
- Install:
pip install allocation - Repository: github.com/microprediction/allocation
- Documentation: allocation.microprediction.org
precise: online covariance and the Schur pseudo-likelihood
The estimation layer underneath: sklearn-style online covariance and correlation
estimators behind one partial_fit contract (the online complement of
sklearn.covariance), and assessors, among them the Schur pseudo-likelihood, which scores covariance
estimates reliably in the undersampled regime where the plain held-out likelihood fails.
- Install:
pip install precise - Repository: github.com/microprediction/precise
- Documentation: precise.microprediction.org