Validate the Portfolio Problem for Portfolio Object
Sometimes, 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. So, the portfolio optimization tools have specialized functions to validate
portfolio sets and portfolios. For information on the workflow when using
Portfolio objects, see Portfolio Object Workflow.
Validating a Portfolio Set
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
estimateBounds function lets you
examine your portfolio set to determine if it is nonempty and, if nonempty, whether
it is bounded. Suppose that 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 = setTurnover(p, 0.3, 0);
If a portfolio set is empty, estimateBounds returns
NaN bounds and sets the isbounded flag to
[]:
[lb, ub, isbounded] = estimateBounds(p)
lb =
NaN
NaN
NaN
ub =
NaN
NaN
NaN
isbounded =
[]Suppose that you create an unbounded portfolio set as follows:
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
0estimateBounds 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 that you created a portfolio set that is both nonempty and
bounded. estimateBounds not only validates
the set, but also obtains tighter bounds which are useful if you are concerned with
the actual range of portfolio choices for individual assets in your portfolio
set:
p = Portfolio;
p = setBudget(p, 1,1);
p = setBounds(p, [ -0.1; 0.2; 0.3; 0.2 ], [ 0.5; 0.3; 0.9; 0.8 ]);
[lb, ub, isbounded] = estimateBounds(p)lb =
-0.1000
0.2000
0.3000
0.2000
ub =
0.3000
0.3000
0.7000
0.6000
isbounded =
logical
1In this example, all but the second asset has tighter upper bounds than the input upper bound implies.
Validating Portfolios
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 function
determines whether a collection of portfolios is feasible. Suppose that 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 = setAssetMoments(p, m, C);
p = setDefaultConstraints(p);
pwgt = estimateFrontier(p);
checkFeasibility(p, pwgt)ans =
1 1 1 1 1 1 1 1 1 1Next, 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 = setTurnover(p, 0.3, 0.25); checkFeasibility(q, pwgt)
ans =
0 0 0 1 1 0 0 0 0 0q.
Solving the second problem using checkFeasibility demonstrates that
the efficient portfolio for Portfolio object q
is feasible relative to the initial problem:
qwgt = estimateFrontier(q); checkFeasibility(p, qwgt)
ans =
1 1 1 1 1 1 1 1 1 1See Also
Portfolio | estimateBounds | checkFeasibility
Topics
- Creating the Portfolio Object
- Working with Portfolio Constraints Using Defaults
- Estimate Efficient Portfolios for Entire Efficient Frontier for Portfolio Object
- Estimate Efficient Frontiers for Portfolio Object
- Asset Allocation Case Study
- Portfolio Optimization Examples Using Financial Toolbox
- Portfolio Optimization with Semicontinuous and Cardinality Constraints
- Black-Litterman Portfolio Optimization Using Financial Toolbox
- Portfolio Optimization Using Factor Models
- Portfolio Optimization Using Social Performance Measure
- Diversify Portfolios Using Custom Objective
- Portfolio Object
- Portfolio Optimization Theory
- Portfolio Object Workflow