pcglims

Linear inequalities for asset group minimum and maximum allocation

As an alternative to pcglims, use the Portfolio object (Portfolio) for mean-variance portfolio optimization. This object supports gross or net portfolio returns as the return proxy, the variance of portfolio returns as the risk proxy, and a portfolio set that is any combination of the specified constraints to form a portfolio set. For information on the workflow when using Portfolio objects, see Portfolio Object Workflow.

Syntax

[A,b] = pcglims(Groups, GroupMin, GroupMax)

Arguments

Groups

Number of groups (NGROUPS) by number of assets (NASSETS) specification of which assets belong to which group. Each row specifies a group. For a specific group, Group(i,j) = 1 if the group contains asset j; otherwise, Group(i,j) = 0.

GroupMin

GroupMax

Scalar or NGROUPS-long vectors of minimum and maximum combined allocations in each group. NaN indicates no constraint. Scalar bounds are applied to all groups.

Description

[A,b] = pcglims(Groups, GroupMin, GroupMax) specifies minimum and maximum allocations to groups of assets. An arbitrary number of groups, NGROUPS, comprising subsets of NASSETS investments, is allowed.

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 pcglims is called with fewer than two output arguments, the function returns A concatenated with b [A,b].

Examples

Asset

INTC

XOM

RD

Region

North America

North America

Europe

Sector

Technology

Energy

Energy

Group

Min. Exposure

Max. Exposure

North America

0.30

0.75

Europe

0.10

0.55

Technology

0.20

0.50

Energy

0.50

0.50

Set the minimum and maximum investment in various groups.

%          INTC  XOM  RD       
Groups = [   1    1   0  ;  % North America
             0    0   1  ;  % Europe
             1    0   0  ;  % Technology
             0    1   1  ]; % Energy

GroupMin = [0.30
            0.10
            0.20
            0.50];

GroupMax = [0.75
            0.55
            0.50
            0.50];

[A,b] = pcglims(Groups, GroupMin, GroupMax)
A =

    -1    -1     0
     0     0    -1
    -1     0     0
     0    -1    -1
     1     1     0
     0     0     1
     1     0     0
     0     1     1

b =

   -0.3000
   -0.1000
   -0.2000
   -0.5000
    0.7500
    0.5500
    0.5000
    0.5000

Portfolio weights of 50% in INTC, 25% in XOM, and 25% in RD satisfy the constraints.

Was this topic helpful?