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 Problem | Use Function: | Portfolio Object | PortfolioCVaR Object | PortfolioMAD Object |
Estimate efficient frontier | estimateFrontier(p) (See |
|
|
|
Minimize risk without return constraint | estimateFrontierLimits(p,'min') (See
|
|
|
|
Maximize return without risk constraint | estimateFrontierLimits(p,'max') (See
| intlinprog Use
| intlinprog Use
| intlinprog Use
|
Minimize risk subject to a return constraint | estimateFrontierByReturn(p,returnTarget) (See
|
|
|
|
Maximize return subject to a risk constraint | estimateFrontierByRisk(p,riskTarget) (See
|
|
|
|
Maximize Sharpe ratio | estimateMaxSharpeRatio(p) (See
|
|
|
|
Optimize custom linear objective | estimateCustomObjectivePortfolio(p,linFun) | intlinprog Use
| Not supported | Not supported |
Optimize custom quadratic objective | estimateCustomObjectivePortfolio(p,quadFun) |
| Not supported | Not supported |
Optimize custom nonlinear nonquadratic objective | estimateCustomObjectivePortfolio(p,NLFun) |
| Not supported | Not 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 Problem | Use Function: | Portfolio Object | PortfolioCVaR Object | PortfolioMAD Object |
Estimate efficient frontier | estimateFrontier(p) (See |
|
|
|
Minimize risk without return constraint | estimateFrontierLimits(p,'min') (See
|
|
|
|
Maximize return without risk constraint | estimateFrontierLimits(p,'max') (See
|
|
|
|
Minimize risk subject to a return constraint | estimateFrontierByReturn(p,returnTarget) (See
|
|
|
|
Maximize return subject to a risk constraint | estimateFrontierByRisk(p,riskTarget) (See
|
|
|
|
Maximize Sharpe ratio | estimateMaxSharpeRatio(p) (See
|
|
|
|
Optimize custom objective | estimateCustomObjectivePortfolio(p,linFun) | Not supported | Not supported | Not supported |
See Also
Portfolio
| PortfolioCVaR
| PortfolioMAD
Related Examples
- Mixed-Integer CVaR Portfolio Optimization Problem
- Mixed-Integer MAD Portfolio Optimization Problem
- Mixed-Integer Mean-Variance Portfolio Optimization Problem
More About
- Portfolio Object
- Portfolio Optimization Theory
- Portfolio Object Workflow
- Supported Constraints for Portfolio Optimization Using Portfolio Objects
- Supported Constraints for Portfolio Optimization Using PortfolioCVaR Object
- Supported Constraints for Portfolio Optimization Using PortfolioMAD Object
- When to Use Portfolio Objects Over Optimization Toolbox