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-by- 1 вектор.

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

Контракты, присвоенные каждому инструменту, указываются как NINST-by- 1 вектор.

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

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

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

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

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

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

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

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

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

(Необязательно) Дополнительные условия перераспределения портфеля, заданные как ряд ограничений (NCONS) по количеству приборов (NINST) матрица дополнительных условий по перераспределениям портфеля. Подходящее NINST-by- 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-by- NSENS) матрица. Когда существует совершенное хеджирование, PortSens - нули. В противном случае выбирается лучшее хеджирование.

Примечание

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

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

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

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