Конечным элементом для полной спецификации задачи оптимизации портфеля является набор допустимых портфелей, который называется портфельным набором. Портфельный набор задается как конструкция пересечение наборов, образованное набором ограничений на веса портфеля. Набор портфеля обязательно и в достаточной степени должен быть непустым, закрытым и ограниченным набором.
При настройке портфельного набора убедитесь, что портфельный набор удовлетворяет этим условиям. Самый основной набор портфеля или набор портфелей по умолчанию требует, чтобы веса портфеля были неотрицательными (с использованием ограничения, связанного ниже) и чтобы сумма 1
(с использованием ограничения бюджета). Для получения информации о рабочем процессе при использовании PortfolioMAD
объекты, см. раздел Рабочий процесс объекта PortfolioMAD.
Задача портфеля MAD по умолчанию имеет два ограничения на веса портфеля:
Веса портфеля должны быть неотрицательными.
Веса портфеля должны равняться 1
.
Неявно, эти ограничения подразумевают, что веса портфеля не больше 1
, хотя это является излишним ограничением, которое необходимо наложить на проблему.
Учитывая задачу оптимизации портфеля с NumAssets
= 20
ресурсы, используйте PortfolioMAD
объект, чтобы настроить задачу по умолчанию и явным образом задать границы и бюджетные ограничения:
p = PortfolioMAD('NumAssets', 20, 'LowerBound', 0, 'Budget', 1); disp(p)
PortfolioMAD with properties: BuyCost: [] SellCost: [] RiskFreeRate: [] Turnover: [] BuyTurnover: [] SellTurnover: [] NumScenarios: [] Name: [] NumAssets: 20 AssetList: [] InitPort: [] AInequality: [] bInequality: [] AEquality: [] bEquality: [] LowerBound: [20×1 double] UpperBound: [] LowerBudget: 1 UpperBudget: 1 GroupMatrix: [] LowerGroup: [] UpperGroup: [] GroupA: [] GroupB: [] LowerRatio: [] UpperRatio: [] MinNumAssets: [] MaxNumAssets: [] BoundType: []
ФункцияАльтернативным подходом является использование setDefaultConstraints
функция. Если количество активов уже известно в PortfolioMAD
объект, использование setDefaultConstraints
без аргументов для настройки необходимых ограничений и бюджетных ограничений. Предположим, что у вас есть 20 активов для настройки набора портфелей для задачи по умолчанию:
p = PortfolioMAD('NumAssets', 20);
p = setDefaultConstraints(p);
disp(p)
PortfolioMAD with properties: BuyCost: [] SellCost: [] RiskFreeRate: [] Turnover: [] BuyTurnover: [] SellTurnover: [] NumScenarios: [] Name: [] NumAssets: 20 AssetList: [] InitPort: [] AInequality: [] bInequality: [] AEquality: [] bEquality: [] LowerBound: [20×1 double] UpperBound: [] LowerBudget: 1 UpperBudget: 1 GroupMatrix: [] LowerGroup: [] UpperGroup: [] GroupA: [] GroupB: [] LowerRatio: [] UpperRatio: [] MinNumAssets: [] MaxNumAssets: [] BoundType: [20×1 categorical]
Если количество активов неизвестно, setDefaultConstraints
принимает NumAssets
как необязательный аргумент для формирования набора портфелей для задачи по умолчанию. Предположим, что у вас есть 20 активов:
p = PortfolioMAD; p = setDefaultConstraints(p, 20); disp(p)
PortfolioMAD with properties: BuyCost: [] SellCost: [] RiskFreeRate: [] Turnover: [] BuyTurnover: [] SellTurnover: [] NumScenarios: [] Name: [] NumAssets: 20 AssetList: [] InitPort: [] AInequality: [] bInequality: [] AEquality: [] bEquality: [] LowerBound: [20×1 double] UpperBound: [] LowerBudget: 1 UpperBudget: 1 GroupMatrix: [] LowerGroup: [] UpperGroup: [] GroupA: [] GroupB: [] LowerRatio: [] UpperRatio: [] MinNumAssets: [] MaxNumAssets: [] BoundType: [20×1 categorical]
PortfolioMAD
| setBounds
| setBudget
| setDefaultConstraints
| setEquality
| setGroupRatio
| setGroups
| setInequality
| setOneWayTurnover
| setTurnover