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:

ArgumentData TypeDescriptionDefault Value
minimum_weightlowerdoublefloatThe lower bounds on portfolio weights-1
maximum_weightupperdoublefloatThe upper bounds on portfolio weights1
risk_free_rateriskFreeRatedoublefloatThe risk free rate0

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:

ArgumentData TypeDescriptionDefault Value
minimum_weightlowerdoublefloatThe lower bounds on portfolio weights-1
maximum_weightupperdoublefloatThe upper bounds on portfolio weights1
target_returntargetReturndoublefloatThe target portfolio return0.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:

ArgumentData TypeDescriptionDefault Value
minimum_weightlowerdoublefloatThe lower bounds on portfolio weights1e-05
maximum_weightupperdoublefloatThe upper bounds on portfolio weightssys.float_info.maxDouble.MaxValue

To view the implementation of this model, see the LEAN GitHub repositoryLEAN 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: