estimateFrontierByReturn

Оцените, что оптимальные портфели с целенаправленным портфелем возвращаются

Синтаксис

[pwgt,pbuy,psell] = estimateFrontierByReturn(obj,TargetReturn)

Описание

пример

[pwgt,pbuy,psell] = estimateFrontierByReturn(obj,TargetReturn) оценочные оптимальные портфели с целенаправленным портфелем возвращаются для Portfolio, PortfolioCVaR или объектов PortfolioMAD. Для получения дополнительной информации на соответствующих рабочих процессах при использовании этих различных объектов, смотрите Рабочий процесс Объекта Портфеля, Рабочий процесс Объекта PortfolioCVaR и Рабочий процесс Объекта PortfolioMAD.

Примеры

свернуть все

Получить эффективные портфели, которые предназначались для портфеля, возвращается, функция estimateFrontierByReturn признает, что один или несколько предназначается для портфеля, возвращает и получает эффективные портфели с заданными возвратами. Примите, что у вас есть вселенная четырех активов, где вы хотите получить эффективные портфели с целевым портфелем, возвращается из 6%, 9% и 12%.

m = [ 0.05; 0.1; 0.12; 0.18 ];
C = [ 0.0064 0.00408 0.00192 0; 
      0.00408 0.0289 0.0204 0.0119;
      0.00192 0.0204 0.0576 0.0336;
      0 0.0119 0.0336 0.1225 ];
 
p = Portfolio;
p = setAssetMoments(p, m, C);
p = setDefaultConstraints(p);
pwgt = estimateFrontierByReturn(p, [0.06, 0.09, 0.12]);

display(pwgt);
pwgt = 4×3

    0.8772    0.5032    0.1293
    0.0434    0.2488    0.4541
    0.0416    0.0780    0.1143
    0.0378    0.1700    0.3022

Когда любой или любая комбинация ограничений от 'Conditional' BoundType, MinNumAssets и MaxNumAssets активен, проблема портфеля формулируется как проблема частично-целочисленного программирования, и решатель MINLP используется.

Создайте объект Portfolio для трех активов.

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);           

Используйте setBounds с полунепрерывными ограничениями, чтобы установить кси = 0 или 0.02 <= xi <= 0.5 для всего i = 1... NumAssets.

p = setBounds(p, 0.02, 0.7,'BoundType', 'Conditional', 'NumAssets', 3);                    

При работе с объектом Portfolio функция setMinMaxNumAssets позволяет вам настроить пределы на количестве активов, которые инвестируют (как известный кардинальностью) ограничения. Это определяет общий номер выделенных активов, удовлетворяющих Связанные ограничения, которые являются между MinNumAssets и MaxNumAssets. Установкой MinNumAssets = MaxNumAssets = 2, только два из этих трех активов инвестируют в портфель.

p = setMinMaxNumAssets(p, 2, 2);  

Используйте estimateFrontierByReturn, чтобы оценить, что оптимальные портфели с целенаправленным портфелем возвращаются.

[pwgt, pbuy, psell] = estimateFrontierByReturn(p,[ 0.0072321, 0.0119084 ])
pwgt = 3×2

         0    0.5000
    0.6922         0
    0.3078    0.5000

pbuy = 3×2

         0    0.5000
    0.6922         0
    0.3078    0.5000

psell = 3×2

     0     0
     0     0
     0     0

Функция estimateFrontierByReturn использует решатель MINLP, чтобы решить эту проблему. Используйте функцию setSolverMINLP, чтобы сконфигурировать SolverType и опции.

p.solverTypeMINLP
ans = 
'OuterApproximation'
p.solverOptionsMINLP
ans = struct with fields:
                           MaxIterations: 1000
                    AbsoluteGapTolerance: 1.0000e-07
                    RelativeGapTolerance: 1.0000e-05
                  NonlinearScalingFactor: 1000
                  ObjectiveScalingFactor: 1000
                                 Display: 'off'
                           CutGeneration: 'basic'
                MaxIterationsInactiveCut: 30
                      ActiveCutTolerance: 1.0000e-07
                  IntMasterSolverOptions: [1x1 optim.options.Intlinprog]
    NumIterationsEarlyIntegerConvergence: 30

Получить эффективные портфели, которые предназначались для портфеля, возвращается, функция estimateFrontierByReturn признает, что один или несколько предназначается для портфеля, возвращает и получает эффективные портфели с заданными возвратами. Примите, что у вас есть вселенная четырех активов, где вы хотите получить эффективные портфели с целевым портфелем, возвращается из 7%, 10% и 13%.

m = [ 0.05; 0.1; 0.12; 0.18 ];
C = [ 0.0064 0.00408 0.00192 0; 
    0.00408 0.0289 0.0204 0.0119;
    0.00192 0.0204 0.0576 0.0336;
    0 0.0119 0.0336 0.1225 ];

rng(11);

p = PortfolioCVaR;
p = simulateNormalScenariosByMoments(p, m, C, 2000);
p = setDefaultConstraints(p);
p = setProbabilityLevel(p, 0.95);

pwgt = estimateFrontierByReturn(p, [0.07 0.10, 0.13]);

display(pwgt);
pwgt = 4×3

    0.7371    0.3071         0
    0.1504    0.3919    0.4396
    0.0286    0.1011    0.1360
    0.0839    0.1999    0.4244

Функциональный rng (seed) используется, чтобы сбросить генератор случайных чисел, чтобы привести к зарегистрированным результатам. Не необходимо сбросить генератор случайных чисел, чтобы моделировать сценарии.

Получить эффективные портфели, которые предназначались для портфеля, возвращается, функция estimateFrontierByReturn признает, что один или несколько предназначается для портфеля, возвращает и получает эффективные портфели с заданными возвратами. Примите, что у вас есть вселенная четырех активов, где вы хотите получить эффективные портфели с целевым портфелем, возвращается из 7%, 10% и 13%.

m = [ 0.05; 0.1; 0.12; 0.18 ];
C = [ 0.0064 0.00408 0.00192 0; 
    0.00408 0.0289 0.0204 0.0119;
    0.00192 0.0204 0.0576 0.0336;
    0 0.0119 0.0336 0.1225 ];

rng(11);

p = PortfolioMAD;
p = simulateNormalScenariosByMoments(p, m, C, 2000);
p = setDefaultConstraints(p);

pwgt = estimateFrontierByReturn(p, [0.07 0.10, 0.13]);

display(pwgt);
pwgt = 4×3

    0.7436    0.3147         0
    0.1357    0.3836    0.4422
    0.0328    0.0938    0.1324
    0.0879    0.2079    0.4254

Функциональный rng (seed) используется, чтобы сбросить генератор случайных чисел, чтобы привести к зарегистрированным результатам. Не необходимо сбросить генератор случайных чисел, чтобы моделировать сценарии.

Входные параметры

свернуть все

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

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

Целевые значения для портфеля возвращаются, заданный как вектор NumPorts.

Примечание

TargetReturn указывает, что цель возвращается для портфелей на границе эффективности. Если какие-либо значения TargetReturn вне области значений возвратов для эффективных портфелей, TargetReturn заменяется минимальным или максимальным эффективным портфелем, возвращаются, в зависимости от того, является ли целевой возврат ниже, или выше области значений эффективного портфеля возвращается.

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

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

свернуть все

Оптимальные портфели на границе эффективности с заданной целью возвращаются из TargetReturn, возвращенного как NumAssets-by-NumPorts матрица. pwgt возвращен для Portfolio, PortfolioCVaR или входного объекта PortfolioMAD (obj).

Покупки относительно начального портфеля для оптимальных портфелей на границе эффективности, возвращенной как NumAssets-by-NumPorts матрица.

Примечание

Если никакой начальный портфель не задан в obj.InitPort, то значение принято, чтобы быть 0, таким образом что pbuy = max(0, pwgt) и psell = max(0, -pwgt).

pbuy возвращен для Portfolio, PortfolioCVaR или входного объекта PortfolioMAD (obj).

Продажи относительно начального портфеля для оптимальных портфелей на границе эффективности, возвращенной как NumAssets-by-NumPorts матрица.

Примечание

Если никакой начальный портфель не задан в obj.InitPort, то значение принято, чтобы быть 0, таким образом что pbuy = max(0, pwgt) и psell = max(0, -pwgt).

psell возвращен для Portfolio, PortfolioCVaR или входного объекта PortfolioMAD (obj).

Советы

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

[pwgt, pbuy, psell] = obj.estimateFrontierByReturn(TargetReturn);

Введенный в R2011a

Для просмотра документации необходимо авторизоваться на сайте