The final element for a complete specification of a portfolio optimization problem is the set of feasible portfolios, which is called a portfolio set. A portfolio set $$X\subset {R}^{n}$$ is specified by construction as the intersection of sets formed by a collection of constraints on portfolio weights. A portfolio set necessarily and sufficiently must be a nonempty, closed, and bounded set.

When setting up your portfolio set, ensure that the portfolio
set satisfies these conditions. The most basic or "default"
portfolio set requires portfolio weights to be nonnegative (using
the lower-bound constraint) and to sum to `1`

(using
the budget constraint). For information on the workflow when using
Portfolio objects, see Portfolio Object Workflow.

The "default" portfolio problem has two constraints on portfolio weights:

Portfolio weights must be nonnegative.

Portfolio weights must sum to

`1`

.

Implicitly, these constraints imply that portfolio
weights are no greater than `1`

, although this is
a superfluous constraint to impose on the problem.

Given a portfolio optimization problem with `NumAssets`

= `20`

assets,
use the `Portfolio`

function
to set up a default problem and explicitly set bounds and budget constraints:

p = Portfolio('NumAssets', 20, 'LowerBound', 0, 'Budget', 1); disp(p);

Portfolio with properties: BuyCost: [] SellCost: [] RiskFreeRate: [] AssetMean: [] AssetCovar: [] TrackingError: [] TrackingPort: [] Turnover: [] BuyTurnover: [] SellTurnover: [] Name: [] NumAssets: 20 AssetList: [] InitPort: [] AInequality: [] bInequality: [] AEquality: [] bEquality: [] LowerBound: [20x1 double] UpperBound: [] LowerBudget: 1 UpperBudget: 1 GroupMatrix: [] LowerGroup: [] UpperGroup: [] GroupA: [] GroupB: [] LowerRatio: [] UpperRatio: []

An alternative approach is to use the `setDefaultConstraints`

function.
If the number of assets is already known in a Portfolio object, use `setDefaultConstraints`

with no arguments
to set up the necessary bound and budget constraints. Suppose that
you have 20 assets to set up the portfolio set for a default problem:

```
p = Portfolio('NumAssets', 20);
p = setDefaultConstraints(p);
disp(p);
```

Portfolio with properties: BuyCost: [] SellCost: [] RiskFreeRate: [] AssetMean: [] AssetCovar: [] TrackingError: [] TrackingPort: [] Turnover: [] BuyTurnover: [] SellTurnover: [] Name: [] NumAssets: 20 AssetList: [] InitPort: [] AInequality: [] bInequality: [] AEquality: [] bEquality: [] LowerBound: [20x1 double] UpperBound: [] LowerBudget: 1 UpperBudget: 1 GroupMatrix: [] LowerGroup: [] UpperGroup: [] GroupA: [] GroupB: [] LowerRatio: [] UpperRatio: []

If the number of assets is unknown, `setDefaultConstraints`

accepts `NumAssets`

as
an optional argument to form a portfolio set for a default problem.
Suppose that you have 20 assets:

p = Portfolio; p = setDefaultConstraints(p, 20); disp(p);

Portfolio with properties: BuyCost: [] SellCost: [] RiskFreeRate: [] AssetMean: [] AssetCovar: [] TrackingError: [] TrackingPort: [] Turnover: [] BuyTurnover: [] SellTurnover: [] Name: [] NumAssets: 20 AssetList: [] InitPort: [] AInequality: [] bInequality: [] AEquality: [] bEquality: [] LowerBound: [20x1 double] UpperBound: [] LowerBudget: 1 UpperBudget: 1 GroupMatrix: [] LowerGroup: [] UpperGroup: [] GroupA: [] GroupB: [] LowerRatio: [] UpperRatio: []

`Portfolio`

| `setBounds`

| `setBudget`

| `setDefaultConstraints`

| `setEquality`

| `setGroupRatio`

| `setGroups`

| `setInequality`

| `setOneWayTurnover`

| `setTrackingError`

| `setTrackingPort`

| `setTurnover`

- Working with Bound Constraints Using Portfolio Object
- Working with Budget Constraints Using Portfolio Object
- Working with Group Constraints Using Portfolio Object
- Working with Group Ratio Constraints Using Portfolio Object
- Working with Linear Equality Constraints Using Portfolio Object
- Working with Linear Inequality Constraints Using Portfolio Object
- Working with Average Turnover Constraints Using Portfolio Object
- Working with One-way Turnover Constraints Using Portfolio Object
- Working with Tracking Error Constraints Using Portfolio Object
- Creating the Portfolio Object
- Validate the Portfolio Problem for Portfolio Object
- Estimate Efficient Portfolios for Entire Efficient Frontier for Portfolio Object
- Estimate Efficient Frontiers for Portfolio Object
- Constraint Specification Using a Portfolio Object
- Asset Allocation Case Study
- Portfolio Optimization Examples

- Portfolio Object
- Portfolio Optimization Theory
- Portfolio Object Workflow
- Setting Up a Tracking Portfolio

Was this topic helpful?