# skfolio > Python library for portfolio optimization, factor model construction, and risk management, built on top of scikit-learn: create, fine-tune, cross-validate, and stress-test portfolio models. 2026, skfolio developers (BSD License) ## Pages in this subsection - [User Guide](https://skfolio.org/user_guide/index.html.md): Comprehensive user guide for skfolio: step-by-step tutorials to install, configure, and use the Python library for portfolio optimization, factor model construction, and risk management. - [Installation](https://skfolio.org/user_guide/install.html.md): `skfolio` is available on PyPI and can be installed with: - [Optimization](https://skfolio.org/user_guide/optimization.html.md): The optimization module implements a set of methods intended for portfolio optimization. - [Portfolio](https://skfolio.org/user_guide/portfolio.html.md): `Portfolio` classes implement a large set of attributes and methods intended for - [Population](https://skfolio.org/user_guide/population.html.md): A `Population` is a list of portfolios (`Portfolio` - [Prior Estimator](https://skfolio.org/user_guide/prior.html.md): A Prior Estimator in `skfolio` fits a `ReturnDistribution` containing your - [Expected Return Estimator](https://skfolio.org/user_guide/expected_returns.html.md): An expected return estimator estimates the expected returns (`mu`) of - [Variance Estimator](https://skfolio.org/user_guide/variance.html.md): A variance estimator estimates the variance vector of the - [Covariance Estimator](https://skfolio.org/user_guide/covariance.html.md): A covariance estimator estimates the covariance matrix of the - [Factor Models](https://skfolio.org/user_guide/factor_models.html.md): This guide covers skfolio’s factor model implementations, their API and their - [Distance Estimator](https://skfolio.org/user_guide/distance.html.md): A distance estimator estimates the codependence and distance - [Clustering Estimators](https://skfolio.org/user_guide/cluster.html.md): The `skfolio.cluster` module complements `sklearn.cluster` with additional clustering - [Uncertainty Set Estimator](https://skfolio.org/user_guide/uncertainty_set.html.md): An uncertainty set estimator builds the region in which a - [Pre-Selection Transformers](https://skfolio.org/user_guide/pre_selection.html.md): A Pre-Selection transformer performs a pre-selection on the - [Cross-Sectional Transformers](https://skfolio.org/user_guide/cross_sectional_transformers.html.md): A Cross-Sectional Transformer normalizes each value - [Model Selection](https://skfolio.org/user_guide/model_selection.html.md): The Model Selection module extends `sklearn.model_selection` by adding additional - [Backtesting and Evaluation](https://skfolio.org/user_guide/backtesting_and_evaluation.html.md): In `skfolio`, portfolio construction methods produce **target weights** that specify - [Hyper-Parameters Tuning](https://skfolio.org/user_guide/hyper_parameters_tuning.html.md): Hyper-parameters tuning in `skfolio` follows the same API as `scikit-learn`. - [Online Learning](https://skfolio.org/user_guide/online_learning.html.md): `skfolio` provides dedicated online utilities for estimators that support - [Metadata Routing](https://skfolio.org/user_guide/metadata_routing.html.md): This document shows how you can use the metadata routing mechanism to route metadata - [Datasets](https://skfolio.org/user_guide/datasets.html.md): `skfolio` comes with three native datasets available via: - [Data Preparation](https://skfolio.org/user_guide/data_preparation.html.md): Most `fit` methods of `skfolio` estimators take the assets returns as input `X`. - [Asset Data Representation](https://skfolio.org/user_guide/data_representation.html.md): The choice of data structure, data container and missing-data handling matters - [Migration Guide](https://skfolio.org/user_guide/migration.html.md): `skfolio` follows semantic versioning. The public API remains ## Optional - [Top-level llms.txt](https://skfolio.org/llms.txt): Complete documentation index.