exponenta event banner

Проверка проблемы портфеля для объекта портфеля

Иногда может потребоваться проверить либо входные данные, либо выходные данные, связанные с проблемой оптимизации портфеля. Несмотря на то, что большинство проверок ошибок, возникающих на этапе настройки проблемы, сталкивается с наибольшими трудностями при оптимизации портфеля, процессы проверки наборов портфелей и портфелей занимают много времени и лучше всего выполняются в автономном режиме. Таким образом, инструменты оптимизации портфеля имеют специализированные функции для проверки наборов портфелей и портфелей. Сведения о рабочем процессе при использовании Portfolio см. Рабочий процесс объекта портфеля.

Проверка набора портфолио

Поскольку необходимо и достаточно, чтобы ваш набор портфолио был непустым, закрытым и ограниченным набором, чтобы иметь действительную проблему оптимизации портфеля, estimateBounds функция позволяет проверить набор портфолио, чтобы определить, является ли он непустым и, если нет, ограничен ли он. Предположим, что у вас есть следующий набор портфолио, который является пустым набором, потому что начальный портфель на 0 слишком далеко от портфеля, который удовлетворяет ограничениям бюджета и оборота:

p = Portfolio('NumAssets', 3, 'Budget', 1);
p = setTurnover(p, 0.3, 0);

Если набор портфолио пуст, estimateBounds прибыль NaN границы и устанавливает isbounded флаг для []:

[lb, ub, isbounded] = estimateBounds(p)
lb =

   NaN
   NaN
   NaN

ub =

   NaN
   NaN
   NaN

isbounded =

     []

Предположим, что вы создаете неограниченный набор портфолио следующим образом:

p = Portfolio('AInequality', [1 -1; 1 1 ], 'bInequality', 0);
[lb, ub, isbounded] = estimateBounds(p)
lb =

  -Inf
  -Inf


ub =

   1.0e-08 *

   -0.3712
       Inf


isbounded =

  logical

   0
В этом случае estimateBounds возвращает (возможно, бесконечные) границы и устанавливает isbounded флаг для false. Результат показывает, какие активы являются неограниченными, чтобы при необходимости можно было применить связанные ограничения.

Наконец, предположим, что создан набор портфолио, который является непустым и ограниченным. estimateBounds не только проверяет набор, но и получает более жесткие границы, которые полезны, если вас интересует фактический диапазон выбора портфеля для отдельных активов в наборе портфеля:

p = Portfolio;
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 =

  logical

   1

В этом примере все активы, кроме второго, имеют более жесткие верхние границы, чем подразумевает входная верхняя граница.

Проверка портфелей

Учитывая набор портфолио, указанный в Portfolio object, часто требуется проверить, являются ли конкретные портфели выполнимыми по отношению к набору портфелей. Это может происходить, например, с первоначальными портфелями и портфелями, полученными из других процедур. checkFeasibility функция определяет возможность сбора портфелей. Предположим, что выполняется следующая оптимизация портфеля и требуется определить, являются ли результирующие эффективные портфели выполнимыми относительно измененной задачи.

Сначала настройте проблему в Portfolio объект 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 ];
 
p = Portfolio;
p = setAssetMoments(p, m, C);
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     0     1     1     0     0     0     0     0
В этом случае только два из 10 эффективных портфелей из начальной задачи являются выполнимыми относительно новой задачи в объекте портфеля. q. Решение второй задачи с помощью checkFeasibility демонстрирует, что эффективный портфель для Portfolio объект q выполнима относительно первоначальной проблемы:

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

     1     1     1     1     1     1     1     1     1     1

См. также

| |

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

Подробнее

Внешние веб-сайты