Add linear inequality constraints for portfolio weights to existing constraints

## Syntax

``obj = addInequality(obj,AInequality,bInequality)``

## Description

example

````obj = addInequality(obj,AInequality,bInequality)` adds linear inequality constraints for portfolio weights to existing constraints for `Portfolio`, `PortfolioCVaR`, or `PortfolioMAD` objects. For details on the respective workflows when using these different objects, see Portfolio Object Workflow, PortfolioCVaR Object Workflow, and PortfolioMAD Object Workflow.Given a linear inequality constraint matrix `AInequality` and vector `bInequality`, every weight in a portfolio `Port` must satisfy the following:AInequality * Port = bInequalityThis function "stacks" additional linear inequality constraints onto any existing linear inequality constraints that exist in the input portfolio object. If no constraints exist, this function is the same as `setInequality`.```

## Examples

collapse all

Set a linear inequality constraint to ensure that the first three assets constitute at most 50% of a portfolio. Then add another linear inequality constraint to ensure that the last three assets constitute at least 50% of a portfolio.

```p = Portfolio; A = [ 1 1 1 0 0 ]; % first inequality constraint b = 0.5; p = setInequality(p, A, b); A = [ 0 0 -1 -1 -1 ]; % second inequality constraint b = -0.5; p = addInequality(p, A, b); disp(p.NumAssets);```
``` 5 ```
`disp(p.AInequality);`
``` 1 1 1 0 0 0 0 -1 -1 -1 ```
`disp(p.bInequality);`
``` 0.5000 -0.5000 ```

Set a linear inequality constraint to ensure that the first three assets constitute at most 50% of a portfolio. Then add another linear inequality constraint to ensure that the last three assets constitute at least 50% of a portfolio.

```p = PortfolioCVaR; A = [ 1 1 1 0 0 ]; % first inequality constraint b = 0.5; p = setInequality(p, A, b); A = [ 0 0 -1 -1 -1 ]; % second inequality constraint b = -0.5; p = addInequality(p, A, b); disp(p.NumAssets);```
``` 5 ```
`disp(p.AInequality);`
``` 1 1 1 0 0 0 0 -1 -1 -1 ```
`disp(p.bInequality);`
``` 0.5000 -0.5000 ```

Set a linear inequality constraint to ensure that the first three assets constitute at most 50% of a portfolio. Then add another linear inequality constraint to ensure that the last three assets constitute at least 50% of a portfolio.

```p = PortfolioMAD; A = [ 1 1 1 0 0 ]; % first inequality constraint b = 0.5; p = setInequality(p, A, b); A = [ 0 0 -1 -1 -1 ]; % second inequality constraint b = -0.5; p = addInequality(p, A, b); disp(p.NumAssets);```
``` 5 ```
`disp(p.AInequality);`
``` 1 1 1 0 0 0 0 -1 -1 -1 ```
`disp(p.bInequality);`
``` 0.5000 -0.5000 ```

## Input Arguments

collapse all

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

Data Types: `object`

Linear inequality constraints, specified as a matrix.

### Note

An error results if `AInequality` is empty and `bInequality` is nonempty.

Data Types: `double`

Linear inequality constraints, specified as a vector.

### Note

An error results if `bInequality` is empty and `AInequality` is nonempty.

Data Types: `double`

## Output Arguments

collapse all

Updated portfolio object, returned as a `Portfolio`, `PortfolioCVaR`, or `PortfolioMAD` object. For more information on creating a portfolio object, see

## Tips

• You can also use dot notation to add the linear inequality constraints for portfolio weights.

`obj = obj.addInequality(AInequality, bInequality)`

• You can also remove linear inequality constraints from any of the portfolio objects using dot notation.

`obj = obj.setInequality([ ], [ ])`

﻿