Иногда, можно хотеть подтвердить или входные параметры к или выходные параметры от, задача оптимизации портфеля. Несмотря на то, что большая часть проверки ошибок, которая происходит во время проблемной фазы настройки, отлавливает большинство трудностей с задачей оптимизации портфеля, процессы, чтобы подтвердить наборы портфеля MAD и портфели являются трудоемкими и лучше всего сделаны оффлайн. Так, инструменты оптимизации портфеля специализировали функции, чтобы подтвердить наборы портфеля MAD и портфели. Для получения информации о рабочем процессе при использовании PortfolioMAD объекты, смотрите Рабочий процесс Объекта PortfolioMAD.
Поскольку это необходимо и достаточно, что ваш набор портфеля 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 объект, вы часто хотите проверять, выполнимы ли определенные портфели относительно набора портфеля. Это может произойти с, например, начальные портфели и с портфелями, полученными из других процедур. 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 1PortfolioMAD | checkFeasibility | estimateBounds