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

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

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

     1     1     1     1     1     1     1     1     1     1

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

| |

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

Больше о

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