exponenta event banner

setMinMaxNumAssets

Установка ограничений на количество активов, вложенных в объект портфеля

Описание

пример

obj = setMinMaxNumAssets(obj,MinNumAssets,MaxNumAssets) устанавливает ограничения по кардинальности для Portfolio, PortfolioCVaR, или PortfolioMAD объект.

MinNumAssets и MaxNumAssets - минимальное и максимальное количество активов, вложенных в портфель, соответственно. Общее количество выделенных активов, удовлетворяющих ограничениям Bound, находится между [MinNumAssets, MaxNumAssets]. Для получения подробной информации о соответствующих рабочих процессах при использовании этих различных объектов см. Workflow-процесс объекта портфеля, Workflow-процесс объекта Portfolio CVaR и Workflow-процесс объекта Portfolio MAD.

Примеры

свернуть все

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

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 функция позволяет настроить лимиты на количество инвестированных активов. Использовать setMinMaxNumAssets ограничить общее количество выделенных активов не более чем двумя.

 p = setMinMaxNumAssets(p, [], 2);

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

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

         0         0
    0.6101    0.3962
    0.3899    0.6038

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

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

Установка ограничений минимального и максимального количества элементов и 'Conditional' BoundType для портфеля из трех основных средств, для которого имеются средние и ковариационные значения возвратов основных средств.

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 функция позволяет настроить лимиты на количество инвестированных активов. В следующем примере указано, что только два основных средства должны быть инвестированы с использованием setMinMaxNumAssets и инвестиции должны быть равномерно распределены между двумя активами с использованием setBounds.

p = setMinMaxNumAssets(p, 2, 2);  
p = setBounds(p, 0.5, 0.5, 'BoundType', 'conditional'); 

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

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

         0    0.5000
    0.5000         0
    0.5000    0.5000

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

load CAPMuniverse
p = PortfolioCVaR('AssetList',Assets(1:12));
p = simulateNormalScenariosByData(p, Data(:,1:12), 20000 ,'missingdata',true);
p = setProbabilityLevel(p, 0.80);

При работе с PortfolioCVaR объект, setMinMaxNumAssets функция позволяет настроить лимиты на количество инвестированных активов. В следующем примере указано, что как минимум пять активов и максимум 10 активов должны быть инвестированы с помощью setMinMaxNumAssets и инвестиции должны быть более 4% и менее 45% с использованием setBounds.

p = setMinMaxNumAssets(p, 5, 10);  
p = setBounds(p, 0.04, 0.45, 'BoundType', 'conditional'); 

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

pwgt = estimateFrontierByReturn(p,[ 0.00026, 0.00038 ])
pwgt = 12×2

    0.0400    0.0400
         0         0
         0         0
         0         0
         0         0
    0.0507    0.0786
    0.0400    0.0400
    0.0400    0.0400
         0         0
    0.0400    0.0400
      ⋮

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

load CAPMuniverse
p = PortfolioMAD('AssetList',Assets(1:12));
p = simulateNormalScenariosByData(p, Data(:,1:12), 20000 ,'missingdata',true);

При работе с PortfolioMAD объект, setMinMaxNumAssets функция позволяет настроить лимиты на количество инвестированных активов. В следующем примере указано, что как минимум пять активов и максимум 10 активов должны быть инвестированы с помощью setMinMaxNumAssets и инвестиции должны быть более 4% и менее 45% с использованием setBounds.

p = setMinMaxNumAssets(p, 5, 10);  
p = setBounds(p, 0.04, 0.45, 'BoundType', 'conditional'); 

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

pwgt = estimateFrontierByReturn(p,[ 0.00026, 0.00038 ])
pwgt = 12×2

    0.0400    0.0400
         0         0
         0         0
         0         0
         0         0
    0.0507    0.0786
    0.0400    0.0400
    0.0400    0.0400
         0         0
    0.0400    0.0400
      ⋮

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

свернуть все

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

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

Минимальное количество активов, выделенных в портфеле, указанное скалярным числом.

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

Максимальное количество активов, выделенных в портфеле, указанное скалярным числом.

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

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

свернуть все

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

Совет

  • Можно также использовать точечную нотацию, чтобы настроить список идентификаторов для активов.

    obj = obj.setMinMaxNumAssets(MinNumAssets,MaxNumAssets);

  • Указание пустых значений ([[]) для MinNumAssets и MaxNumAsssets удаляет ограничения ограничения из Portfolio, PortfolioCVaR, или PortfolioMAD объект.

Представлен в R2018b