Чтобы создать полностью указанную проблему оптимизации портфеля CVaR, создайте экземпляр PortfolioCVaR объект с использованием PortfolioCVaR. Сведения о рабочем процессе при использовании PortfolioCVaR см. раздел Рабочий процесс объекта CCVaR.
Использовать 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, ...)
Проблема оптимизации портфеля CVaR полностью определена с помощью PortfolioCVaR объект при выполнении следующих трех условий:
Необходимо указать набор возвратов основных средств или цен, известных как сценарии, так что все сценарии являются конечными доходами основных средств или ценами. Эти сценарии предназначены для выборки из базового распределения вероятности возврата активов. Это условие может быть удовлетворено setScenarios или с несколькими консервационными функциями моделирования сценариев.
Набор возможных портфелей должен быть непустым компактным набором, где компактный набор закрыт и ограничен. Это условие можно выполнить с помощью обширной коллекции свойств, которые определяют различные типы ограничений для формирования набора возможных портфелей. Поскольку такие наборы должны быть ограничены, могут быть наложены явные или неявные ограничения и несколько инструментов, таких как estimateBounds функция, предоставить способы, чтобы убедиться, что ваша проблема правильно сформулирована.
Необходимо указать уровень вероятности для определения уровня потери хвоста, выше которого должно быть минимизировано условное значение риска. Это условие может быть удовлетворено setProbabilityLevel функция.
Хотя общие достаточные условия для оптимизации портфеля CVaR выходят за рамки первых трех условий, 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 объект для непосредственной настройки «стандартной» задачи оптимизации портфеля. Заданные сценарии возврата основных средств в переменной 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

Альтернативный способ выполнения той же задачи по настройке «стандартной» задачи оптимизации портфеля 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 Для формирования бюджетного ограничения равенства свойствам присваивается одинаковое значение.
Ярлыки для имен свойств
Имя аргумента ярлыка | Эквивалентный аргумент/имя свойства |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Например, этот вызов 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 функцию или любую из функций моделирования сценария.
estimateBounds | PortfolioCVaR