setMinMaxNumAssets

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

Описание

пример

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

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

Примеры

свернуть все

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

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