exponenta event banner

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

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

Синтаксис

Использовать 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, ...)

Достаточность проблем MAD

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

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

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

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

Примеры функций MAD

При создании 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 для одноступенчатой установки

Вы можете использовать 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 функцию или любую из функций моделирования сценария.

См. также

|

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

Подробнее