exponenta event banner

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

Ограничения для эффективной границы

В этом примере вычисляется эффективная граница портфелей, состоящих из трех различных активов, INTC, XON и RD, с учетом списка ограничений. Ожидаемые результаты для INTC, XON и RD, соответственно, следующие:

ExpReturn = [0.1 0.2 0.15]; 

Ковариационная матрица

ExpCovariance  =  [ 0.005   -0.010    0.004;
                   -0.010    0.040   -0.002;
                    0.004   -0.002    0.023];
  • Ограничение 1

    • Разрешить короткие продажи до 10% стоимости портфеля в любом активе, но ограничить инвестиции в любой один актив до 110% стоимости портфеля.

  • Ограничение 2

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

      Актив

      INTC

      XON

      RD

      Сектор

      Технология

      Энергия

      Энергия

      Ограничить инвестиции в энергетический сектор до 80% от стоимости портфеля, а инвестиции в технологический сектор до 70%.

      Для решения этой проблемы используйте Portfolio, передавая список ограничений активов. Рассмотрим восемь различных портфелей на эффективной границе:

      NumPorts = 8;
      

      Чтобы ввести ограничения границ активов, указанные в ограничении 1, создайте матрицу AssetBounds, где каждый столбец представляет основное средство. Верхний ряд представляет нижние границы, а нижний - верхние границы. Поскольку границы одинаковы для каждого актива, требуется только одна пара границ из-за скалярного расширения.

      AssetBounds = [-0.1, 1.1];
      

      Ограничение 2 должно быть введено в двух частях: первая часть определяет группы, а вторая часть определяет ограничения для каждой группы. Учитывая приведенную выше информацию, можно построить матрицу из 1s и 0s указывает, принадлежит ли определенный актив группе. Каждый столбец представляет актив, а каждая строка - группу. В этом примере две группы: технологическая группа и энергетическая группа. Создание матрицы Groups следующим образом.

      Groups =  [0   1   1; 
                 1   0   0];
      

      GroupBounds позволяет задать верхнюю и нижнюю границы для каждой группы. Каждая строка в этой матрице представляет группу. Первый столбец представляет минимальное распределение, а второй столбец представляет максимальное распределение для каждой группы. Поскольку инвестиции в энергетический сектор ограничены 80% стоимости портфеля, а инвестиции в технологический сектор ограничены 70%, создайте GroupBounds с использованием этой информации.

      GroupBounds = [0   0.80;
                     0   0.70];
      

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

      p = Portfolio('AssetMean', ExpReturn, 'AssetCovar', ExpCovariance);
      p = setBounds(p, AssetBounds(1), AssetBounds(2));
      p = setBudget(p, 1, 1);
      p = setGroups(p, Groups, GroupBounds(:,1), GroupBounds(:,2));
      
      PortWts = estimateFrontier(p, NumPorts);
      
      [PortRisk, PortReturn] = estimatePortMoments(p, PortWts);
      
      PortRisk
      PortReturn
      PortWts
      
      PortRisk =
      
          0.0416
          0.0499
          0.0624
          0.0767
          0.0920
          0.1100
          0.1378
          0.1716
      
      
      PortReturn =
      
          0.1279
          0.1361
          0.1442
          0.1524
          0.1605
          0.1687
          0.1768
          0.1850
      
      
      PortWts =
      
          0.7000    0.6031    0.4864    0.3696    0.2529    0.2000    0.2000    0.2000
          0.2582    0.3244    0.3708    0.4172    0.4636    0.5738    0.7369    0.9000
          0.0418    0.0725    0.1428    0.2132    0.2835    0.2262    0.0631   -0.1000
      

      Результаты представлены в виде столбцов для риска и прибыли портфеля. Веса портфеля идентифицируются как соответствующие векторы столбцов в матрице.

Уравнения линейных ограничений

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

В этом примере необходимо указать минимальный и максимальный объем инвестиций в различных группах.

Максимальное и минимальное групповое воздействие

Группа

Минимальная экспозиция

Максимальная экспозиция

Северная Америка

0.30

0.75

Европа

0.10

0.55

Латинская Америка

0.20

0.50

Азия

0.50

0.50

Минимальное и максимальное воздействие в Азии одинаково. Это означает, что для этой группы требуется фиксированный риск убытков.

Также предположим, что портфель состоит из трех различных фондов. Соответствие между фондами и группами показано в таблице ниже.

Членство в группе

Группа

Фонд 1

Фонд 2

Фонд 3

Северная Америка

X

X

 

Европа

  

X

Латинская Америка

X

  

Азия

 

X

X

Используя информацию в этих двух таблицах, создайте математическое представление представленных ограничений. Предположим, что вектор весов, представляющий риск убытков каждого основного средства в портфеле, называется Wts = [W1 W2 W3].

Конкретно

1.

W1 + W2

0.30

2.

W1 + W2

0.75

3.

W3

0.10

4.

W3

0.55

5.

W1

0.20

6.

W1

0.50

7.

W2 + W3

=

0.50

Поскольку вы должны представлять информацию в форме A*Wts <= b, умножить уравнения 1, 3 и 5 на -1. Также превратить уравнение 7 в множество двух неравенств: W2 + W3 ≥ 0,50 и W2 + W3 ≤ 0,50. (Пересечение этих двух неравенств - само равенство.) Таким образом

1.

-W1 - W2

-0.30

2.

W1 + W2

0.75

3.

- W3

-0.10

4.

W3

0.55

5.

- W1

-0.20

6.

W1

0.50

7.

-W2 - W3

-0.50

8.

W2 + W3

0.50

Приведение этих уравнений в матричное представление дает

A = [-1    -1     0;
      1     1     0;
      0     0    -1;
      0     0     1;
     -1     0     0;
      1     0     0;
      0    -1    -1;
      0     1     1]

b = [-0.30;
      0.75;
     -0.10;
      0.55;
     -0.20;
      0.50;
     -0.50;
      0.50]

Один из подходов к решению этой проблемы портфеля заключается в явном использовании setInequality функция:

p = Portfolio('AssetMean', ExpReturn, 'AssetCovar', ExpCovariance);
p = setBounds(p, AssetBounds(1), AssetBounds(2));
p = setBudget(p, 1, 1);
p = setInequality(p, A, b);
PortWts = estimateFrontier(p, NumPorts);
[PortRisk, PortReturn] = estimatePortMoments(p, PortWts);

PortRisk
PortReturn
PortWts
PortRisk =

    0.0586
    0.0586
    0.0586
    0.0586
    0.0586
    0.0586
    0.0586
    0.0586


PortReturn =

    0.1375
    0.1375
    0.1375
    0.1375
    0.1375
    0.1375
    0.1375
    0.1375


PortWts =

    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000
    0.2500    0.2500    0.2500    0.2500    0.2500    0.2500    0.2500    0.2500
    0.2500    0.2500    0.2500    0.2500    0.2500    0.2500    0.2500    0.2500
В этом случае ограничения допускают только один оптимальный портфель. Поскольку было запрошено восемь портфелей, все восемь портфелей одинаковы. Обратите внимание, что решение этой проблемы портфеля с помощью setInequality является той же самой функцией, что и при использовании setGroups в следующем примере (Задание групповых ограничений).

Задание групповых ограничений

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

Альтернативный подход к решению проблемы портфеля заключается в использовании Portfolio объект для определения:

  • A Group матрица, указывающая активы, которые принадлежат каждой группе.

  • A GroupMin вектор, указывающий минимальные границы для каждой группы.

  • A GroupMax вектор, указывающий максимальные границы для каждой группы.

На основе таблицы Членство в группах создайте Group с каждой строкой, представляющей группу, и с каждым столбцом, представляющим актив.

Group = [1    1    0;
         0    0    1;
         1    0    0;
         0    1    1];

Таблица Maximum and Minimum Group Exposure содержит информацию для построения GroupMin и GroupMax.

GroupMin = [0.30  0.10  0.20  0.50];
GroupMax = [0.75  0.55  0.50  0.50];

Теперь используйте Portfolio и setInequality функция для получения векторов и массивов, представляющих риски, доходность и веса для портфелей, вычисленных по эффективной границе.

p = Portfolio('AssetMean', ExpReturn, 'AssetCovar', ExpCovariance);
p = setBounds(p, AssetBounds(1), AssetBounds(2));
p = setBudget(p, 1, 1);
p = setGroups(p, Group, GroupMin, GroupMax);
PortWts = estimateFrontier(p, NumPorts);
[PortRisk, PortReturn] = estimatePortMoments(p, PortWts);

PortRisk
PortReturn
PortWts
PortRisk =

    0.0586
    0.0586
    0.0586
    0.0586
    0.0586
    0.0586
    0.0586
    0.0586


PortReturn =

    0.1375
    0.1375
    0.1375
    0.1375
    0.1375
    0.1375
    0.1375
    0.1375


PortWts =

    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000    0.5000
    0.2500    0.2500    0.2500    0.2500    0.2500    0.2500    0.2500    0.2500
    0.2500    0.2500    0.2500    0.2500    0.2500    0.2500    0.2500    0.2500

В этом случае ограничения допускают только один оптимальный портфель. Поскольку было запрошено восемь портфелей, все восемь портфелей одинаковы. Обратите внимание, что решение этой проблемы портфеля с помощью setGroups является той же самой функцией, что и при использовании setInequality в предыдущем примере (Уравнения линейных ограничений).

См. также

| | | |

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

Подробнее