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.

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.

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.

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