## Documentation Center |

On this page… |
---|

In some cases, you may want to validate either your inputs to, or outputs from, a portfolio optimization problem. Although most error checking that occurs during the problem setup phase catches most difficulties with a portfolio optimization problem, the processes to validate portfolio sets and portfolios are time consuming and are best done offline. Consequently, the portfolio optimization tools have specialized methods to validate portfolio sets and portfolios.

Since it is necessary and sufficient that your portfolio set
must be a nonempty, closed, and bounded set to have a valid portfolio
optimization problem, the method `estimateBounds` lets
you examine your portfolio set to determine if it is nonempty and,
if nonempty, whether it is bounded. Suppose you have the following
portfolio set which is an empty set because the initial portfolio
at `0` is too far from a portfolio that satisfies
the budget and turnover constraint:

p = Portfolio('NumAssets', 3, 'Budget', 1); p = p.setTurnover(0.3, 0);

If a portfolio set is empty, `estimateBounds` returns `NaN` bounds
and sets the `isbounded` flag to `[]`:

[lb, ub, isbounded] = p.estimateBounds

lb = NaN NaN NaN ub = NaN NaN NaN isbounded = []

Suppose you create an unbounded portfolio set as follows:

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

lb = -Inf -Inf ub = 1.0e-008 * -0.3712 Inf isbounded = 0

In this case, `estimateBounds` 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.

Finally, suppose you created a portfolio set that is both nonempty
and bounded. `estimateBounds` not only validates the set,
but also obtains tighter bounds which is useful if you are concerned
with the actual range of portfolio choices for individual assets in
your portfolio set:

p = Portfolio; p = p.setBudget(1,1); p = p.setBounds([ -0.1; 0.2; 0.3; 0.2 ], [ 0.5; 0.3; 0.9; 0.8 ]); [lb, ub, isbounded] = p.estimateBounds

lb = -0.1000 0.2000 0.3000 0.2000 ub = 0.3000 0.3000 0.7000 0.6000 isbounded = 1

In this example, all but the second asset have tighter upper bounds than the input upper bound implies.

Given a portfolio set specified in a Portfolio object, you often
want to check if specific portfolios are feasible with respect to
the portfolio set. This can occur with, for example, initial portfolios
and with portfolios obtained from other procedures. The `checkFeasibility` method
determines whether a collection of portfolios is feasible. Suppose
you perform the following portfolio optimization and want to determine
if the resultant efficient portfolios are feasible relative to a modified
problem.

First, set up a problem in the Portfolio object `p`,
estimate efficient portfolios in `pwgt`, and then
confirm that these portfolios are feasible relative to the initial
problem:

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 = p.setAssetMoments(m, C); p = p.setDefaultConstraints; pwgt = p.estimateFrontier; p.checkFeasibility(pwgt)

ans = 1 1 1 1 1 1 1 1 1 1

Next, set up a different portfolio problem that starts with the initial problem with an additional a turnover constraint and an equally weighted initial portfolio:

q = p.setTurnover(0.3, 0.25); q.checkFeasibility(pwgt)

ans = 0 0 0 1 1 0 0 0 0 0

In
this case, only two of the ten efficient portfolios from the initial
problem are feasible relative to the new problem in Portfolio object `q`.
Solving the second problem using `checkFeasibility` demonstrates
that the efficient portfolio for Portfolio object `q` is
feasible relative to the initial problem:

qwgt = q.estimateFrontier; p.checkFeasibility(qwgt)

ans = 1 1 1 1 1 1 1 1 1 1

`checkFeasibility` | `estimateBounds` | `Portfolio`

- Constructing the Portfolio Object
- Working with Portfolio Constraints
- Estimate Efficient Portfolios
- Estimate Efficient Frontiers
- Asset Allocation
- Portfolio Optimization Examples

Was this topic helpful?