Иногда может потребоваться проверить либо входные данные, либо выходные данные, связанные с проблемой оптимизации портфеля. Несмотря на то, что большинство проверок ошибок, возникающих на этапе настройки проблемы, сталкиваются с наибольшими трудностями при оптимизации портфеля, процессы проверки наборов и портфелей MAD занимают много времени и лучше всего выполняются в автономном режиме. Таким образом, инструменты оптимизации портфеля имеют специализированные функции для проверки наборов и портфелей MAD. Сведения о рабочем процессе при использовании PortfolioMAD см. раздел Рабочий процесс объекта MAD.
Поскольку необходимо и достаточно, чтобы набор портфеля MAD был непустым, закрытым и ограниченным набором, чтобы иметь действительную проблему оптимизации портфеля, estimateBounds функция позволяет проверить набор портфолио, чтобы определить, является ли он непустым и, если нет, ограничен ли он. Предположим, что у вас есть следующий набор портфолио MAD, который является пустым набором, поскольку начальный портфель на 0 слишком далеко от портфеля, который удовлетворяет ограничениям бюджета и оборота:
p = PortfolioMAD('NumAssets', 3, 'Budget', 1); p = setTurnover(p, 0.3, 0);
Если набор портфеля MAD пуст, estimateBounds прибыль NaN границы и устанавливает isbounded флаг для []:
[lb, ub, isbounded] = estimateBounds(p)
lb =
NaN
NaN
NaN
ub =
NaN
NaN
NaN
isbounded =
[]Предположим, что вы создаете неограниченный набор портфолио MAD следующим образом:
p = PortfolioMAD('AInequality', [1 -1; 1 1 ], 'bInequality', 0); [lb, ub, isbounded] = estimateBounds(p)
lb =
-Inf
-Inf
ub =
1.0e-008 *
-0.3712
Inf
isbounded =
0estimateBounds возвращает (возможно, бесконечные) границы и устанавливает isbounded флаг для false. Результат показывает, какие активы являются неограниченными, чтобы при необходимости можно было применить связанные ограничения.Наконец, предположим, что вы создали PortfolioMAD объект, который является непустым и ограниченным. estimateBounds не только проверяет набор, но и получает более жесткие границы, которые полезны, если вас интересует фактический диапазон выбора портфеля для отдельных активов в вашем портфеле:
p = PortfolioMAD;
p = setBudget(p, 1,1);
p = setBounds(p, [ -0.1; 0.2; 0.3; 0.2 ], [ 0.5; 0.3; 0.9; 0.8 ]);
[lb, ub, isbounded] = estimateBounds(p)lb =
-0.1000
0.2000
0.3000
0.2000
ub =
0.3000
0.3000
0.7000
0.6000
isbounded =
1В этом примере все активы, кроме второго, имеют более жесткие верхние границы, чем подразумевает входная верхняя граница.
Учитывая набор портфолио MAD, указанный в PortfolioMAD object, часто требуется проверить, являются ли конкретные портфели выполнимыми по отношению к набору портфелей. Это может происходить, например, с первоначальными портфелями и портфелями, полученными из других процедур. checkFeasibility функция определяет возможность сбора портфелей. Предположим, что выполняется следующая оптимизация портфеля и требуется определить, являются ли результирующие эффективные портфели выполнимыми относительно измененной задачи.
Сначала настройте проблему в PortfolioMAD объект p, оценка эффективных портфелей в pwgt, а затем подтвердить, что эти портфели осуществимы относительно первоначальной проблемы:
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 = setDefaultConstraints(p);
pwgt = estimateFrontier(p);
checkFeasibility(p, pwgt)ans =
1 1 1 1 1 1 1 1 1 1Затем настройте другую проблему портфеля, которая начинается с начальной проблемы с дополнительным ограничением оборота и одинаково взвешенным исходным портфелем:
q = setTurnover(p, 0.3, 0.25); checkFeasibility(q, pwgt)
ans =
0 0 1 1 1 0 0 0 0 0PortfolioMAD объект q. Решение второй задачи с помощью checkFeasibility демонстрирует, что эффективный портфель для PortfolioMAD объект q выполнима относительно первоначальной проблемы:qwgt = estimateFrontier(q); checkFeasibility(p, qwgt)
ans =
1 1 1 1 1 1 1 1 1 1checkFeasibility | estimateBounds | PortfolioMAD