Чтобы создать полностью указанную проблему оптимизации портфеля MAD, создайте экземпляр PortfolioMAD объект с использованием PortfolioMAD. Сведения о рабочем процессе при использовании PortfolioMAD см. раздел Рабочий процесс объекта MAD.
Использовать PortfolioMAD для создания экземпляра объекта PortfolioMAD класс. Вы можете использовать PortfolioMAD объект несколькими способами. Настройка задачи оптимизации портфеля в PortfolioMAD объект, простейший синтаксис:
p = PortfolioMAD;
PortfolioMAD объект, p, так что все свойства объекта пусты. PortfolioMAD объект также принимает коллекции аргументов пары «имя-значение» для свойств и их значений. PortfolioMAD объект принимает входные данные для общих свойств с общим синтаксисом:
p = PortfolioMAD('property1', value1, 'property2', value2, ... );Если PortfolioMAD объект уже существует, синтаксис допускает первый (и только первый аргумент) из PortfolioMAD является существующим объектом с последующими аргументами пары «имя-значение» для добавления или изменения свойств. Например, при наличии PortfolioMAD объект в p, общий синтаксис:
p = PortfolioMAD(p, 'property1', value1, 'property2', value2, ... );
Имена входных аргументов не чувствительны к регистру, но должны быть полностью указаны. Кроме того, можно указать несколько свойств с альтернативными именами аргументов (см. Ярлыки для имен свойств). PortfolioMAD объект пытается обнаружить размеры проблемы из входных данных, и после установки последующие входные данные могут подвергаться различным скалярным или матричным операциям расширения, которые упрощают общий процесс формирования задачи. Кроме того, PortfolioMAD объект является объектом стоимости, так что, данное портфолио p, следующий код создает два объекта, p и q, которые отличаются:
q = PortfolioMAD(p, ...)
Проблема оптимизации портфеля MAD полностью определена с помощью PortfolioMAD объект при выполнении следующих трех условий:
Необходимо указать набор возвратов основных средств или цен, известных как сценарии, так что все сценарии являются конечными доходами основных средств или ценами. Эти сценарии предназначены для выборки из базового распределения вероятности возврата активов. Это условие может быть удовлетворено setScenarios или с несколькими консервационными функциями моделирования сценариев.
Набор возможных портфелей должен быть непустым компактным набором, где компактный набор закрыт и ограничен. Это условие можно выполнить с помощью обширной коллекции свойств, которые определяют различные типы ограничений для формирования набора возможных портфелей. Поскольку такие наборы должны быть ограничены, могут быть наложены явные или неявные ограничения и несколько инструментов, таких как estimateBounds функция, предоставить способы, чтобы убедиться, что ваша проблема правильно сформулирована.
Хотя общие достаточные условия для оптимизации портфеля MAD выходят за рамки этих условий, PortfolioMAD объект обрабатывает все эти дополнительные условия.
При создании PortfolioMAD объект, p, без входных аргументов, его можно отобразить с помощью disp:
p = PortfolioMAD; disp(p)
PortfolioMAD with properties:
BuyCost: []
SellCost: []
RiskFreeRate: []
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: []Перечисленные подходы обеспечивают способ настройки проблемы оптимизации портфеля с PortfolioMAD объект. Функции пользовательского набора предлагают дополнительные способы установки и изменения коллекций свойств в PortfolioMAD объект.
Вы можете использовать PortfolioMAD объект для непосредственной настройки «стандартной» задачи оптимизации портфеля. Заданные сценарии возврата основных средств в переменной 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 = PortfolioMAD('Scenarios', AssetScenarios, ...
'LowerBound', 0, 'LowerBudget', 1, 'UpperBudget', 1);
LowerBound значение свойства подвергается скалярному расширению, поскольку AssetScenarios предоставляет размеры проблемы.С функцией можно использовать точечную нотацию plotFrontier.
p.plotFrontier

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

Этот способ работает, потому что вызовы PortfolioMAD объекты находятся в данном порядке. В этом случае вызов для инициализации 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 = PortfolioMAD; p = PortfolioMAD(p, 'LowerBound', zeros(size(m))); p = PortfolioMAD(p, 'LowerBudget', 1, 'UpperBudget', 1); p = setScenarios(p, AssetScenarios);
Примечание
Если не указан размер LowerBound но, вместо этого, введите скалярный аргумент, PortfolioMAD объект предполагает, что вы определяете проблему с одним основным средством, и создает ошибку при вызове для установки сценариев основных средств с четырьмя основными средствами.
PortfolioMAD имеет более короткие имена аргументов, которые заменяют более длинные имена аргументов, связанные с определенными свойствами PortfolioMAD объект. Например, вместо ввода 'AInequality', PortfolioMAD объект принимает имя без учета регистра 'ai' для установки AInequality свойство в PortfolioMAD объект. Каждое более короткое имя аргумента соответствует одному свойству в PortfolioMAD объект. Единственным исключением является альтернативное имя аргумента 'budget', что означает оба LowerBudget и UpperBudget свойства. Когда 'budget' используется, то LowerBudget и UpperBudget Для формирования бюджетного ограничения равенства свойствам присваивается одинаковое значение.
Ярлыки для имен свойств
Имя аргумента ярлыка | Эквивалентный аргумент/имя свойства |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Например, этот вызов PortfolioMAD использует следующие сочетания клавиш для свойств:
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 = PortfolioMAD('scenario', AssetScenarios, 'lb', 0, 'budget', 1); 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 = PortfolioMAD;
p = setScenarios(p, AssetScenarios);
p.LowerBudget = 1;
p.UpperBudget = 1;
p.LowerBound = zeros(size(m));
plotFrontier(p);
Примечание
Сценарии не могут быть присвоены непосредственно с помощью точечной нотации PortfolioMAD объект. Сценарии всегда должны быть установлены с помощью PortfolioMAD объект, setScenarios функцию или любую из функций моделирования сценария.