exponenta event banner

Работа с ограничениями группы с использованием объекта портфеля

Групповые ограничения являются необязательными линейными ограничениями, объединяющими активы и устанавливающими ограничения для весов групп (см. Групповые ограничения). Хотя ограничения реализуются как общие ограничения, обычное соглашение заключается в формировании матрицы групп, которая идентифицирует членство каждого актива в конкретной группе с булевыми индикаторами (либо true или false или с 1 или 0) для каждого элемента в матрице группы. Групповые ограничения имеют свойства GroupMatrix для матрицы членства в группе, LowerGroup для ограничения нижней границы для групп, и UpperGroup для ограничения верхней границы для групп.

Установка групповых ограничений с помощью Portfolio Функция

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

G = [ 1 1 1 0 0 ];
p = Portfolio('GroupMatrix', G, 'UpperGroup', 0.3);
disp(p.NumAssets)
disp(p.GroupMatrix)
disp(p.UpperGroup)
5

1     1     1     0     0

0.3000

Матрица групп G также может быть логической матрицей, так что следующий код достигает того же результата.

G = [ true true true false false ];
p = Portfolio('GroupMatrix', G, 'UpperGroup', 0.3);
disp(p.NumAssets)
disp(p.GroupMatrix)
disp(p.UpperGroup)
5

1     1     1     0     0

0.3000

Установка групповых ограничений с помощью setGroups и addGroups Функции

Можно также задать свойства для групповых ограничений с помощью setGroups. Предположим, что у вас есть портфель из пяти активов и вы хотите убедиться, что первые три актива составляют не более 30% вашего портфеля. Дано Portfolio объект p, использовать setGroups для установки групповых ограничений:

G = [ true true true false false ];
p = Portfolio;
p = setGroups(p, G, [], 0.3);
disp(p.NumAssets)
disp(p.GroupMatrix)
disp(p.UpperGroup)
5

1     1     1     0     0

0.3000

В этом примере необходимо установить LowerGroup свойство должно быть пустым ([]).

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

p = Portfolio;
G = [ true true true false false ];    % group matrix for first group constraint
p = setGroups(p, G, [], 0.3);
G = [ true false true false true ];    % group matrix for second group constraint
p = addGroups(p, G, 0.2);
disp(p.NumAssets)
disp(p.GroupMatrix)
disp(p.LowerGroup)
disp(p.UpperGroup)
 5

1     1     1     0     0
1     0     1     0     1

  -Inf
0.2000

0.3000
  Inf
addGroups определяет неограниченные границы, поэтому необходимо сосредоточиться только на ограничениях, которые требуется задать.

Portfolio объект и setGroups и addGroups реализовать скалярное расширение для LowerGroup или UpperGroup свойства на основе размера матрицы группы в свойстве GroupMatrix. Предположим, что у вас есть совокупность из 30 активов с шестью классами активов, так что активы 1-5, активы 6-12, активы 13-18, активы 19-22, активы 23-27 и активы 28-30 составляют каждый из ваших шести классов активов, и вы хотите, чтобы каждый класс активов упал с 0% до 25% вашего портфеля. Пусть следующая матрица групп определяет группы, а скалярное расширение определяет общие границы для каждой группы:

p = Portfolio;
G = blkdiag(true(1,5), true(1,7), true(1,6), true(1,4), true(1,5), true(1,3));
p = setGroups(p, G, 0, 0.25);
disp(p.NumAssets)
disp(p.GroupMatrix)
disp(p.LowerGroup)
disp(p.UpperGroup)
  30

  Columns 1 through 16

     1     1     1     1     1     0     0     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     1     1     1     1     1     1     1     0     0     0     0
     0     0     0     0     0     0     0     0     0     0     0     0     1     1     1     1
     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0

  Columns 17 through 30

     0     0     0     0     0     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0     0     0     0     0     0     0
     1     1     0     0     0     0     0     0     0     0     0     0     0     0
     0     0     1     1     1     1     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     1     1     1     1     1     0     0     0
     0     0     0     0     0     0     0     0     0     0     0     1     1     1

     0
     0
     0
     0
     0
     0

    0.2500
    0.2500
    0.2500
    0.2500
    0.2500
    0.2500

См. также

| | | | | | | | | | |

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

Подробнее

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