setBounds

Настройте границы для весов портфеля для объекта портфеля

Синтаксис

obj = setBounds(obj,LowerBound)
obj = setBounds(___,Name,Value)
obj = setBounds(obj,LowerBound,UpperBound)
obj = setBounds(___,Name,Value)

Описание

пример

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 <= x 1 <= 0.2; x 2 = 0 или 0.1 <= x 2 <= 0.5; x 3 = 0 или 0.1 <= x 3 <=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 с BoundType 'Conditional'. Если вы не задаете BoundType 'Conditional', оптимизатор не может понять, какие активы являются инвестированными активами и не могут сформулировать ограничение 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.2438
    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 должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: 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