exponenta event banner

estimateFrontierLimits

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

Описание

пример

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

пример

[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 с полунепрерывными ограничениями для установки xi = 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(начальное число) сбрасывает генератор случайных чисел для получения документированных результатов. Нет необходимости сбрасывать генератор случайных чисел для моделирования сценариев.

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

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

свернуть все

Объект для портфеля, указанный с помощью 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