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

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

Этот пример вычисляет эффективную границу портфелей, состоящих из трех различных активов, 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];
      

      The 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 функция в предыдущем примере (Линейные ограничительные уравнения).

См. также

| | | |

Похожие примеры

Подробнее о