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

Чтобы создать полностью заданную задачу оптимизации портфеля среднего отклонения, инстанцируйте Portfolio объект с помощью 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);

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

|

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

Больше о

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