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

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

Синтаксис

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

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

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

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

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

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

Входные параметры не зависят от регистра, но должны быть полностью заданы. Кроме сложения, несколько свойств могут быть заданы с помощью альтернативных имен аргумента (см. Ярлыки для Имен свойства). The PortfolioMAD объект пытается обнаружить размерности задачи из входов и, после того, как набор, последующие входы могут подвергаться различным скалярным или матричным операциям расширения, которые упрощают общий процесс для формирования задачи. В сложение a 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);
The 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 объект принимает, что вы определяете проблему с одним активом, и вызывает ошибку при вызове, чтобы задать сценарии с четырьмя активами.

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

The 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 функция или любая из функций симуляции сценария.

См. также

|

Похожие примеры

Подробнее о