graph LR
Base_Portfolio_Optimizer["Base Portfolio Optimizer"]
Convex_Portfolio_Optimizer["Convex Portfolio Optimizer"]
Hierarchical_Portfolio_Optimizer["Hierarchical Portfolio Optimizer"]
Ensemble_Portfolio_Optimizer["Ensemble Portfolio Optimizer"]
Financial_Parameter_Estimators["Financial Parameter Estimators"]
Clustering_Algorithms["Clustering Algorithms"]
Optimization_Utilities["Optimization Utilities"]
Portfolio_Constructor["Portfolio Constructor"]
Convex_Portfolio_Optimizer -- "inherits from" --> Base_Portfolio_Optimizer
Hierarchical_Portfolio_Optimizer -- "inherits from" --> Base_Portfolio_Optimizer
Ensemble_Portfolio_Optimizer -- "inherits from" --> Base_Portfolio_Optimizer
Base_Portfolio_Optimizer -- "interacts with" --> Portfolio_Constructor
Convex_Portfolio_Optimizer -- "consumes" --> Financial_Parameter_Estimators
Convex_Portfolio_Optimizer -- "utilizes" --> Optimization_Utilities
Convex_Portfolio_Optimizer -- "interacts with" --> Portfolio_Constructor
Hierarchical_Portfolio_Optimizer -- "leverages" --> Clustering_Algorithms
Hierarchical_Portfolio_Optimizer -- "delegates to" --> Convex_Portfolio_Optimizer
Hierarchical_Portfolio_Optimizer -- "interacts with" --> Portfolio_Constructor
Ensemble_Portfolio_Optimizer -- "uses as meta-optimizer" --> Convex_Portfolio_Optimizer
Ensemble_Portfolio_Optimizer -- "interacts with" --> Portfolio_Constructor
Financial_Parameter_Estimators -- "provides input to" --> Convex_Portfolio_Optimizer
Financial_Parameter_Estimators -- "provides input to" --> Hierarchical_Portfolio_Optimizer
Financial_Parameter_Estimators -- "provides input to" --> Ensemble_Portfolio_Optimizer
Clustering_Algorithms -- "provides services to" --> Hierarchical_Portfolio_Optimizer
Optimization_Utilities -- "provides services to" --> Convex_Portfolio_Optimizer
Portfolio_Constructor -- "receives output from" --> Base_Portfolio_Optimizer
Portfolio_Constructor -- "receives output from" --> Convex_Portfolio_Optimizer
Portfolio_Constructor -- "receives output from" --> Hierarchical_Portfolio_Optimizer
Portfolio_Constructor -- "receives output from" --> Ensemble_Portfolio_Optimizer
The Portfolio Optimization Engine subsystem is the core decision-making unit, implementing diverse algorithms and strategies to construct optimal portfolios. It processes refined financial parameters from various estimators and models to solve complex optimization problems.
The abstract base class defining the common interface and ensuring Scikit-learn API compliance for all portfolio optimization algorithms. It serves as the foundational contract for the entire optimization engine, promoting extensibility and reusability.
Related Classes/Methods:
skfolio.optimization(1:1)
Implements and manages various convex optimization problems, including handling constraints and specific algorithms like Mean-Risk optimization. It consumes financial parameters to solve for optimal portfolio weights, forming a central part of the engine's algorithmic capabilities.
Related Classes/Methods:
skfolio.optimization.convex(1:1)
Focuses on optimization strategies that leverage hierarchical clustering to structure the portfolio problem, often delegating sub-problems to other optimizers. This component enables more complex, structured approaches to portfolio construction.
Related Classes/Methods:
skfolio.optimization.cluster(1:1)
Implements ensemble methods for portfolio optimization, combining the outputs of multiple base optimizers using a meta-optimizer to achieve more robust or diversified results. This represents an advanced strategy for enhancing optimization outcomes.
Related Classes/Methods:
skfolio.optimization.ensemble(1:1)
Provides refined financial parameters (e.g., expected returns, covariance matrices, prior beliefs) that are essential inputs for the various portfolio optimization algorithms. This component acts as the data provider for the optimization engine.
Related Classes/Methods:
skfolio.estimators(1:1)
Offers functionalities for hierarchical clustering and distance metric calculations, which are crucial for structuring problems within hierarchical portfolio optimization strategies. This component supports specialized optimization approaches.
Related Classes/Methods:
skfolio.cluster(1:1)skfolio.utils.cluster(1:1)
A collection of helper functions and tools for data preparation, constraint formulation, and other common tasks required by the various optimization algorithms. This centralizes common logic and promotes code reusability across optimizers.
Related Classes/Methods:
skfolio.utils(1:1)
Responsible for taking the optimized weights from the portfolio optimization algorithms and constructing the final portfolio object. This component represents the output interface of the optimization engine, enabling subsequent evaluation and analysis.
Related Classes/Methods:
skfolio.portfolio(1:1)