Подтвердите проблему портфеля MAD

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

     0
В этом случае, estimateBounds возвращается (возможно бесконечный), ограничивает и устанавливает 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

Учитывая набор портфеля 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     0
В этом случае только два из этих 10 эффективных портфелей от начальной проблемы выполнимы относительно новой проблемы в PortfolioMAD объект q. Решение второй проблемы с помощью checkFeasibility демонстрирует что эффективный портфель для PortfolioMAD объект q выполнимо относительно начальной проблемы:

qwgt = estimateFrontier(q);
checkFeasibility(p, qwgt)
ans =

     1     1     1     1     1     1     1     1     1     1

Смотрите также

| |

Связанные примеры

Больше о