Contents
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(historicalReturns);
optimizer = UnconstrainedMeanVariancePortfolioOptimizer(historical_returns)
The following table describes the arguments the model accepts:
Argument | Data Type | Description | Default Value |
---|---|---|---|
historicalReturns | double[,] DataFrame | Matrix of annualized historical returns where each column represents a security and each row returns for the given date/time (size: K x N) | |
expectedReturns | double[] Series | Array of double with the portfolio annualized expected returns (size: K x 1) | null None |
covariance | double[,] DataFrame | Multi-dimensional array of double with the portfolio covariance of annualized returns (size: K x K) | null None |
If you don't provide an argument for expectedReturns
or covariance
, it's calculated based on the historicalReturns
.
To view the implementation of this model, see the LEAN GitHub repositoryLEAN GitHub repository.