Main Content

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
Note if the 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
For an example of setting turnover, see Portfolio Analysis with Turnover Constraints.

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

| | | | | | | | | | | |

Related Examples

More About

External Websites