exponenta event banner

Задание зависимостей с помощью ConSet

Введение

Оба hedgeopt и hedgeslf принять необязательный входной аргумент, ConSet, что позволяет указать набор линейных ограничений неравенства для инструментов в портфеле. Примеры в этом разделе являются краткими. Дополнительные сведения о спецификациях ограничений портфеля см. в разделе Анализ портфелей.

Установка ограничений

Для первого примера установки ограничений вернитесь к использованному примеру полностью хеджированного портфеля. hedgeopt определить минимальную стоимость получения одновременной дельты, гамма и вегетарианской нейтральности (целевые чувствительности все 0). Напомним, что когда hedgeopt вычисляет затраты на ребалансировку портфеля, заданные входные целевые чувствительности рассматриваются как ограничения равенства в процессе оптимизации. Ситуация воспроизводится далее для удобства.

TargetSens = [0 0 0];
[Sens, Cost, Quantity] = hedgeopt(Sensitivities, Price,... 
Holdings, FixedInd, [], [], TargetSens);

Результаты обеспечивают полностью хеджированный портфель

Sens =
         -0.00          -0.00          -0.00

на сумму более 23 000 долл. США.

Cost =
      23055.90

Позиции, необходимые для достижения этого полностью хеджированного портфеля, являются

Quantity' =

        100.00
       -182.36
        -19.55
         80.00
          8.00
        -32.97
         40.00
         10.00

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

В качестве примера предположим, что в дополнение к фиксированным инструментам хранения 1, 4, 5, 7 и 8, как и ранее, необходимо привязать позицию всех инструментов к +/- 180 договорам (для каждого инструмента нельзя коротко или длиннее 180 договоров). Применение этих ограничений запрещает текущее положение во втором инструменте (короткое 182.36). Все остальные инструменты в настоящее время находятся в верхних/нижних границах.

Можно создать эти ограничения, сначала указав нижний и верхний векторы границ, а затем вызвав portcons.

LowerBounds = [-180 -180 -180 -180 -180 -180 -180 -180];
UpperBounds = [ 180  180   180 180  180  180  180  180];
ConSet = portcons('AssetLims', LowerBounds, UpperBounds);

Чтобы наложить эти ограничения, вызовите hedgeopt с ConSet в качестве последнего входного сигнала.

[Sens, Cost, Quantity] = hedgeopt(Sensitivities, Price,... 
Holdings, FixedInd, [], [], TargetSens, ConSet);

Проверьте выходные данные и убедитесь, что для всех них установлено значение NaN, указывая, что проблема, учитывая ограничения, не может быть решена. Интуитивно результаты означают, что вы не можете получить одновременную дельту, гамма и вегетарианскую нейтральность с этими ограничениями любой ценой.

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

[Sens, Value1, Quantity] = hedgeslf(Sensitivities, Price,... 
Holdings, FixedInd, ConSet);
Sens =

       -352.43
         21.99
       -498.77

Value1 =

      855.10

Quantity =

        100.00
       -180.00
        -37.22
         80.00
          8.00
        -31.86
         40.00
         10.00

hedgeslf обеспечивает соблюдение нижней границы для второго инструмента, но чувствительность далека от нейтральной. Стоимость получения этого портфеля составляет

Value0 - Value1
ans =

      22819.52

Ребалансировка портфеля

В качестве последнего примера ограничений, определяемых пользователем, выполните ребалансировку портфеля с использованием второй цели хеджирования hedgeopt. Предположим, что вы готовы потратить до 20 000 долларов на ребалансировку своего портфеля, и вы хотите знать, какие минимальные чувствительности портфеля вы можете получить за свои деньги. В этой форме следует напомнить, что целевая стоимость (20 000 долл. США) рассматривается как ограничение неравенства в процессе оптимизации.

Для справки, запуск hedgeopt без каких-либо заданных пользователем ограничений линейного неравенства.

[Sens, Cost, Quantity] = hedgeopt(Sensitivities, Price,... 
Holdings, FixedInd, [], 20000);
Sens =

      -4345.36        295.81      -6586.64
Cost =

      20000.00

Quantity' =

        100.00
       -151.86
       -253.47
         80.00
          8.00
        -18.18 
         40.00
         10.00

Этот результат соответствует 20 000 долларов США по профилю чувствительности портфеля, показанному на рисунке Затраты на ребалансировку.

Предположим, что в дополнение к фиксированным инструментам хранения 1, 4, 5, 7 и 8 вы хотите связать положение всех инструментов в +/- 150 контрактах (для каждого инструмента вы не можете сократить более 150 договоров и не можете увеличить более 150 договоров). Эти границы запрещают текущее положение во втором и третьем приборах (-151,86 и -253,47). Все остальные инструменты в настоящее время находятся в верхних/нижних границах.

Как и ранее, эти ограничения можно создать, задав сначала нижний и верхний векторы границ, а затем вызвав portcons.

LowerBounds = [-150 -150 -150 -150 -150 -150 -150 -150];
UpperBounds = [ 150  150  150  150  150  150  150  150];
ConSet = portcons('AssetLims', LowerBounds, UpperBounds);

Чтобы наложить эти ограничения, снова вызовите hedgeopt с ConSet в качестве последнего входного сигнала.

[Sens, Cost, Quantity] = hedgeopt(Sensitivities, Price,... 
Holdings,FixedInd, [], 20000, [], ConSet);
Sens =

      -8818.47        434.43      -4010.79

Cost =

      19876.89

Quantity' =

        100.00
       -150.00
       -150.00
         80.00
          8.00
        -28.32
         40.00
         10.00

С этими ограничениями, hedgeopt обеспечивает соблюдение нижней границы для второго и третьего документов. Понесенные расходы составляют 19 876,89 долл. США.

См. также

|

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

Подробнее