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

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

Установка ограничений группы Используя PortfolioMAD Функция

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

G = [ 1 1 1 0 0 ];
p = PortfolioMAD('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 = PortfolioMAD('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% вашего портфеля. Учитывая PortfolioMAD объект pИспользование setGroups установить ограничения группы:

G = [ true true true false false ];
p = PortfolioMAD;
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 = PortfolioMAD;
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 определяет, какие границы неограниченны, таким образом, только необходимо фокусироваться на ограничениях, которые вы хотите установить.

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

p = PortfolioMAD;
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 13

     1     1     1     1     1     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     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

  Columns 14 through 26

     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     1     1     1     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     1     1     1     1
     0     0     0     0     0     0     0     0     0     0     0     0     0

  Columns 27 through 30

     0     0     0     0
     0     0     0     0
     0     0     0     0
     0     0     0     0
     1     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

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

| | | | | | | | |

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

Больше о

Для просмотра документации необходимо авторизоваться на сайте