setMinMaxNumAssets

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

Синтаксис

obj = setMinMaxNumAssets(obj,MinNumAssets,MaxNumAssets)

Описание

пример

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

MinNumAssets и MaxNumAssets являются минимальным и максимальным количеством активов, которые инвестируют в портфель, соответственно. Общее количество выделенных активов, удовлетворяющих Связанные ограничения, между [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 с 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

Установите минимальные и максимальные ограничения кардинальности и BoundType '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 позволяет вам настроить пределы на количестве активов, которые инвестируют. Следующий пример указывает, что точно два актива нужно инвестировать с помощью 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