Documentation

This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English verison of the page.

Note: This page has been translated by MathWorks. Please click here
To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

estimateBounds

Estimate global lower and upper bounds for set of portfolios

Use the estimateBounds function with a Portfolio, PortfolioCVaR, or PortfolioMAD object to estimate global lower and upper bounds for a set of portfolios.

For details on the respective workflows when using these different objects, see Portfolio Object Workflow, PortfolioCVaR Object Workflow, and PortfolioMAD Object Workflow.

Syntax

[glb,gub,isbounded] = estimateBounds(obj)
[glb,gub,isbounded] = estimateBounds(obj,obtainExactBounds)

Description

example

[glb,gub,isbounded] = estimateBounds(obj) estimates global lower and upper bounds for set of portfolios.

example

[glb,gub,isbounded] = estimateBounds(obj,obtainExactBounds) estimates global lower and upper bounds for set of portfolios with an additional option specified for obtainExactBounds.

Examples

collapse all

Create an unbounded portfolio set.

p = Portfolio('AInequality', [1 -1; 1 1 ], 'bInequality', 0);
[lb, ub, isbounded] = estimateBounds(p)
lb = 

  -Inf
  -Inf

ub = 

   1.0e-08 *

   -0.3712
       Inf

isbounded = logical
   0

The estimateBounds function returns (possibly infinite) bounds and sets the isbounded flag to false. The result shows which assets are unbounded so that you can apply bound constraints as necessary.

Create an unbounded portfolio set.

p = PortfolioCVaR('AInequality', [1 -1; 1 1 ], 'bInequality', 0);
[lb, ub, isbounded] = estimateBounds(p)
lb = 

  -Inf
  -Inf

ub = 

   1.0e-08 *

   -0.3712
       Inf

isbounded = logical
   0

The estimateBounds function returns (possibly infinite) bounds and sets the isbounded flag to false. The result shows which assets are unbounded so that you can apply bound constraints as necessary.

Create an unbounded portfolio set.

p = PortfolioMAD('AInequality', [1 -1; 1 1 ], 'bInequality', 0);
[lb, ub, isbounded] = estimateBounds(p)
lb = 

  -Inf
  -Inf

ub = 

   1.0e-08 *

   -0.3712
       Inf

isbounded = logical
   0

The estimateBounds function returns (possibly infinite) bounds and sets the isbounded flag to false. The result shows which assets are unbounded so that you can apply bound constraints as necessary.

Input Arguments

collapse all

Object for portfolio, specified using Portfolio, PortfolioCVaR, or PortfolioMAD object. For more information on creating a portfolio object, see

Flag to specify whether to solve for all bounds or to accept specified bounds whenever available, specified as a logical with values of true or false. If bounds are known, set obtainExactBounds to false to accept known bounds. The default for obtainExactBounds is true.

Data Types: logical

Output Arguments

collapse all

Global lower bounds for portfolio set, returned as vector for a Portfolio, PortfolioCVaR, or PortfolioMAD input object (obj).

Global upper bounds for portfolio set, returned as vector for a Portfolio, PortfolioCVaR, or PortfolioMAD input object (obj).

Indicator for whether portfolio set is empty ([]), bounded (true), or unbounded (false), returned as a logical.

Note

By definition, any portfolio set must be nonempty and bounded:

  • If the set is empty, isbounded = [ ].

  • If the set is nonempty and unbounded, isbounded = false.

  • If the set is nonempty and bounded, isbounded = true.

  • If the set is empty, glb and gub are set to NaN vectors.

An isbounded value is returned for Portfolio, PortfolioCVaR, or PortfolioMAD input object (obj).

Tips

  • You can also use dot notation to estimate the global lower and upper bounds for a given set of portfolios.

    [glb, gub, isbounded] = obj.estimateBounds;

  • Estimated bounds are accurate in most cases to within 1.0e-8. If you intend to use these bounds directly in a portfolio object, ensure that if you impose such bound constraints, a lower bound of 0 is probably preferable to a lower bound of, for example, 1.0e-10 for portfolio weights.

Introduced in R2011a

Was this topic helpful?