# Documentation

### This is machine translation

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

# estimateFrontierLimits

Estimate optimal portfolios at endpoints of efficient frontier

Use the `estimateFrontierLimits` function with a `Portfolio`, `PortfolioCVaR`, or `PortfolioMAD` object to estimate optimal portfolios at endpoints of efficient frontier.

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

## Syntax

``````[pwgt,pbuy,psell] = estimateFrontierLimits(obj)``````
``````[pwgt,pbuy,psell] = estimateFrontierLimits(obj,Choice)``````

## Description

example

``````[pwgt,pbuy,psell] = estimateFrontierLimits(obj)``` estimates optimal portfolios at endpoints of efficient frontier.```

example

``````[pwgt,pbuy,psell] = estimateFrontierLimits(obj,Choice)``` estimates optimal portfolios at endpoints of efficient frontier with an additional option specified for the `Choice` argument.```

## Examples

collapse all

Given portfolio `p`, the `estimateFrontierLimits` function obtains the endpoint portfolios.

```m = [ 0.05; 0.1; 0.12; 0.18 ]; C = [ 0.0064 0.00408 0.00192 0; 0.00408 0.0289 0.0204 0.0119; 0.00192 0.0204 0.0576 0.0336; 0 0.0119 0.0336 0.1225 ]; p = Portfolio; p = setAssetMoments(p, m, C); p = setDefaultConstraints(p); pwgt = estimateFrontierLimits(p); disp(pwgt);```
``` 0.8891 0 0.0369 0 0.0404 0 0.0336 1.0000 ```

Given portfolio `p`, the `estimateFrontierLimits` function obtains the endpoint portfolios.

```m = [ 0.05; 0.1; 0.12; 0.18 ]; C = [ 0.0064 0.00408 0.00192 0; 0.00408 0.0289 0.0204 0.0119; 0.00192 0.0204 0.0576 0.0336; 0 0.0119 0.0336 0.1225 ]; m = m/12; C = C/12; rng(11); AssetScenarios = mvnrnd(m, C, 20000); p = PortfolioCVaR; p = setScenarios(p, AssetScenarios); p = setDefaultConstraints(p); p = setProbabilityLevel(p, 0.95); pwgt = estimateFrontierLimits(p); disp(pwgt);```
``` 0.8454 0.0000 0.0599 0.0000 0.0462 0.0000 0.0485 1.0000 ```

The function `rng`() resets the random number generator to produce the documented results. It is not necessary to reset the random number generator to simulate scenarios.

Given portfolio `p`, the `estimateFrontierLimits` function obtains the endpoint portfolios.

```m = [ 0.05; 0.1; 0.12; 0.18 ]; C = [ 0.0064 0.00408 0.00192 0; 0.00408 0.0289 0.0204 0.0119; 0.00192 0.0204 0.0576 0.0336; 0 0.0119 0.0336 0.1225 ]; m = m/12; C = C/12; rng(11); AssetScenarios = mvnrnd(m, C, 20000); p = PortfolioMAD; p = setScenarios(p, AssetScenarios); p = setDefaultConstraints(p); pwgt = estimateFrontierLimits(p); disp(pwgt);```
``` 0.8815 0.0000 0.0431 0.0000 0.0389 0.0000 0.0365 1.0000 ```

The function `rng`() resets the random number generator to produce the documented results. It is not necessary to reset the random number generator to simulate scenarios.

## Input Arguments

collapse all

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

Indicator which portfolios to obtain at the extreme ends of the efficient frontier, specified as a character vector with values `[]`, `'Both'`, `'Min'`, or `'Max'`. `Choice` specifies various actions with default value `[]`. The options for a `Choice` action are:

• `[]` — Compute both minimum-risk and maximum-return portfolios.

• `'Both'` — Compute both minimum-risk and maximum-return portfolios.

• `'Min'` — Compute minimum-risk portfolio only.

• `'Max'` — Compute maximum-return portfolio only.

Data Types: `char`

## Output Arguments

collapse all

Optimal portfolios at the endpoints of the efficient frontier `TargetReturn`, returned as a `NumAssets`-by-`NumPorts` matrix. `pwgt` is returned for a `Portfolio`, `PortfolioCVaR`, or `PortfolioMAD` input object (`obj`).

Purchases relative to an initial portfolio for optimal portfolios at the endpoints of the efficient frontier, returned as `NumAssets`-by-`NumPorts` matrix.

### Note

If no initial portfolio is specified in `obj.InitPort`, that value is assumed to be `0` such that ```pbuy = max(0, pwgt)``` and `psell = max(0, -pwgt)`.

`pbuy` is returned for a `Portfolio`, `PortfolioCVaR`, or `PortfolioMAD` input object (`obj`).

Sales relative to an initial portfolio for optimal portfolios on the efficient frontier, returned as a `NumAssets`-by-`NumPorts` matrix.

### Note

If no initial portfolio is specified in `obj.InitPort`, that value is assumed to be `0` such that ```pbuy = max(0, pwgt)``` and `psell = max(0, -pwgt)`.

`psell` is returned for `Portfolio`, `PortfolioCVaR`, or `PortfolioMAD` input object (`obj`).

## Tips

You can also use dot notation to estimate the optimal portfolios at the endpoints of the efficient frontier.

`[pwgt, pbuy, psell] = obj.estimateFrontierLimits(Choice);`

﻿