Последним элементом для полной спецификации задачи оптимизации портфеля является набор возможных портфелей, который называется набором портфелей. Набор портфолио определяется конструкцией как пересечение наборов, образованных набором ограничений на вес портфеля. Портфельный набор обязательно и достаточно должен быть непустым, закрытым и ограниченным набором.
При настройке набора портфолио убедитесь, что он удовлетворяет этим условиям. Наиболее базовый или «стандартный» набор портфелей требует, чтобы веса портфеля были неотрицательными (с использованием ограничения нижней границы) и суммировались с 1 (с использованием ограничения бюджета). Сведения о рабочем процессе при использовании PortfolioMAD см. раздел Рабочий процесс объекта MAD.
Проблема портфеля 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 ФункцияАльтернативный подход заключается в использовании 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