hedgeopt

Выделите оптимальную преграду для целевых затрат или чувствительности

Описание

пример

[PortSens,PortCost,PortHolds] = hedgeopt(Sensitivities,Price,CurrentHolds) выделяет оптимальную преграду по одному из двух критериев:

  • Минимизируйте чувствительность портфеля (воздействие) для данного набора целевых затрат.

  • Минимизируйте стоимость хеджирования портфеля, учитывая набор целевой чувствительности.

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

пример

[PortSens,PortCost,PortHolds] = hedgeopt(___,FixedInd,NumCosts,TargetCost,TargetSensConSet) добавляют дополнительные дополнительные аргументы.

Примеры

свернуть все

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

В этом примеры целевая чувствительность портфеля обработана как ограничения равенства во время процесса оптимизации. Можно использовать hedgeopt задавать, какую чувствительность вы хотите, и hedgeopt вычисляет что, чего это будет стоить, чтобы получить ту чувствительность.

load deriv.mat;

Вычислите цену и чувствительность

warning('off')
[Delta, Gamma, Vega, Price] = hjmsens(HJMTree, HJMInstSet)
Delta = 8×1

 -272.6462
 -347.4315
   -8.0781
 -272.6462
   -1.0445
  294.9700
  -47.1629
 -282.0465

Gamma = 8×1
103 ×

    1.0299
    1.6227
    0.6434
    1.0299
    0.0033
    6.8526
    8.4600
    1.0597

Vega = 8×1

    0.0000
   -0.0397
   34.0746
    0.0000
         0
   93.6946
   93.6946
    0.0000

Price = 8×1

   98.7159
   97.5280
    0.0486
   98.7159
  100.5529
    6.2831
    0.0486
    3.6923

Извлеките текущие активы портфеля.

warning('on')
Holdings = instget(HJMInstSet, 'FieldName', 'Quantity')
Holdings = 8×1

   100
    50
   -50
    80
     8
    30
    40
    10

Поскольку удобство помещает delta\Gamma, и vega чувствительность измеряется в матрицу чувствительности.

Sensitivities = [Delta Gamma Vega];

Каждая строка Sensitivities матрица сопоставлена с различным инструментом в портфеле и каждым столбцом с различной мерой по чувствительности.

Обобщите информацию о портфеле.

disp([Price  Holdings  Sensitivities])
   1.0e+03 *

    0.0987    0.1000   -0.2726    1.0299    0.0000
    0.0975    0.0500   -0.3474    1.6227   -0.0000
    0.0000   -0.0500   -0.0081    0.6434    0.0341
    0.0987    0.0800   -0.2726    1.0299    0.0000
    0.1006    0.0080   -0.0010    0.0033         0
    0.0063    0.0300    0.2950    6.8526    0.0937
    0.0000    0.0400   -0.0472    8.4600    0.0937
    0.0037    0.0100   -0.2820    1.0597    0.0000

Первый столбец выше является долларовой ценой за единицу товара каждого инструмента, вторыми являются активы каждого инструмента (сохраненное количество или количество контрактов), и третьи, четвертые, и пятые колонны являются долларом delta\Gamma, и vega чувствительность, соответственно.

Текущая чувствительность портфеля является взвешенным средним инструментов в портфеле.

TargetSens  = Holdings' * Sensitivities
TargetSens = 1×3
105 ×

   -0.6191    7.8895    0.0485

Поддержание существующих выделений

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

FixedInd = [1 2 3 4 5 6 7 8];
[Sens, Cost, Quantity] = hedgeopt(Sensitivities, Price,Holdings, FixedInd, [], [], TargetSens)
Sens = 1×3
105 ×

   -0.6191    7.8895    0.0485

Cost = 0
Quantity = 1×8

   100    50   -50    80     8    30    40    10

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

Если Value0 и Value1 представляйте стоимость портфеля до и после изменения баланса, соответственно, нулевая стоимость может также быть проверена путем сравнения стоимости портфеля.

Value0 = Holdings' * Price
Value0 = 2.3675e+04
Value1 = Quantity * Price
Value1 = 2.3675e+04

Частично застрахованный портфель

При построении на этом примере предположите, что вы хотите знать, что стоимость достигает полной долларовой чувствительности портфеля [-23000 -3300 3000], при разрешении торговли только в инструментах 2, 3, и 6 (занимание позиций инструментов 1, 4, 5, 7, и 8 зафиксированный). Чтобы найти стоимость, сначала установите целевую долларовую чувствительность портфеля.

TargetSens = [-23000 -3300 3000];

Задайте инструменты, которые будут зафиксированы.

FixedInd = [1 4 5 7 8];

Используйте hedgeopt:

[Sens, Cost, Quantity] = hedgeopt(Sensitivities, Price,Holdings, FixedInd, [], [], TargetSens)
Sens = 1×3
104 ×

   -2.3000   -0.3300    0.3000

Cost = 1.9174e+04
Quantity = 1×8

  100.0000 -141.0267  137.2638   80.0000    8.0000  -57.9606   40.0000   10.0000

Повторно вычислите Value1, стоимость портфеля после изменения баланса.

Value1 = Quantity * Price
Value1 = 4.5006e+03

Как ожидалось стоимость, 19 174,02$, является различием между Value0 и Value1, 23 674,62$ — 4 500,60$. Только положения в инструментах 2, 3, и 6 изменяются.

Полностью застрахованный портфель

Пример проиллюстрировал частичную преграду, но возможно самый интересный случай связал стоимость, сопоставленную с полностью застрахованным портфелем (одновременный delta\Gamma, и vega нейтралитет). В этом случае установите целевую чувствительность к вектору-строке из 0s и вызов hedgeopt снова.

TargetSens = [0 0 0];
[Sens, Cost, Quantity] = hedgeopt(Sensitivities, Price, Holdings, FixedInd, [], [], TargetSens)
Sens = 1×3
10-10 ×

    0.1091    0.5821    0.0045

Cost = 2.3056e+04
Quantity = 1×8

  100.0000 -182.3615  -19.5501   80.0000    8.0000  -32.9674   40.0000   10.0000

Исследование выходных параметров показывает, что вы получили полностью застрахованный портфель, но за счет более чем 20 000$ и Quantity задает положения, требуемые достигнуть полностью застрахованного портфеля.

Получившаяся новая стоимость портфеля

Value1 = Quantity * Price
Value1 = 618.7168

Входные параметры

свернуть все

Чувствительность каждого инструмента в виде многих инструментов (NINST) количеством чувствительности (NSENS) матрица долларовой чувствительности. Каждая строка представляет различный инструмент. Каждый столбец представляет различную чувствительность.

Типы данных: double

Цены на инструменты в виде NINST- 1 вектор.

Типы данных: double

Контракты, выделенные каждому инструменту в виде NINST- 1 вектор.

Типы данных: double

(Необязательно) Количество фиксированных инструментов в виде NFIXED- 1 вектор из индексов инструментов, чтобы содержать зафиксированный. Например, чтобы содержать первые и третьи инструменты 10 инструментальных неизменных портфелей, набор FixedInd = [1 3]. Значение по умолчанию = [], никакие инструменты, сохраненные зафиксированными.

Типы данных: double

(Необязательно) Число точек сгенерировало вдоль границы стоимости когда вектор из целевых затрат (TargetCost) не задан в виде целого числа. Значением по умолчанию являются 10 равномерно распределенных точек между точкой минимальной стоимости и точкой минимального воздействия. При определении TargetCost, введите NumCosts как пустой матричный [].

Типы данных: double

(Необязательно) Целевая величина затрат вдоль границы стоимости в виде вектора. Если TargetCost пусто, или не вводимый, hedgeopt оценивает NumCosts равномерно распределенная цель стоит между минимальной стоимостью и минимальным воздействием. Когда задано, элементы TargetCost должны быть положительные числа, которые представляют максимальную сумму денег, которую владелец готов потратить, чтобы восстановить равновесие портфеля.

Типы данных: double

(Необязательно) Целевые значения чувствительности портфеля в виде 1- NSENS вектор, содержащий целевые значения чувствительности портфеля. При определении TargetSens, введите NumCosts и TargetCost как пустые матрицы [].

Типы данных: double

(Необязательно) Дополнительные условия на перераспределениях портфеля в виде многих ограничений (NCONS) количеством инструментов (NINST) матрица дополнительных условий на перераспределениях портфеля. Имеющий право NINST- 1 вектор из активов контракта, PortWts, удовлетворяет всем неравенствам A*PortWts <= b, где A = ConSet(:,1:end-1) и b = ConSet(:,end).

Примечание

Заданные пользователями ограничения включены в ConSet может быть создан с функциями pcalims или portcons. Однако portcons PortHolds по умолчанию ограничения положительности являются обычно несоответствующими для хеджирования проблем, поскольку короткая продажа обычно требуется.

NPOINTS, количество строк в PortSens и PortHolds и длина PortCost , выведен из входных параметров. Когда целевая чувствительность, TargetSens, вводится, NPOINTS = 1; в противном случае NPOINTS = NumCosts, или равно длине TargetCost вектор.

Не все проблемы разрешимы (например, пробел решения может быть неосуществимым или неограниченным, или решение может не сходиться). Когда допустимое решение не найдено, соответствующие строки PortSens, PortHolds, и элементы PortCost дополнены NaNs как заполнители.

Типы данных: double

Выходные аргументы

свернуть все

Долларовая чувствительность портфеля, возвращенная как ряд вопросов (NPOINTS- NSENS) матрица. Когда совершенная преграда существует, PortSens нули. В противном случае лучшая возможная преграда выбрана.

Примечание

Не все проблемы разрешимы (например, пробел решения может быть неосуществимым, неограниченным, или недостаточно ограниченный), или решение может не сходиться. Когда допустимое решение не найдено, соответствующие строки PortSens и PortHolds и элементы PortCost дополнены NaNкак заполнители. Кроме того, решение не может быть уникальным.

Общие затраты портфеля, возвращенные как 1- NPOINTS вектор.

Контракты выделяются каждому инструменту, возвращенному как NPOINTS- NINST матрица. Это перераспределенные портфели.

Представлено до R2006a