Implementations

Three maintained libraries. They differ in setting, not in quality.

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 when what you need is 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. Described in Nicolini, Manzi & Delatte (2025), arXiv:2507.04176.

allocation — streaming, changing universe

Online Schur allocation for universes that evolve: assets are ordered by Fiedler seriation (a smooth function of the covariance, so partial_fit stays low-turnover), covariance is maintained incrementally, and names can enter or leave without a refit.

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), including Schur covariance estimators with the γ dial, and assessors — among them the Schur pseudo-likelihood, which scores covariance estimates reliably in the undersampled regime where the plain held-out likelihood fails.

New implementation, port, or integration? Open an issue on microprediction/schur and it will be added here.