Создание объекта PortfolioMAD

Чтобы создать полностью заданную задачу оптимизации портфеля MAD, инстанцируйте объекта PortfolioMAD с помощью объекта PortfolioMAD. Для получения информации о рабочем процессе при использовании объектов PortfolioMAD смотрите Рабочий процесс Объекта PortfolioMAD.

Синтаксис

Используйте PortfolioMAD, чтобы создать экземпляр объекта класса PortfolioMAD. Можно использовать объект PortfolioMAD несколькими способами. Чтобы настроить задачу оптимизации портфеля в объекте PortfolioMAD, самый простой синтаксис:

p = PortfolioMAD;
Этот синтаксис создает объект PortfolioMAD, p, такой, что все свойства объектов пусты.

Объект PortfolioMAD также принимает наборы аргументов пары "имя-значение" аргумента для свойств и их значений. Объект PortfolioMAD принимает входные параметры для публичных свойств с общим синтаксисом:

	p = PortfolioMAD('property1', value1, 'property2', value2, ... );

Если объект PortfolioMAD уже существует, синтаксис разрешает первому (и только первый аргумент) PortfolioMAD быть существующим объектом с последующими аргументами пары "имя-значение" аргумента для свойств, которые будут добавлены или изменены. Например, учитывая существующий объект PortfolioMAD в p, общий синтаксис:

p = PortfolioMAD(p, 'property1', value1, 'property2', value2, ... );

Имена входного параметра не являются чувствительными к регистру, но должны быть полностью заданы. Кроме того, несколько свойств могут быть заданы с альтернативными именами аргумента (см. Ярлыки для Имен свойства). Объект PortfolioMAD пытается обнаружить проблемные размерности от входных параметров и, когда-то установить, последующие входные параметры могут подвергнуться различным скалярным или матричным операциям расширения, которые упрощают полный процесс, чтобы сформулировать проблему. Кроме того, объект PortfolioMAD является объектом значения так, чтобы, учитывая портфель p следующий код создал два объекта, p и q, которые отличны:

q = PortfolioMAD(p, ...)

Проблемная достаточность PortfolioMAD

Задача оптимизации портфеля MAD полностью задана с объектом PortfolioMAD, если следующие три условия соблюдают:

  • Необходимо указать, что набор актива возвращается или цены, известные как сценарии, таким образом, что все сценарии являются конечным активом, возвращается или цены. Эти сценарии предназначаются, чтобы быть выборками от базового распределения вероятностей актива, возвращается. Это условие может быть удовлетворено функцией setScenarios или с несколькими консервированными функциями симуляции сценария.

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

    Несмотря на то, что общие достаточные условия для оптимизации портфеля MAD идут вне этих условий, указатели на объект PortfolioMAD все эти дополнительные условия.

Примеры функции PortfolioMAD

Если вы создаете объект PortfolioMAD, p, без входных параметров, можно отобразить его с помощью disp:

p = PortfolioMAD;
disp(p);
 PortfolioMAD with properties:

         BuyCost: []
        SellCost: []
    RiskFreeRate: []
        Turnover: []
     BuyTurnover: []
    SellTurnover: []
    NumScenarios: []
            Name: []
       NumAssets: []
       AssetList: []
        InitPort: []
     AInequality: []
     bInequality: []
       AEquality: []
       bEquality: []
      LowerBound: []
      UpperBound: []
     LowerBudget: []
     UpperBudget: []
     GroupMatrix: []
      LowerGroup: []
      UpperGroup: []
          GroupA: []
          GroupB: []
      LowerRatio: []
      UpperRatio: []

Перечисленные подходы обеспечивают способ настроить задачу оптимизации портфеля с объектом PortfolioMAD. Пользовательские функции множества предлагают дополнительные способы установить и изменить наборы свойств в объекте PortfolioMAD.

Используя функцию PortfolioMAD для одноступенчатого Setup

Можно использовать объект PortfolioMAD непосредственно настроить “стандартную” задачу оптимизации портфеля. Учитывая сценарии актива возвращается в переменной AssetScenarios, эта проблема полностью задана можно следующим образом:

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;

AssetScenarios = mvnrnd(m, C, 20000);

p = PortfolioMAD('Scenarios', AssetScenarios, ...
'LowerBound', 0, 'LowerBudget', 1, 'UpperBudget', 1);
Значение свойства LowerBound подвергается скалярному расширению, поскольку AssetScenarios обеспечивает размерности проблемы.

Можно использовать запись через точку с функциональным plotFrontier.

p.plotFrontier;

Используя функцию PortfolioMAD с последовательностью шагов

Альтернативный способ выполнить ту же задачу подготовки “стандартной” задачи оптимизации портфеля MAD, учитывая переменную AssetScenarios:

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;

AssetScenarios = mvnrnd(m, C, 20000);

p = PortfolioMAD;
p = setScenarios(p, AssetScenarios);
p = PortfolioMAD(p, 'LowerBound', 0);
p = PortfolioMAD(p, 'LowerBudget', 1, 'UpperBudget', 1);

plotFrontier(p);

Этот путь работает, потому что вызовы объекта PortfolioMAD находятся в этом конкретном порядке. В этом случае вызов, чтобы инициализировать AssetScenarios обеспечивает размерности для проблемы. Если бы необходимо было выполнить этот шаг в последний раз, необходимо было бы явным образом определить размеры свойства LowerBound можно следующим образом:

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;

AssetScenarios = mvnrnd(m, C, 20000);

p = PortfolioMAD;
p = PortfolioMAD(p, 'LowerBound', zeros(size(m)));
p = PortfolioMAD(p, 'LowerBudget', 1, 'UpperBudget', 1);
p = setScenarios(p, AssetScenarios);

Примечание

Если вы не задавали размер LowerBound, но, вместо этого, вводили скалярный аргумент, объект PortfolioMAD принимает, что вы задаете проблему одно актива, и производит ошибку в вызове, чтобы установить сценарии актива с четырьмя активами.

Ярлыки для имен свойства

Объект PortfolioMAD имеет более короткие имена аргумента, которые заменяют более длинные имена аргумента, сопоставленные на определенные свойства объекта PortfolioMAD. Например, вместо того, чтобы ввести 'AInequality', объект PortfolioMAD принимает, что нечувствительное к регистру имя 'ai' устанавливает свойство AInequality в объекте PortfolioMAD. Каждое более короткое имя аргумента соответствует одному свойству в объекте PortfolioMAD. Одним исключением является альтернативное имя аргумента 'budget', который показывает обоих свойства LowerBudget и UpperBudget. Когда 'budget' используется, затем свойства LowerBudget и UpperBudget собираются в то же значение сформировать ограничение бюджета равенства.

Ярлыки для имен свойства

Имя аргумента ярлыка

Эквивалентный Аргумент / Имя свойства

ae

AEquality

ai

AInequality

assetnames или assets

AssetList

be

bEquality

bi

bInequality

budget

UpperBudget и LowerBudget

group

GroupMatrix

lb

LowerBound

n или num

NumAssets

rfr

RiskFreeRate

scenario или assetscenarios

Scenarios

ub

UpperBound

Например, этот вызов PortfolioMAD использует эти ярлыки для свойств:

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;

AssetScenarios = mvnrnd(m, C, 20000);

p = PortfolioMAD('scenario', AssetScenarios, 'lb', 0, 'budget', 1);
plotFrontier(p);

Прямая установка свойств объектов портфеля

Несмотря на то, что не рекомендуемый, можно установить свойства непосредственно с помощью записи через точку, однако никакая проверка ошибок не сделана на входных параметрах:

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;

AssetScenarios = mvnrnd(m, C, 20000);

p = PortfolioMAD;

p = setScenarios(p, AssetScenarios);

p.LowerBudget = 1;
p.UpperBudget = 1;
p.LowerBound = zeros(size(m));

plotFrontier(p);

Примечание

Сценарии не могут быть присвоены непосредственно с помощью записи через точку для объекта PortfolioMAD. Сценарии должны всегда устанавливаться или через объект PortfolioMAD, функцию setScenarios или через любую из функций симуляции сценария.

Смотрите также

|

Связанные примеры

Больше о