Ограничительная спецификация Используя объект портфеля

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

Этот пример вычисляет границу эффективности портфелей, состоящих из трех различных активов, 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 должно быть введено в две части, первая часть, задающая группы и вторую часть, задающую ограничения для каждой группы. Учитывая информацию выше, можно создать матрицу 1 s и 0 s указание, принадлежит ли определенный актив группе. Каждый столбец представляет актив, и каждая строка представляет группу. Этот пример имеет две группы: технологическая группа и энергетическая группа. Создайте матричный 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 задать:

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

  • Вектор GroupMin, указывая на минимум ограничивает для каждой группы.

  • Вектор GroupMax, указывая на максимум ограничивает для каждой группы.

На основе таблицы Group Membership создайте матрицу 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 в предыдущем примере (Линейные Уравнения ограничений).

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

| | | |

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

Больше о