setBounds

Установите ограничения для весов портфеля для объекта портфеля

Описание

пример

obj = setBounds(obj,LowerBound) устанавливает ограничения для весов портфеля для Portfolio, PortfolioCVaR, или PortfolioMAD объект. Для получения дополнительной информации о соответствующих рабочих процессах при использовании этих различных объектов смотрите Рабочий процесс объекта портфеля, Рабочий процесс объекта PortfolioCVaR и Рабочий процесс объекта PortfolioMAD.

пример

obj = setBounds(___,Name,Value) задает опции, использующие один или несколько аргументы пары "имя-значение" в дополнение к входным параметрам в предыдущем синтаксисе, включая BoundType как 'Simple' или 'Conditional'.

пример

obj = setBounds(obj,LowerBound,UpperBound) устанавливает ограничения для весов портфеля для объектов портфеля с дополнительной опцией для UpperBound.

Заданные ограничения LowerBound и UpperBound и 'Simple' BoundType, каждый вес в портфолио Port должны удовлетворять следующим требованиям:

LowerBound <= Port <= UpperBound

Заданные ограничения LowerBound и UpperBound, и 'Conditional' BoundType, каждый вес в портфолио Port должны удовлетворять следующим требованиям:

Port = 0 or LowerBound <= Port <= UpperBound

пример

obj = setBounds(___,Name,Value) задает опции, использующие один или несколько аргументы пары "имя-значение" в дополнение к входным параметрам в предыдущем синтаксисе, включая BoundType как 'Simple' или 'Conditional'.

Примеры

свернуть все

Предположим, что у вас есть сбалансированный фонд с акциями, которые могут варьироваться от 50% до 75% вашего портфеля, и облигациями, которые могут варьироваться от 25% до 50% вашего портфеля. Использование setBounds для установки ограничений для сбалансированного фонда. Обратите внимание, что это устанавливает 'Simple' по умолчанию BoundType, который применяет 0,5 < = x1 < = 0,75, 0,25 < = x2 < = 0,5.

lb = [ 0.5; 0.25 ];
ub = [ 0.75; 0.5 ];

p = Portfolio;
p = setBounds(p, lb, ub);
disp(p.NumAssets);
     2
disp(p.LowerBound);
    0.5000
    0.2500
disp(p.UpperBound);
    0.7500
    0.5000

Предположим, что у вас есть среднее и ковариационное значение возвратов активов для трех портфелей активов:

AssetMean = [ 0.0101110; 0.0043532; 0.0137058 ];
AssetCovar = [ 0.00324625 0.00022983 0.00420395;
               0.00022983 0.00049937 0.00019247;
               0.00420395 0.00019247 0.00764097 ];  

Следующее использует setBounds с 'Conditional' BoundType (полунепрерывные) ограничения для установки xi = 0 или 0.02 <= xi <= 0.5 для всех i = 1... NumAssets.

p = Portfolio('AssetMean', AssetMean, 'AssetCovar', AssetCovar);
p = setBounds(p, 0.02, 0.5,'BoundType', 'Conditional', 'NumAssets', 3)   
p = 
  Portfolio with properties:

          BuyCost: []
         SellCost: []
     RiskFreeRate: []
        AssetMean: [3x1 double]
       AssetCovar: [3x3 double]
    TrackingError: []
     TrackingPort: []
         Turnover: []
      BuyTurnover: []
     SellTurnover: []
             Name: []
        NumAssets: 3
        AssetList: []
         InitPort: []
      AInequality: []
      bInequality: []
        AEquality: []
        bEquality: []
       LowerBound: [3x1 double]
       UpperBound: [3x1 double]
      LowerBudget: []
      UpperBudget: []
      GroupMatrix: []
       LowerGroup: []
       UpperGroup: []
           GroupA: []
           GroupB: []
       LowerRatio: []
       UpperRatio: []
     MinNumAssets: []
     MaxNumAssets: []
        BoundType: [3x1 categorical]

disp(p.LowerBound);
    0.0200
    0.0200
    0.0200
disp(p.UpperBound);
    0.5000
    0.5000
    0.5000
disp(p.BoundType);
     conditional 
     conditional 
     conditional 

Предположим, что у вас есть среднее и ковариационное значение возвратов активов для трех портфелей активов:

AssetMean = [ 0.0101110; 0.0043532; 0.0137058 ];
AssetCovar = [ 0.00324625 0.00022983 0.00420395;
               0.00022983 0.00049937 0.00019247;
               0.00420395 0.00019247 0.00764097 ];  

Следующее использует setBounds с обоими 'Simple' и 'Conditional' BoundType ограничения для всех i = 1... NumAssets.

p = Portfolio('AssetMean', AssetMean, 'AssetCovar', AssetCovar);
p = setBounds(p, 0.1, 0.5, 'BoundType',["simple"; "conditional"; "conditional"])
p = 
  Portfolio with properties:

          BuyCost: []
         SellCost: []
     RiskFreeRate: []
        AssetMean: [3x1 double]
       AssetCovar: [3x3 double]
    TrackingError: []
     TrackingPort: []
         Turnover: []
      BuyTurnover: []
     SellTurnover: []
             Name: []
        NumAssets: 3
        AssetList: []
         InitPort: []
      AInequality: []
      bInequality: []
        AEquality: []
        bEquality: []
       LowerBound: [3x1 double]
       UpperBound: [3x1 double]
      LowerBudget: []
      UpperBudget: []
      GroupMatrix: []
       LowerGroup: []
       UpperGroup: []
           GroupA: []
           GroupB: []
       LowerRatio: []
       UpperRatio: []
     MinNumAssets: []
     MaxNumAssets: []
        BoundType: [3x1 categorical]

disp(p.LowerBound);
    0.1000
    0.1000
    0.1000
disp(p.UpperBound);
    0.5000
    0.5000
    0.5000
disp(p.BoundType);
     simple 
     conditional 
     conditional 

Можно использовать нижнюю и верхнюю границы поставки в качестве векторов, которые задают различные значения для каждого актива. Следующие имеют -0.8 < = x1 <= 0.2; x2 = 0 или 0,1 < = x2 <= 0.5; x3 = 0 или 0,1 < = x3 <=0.5. Обратите внимание, что как 'Simple' BoundType, активы могут удерживаться как короткие или длинные позиции. Однако при использовании 'Conditional' BoundTypeактивы могут быть только длинными позициями.

p = setBounds(p, [-0.8, 0.1, 0.1], [-0.2,0.5,0.5], 'BoundType',["simple"; "conditional"; "conditional"]);
disp(p.LowerBound);
   -0.8000
    0.1000
    0.1000
disp(p.UpperBound);
   -0.2000
    0.5000
    0.5000
disp(p.BoundType);
     simple 
     conditional 
     conditional 

Установите ограничение минимальной кардинальности для портфеля с тремя активами, для которого у вас есть среднее и ковариационное значения возвратов активов.

AssetMean = [ 0.0101110; 0.0043532; 0.0137058 ];
AssetCovar = [ 0.00324625 0.00022983 0.00420395;
               0.00022983 0.00049937 0.00019247;
               0.00420395 0.00019247 0.00764097 ];  
           
p = Portfolio('AssetMean', AssetMean, 'AssetCovar', AssetCovar);
p = setDefaultConstraints(p); 

При работе с Portfolio объект, setMinMaxNumAssets функция позволяет вам установить пределы на количество вложенных активов. Эти пределы также известны как ограничения кардинальности. При управлении портфелем обычно хочется инвестировать хотя бы в определенное количество активов. В сложение необходимо также четко определить потребность в весе для каждого инвестированного актива. Вы можете сделать это с помощью setBounds с 'Conditional' BoundType. Если вы не задаете 'Conditional' BoundTypeоптимизатор не может понять, какие активы являются инвестированными активами и не может сформулировать MinNumAssets ограничение.

В следующем примере указывается, что должны быть инвестированы по крайней мере два актива и инвестиции должны быть более 16%.

p = setMinMaxNumAssets(p, 2, []);  
p = setBounds(p, 0.16, 'BoundType', 'conditional');

Использование estimateFrontierByReturn для оценки оптимальных портфелей с целевыми возвратами портфеля.

pwgt = estimateFrontierByReturn(p,[ 0.008, 0.01 ])
pwgt = 3×2

    0.2861    0.3967
    0.5001    0.2437
    0.2138    0.3595

Предположим, что у вас есть сбалансированный фонд с акциями, которые могут варьироваться от 50% до 75% вашего портфеля, и облигациями, которые могут варьироваться от 25% до 50% вашего портфеля. Установка ограничений для сбалансированного фонда.

lb = [ 0.5; 0.25 ];
ub = [ 0.75; 0.5 ];

p = PortfolioCVaR;
p = setBounds(p, lb, ub);
disp(p.NumAssets);
     2
disp(p.LowerBound);
    0.5000
    0.2500
disp(p.UpperBound);
    0.7500
    0.5000

Предположим, что у вас есть сбалансированный фонд с акциями, которые могут варьироваться от 50% до 75% вашего портфеля, и облигациями, которые могут варьироваться от 25% до 50% вашего портфеля. Чтобы задать ограничения для сбалансированного фонда с полунепрерывными ограничениями, используйте setBounds с 'Conditional' BoundType ограничения для установки xi = 0.25 или 0.5 <= xi <= 0.5 or 0.75 для всех i = 1... NumAssets.

lb = [ 0.5; 0.25 ];
ub = [ 0.75; 0.5 ];

p = PortfolioCVaR;
p = setBounds(p,lb,ub,'BoundType',["conditional"; "conditional"]);
disp(p.NumAssets);
     2
disp(p.LowerBound);
    0.5000
    0.2500
disp(p.UpperBound);
    0.7500
    0.5000

Предположим, что у вас есть сбалансированный фонд с акциями, которые могут варьироваться от 50% до 75% вашего портфеля, и облигациями, которые могут варьироваться от 25% до 50% вашего портфеля. Установка ограничений для сбалансированного фонда.

lb = [ 0.5; 0.25 ];
ub = [ 0.75; 0.5 ];

p = PortfolioMAD;
p = setBounds(p, lb, ub);
disp(p.NumAssets);
     2
disp(p.LowerBound);
    0.5000
    0.2500
disp(p.UpperBound);
    0.7500
    0.5000

Предположим, что у вас есть сбалансированный фонд с акциями, которые могут варьироваться от 50% до 75% вашего портфеля, и облигациями, которые могут варьироваться от 25% до 50% вашего портфеля. Чтобы задать ограничения для сбалансированного фонда с полунепрерывными ограничениями, используйте setBounds с 'Conditional' BoundType ограничения для установки xi = 0.25 или 0.5 <= xi <= 0.5 or 0.75 для всех i = 1... NumAssets.

lb = [ 0.5; 0.25 ];
ub = [ 0.75; 0.5 ];

p = PortfolioMAD;
p = setBounds(p,lb,ub,'BoundType',["conditional"; "conditional"]);
disp(p.NumAssets);
     2
disp(p.LowerBound);
    0.5000
    0.2500
disp(p.UpperBound);
    0.7500
    0.5000

Входные параметры

свернуть все

Объект для портфеля, заданный с помощью Portfolio, PortfolioCVaR, или PortfolioMAD объект. Для получения дополнительной информации о создании объекта портфеля см.

Типы данных: object

Нижняя граница веса для каждого актива, заданная в виде скаляра или вектора для Portfolio, PortfolioCVaR, или PortfolioMAD входной объект (obj).

Примечание

  • Если либо LowerBound или UpperBound являются ли входные параметры пустыми с [], соответствующие атрибуты в Portfolio, PortfolioCVaR, или PortfolioMAD объект очищается и устанавливается на [].

  • Если LowerBound или UpperBound заданы как скаляры и NumAssets существует или может быть вычислено, затем они претерпевают скалярное расширение. Значение по умолчанию для NumAssets является 1.

  • Если оба LowerBound и UpperBound существуют, и они не упорядочены правильно, setBounds при необходимости функция переключается с ограничениями.

  • Если 'Conditional'BoundType задан, LowerBound не может быть отрицательным значением.

Типы данных: double

(Необязательно) Верхний вес для каждого актива, заданный как скаляр или вектор для Portfolio, PortfolioCVaR, или PortfolioMAD входной объект (obj).

Примечание

  • Если либо LowerBound или UpperBound являются ли входные параметры пустыми с [], соответствующие атрибуты в Portfolio, PortfolioCVaR, или PortfolioMAD объект очищается и устанавливается на [].

  • Если LowerBound или UpperBound заданы как скаляры и NumAssets существует или может быть вычислено, затем они претерпевают скалярное расширение. Значение по умолчанию для NumAssets является 1.

  • Если оба LowerBound и UpperBound существуют, и они не упорядочены правильно, setBounds при необходимости функция переключается с ограничениями.

  • Если 'Conditional'BoundType задан, UpperBound не может быть отрицательным значением.

Типы данных: double

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: obj = setBounds(p,0.02,'BoundType','Conditional');

Тип границ для каждого веса актива, заданный как разделенная разделенными запятой парами, состоящая из 'BoundType' и скалярный вектор символов или строка со значением 'Simple' или 'Conditional' или массив ячеек из векторов символов со значениями 'Simple' или 'Conditional'.

  • 'Simple' является LowerBound < = AssetWeight < = UpperBound

  • 'Conditional' является LowerBound < = AssetWeight < = UpperBound или AssetWeight = 0.

    Предупреждение

    Если вы задаете область значений Bound, который будет включен в нуль (используя ‘Simple’ или ‘Conditional’ BoundType), когда вы используете setMinMaxNumAssets для задания MinNumAssets ограничение, а затем используйте одно из estimate функции, для оптимизатора неоднозначно определять минимальную потребность для распределенного актива. В этом случае оптимизатор считает, что актив с нулевым весом является допустимым распределенным активом, и поступает оптимизация, но с предупреждением, что распределение меньше, чем MinNumAssets требуется. Для получения дополнительной информации смотрите Поиск и устранение проблем для параметра 'Conditional' BoundType, MinNumAssets и MaxNumAssets Constraints.

Типы данных: char | cell | string

Количество активов в портфеле, заданное как разделенная разделенными запятой парами, состоящая из 'NumAssets' и скалярное числовое значение.

Примечание

NumAssets не может использоваться, чтобы изменить размерность Portfolio, PortfolioCVaR, или PortfolioMAD объект.

  • Если либо LowerBound или UpperBound являются ли входные параметры пустыми с [], соответствующие атрибуты в Portfolio, PortfolioCVaR, или PortfolioMAD объект очищается и устанавливается на [].

  • Если LowerBound или UpperBound заданы как скаляры и NumAssets существует или может быть вменено, затем они подвергаются скалярному расширению. Значение по умолчанию для NumAssets является 1.

  • Если оба LowerBound и UpperBound существуют, и они не упорядочены правильно, setBounds при необходимости функция переключается с ограничениями.

Типы данных: double

Выходные аргументы

свернуть все

Обновленный объект портфеля, возвращенный как Portfolio, PortfolioCVaR, или PortfolioMAD объект.

Совет

Можно также использовать запись через точку для настройки границ для весов портфеля.

 obj = obj.setBounds(LowerBound, UpperBound, Name,Value);

Если какой-либо из LowerBound, UpperBound, или BoundTypeявляются ли входные параметры пустыми с [ ]соответствующие атрибуты в объекте портфеля очищаются и устанавливаются на [ ]. Если BoundType очищается как [ ], связанный тип по умолчанию равен 'Simple'.

 p = setBounds(p, LowerBound, [ ], 'BoundType',[ ]);

Чтобы сбросить объект портфеля, чтобы быть непрерывной проблемой, запустите следующее:

p = setMinMaxNumAssets(p, [],[]);
p = setBounds(p, p.LowerBound, p.UpperBound, 'BoundType', 'Simple');

См. также

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

Темы

Введенный в R2011a