Portfolio Construction
Supported Optimizers
Introduction
This page describes the pre-built Portfolio Optimizer models in LEAN. The number of models grows over time. To add a model to LEAN, make a pull request to the GitHub repository. If none of these models perform exactly how you want, create a custom Portfolio Optimizer model.
Maximum Sharpe Ratio Optimizer
The MaximumSharpeRatioPortfolioOptimizer
seeks to maximize the portfolio Sharpe Ratio.
var optimizer = new MaximumSharpeRatioPortfolioOptimizer();
optimizer = MaximumSharpeRatioPortfolioOptimizer()
The following table describes the arguments the model accepts:
Argument | Data Type | Description | Default Value |
---|---|---|---|
minimum_weight lower | double float | The lower bounds on portfolio weights | -1 |
maximum_weight upper | double float | The upper bounds on portfolio weights | 1 |
risk_free_rate riskFreeRate | double float | The risk free rate | 0 |
To view the implementation of this model, see the LEAN GitHub repositoryLEAN GitHub repository.
Minimum Variance Optimizer
The MinimumVariancePortfolioOptimizer
seeks to minimize the portfolio variance and achieve a target return.
var optimizer = new MinimumVariancePortfolioOptimizer();
optimizer = MinimumVariancePortfolioOptimizer()
The following table describes the arguments the model accepts:
Argument | Data Type | Description | Default Value |
---|---|---|---|
minimum_weight lower | double float | The lower bounds on portfolio weights | -1 |
maximum_weight upper | double float | The upper bounds on portfolio weights | 1 |
target_return targetReturn | double float | The target portfolio return | 0.02 (2%) |
To view the implementation of this model, see the LEAN GitHub repositoryLEAN GitHub repository.
Unconstrained Mean Variance Optimizer
The UnconstrainedMeanVariancePortfolioOptimizer
seeks to find the optimal risk-adjusted portfolio that lies on the efficient frontier.
var optimizer = new UnconstrainedMeanVariancePortfolioOptimizer();
optimizer = UnconstrainedMeanVariancePortfolioOptimizer()
To view the implementation of this model, see the LEAN GitHub repositoryLEAN GitHub repository.
Risk Parity Optimizer
The RiskParityPortfolioOptimizer
seeks to equalize the individual risk contribution to the total portfolio risk from each asset.
var optimizer = new RiskParityPortfolioOptimizer();
optimizer = RiskParityPortfolioOptimizer()
The following table describes the arguments the model accepts:
Argument | Data Type | Description | Default Value |
---|---|---|---|
minimum_weight lower | double float | The lower bounds on portfolio weights | 1e-05 |
maximum_weight upper | double float | The upper bounds on portfolio weights | sys.float_info.max Double.MaxValue |
To view the implementation of this model, see the LEAN GitHub repositoryLEAN GitHub repository.