Создание объекта портфеля

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

Синтаксис

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

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

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

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

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

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

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

q = Portfolio(p, ...)

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

Оптимизация портфеля среднего отклонения полностью задана с объектом Portfolio, если эти два условия соблюдают:

  • Моменты возвратов актива должны быть заданы таким образом, что свойство AssetMean содержит допустимый конечный средний вектор актива, возвращается, и свойство AssetCovar содержит допустимую симметричную положительно-полуопределенную матрицу для ковариации актива, возвращается.

    Первое условие удовлетворено путем установки свойств, сопоставленных с моментами актива, возвращается.

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

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

Несмотря на то, что общие условия достаточности для оптимизации портфеля среднего отклонения идут вне этих двух условий, объект Portfolio, реализованный в Financial Toolbox™ неявно, обрабатывает все эти дополнительные условия. Для получения дополнительной информации о модели Markowitz для оптимизации портфеля среднего отклонения смотрите Оптимизацию Портфеля.

Примеры функции портфеля

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

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

          BuyCost: []
         SellCost: []
     RiskFreeRate: []
        AssetMean: []
       AssetCovar: []
    TrackingError: []
     TrackingPort: []
         Turnover: []
      BuyTurnover: []
     SellTurnover: []
             Name: []
        NumAssets: []
        AssetList: []
         InitPort: []
      AInequality: []
      bInequality: []
        AEquality: []
        bEquality: []
       LowerBound: []
       UpperBound: []
      LowerBudget: []
      UpperBudget: []
      GroupMatrix: []
       LowerGroup: []
       UpperGroup: []
           GroupA: []
           GroupB: []
       LowerRatio: []
       UpperRatio: []
        BoundType: []
     MinNumAssets: []
     MaxNumAssets: []

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

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

Можно использовать объект Portfolio непосредственно настроить “стандартную” задачу оптимизации портфеля, учитывая среднее значение, и ковариация актива возвращается в переменных m и C:

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('assetmean', m, 'assetcovar', C, ...
'lowerbudget', 1, 'upperbudget', 1, 'lowerbound', 0);
Значение свойства LowerBound подвергается скалярному расширению, поскольку AssetMean и AssetCovar обеспечивают размерности проблемы.

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

p.plotFrontier;

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

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

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 = Portfolio(p, 'assetmean', m, 'assetcovar', C);
p = Portfolio(p, 'lowerbudget', 1, 'upperbudget', 1);
p = Portfolio(p, 'lowerbound', 0);
 
plotFrontier(p);

Этот путь работает, потому что вызовы Portfolio находятся в этом конкретном порядке. В этом случае вызов, чтобы инициализировать AssetMean и AssetCovar обеспечивает размерности для проблемы. Если бы необходимо было выполнить этот шаг в последний раз, необходимо было бы явным образом определить размеры свойства 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 ];

p = Portfolio;
p = Portfolio(p, 'LowerBound', zeros(size(m)));
p = Portfolio(p, 'LowerBudget', 1, 'UpperBudget', 1);
p = Portfolio(p, 'AssetMean', m, 'AssetCovar', C);
 
plotFrontier(p);

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

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

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

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

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

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

ae

AEquality

ai

AInequality

covar

AssetCovar

assetnames или assets

AssetList

mean

AssetMean

be

bEquality

bi

bInequality

group

GroupMatrix

lb

LowerBound

n или num

NumAssets

rfr

RiskFreeRate

ub

UpperBound

budget

UpperBudget и LowerBudget

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

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('mean', m, 'covar', C, 'budget', 1, 'lb', 0);
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 ];

p = Portfolio;
p.NumAssets = numel(m);
p.AssetMean = m;
p.AssetCovar = C;
p.LowerBudget = 1;
p.UpperBudget = 1;
p.LowerBound = zeros(size(m));

plotFrontier(p);

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

|

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

Больше о

Внешние веб-сайты