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

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

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

Поскольку это необходимо и достаточно, что ваш набор портфеля должен быть непустым, закрытым и ограниченным множеством, чтобы иметь допустимую задачу оптимизации портфеля, функция 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

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

| |

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

Больше о

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