Documentation

setOneWayTurnover

Class: PortfolioCVaR

Set up one-way portfolio turnover constraints for PortfolioCVaR object

Syntax

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

Description

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

obj = setOneWayTurnover(obj,BuyTurnover,SellTurnover,
InitPort,NumAssets)
sets up one-way portfolio turnover constraints with additional options specified by 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 in 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.

Tips

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

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

Input Arguments

obj

CVaR portfolio object [PortfolioCVaR].

BuyTurnover

Turnover constraint on purchases [scalar].

    Note:   BuyTurnover must be nonnegative and finite.

SellTurnover

(Optional) Turnover constraint on sales [scalar].

    Note:   SellTurnover must be nonnegative and finite.

InitPort

(Optional) Initial or current portfolio weights [vector].

    Note:   InitPort must be a finite vector with NumAssets > 0 elements.

    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.

NumAssets

(Optional) Number of assets in the portfolio [scalar].

    Note:   If it is impossible to obtain a value for NumAssets, it is assumed that NumAssets is 1.

Output Arguments

obj

Updated CVaR portfolio object [PortfolioCVaR].

Definitions

One-Way Turnover Constraint

One-way turnover constraints ensure that estimated optimal CVaR portfolios differ from an initial CVaR portfolio by no more than specified amounts according to whether the differences are purchases or sales. The constraints take the form

1T×max{0,xx0}τB

1T×max{0,x0x}τS

with

  • x — CVaR portfolio (NumAssets vector)

  • x0 — Initial CVaR portfolio (NumAssets vector)

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

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

To specify one-way turnover constraints, use these properties in the CVaR portfolio object: BuyTurnover for τB, SellTurnover for τS, and InitPort for x0.

    Note:   The average turnover constraint (see setTurnover) is not just the combination of the one-way turnover constraints with the same value for the constraint.

Attributes

Accesspublic
Staticfalse
Hiddenfalse

To learn about attributes of methods, see Method Attributes in the MATLAB® Object-Oriented Programming documentation.

Examples

expand all

Set One-Way Turnover Constraints

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);
disp(p.BuyTurnover)
disp(p.SellTurnover)
disp(p.InitPort);
    10

    0.3000

    0.2000

    0.1200
    0.0900
    0.0800
    0.0700
    0.1000
    0.1000
    0.1500
    0.1100
    0.0800
    0.1000

Was this topic helpful?