Working with Average Turnover Constraints Using Portfolio Object
The turnover constraint is an optional linear absolute value constraint (see Average Turnover Constraints) that enforces an upper bound on the average of
purchases and sales. The turnover constraint can be set using the Portfolio
object or the setTurnover
function. The turnover constraint depends on an initial or
current portfolio, which is assumed to be zero if not set when the turnover constraint
is set. The turnover constraint has properties Turnover
, for the
upper bound on average turnover, and InitPort
, for the portfolio
against which turnover is computed.
Setting Average Turnover Constraints Using the Portfolio
Function
The properties for the turnover constraints are set using the Portfolio
object. Suppose that you
have an initial portfolio of 10 assets in a variable x0
and you
want to ensure that average turnover is no more than 30%. To set this turnover
constraint:
x0 = [ 0.12; 0.09; 0.08; 0.07; 0.1; 0.1; 0.15; 0.11; 0.08; 0.1 ]; p = Portfolio('Turnover', 0.3, 'InitPort', x0); disp(p.NumAssets) disp(p.Turnover) disp(p.InitPort)
10 0.3000 0.1200 0.0900 0.0800 0.0700 0.1000 0.1000 0.1500 0.1100 0.0800 0.1000
NumAssets
or InitPort
properties are
not set before or when the turnover constraint is set, various rules are applied to
assign default values to these properties (see Setting Up an Initial or Current Portfolio).Setting Average Turnover Constraints Using the setTurnover
Function
You can also set properties for portfolio turnover using setTurnover
to specify both the
upper bound for average turnover and an initial portfolio. Suppose that you have an
initial portfolio of 10 assets in a variable x0
and want to
ensure that average turnover is no more than 30%. Given a
Portfolio
object p
, use setTurnover
to set the turnover
constraint with and without the initial portfolio being set
previously:
x0 = [ 0.12; 0.09; 0.08; 0.07; 0.1; 0.1; 0.15; 0.11; 0.08; 0.1 ];
p = Portfolio('InitPort', x0);
p = setTurnover(p, 0.3);
disp(p.NumAssets)
disp(p.Turnover)
disp(p.InitPort)
10 0.3000 0.1200 0.0900 0.0800 0.0700 0.1000 0.1000 0.1500 0.1100 0.0800 0.1000
or
x0 = [ 0.12; 0.09; 0.08; 0.07; 0.1; 0.1; 0.15; 0.11; 0.08; 0.1 ]; p = Portfolio; p = setTurnover(p, 0.3, x0); disp(p.NumAssets) disp(p.Turnover) disp(p.InitPort)
10 0.3000 0.1200 0.0900 0.0800 0.0700 0.1000 0.1000 0.1500 0.1100 0.0800 0.1000
setTurnover
implements scalar expansion on the argument for the
initial portfolio. If the NumAssets
property is already set in
the Portfolio
object, a scalar argument for
InitPort
expands to have the same value across all
dimensions. In addition, setTurnover
lets you specify
NumAssets
as an optional argument. To clear turnover from
your Portfolio
object, use the Portfolio
object or setTurnover
with empty inputs for
the properties to be cleared.
See Also
Portfolio
| setDefaultConstraints
| setBounds
| setBudget
| setConditionalBudget
| setGroups
| setGroupRatio
| setEquality
| setInequality
| setTurnover
| setOneWayTurnover
| setTrackingPort
| setTrackingError
Related Examples
- Creating the Portfolio Object
- Working with Portfolio Constraints Using Defaults
- Validate the Portfolio Problem for Portfolio Object
- Estimate Efficient Portfolios for Entire Efficient Frontier for Portfolio Object
- Estimate Efficient Frontiers for Portfolio Object
- Constraint Specification Using a Portfolio Object
- Portfolio Analysis with Turnover Constraints
- Asset Allocation Case Study
- Portfolio Optimization Examples Using Financial Toolbox
- Portfolio Analysis with Turnover Constraints
- Portfolio Optimization with Semicontinuous and Cardinality Constraints
- Black-Litterman Portfolio Optimization Using Financial Toolbox
- Portfolio Optimization Using Factor Models
- Portfolio Optimization Using Social Performance Measure
- Diversify Portfolios Using Custom Objective
More About
- Portfolio Object
- Portfolio Optimization Theory
- Portfolio Object Workflow
- Setting Up a Tracking Portfolio