Supported Constraints for Portfolio Optimization Using Portfolio Objects
The final element for a complete specification of a portfolio optimization problem is the set of feasible portfolios, which is called a portfolio set. A portfolio set is specified by construction as the intersection of sets formed by a collection of constraints on portfolio weights. A portfolio set necessarily and sufficiently must be a nonempty, closed, and bounded set.
When setting up your portfolio set, ensure that the portfolio set satisfies these
conditions. The most basic or “default” portfolio set requires portfolio
weights to be nonnegative (using the lower-bound constraint) and to sum to
1
(using the budget constraint). The most general portfolio set
handled by the portfolio optimization tools (Portfolio
, PortfolioCVaR
, and PortfolioMAD
objects) can have any of these constraints:
Linear inequality constraints
Linear equality constraints
'Simple'
Bound constraints'Conditional'
Bound constraintsBudget constraints
Conditional budget constraints
Group constraints
Group ratio constraints
Average turnover constraints
One-way turnover constraints
Tracking error constraints (only for
Portfolio
object)Cardinality constraints
Linear Inequality Constraints
Linear inequality constraints are general linear
constraints that model relationships among portfolio weights that satisfy a system
of inequalities. Use setInequality
to set linear
inequality constraints. Linear inequality constraints take the form
where:
x is the portfolio (n vector).
AI is the linear inequality constraint matrix (nI-by-n matrix).
bI is the linear inequality constraint vector (nI vector).
n is the number of assets in the universe and nI is the number of constraints.
Portfolio
, PortfolioCVaR
, and
PortfolioMAD
object properties to specify linear inequality
constraints are:
AInequality
for AIbInequality
for bINumAssets
for n
The default is to ignore these constraints.
Linear Equality Constraints
Linear equality constraints are general linear constraints
that model relationships among portfolio weights that satisfy a system of
equalities. Use setEquality
to set linear equality
constraints. Linear equality constraints take the form
where:
x is the portfolio (n vector).
AE is the linear equality constraint matrix (nE-by-n matrix).
bE is the linear equality constraint vector (nE vector).
n is the number of assets in the universe and nE is the number of constraints.
Portfolio
, PortfolioCVaR
, and
PortfolioMAD
object properties to specify linear equality
constraints are:
AEquality
for AEbEquality
for bENumAssets
for n
The default is to ignore these constraints.
'Simple'
Bound Constraints
'Simple'
Bound constraints are specialized linear constraints that
confine portfolio weights to fall either above or below specific bounds. Use
setBounds
to
specify bound constraints with a 'Simple'
BoundType
. Since every portfolio set must be bounded, it is often
a good practice, albeit not necessary, to set explicit bounds for the portfolio
problem. To obtain explicit 'Simple'
bounds for a given portfolio
set, use the estimateBounds
function. Bound
constraints take the form
where:
x is the portfolio (n vector).
lB is the lower-bound constraint (n vector).
uB is the upper-bound constraint (n vector).
n is the number of assets in the universe.
Portfolio
, PortfolioCVaR
, and
PortfolioMAD
object properties to specify bound constraints are:
LowerBound
for lBUpperBound
for uBNumAssets
for n
The default is to ignore these constraints.
The default portfolio optimization problem (see Default Portfolio Problem) has
lB = 0
with
uB set implicitly through a budget
constraint.
'Conditional'
Bound Constraints
'Conditional'
Bound constraints, also called semicontinuous constraints,
are mixed-integer linear constraints that confine portfolio weights to fall either
above or below specific bounds if the asset is selected;
otherwise, the value of the asset is zero. Use setBounds
to
specify bound constraints with a 'Conditional'
BoundType
. To mathematically formulate this type of constraints,
a binary variable vi is
needed. vi = 0
indicates that asset i is not selected and
vi indicates
that the asset was selected. Thus
where
x is the portfolio (n vector).
l is the conditional lower-bound constraint (n vector).
u is the conditional upper-bound constraint (n vector).
n is the number of assets in the universe.
Portfolio
, PortfolioCVaR
, and
PortfolioMAD
object properties to specify the bound
constraint are:
LowerBound
for lBUpperBound
for uBNumAssets
for n
The default is to ignore this constraint.
Budget Constraints
Budget constraints are specialized linear constraints that
confine the sum of portfolio weights to fall either above or below specific bounds.
Use setBudget
to set budget
constraints. The constraints take the form
where:
x is the portfolio (n vector).
1
is the vector of ones (n vector).
lS is the lower-bound budget constraint (scalar).
uS is the upper-bound budget constraint (scalar).
n is the number of assets in the universe.
Portfolio
, PortfolioCVaR
, and
PortfolioMAD
object properties to specify budget constraints are:
LowerBudget
for lSUpperBudget
for uSNumAssets
for n
The default is to ignore this constraint.
The default portfolio optimization problem (see Default Portfolio Problem) has
lS =
uS = 1
, which
means that the portfolio weights sum to 1
. If the portfolio
optimization problem includes possible movements in and out of cash, the budget
constraint specifies how far portfolios can go into cash. For example, if
lS = 0
and
uS = 1
, then
the portfolio can have 0–100% invested in cash. If cash is to be a portfolio choice,
set RiskFreeRate
(r0)
to a suitable value (see Return Proxy and Working with a Riskless Asset).
Conditional Budget Constraints
Conditional budget constraints is a logical constraint that
bounds the maximum amount of the portfolio that can be invested in assets exceeding
a given threshold. This constraint supports the Undertakings for Collective Investment in Transferable Securities (UCITS) directive. Use setConditionalBudget
to
set conditional budget constraints. To mathematically formulate this type of
constraints, a binary variable
wi is needed. If
wi =
0
the asset is below the specified threshold, otherwise the
asset is above that threshold which is represented as
where:
x is an n vector representing the portfolio.
ɑ is a scalar or n representing the threshold above which assets are accounted for in the conditional budget (scalar or n vector).
γ is a scalar representing the maximum amount of the portfolio that can be invested in assets exceeding ɑ.
Group Constraints
Group constraints are specialized linear constraints that
enforce “membership” among groups of assets. Use setGroups
to set group constraints.
The constraints take the form
where:
x is the portfolio (n vector).
lG is the lower-bound group constraint (nG vector).
uG is the upper-bound group constraint (nG vector).
G is the matrix of group membership indexes (nG-by-n matrix).
Each row of G identifies which assets belong to a group
associated with that row. Each row contains either 0
s or
1
s with 1
indicating that an asset is part
of the group or 0
indicating that the asset is not part of the
group.
Portfolio
, PortfolioCVaR
, and
PortfolioMAD
object properties to specify group constraints
are:
GroupMatrix
for GLowerGroup
for lGUpperGroup
for uGNumAssets
for n
The default is to ignore these constraints.
Group Ratio Constraints
Group ratio constraints are specialized linear constraints
that enforce relationships among groups of assets. Use setGroupRatio
to set group ratio
constraints. The constraints take the form
for i = 1,..., nR where:
x is the portfolio (n vector).
lR is the vector of lower-bound group ratio constraints (nR vector).
uR is the vector matrix of upper-bound group ratio constraints (nR vector).
GA is the matrix of base group membership indexes (nR-by-n matrix).
GB is the matrix of comparison group membership indexes (nR-by-n matrix).
n is the number of assets in the universe and nR is the number of constraints.
Each row of GA and GB identifies which assets belong to a base and comparison group associated with that row.
Each row contains either 0
s or 1
s with
1
indicating that an asset is part of the group or
0
indicating that the asset is not part of the group.
Portfolio
, PortfolioCVaR
, and
PortfolioMAD
object properties to specify group ratio
constraints are:
GroupA
for GAGroupB
for GBLowerRatio
for lRUpperRatio
for uRNumAssets
for n
The default is to ignore these constraints.
Average Turnover Constraints
Turnover constraint is a linear absolute value constraint
that ensures estimated optimal portfolios differ from an initial portfolio by no
more than a specified amount. Although portfolio turnover is defined in many ways,
the turnover constraints implemented in Financial Toolbox™ compute portfolio turnover as the average of purchases and sales. Use
setTurnover
to set average turnover
constraints. Average turnover constraints take the form
where:
x is the portfolio (n vector).
1
is the vector of ones (n vector).
x0 is the initial portfolio (n vector).
τ is the upper bound for turnover (scalar).
n is the number of assets in the universe.
Portfolio
, PortfolioCVaR
, and
PortfolioMAD
object properties to specify the average
turnover constraint are:
Turnover
for τInitPort
for x0NumAssets
for n
The default is to ignore this constraint.
One-Way Turnover Constraints
One-way turnover constraints ensure that estimated optimal
portfolios differ from an initial portfolio by no more than specified amounts
according to whether the differences are purchases or sales. Use setOneWayTurnover
to set one-way
turnover constraints. The constraints take the forms
where:
x is the portfolio (n vector)
1
is the vector of ones (n vector).
x0 is the Initial portfolio (n vector).
τB is the upper bound for turnover constraint on purchases (scalar).
τS is the upper bound for turnover constraint on sales (scalar).
To specify one-way turnover constraints, use the following properties in the
Portfolio
, PortfolioCVaR
, or
PortfolioMAD
object:
BuyTurnover
for τBSellTurnover
for τSInitPort
for x0
The default is to ignore this constraint.
Note
The average turnover constraint (see Working with Average Turnover Constraints Using Portfolio Object) with τ is not a combination of the one-way turnover constraints with τ = τB = τS.
Tracking Error Constraints
Tracking error constraint, within a portfolio optimization
framework, is an additional constraint to specify the set of feasible portfolios
known as a portfolio set. Use setTrackingError
to set tracking
error constraints. The tracking-error constraint has the form
where:
x is the portfolio (n vector).
xT is the tracking portfolio against which risk is to be measured (n vector).
C is the covariance of asset returns.
τT is the upper bound for tracking error (scalar).
n is the number of assets in the universe.
Portfolio
object properties to specify the average turnover
constraint are:
TrackingPort
for xTTrackingError
for τT
The default is to ignore this constraint.
Note
The tracking error constraints can be used with any of the other supported
constraints in the Portfolio
object without restrictions.
However, since the portfolio set necessarily and sufficiently must be a
non-empty compact set, the application of a tracking error constraint may
result in an empty portfolio set. Use estimateBounds
to confirm
that the portfolio set is non-empty and compact.
Cardinality Constraints
Cardinality constraint limits the number of assets in the
optimal allocation for an Portfolio
,
PortfolioCVaR
, or PortfolioMAD
object. Use
setMinMaxNumAssets
to specify the 'MinNumAssets'
and
'MaxNumAssets'
constraints. To mathematically formulate this
type of constraints, a binary variable
vi is needed.
vi = 0 indicates
that asset i is not selected and
vi = 1
indicates that the asset was selected. Thus
The default is to ignore this constraint.
See Also
Portfolio
| PortfolioCVaR
| PortfolioMAD
Related Examples
- Creating the Portfolio Object
- Working with Portfolio Constraints Using Defaults
- Asset Allocation Case Study
- Portfolio Optimization Examples Using Financial Toolbox
- Portfolio Optimization with Semicontinuous and Cardinality Constraints
- Black-Litterman Portfolio Optimization Using Financial Toolbox
- Portfolio Optimization Using Factor Models