## Working with `'Simple'` Bound Constraints Using PortfolioCVaR Object

`'Simple'` bound constraints are optional linear constraints that maintain upper and lower bounds on portfolio weights (see 'Simple' Bound Constraints). Although every portfolio set must be bounded, it is not necessary to specify a portfolio set with explicit bound constraints. For example, you can create a portfolio set with an implicit upper bound constraint or a portfolio set with average turnover constraints. The bound constraints have properties `LowerBound` for the lower-bound constraint and `UpperBound` for the upper-bound constraint. Set default values for these constraints using the `setDefaultConstraints` function (see Setting Default Constraints for Portfolio Weights Using Portfolio Object).

### Setting `'Simple'` Bounds Using the `PortfolioCVaR` Function

The properties for bound constraints are set through the `PortfolioCVaR` object. Suppose that you have a balanced fund with stocks that can range from 50% to 75% of your portfolio and bonds that can range from 25% to 50% of your portfolio. The bound constraints for a balanced fund are set with:

```lb = [ 0.5; 0.25 ]; ub = [ 0.75; 0.5 ]; p = PortfolioCVaR('LowerBound', lb, 'UpperBound', ub, 'BoundType', 'Simple'); disp(p.NumAssets) disp(p.LowerBound) disp(p.UpperBound)```
``` 2 0.5000 0.2500 0.7500 0.5000```

To continue with this example, you must set up a budget constraint. For details, see Working with Budget Constraints Using Portfolio Object.

### Setting `'Simple'` Bounds Using the `setBounds` Function

You can also set the properties for bound constraints using `setBounds`. Suppose that you have a balanced fund with stocks that can range from 50% to 75% of your portfolio and bonds that can range from 25% to 50% of your portfolio. Given a `PortfolioCVaR` object `p`, use `setBounds` to set the bound constraints:

```lb = [ 0.5; 0.25 ]; ub = [ 0.75; 0.5 ]; p = PortfolioCVaR; p = setBounds(p, lb, ub,'BoundType', 'Simple'); disp(p.NumAssets) disp(p.LowerBound) disp(p.UpperBound)```
``` 2 0.5000 0.2500 0.7500 0.5000```

### Setting `'Simple'` Bounds Using the `PortfolioCVaR` Function or `setBounds` Function

Both the `PortfolioCVaR` object and `setBounds` function implement scalar expansion on either the `LowerBound` or `UpperBound` properties. If the `NumAssets` property is already set in the `PortfolioCVaR` object, scalar arguments for either property expand to have the same value across all dimensions. In addition, `setBounds` lets you specify `NumAssets` as an optional argument. Suppose that you have a universe of 500 assets and you want to set common bound constraints on all assets in your universe. Specifically, you are a long-only investor and want to hold no more than 5% of your portfolio in any single asset. You can set these bound constraints in any of these equivalent ways:

`p = PortfolioCVaR('NumAssets', 500, 'LowerBound', 0, 'UpperBound', 0.05,'BoundType', 'Simple');`

or

```p = PortfolioCVaR('NumAssets', 500); p = setBounds(p, 0, 0.05,'BoundType','Simple');```

or

```p = PortfolioCVaR; p = setBounds(p, 0, 0.05,'NumAssets', 500,'BoundType','Simple');```

To clear bound constraints from your `PortfolioCVaR` object, use either the `PortfolioCVaR` object or `setBounds` with empty inputs for the properties to be cleared. For example, to clear the upper-bound constraint from the `PortfolioCVaR` object `p` in the previous example:

`p = PortfolioCVaR(p, 'UpperBound', []);`