Определение ограничений с помощью 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 долл. США.

См. также

|

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

Подробнее о

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