book
Checkout our new book! Hands on AI Trading with Python, QuantConnect, and AWS Learn More arrow

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.

Select Language:
optimizer = MaximumSharpeRatioPortfolioOptimizer()

The following table describes the arguments the model accepts:

ArgumentData TypeDescriptionDefault Value
minimum_weightfloatThe lower bounds on portfolio weights-1
maximum_weightfloatThe upper bounds on portfolio weights1
risk_free_ratefloatThe risk free rate0

To view the implementation of this model, see the LEAN GitHub repository.

Minimum Variance Optimizer

The MinimumVariancePortfolioOptimizer seeks to minimize the portfolio variance and achieve a target return.

Select Language:
optimizer = MinimumVariancePortfolioOptimizer()

The following table describes the arguments the model accepts:

ArgumentData TypeDescriptionDefault Value
minimum_weightfloatThe lower bounds on portfolio weights-1
maximum_weightfloatThe upper bounds on portfolio weights1
target_returnfloatThe target portfolio return0.02 (2%)

To view the implementation of this model, see the LEAN GitHub repository.

Unconstrained Mean Variance Optimizer

The UnconstrainedMeanVariancePortfolioOptimizer seeks to find the optimal risk-adjusted portfolio that lies on the efficient frontier.

Select Language:
optimizer = UnconstrainedMeanVariancePortfolioOptimizer()

To view the implementation of this model, see the LEAN GitHub repository.

Risk Parity Optimizer

The RiskParityPortfolioOptimizer seeks to equalize the individual risk contribution to the total portfolio risk from each asset.

Select Language:
optimizer = RiskParityPortfolioOptimizer()

The following table describes the arguments the model accepts:

ArgumentData TypeDescriptionDefault Value
minimum_weightfloatThe lower bounds on portfolio weights1e-05
maximum_weightfloatThe upper bounds on portfolio weightssys.float_info.max

To view the implementation of this model, see the LEAN GitHub repository.

You can also see our Videos. You can also get in touch with us via Discord.

Did you find this page helpful?

Contribute to the documentation: