Main Content

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

| | | | | | | | | |

Related Examples

More About