skfolio/skfolio
Python library for portfolio optimization built on top of scikit-learn
What it solves
Portfolio optimization often suffers from issues like high sensitivity to input parameters, weight concentration, and poor out-of-sample performance. This library provides a unified, machine-learning-based framework to build, validate, and fine-tune portfolio models while mitigating common pitfalls like data leakage and overfitting.
How it works
Built on top of the scikit-learn API, the library allows users to treat portfolio construction as a machine learning pipeline. It provides a wide array of estimators for expected returns, covariance, and risk measures, alongside tools for cross-validation, hyper-parameter tuning (via grid or randomized search), and factor model construction. It supports various optimization strategies, including convex optimization, hierarchical clustering, and ensemble methods.
Who it’s for
Quantitative researchers, financial analysts, and data scientists who need a robust, standardized way to perform portfolio optimization and risk management using familiar scikit-learn workflows.
Highlights
- Fully compatible with scikit-learn's API, including pipelines, cross-validation, and hyper-parameter optimization.
- Extensive library of risk measures, including CVaR, drawdown-based metrics, and entropic risk.
- Advanced prior estimators such as Black-Litterman, characteristics-based factor models, and various covariance shrinkage techniques.
- Built-in support for complex constraints like transaction costs, group-based weights, and cardinality limits.
- Includes tools for stress testing, synthetic data generation, and copula-based distribution modeling.
Related
- Project
- Project
- Project
- Project
- Project