## Working with Linear Equality Constraints Using PortfolioMAD Object

Linear equality constraints are optional linear constraints
that impose systems of equalities on portfolio weights (see Linear Equality Constraints). Linear
equality constraints have properties `AEquality`

,
for the equality constraint matrix, and `bEquality`

,
for the equality constraint vector.

### Setting Linear Equality Constraints Using the `PortfolioMAD`

Function

The properties for linear equality constraints are set using the `PortfolioMAD`

object. Suppose that you
have a portfolio of five assets and want to ensure that the first three assets are
50% of your portfolio. To set this constraint:

A = [ 1 1 1 0 0 ]; b = 0.5; p = PortfolioMAD('AEquality', A, 'bEquality', b); disp(p.NumAssets) disp(p.AEquality) disp(p.bEquality)

5 1 1 1 0 0 0.5000

### Setting Linear Equality Constraints Using the `setEquality`

and `addEquality`

Functions

You can also set the properties for linear equality constraints using `setEquality`

. Suppose that you have
a portfolio of five assets and want to ensure that the first three assets are 50% of
your portfolio. Given a `PortfolioMAD`

object `p`

,
use `setEquality`

to set the linear
equality constraints:

A = [ 1 1 1 0 0 ]; b = 0.5; p = PortfolioMAD; p = setEquality(p, A, b); disp(p.NumAssets) disp(p.AEquality) disp(p.bEquality)

5 1 1 1 0 0 0.5000

Suppose that you want to add another linear equality constraint to ensure that the last three
assets also constitute 50% of your portfolio. You can set up an augmented system of
linear equalities or use `addEquality`

to build up linear
equality constraints. For this example, create another system of
equalities:

p = PortfolioMAD; A = [ 1 1 1 0 0 ]; % first equality constraint b = 0.5; p = setEquality(p, A, b); A = [ 0 0 1 1 1 ]; % second equality constraint b = 0.5; p = addEquality(p, A, b); disp(p.NumAssets) disp(p.AEquality) disp(p.bEquality)

5 1 1 1 0 0 0 0 1 1 1 0.5000 0.5000

The `PortfolioMAD`

object, `setEquality`

, and `addEquality`

implement scalar
expansion on the `bEquality`

property based on the dimension of the
matrix in the `AEquality`

property.

## See Also

`PortfolioMAD`

| `setDefaultConstraints`

| `setBounds`

| `setBudget`

| `setConditionalBudget`

| `setGroups`

| `setGroupRatio`

| `setEquality`

| `setInequality`

| `setTurnover`

| `setOneWayTurnover`

## Related Examples

- Setting Default Constraints for Portfolio Weights Using PortfolioMAD Object
- Creating the PortfolioMAD Object
- Validate the MAD Portfolio Problem
- Estimate Efficient Portfolios Along the Entire Frontier for PortfolioMAD Object
- Estimate Efficient Frontiers for PortfolioMAD Object
- Asset Returns and Scenarios Using PortfolioMAD Object