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

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

Синтаксис

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

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

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

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

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

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

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

q = PortfolioCVaR(p, ...)

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

Задача оптимизации портфеля CVaR полностью задана с PortfolioCVaR возразите, соблюдают ли следующие три условия:

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

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

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

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

Примеры функции PortfolioCVaR

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

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

             BuyCost: []
            SellCost: []
        RiskFreeRate: []
    ProbabilityLevel: []
            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: []

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

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

Можно использовать PortfolioCVaR возразите, чтобы непосредственно настроить “стандартную” задачу оптимизации портфеля. Учитывая сценарии актива возвращается в переменной 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 = PortfolioCVaR('Scenarios', AssetScenarios, ...
'LowerBound', 0, 'LowerBudget', 1, 'UpperBudget', 1, ...
'ProbabilityLevel', 0.95);
LowerBound значение свойства подвергается скалярному расширению начиная с AssetScenarios обеспечивает размерности проблемы.

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

p.plotFrontier

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

Альтернативный способ выполнить ту же задачу подготовки “стандартной” задачи оптимизации портфеля CVaR, учитывая 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 = PortfolioCVaR;
p = setScenarios(p, AssetScenarios);
p = PortfolioCVaR(p, 'LowerBound', 0);
p = PortfolioCVaR(p, 'LowerBudget', 1, 'UpperBudget', 1);
p = setProbabilityLevel(p, 0.95);

plotFrontier(p)

Этот путь работает потому что вызовы в этом конкретном порядке. В этом случае, вызов, чтобы инициализировать 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 = PortfolioCVaR;
p = PortfolioCVaR(p, 'LowerBound', zeros(size(m)));
p = PortfolioCVaR(p, 'LowerBudget', 1, 'UpperBudget', 1);
p = setProbabilityLevel(p, 0.95);
p = setScenarios(p, AssetScenarios);

Примечание

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

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

PortfolioCVaR объект имеет более короткие имена аргумента, которые заменяют более длинные имена аргумента, сопоставленные на определенные свойства PortfolioCVaR объект. Например, вместо того, чтобы ввести 'ProbabilityLevel', PortfolioCVaR объект принимает нечувствительное к регистру имя 'plevel' установить ProbabilityLevel свойство в PortfolioCVaR объект. Каждое более короткое имя аргумента соответствует одному свойству в PortfolioCVaR объект. Одним исключением является альтернативное имя аргумента '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

level, problevel, или plevel

ProbabilityLevel

rfr

RiskFreeRate

scenario или assetscenarios

Scenarios

ub

UpperBound

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

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 = PortfolioCVaR('scenario', AssetScenarios, 'lb', 0, 'budget', 1, 'plevel', 0.95);
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 = PortfolioCVaR;

p = setScenarios(p, AssetScenarios);
p.ProbabilityLevel = 0.95;

p.LowerBudget = 1;
p.UpperBudget = 1;
p.LowerBound = zeros(size(m));

plotFrontier(p)

Примечание

Сценарии не могут быть присвоены непосредственно с помощью записи через точку для PortfolioCVaR объект. Сценарии должны всегда устанавливаться через любого PortfolioCVaR объект, setScenarios функция или любая из функций симуляции сценария.

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

|

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

Больше о

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