Linear inequalities for asset group comparison constraints
[A,b] = pcgcomp(GroupA, AtoBmin, AtoBmax, GroupB)
Number of groups (NGROUPS) by number of assets (NASSETS) specifications of groups to compare. Each row specifies a group. For a specific group, Group(i,j) = 1 if the group contains asset j; otherwise, Group(i,j) = 0.
Scalar or NGROUPS-long vectors of minimum and maximum ratios of allocations in GroupA to allocations in GroupB. NaN indicates no constraint between the two groups. Scalar bounds are applied to all group pairs. The total number of assets allocated to GroupA divided by the total number of assets allocated to GroupB is >= AtoBmin and <= AtoBmax.
[A,b] = pcgcomp(GroupA, AtoBmin, AtoBmax, GroupB) specifies that the ratio of allocations in one group to allocations in another group is at least AtoBmin to 1 and at most AtoBmax to 1. Comparisons can be made between an arbitrary number of group pairs NGROUPS comprising subsets of NASSETS available investments.
A is a matrix and b a vector such that A*PortWts' <= b, where PortWts is a 1-by-NASSETS vector of asset allocations.
If pcgcomp is called with fewer than two output arguments, the function returns A concatenated with b [A,b].
Make the North American energy sector compose exactly 20% of the North American investment.
% INTC XOM RD GroupA = [ 0 1 0 ]; % North American Energy GroupB = [ 1 1 0 ]; % North America AtoBmin = 0.20; AtoBmax = 0.20; [A,b] = pcgcomp(GroupA, AtoBmin, AtoBmax, GroupB)
A = 0.2000 -0.8000 0 -0.2000 0.8000 0 b = 0 0
Portfolio weights of 40% for INTC, 10% for XOM, and 50% for RD satisfy the constraints.