Documentation

# estimateBounds

Estimate global lower and upper bounds for set of portfolios

## 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 for `Portfolio`, `PortfolioCVaR`, or `PortfolioMAD` objects. For details on the respective workflows when using these different objects, see Portfolio Object Workflow, PortfolioCVaR Object Workflow, and PortfolioMAD Object Workflow. NoteThe `estimateBounds` function does not consider cardinality or semicontinuous constraints. For more information, see Working with 'Conditional' BoundType, MinNumAssets, and MaxNumAssets Constraints Using Portfolio Objects. ```

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 = 2×1 -Inf -Inf ```
```ub = 2×1 0 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 = 2×1 -Inf -Inf ```
```ub = 2×1 0 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 = 2×1 -Inf -Inf ```
```ub = 2×1 0 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

Data Types: `object`

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.