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, and '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 (полунепрерывные) ограничения, чтобы установить кси = 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 ограничения, чтобы установить кси = 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 ограничения, чтобы установить кси = 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 имя аргумента и 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.

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

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

Типы данных: 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