Чтобы создать полностью заданную задачу оптимизации портфеля 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, ...)
Задача оптимизации портфеля 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)
p =
PortfolioCVaR with properties:
BuyCost: []
SellCost: []
RiskFreeRate: []
ProbabilityLevel: 0.9500
Turnover: []
BuyTurnover: []
SellTurnover: []
NumScenarios: 20000
Name: []
NumAssets: 4
AssetList: []
InitPort: []
AInequality: []
bInequality: []
AEquality: []
bEquality: []
LowerBound: [4×1 double]
UpperBound: []
LowerBudget: 1
UpperBudget: 1
GroupMatrix: []
LowerGroup: []
UpperGroup: []
GroupA: []
GroupB: []
LowerRatio: []
UpperRatio: []
MinNumAssets: []
MaxNumAssets: []
BoundType: []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 функция или любая из функций симуляции сценария.
PortfolioCVaR | estimateBounds