exponenta event banner

setBounds

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

Описание

пример

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

пример

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.

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

    Если задан диапазон границ, включающий ноль (с использованием одного из следующих значений: ‘Simple’ или ‘Conditional’ BoundType), при использовании setMinMaxNumAssets для указания MinNumAssets ограничение, а затем используйте одно из estimate функции, для оптимизатора неоднозначно определить минимальную потребность в распределенном активе. В этом случае оптимизатор считает, что актив с нулевым весом является действительным распределенным активом, и оптимизация продолжается, но с предупреждением, что перерасчет имеет меньше, чем MinNumAssets требуется. Дополнительные сведения см. в разделе Устранение неполадок для установки ограничений типа «условный», 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