estimateFrontierLimits

Оцените оптимальные портфели в конечных точках границы эффективности

Описание

пример

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

пример

[pwgt,pbuy,psell] = estimateFrontierLimits(obj,Choice) оценочные оптимальные портфели в конечных точках границы эффективности с дополнительной опцией, заданной для Choice аргумент.

Примеры

свернуть все

Учитывая портфель p, estimateFrontierLimits функция получает портфели конечной точки.

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 = estimateFrontierLimits(p);

disp(pwgt);
    0.8891         0
    0.0369         0
    0.0404         0
    0.0336    1.0000

Когда любой или любая комбинация ограничений от '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);  

Используйте estimateFrontierLimits оценить оптимальные портфели в конечных точках границы эффективности.

[pwgt, pbuy, psell] = estimateFrontierLimits(p,'Both')
pwgt = 3×2

    0.3000    0.3000
    0.7000         0
         0    0.7000

pbuy = 3×2

    0.3000    0.3000
    0.7000         0
         0    0.7000

psell = 3×2

     0     0
     0     0
     0     0

estimateFrontierLimits функционируйте использует решатель 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

Учитывая портфель p, estimateFrontierLimits функция получает портфели конечной точки.

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 ];
m = m/12;
C = C/12;

rng(11);

AssetScenarios = mvnrnd(m, C, 20000);

p = PortfolioCVaR;
p = setScenarios(p, AssetScenarios);
p = setDefaultConstraints(p);
p = setProbabilityLevel(p, 0.95);


pwgt = estimateFrontierLimits(p);

disp(pwgt);
    0.8451         0
    0.0613         0
    0.0451         0
    0.0485    1.0000

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

Учитывая портфель p, estimateFrontierLimits функция получает портфели конечной точки.

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 ];
m = m/12;
C = C/12;

rng(11);

AssetScenarios = mvnrnd(m, C, 20000);

p = PortfolioMAD;
p = setScenarios(p, AssetScenarios);
p = setDefaultConstraints(p);

pwgt = estimateFrontierLimits(p);

disp(pwgt);
    0.8817         0
    0.0431         0
    0.0387         0
    0.0366    1.0000

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

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

свернуть все

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

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

(Необязательно) Индикатор, который портфели получить в экстремальных концах границы эффективности, заданной как вектор символов со значениями 'Both' или "Both"min или "Min", или 'Max' или "Max". Опции для Choice действие:

  • [] — Вычислите и минимальный риск и возвратите максимум портфели.

  • 'Both' или "Both" — Вычислите и минимальный риск и возвратите максимум портфели.

  • 'Min' или "Min" — Вычислите портфель минимального риска только.

  • 'Max' или "Max" — Вычислите возвращают максимум портфель только.

Типы данных: char | string

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

свернуть все

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

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

Примечание

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

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

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

Примечание

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

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

Советы

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

[pwgt, pbuy, psell] = obj.estimateFrontierLimits(Choice);

Введенный в R2011a