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 с полунепрерывными ограничениями, чтобы задать xi = 0 или 0.02 <= xi <= 0.5 для всех i = 1... NumAssets.

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

При работе с Portfolio объект, setMinMaxNumAssets функция позволяет вам установить пределы на количество вложенных активов (так называемая кардинальность) ограничения. Это устанавливает общее количество распределенных активов, удовлетворяющих ограничениям Bound, которые находятся между 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

The 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-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.estimateFrontierLimits(Choice);

Введенный в R2011a