Documentation

This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English verison of the page.

Note: This page has been translated by MathWorks. Please click here
To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

setOneWayTurnover

Set up one-way portfolio turnover constraints

Use the setOneWayTurnover function with a Portfolio, PortfolioCVaR, or PortfolioMAD object to set up one-way portfolio turnover constraints for portfolio objects.

For details on the respective workflows when using these different objects, see Portfolio Object Workflow, PortfolioCVaR Object Workflow, and PortfolioMAD Object Workflow.

Syntax

obj = setOneWayTurnover(obj,BuyTurnover)
obj = setOneWayTurnover(obj,BuyTurnover,SellTurnover,InitPort,NumAssets)

Description

example

obj = setOneWayTurnover(obj,BuyTurnover) sets up one-way portfolio turnover constraints for portfolio objects.

example

obj = setOneWayTurnover(obj,BuyTurnover,SellTurnover,InitPort,NumAssets) sets up one-way portfolio turnover constraints for portfolio objects with additional options specified for SellTurnover, InitPort, and NumAssets.

Given an initial portfolio in InitPort and an upper bound for portfolio turnover on purchases in BuyTurnover or sales in SellTurnover, the one-way turnover constraints require any portfolio Port to satisfy the following:

1' * max{0, Port - InitPort} <= BuyTurnover
1' * max{0, InitPort - Port} <= SellTurnover

Note

If Turnover =BuyTurnover = SellTurnover, the constraint is not equivalent to:

1' * | Port - InitPort | <= Turnover
To set this constraint, use setTurnover.

Examples

collapse all

Set one-way turnover constraints.

p = Portfolio('AssetMean',[0.1, 0.2, 0.15], 'AssetCovar',...
[ 0.005, -0.010,  0.004; -0.010,  0.040, -0.002;  0.004, -0.002,  0.023]);
p = setBudget(p, 1, 1);
p = setOneWayTurnover(p, 1.3, 0.3, 0); %130-30 portfolio
plotFrontier(p);

Set one-way turnover constraints.

x0 = [ 0.12; 0.09; 0.08; 0.07; 0.1; 0.1; 0.15; 0.11; 0.08; 0.1 ]; 
p = PortfolioCVaR('InitPort', x0);
p = setOneWayTurnover(p, 0.3, 0.2);
disp(p.NumAssets);
    10
disp(p.BuyTurnover)
    0.3000
disp(p.SellTurnover)
    0.2000
disp(p.InitPort);
    0.1200
    0.0900
    0.0800
    0.0700
    0.1000
    0.1000
    0.1500
    0.1100
    0.0800
    0.1000

Set one-way turnover constraints.

x0 = [ 0.12; 0.09; 0.08; 0.07; 0.1; 0.1; 0.15; 0.11; 0.08; 0.1 ]; 
p = PortfolioMAD('InitPort', x0);
p = setOneWayTurnover(p, 0.3, 0.2);
disp(p.NumAssets);
    10
disp(p.BuyTurnover)
    0.3000
disp(p.SellTurnover)
    0.2000
disp(p.InitPort);
    0.1200
    0.0900
    0.0800
    0.0700
    0.1000
    0.1000
    0.1500
    0.1100
    0.0800
    0.1000

Input Arguments

collapse all

Object for portfolio, specified using Portfolio, PortfolioCVaR, or PortfolioMAD object. For more information on creating a portfolio object, see

Turnover constraint on purchases, specified as a nonnegative and finite scalar for a Portfolio, PortfolioCVaR, or PortfolioMAD input object (obj).

Turnover constraint on sales, specified as a nonnegative and finite scalar for a Portfolio, PortfolioCVaR, or PortfolioMAD input object (obj).

Initial or current portfolio weights, specified as a finite vector with NumAssets > 0 elements for a Portfolio, PortfolioCVaR, PortfolioMAD input object (obj).

Note

If no InitPort is specified, that value is assumed to be 0.

If InitPort is specified as a scalar and NumAssets exists, then InitPort undergoes scalar expansion.

Data Types: double

Number of assets in portfolio, specified as a scalar for a Portfolio, PortfolioCVaR, or PortfolioMAD input object (obj).

Note

If it is not possible to obtain a value for NumAssets, it is assumed that NumAssets is 1.

Data Types: double

Output Arguments

collapse all

Updated portfolio object, returned as a Portfolio, PortfolioCVaR, or PortfolioMAD object. For more information on creating a portfolio object, see

More About

collapse all

One-way Turnover Constraint

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.

The constraints take the form

1Tmax{0,xx0}τB

1Tmax{0,x0x}τS

with

  • x — The portfolio (NumAssets vector)

  • x0 — Initial portfolio (NumAssets vector)

  • τB — Upper-bound for turnover constraint on purchases (scalar)

  • τS — Upper-bound for turnover constraint on sales (scalar)

Specify one-way turnover constraints using the following properties in a supported portfolio object: BuyTurnover for τB, SellTurnover for τS, and InitPort for x0.

Note

The average turnover constraint (which is set using setTurnover) is not just the combination of the one-way turnover constraints with the same value for the constraint.

Tips

You can also use dot notation to set up one-way portfolio turnover constraints.

obj = obj.setOneWayTurnover(BuyTurnover,SellTurnover,InitPort,NumAssets)

Introduced in R2011a

Was this topic helpful?