Создание объекта 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: []
    MinNumAssets: []
    MaxNumAssets: []
       BoundType: []

Перечисленные подходы обеспечивают способ настроить задачу оптимизации портфеля с 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)
p = 

  PortfolioMAD with properties:

         BuyCost: []
        SellCost: []
    RiskFreeRate: []
        Turnover: []
     BuyTurnover: []
    SellTurnover: []
    NumScenarios: 20000
            Name: []
       NumAssets: 4
       AssetList: []
        InitPort: []
     AInequality: []
     bInequality: []
       AEquality: []
       bEquality: []
      LowerBound: [4×1 double]
      UpperBound: []
     LowerBudget: 1
     UpperBudget: 1
     GroupMatrix: []
      LowerGroup: []
      UpperGroup: []
          GroupA: []
          GroupB: []
      LowerRatio: []
      UpperRatio: []
    MinNumAssets: []
    MaxNumAssets: []
       BoundType: []
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 функция или любая из функций симуляции сценария.

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

|

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

Больше о

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