exponenta event banner

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

Как и ожидалось, стоимость, $19174,02, является разницей между Value0 и Value1, $23674.62 — $4500.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