Чтобы создать полностью заданную задачу оптимизации портфеля 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