Choose MINLP Solvers for Portfolio Problems

The following sections list the type of Mixed Integer Nonlinear Programming (MINLP) solvers that you can select to find the solution to different portfolio problems using a `Portfolio`, `PortfolioCVaR`, or `PortfolioMAD` object. You can set the solvers using `setSolverMINLP`, where the first input argument, `solverTypeMINLP`, is one of the solvers listed in the tables that follow.

Problems with Cardinality Constraints and/or Conditional Bounds Without Tracking Error Constraints

When solving a mixed-integer problem that uses a `Portfolio`, `PortfolioCVaR`, or `PortfolioMAD` object with cardinality constraints (see `setMinMaxNumAssets`) and/or conditional bounds (see `setBounds`), but without tracking error constraints (see `setTrackingError`), use these solvers with `setSolverMINLP`:

Available Solvers (Use `setSolverMINLP` to specify the solver)
Portfolio ProblemUse Function:Portfolio ObjectPortfolioCVaR ObjectPortfolioMAD Object
Estimate efficient frontier`estimateFrontier(p)`
• `ExtendedCP`

• `OuterApproximation` (default)

Supports extended formulation using the name-value argument ExtendedFormulation.

• `TrustRegionCP`

• `ExtendedCP`

• `OuterApproximation`

• `TrustRegionCP` (default)

• `ExtendedCP`

• `OuterApproximation`

• `TrustRegionCP` (default)

Minimize risk without return constraint`estimateFrontierLimits(p,'min')`
• `ExtendedCP`

• `OuterApproximation` (default)

Supports extended formulation using the name-value argument ExtendedFormulation.

• `TrustRegionCP`

• `ExtendedCP`

• `OuterApproximation`

• `TrustRegionCP` (default)

• `ExtendedCP`

• `OuterApproximation`

• `TrustRegionCP` (default)

Maximize return without risk constraint`estimateFrontierLimits(p,'max')``intlinprog`

Use `IntMainSolverOptions` name-value argument to control `intlinprog` options.

`intlinprog`

Use ` IntMainSolverOptions` name-value argument to control `intlinprog` options.

`intlinprog`

Use `IntMainSolverOptions` name-value argument to control `intlinprog` options.

Minimize risk subject to a return constraint`estimateFrontierByReturn(p,returnTarget)`
• `ExtendedCP`

• `OuterApproximation` (default)

Supports extended formulation using the name-value argument ExtendedFormulation.

• `TrustRegionCP`

• `ExtendedCP`

• `OuterApproximation`

• `TrustRegionCP` (default)

• `ExtendedCP`

• `OuterApproximation`

• `TrustRegionCP` (default)

Maximize return subject to a risk constraint`estimateFrontierByRisk(p,riskTarget)`
• `ExtendedCP`

• `OuterApproximation` (default)

Supports extended formulation using the name-value argument ExtendedFormulation.

• `TrustRegionCP`

• `ExtendedCP`

• `OuterApproximation`

• `TrustRegionCP` (default)

• `ExtendedCP`

• `OuterApproximation`

• `TrustRegionCP` (default)

Maximize Sharpe ratio`estimateMaxSharpeRatio(p)`
• `ExtendedCP`

• `OuterApproximation` (default)

Supports extended formulation using the name-value argument ExtendedFormulation.

• `TrustRegionCP`

• `ExtendedCP`

• `OuterApproximation`

• `TrustRegionCP` (default)

• `ExtendedCP`

• `OuterApproximation`

• `TrustRegionCP` (default)

Optimize custom linear objective`estimateCustomObjectivePortfolio(p,linFun)``intlinprog`

Use `IntMainSolverOptions` name-value argument to control `intlinprog` options.

Not supportedNot supported
Optimize custom quadratic objective`estimateCustomObjectivePortfolio(p,quadFun)`
• `ExtendedCP`

• `OuterApproximation` (default)

Supports extended formulation using the name-value argument ExtendedFormulation.

• `TrustRegionCP`

Not supportedNot supported
Optimize custom nonlinear nonquadratic objective`estimateCustomObjectivePortfolio(p,NLFun)`
• `ExtendedCP`

• `OuterApproximation` (default)

• `TrustRegionCP`

Not supportedNot supported

Problems with Cardinality Constraints and/or Conditional Bounds With Tracking Error Constraints

When solving a mixed-integer problem that uses a `Portfolio`, `PortfolioCVaR`, or `PortfolioMAD` object with cardinality constraints (see `setMinMaxNumAssets`) and/or conditional bounds (see `setBounds`), and with tracking error constraints (see `setTrackingError`), use these solvers with `setSolverMINLP`:

Available Solvers (Use `setSolverMINLP` to specify the solver)
Portfolio ProblemUse Function:Portfolio ObjectPortfolioCVaR ObjectPortfolioMAD Object
Estimate efficient frontier`estimateFrontier(p)`
• `ExtendedCP`

• `OuterApproximation` (default)

Supports extended formulation using the name-value argument ExtendedFormulation.

• `TrustRegionCP`

• `ExtendedCP`

• `OuterApproximation`

• `TrustRegionCP` (default)

• `ExtendedCP`

• `OuterApproximation`

• `TrustRegionCP` (default)

Minimize risk without return constraint`estimateFrontierLimits(p,'min')`
• `ExtendedCP`

• `OuterApproximation` (default)

Supports extended formulation using the name-value argument ExtendedFormulation.

• `TrustRegionCP`

• `ExtendedCP`

• `OuterApproximation`

• `TrustRegionCP` (default)

• `ExtendedCP`

• `OuterApproximation`

• `TrustRegionCP` (default)

Maximize return without risk constraint`estimateFrontierLimits(p,'max')`
• `ExtendedCP`

• `OuterApproximation` (default)

Supports extended formulation using the name-value argument ExtendedFormulation.

• `TrustRegionCP`

• `ExtendedCP`

• `OuterApproximation`

• `TrustRegionCP` (default)

• `ExtendedCP`

• `OuterApproximation`

• `TrustRegionCP` (default)

Minimize risk subject to a return constraint`estimateFrontierByReturn(p,returnTarget)`
• `ExtendedCP`

• `OuterApproximation` (default)

Supports extended formulation using the name-value argument ExtendedFormulation.

• `TrustRegionCP`

• `ExtendedCP`

• `OuterApproximation`

• `TrustRegionCP` (default)

• `ExtendedCP`

• `OuterApproximation`

• `TrustRegionCP` (default)

Maximize return subject to a risk constraint`estimateFrontierByRisk(p,riskTarget)`
• `ExtendedCP`

• `OuterApproximation` (default)

Supports extended formulation using the name-value argument ExtendedFormulation.

• `TrustRegionCP`

• `ExtendedCP`

• `OuterApproximation`

• `TrustRegionCP` (default)

• `ExtendedCP`

• `OuterApproximation`

• `TrustRegionCP` (default)

Maximize Sharpe ratio`estimateMaxSharpeRatio(p)`
• `ExtendedCP`

• `OuterApproximation` (default)

Supports extended formulation using the name-value argument ExtendedFormulation.

• `TrustRegionCP`

• `ExtendedCP`

• `OuterApproximation`

• `TrustRegionCP` (default)

• `ExtendedCP`

• `OuterApproximation`

• `TrustRegionCP` (default)

Optimize custom objective`estimateCustomObjectivePortfolio(p,linFun)`Not supportedNot supportedNot supported