Распределение оптимального хеджирования для целевых затрат или чувствительности
[ распределяет оптимальное хеджирование по одному из двух критериев: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
Sensitivities - Чувствительность каждого прибораЧувствительность каждого прибора, указанная как ряд приборов (NINST) по количеству чувствительности (NSENS) матрица чувствительности доллара. Каждая строка представляет собой отдельный инструмент. Каждый столбец представляет различную чувствительность.
Типы данных: double
Price - Цены на инструментыЦены на инструменты, указанные как NINSTоколо-1 вектор.
Типы данных: double
CurrentHolds - Контракты, распределенные по каждому инструментуКонтракты, распределенные по каждому инструменту, указанные как NINSTоколо-1 вектор.
Типы данных: double
FixedInd - Количество стационарных приборов[ ] (по умолчанию) | вектор(Необязательно) Количество стационарных приборов, указанных как NFIXEDоколо-1 вектор индексов приборов для фиксации. Например, чтобы сохранить неизменными первый и третий инструменты портфеля из 10 инструментов, установите FixedInd = [1 3]. По умолчанию = [], никакие инструменты не зафиксированы.
Типы данных: double
NumCosts - Количество точек, сгенерированных вдоль границы затрат10 (по умолчанию) | целое число(Необязательно) Количество точек, генерируемых вдоль границы затрат, когда вектор целевых затрат (TargetCost) не определен, указан как целое число. Значение по умолчанию - 10 равноудаленных точек между точкой минимальной стоимости и точкой минимальной экспозиции. При указании TargetCost, введите NumCosts как пустая матрица [].
Типы данных: double
TargetCost - Целевые значения затрат вдоль границы затрат[ ] (по умолчанию) | вектор(Необязательно) Целевые значения затрат вдоль границы затрат, указанные как вектор. Если TargetCost пуст или не введен, hedgeopt оценивает NumCosts равные целевые затраты между минимальными затратами и минимальным воздействием. Если указано, элементы TargetCost должны быть положительными числами, представляющими максимальную сумму денег, которую владелец готов потратить на ребалансировку портфеля.
Типы данных: double
TargetSens - Целевые значения чувствительности портфеля[ ] (по умолчанию) | вектор(Необязательно) Целевые значения чувствительности портфеля, указанные как 1около-NSENS вектор, содержащий целевые значения чувствительности портфеля. При указании TargetSens, введите NumCosts и TargetCost как пустые матрицы [].
Типы данных: double
ConSet - Дополнительные условия по перераспределению портфеля[ ] (по умолчанию) | матрица(Необязательно) Дополнительные условия перераспределения портфеля, указанные как ряд ограничений (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
PortSens - Чувствительность портфеля к долларуЧувствительность портфеля к доллару, возвращенная как ряд пунктов (NPOINTSоколо-NSENS) матрица. Когда существует идеальная изгородь, PortSens является нулями. В противном случае выбирается наилучшее хеджирование.
Примечание
Не все проблемы разрешимы (например, пространство решения может быть неосуществимым, неограниченным или недостаточно ограниченным), или решение может не сходиться. Если допустимое решение не найдено, соответствующие строки PortSens и PortHolds и элементы PortCost дополнены NaNявляется местозаполнителем. Кроме того, решение не может быть уникальным.
PortCost - Общая стоимость портфеляОбщая стоимость портфеля, возвращенная как 1около-NPOINTS вектор.
PortHolds - Контракты, распределенные по каждому инструментуКонтракты, распределенные по каждому инструменту, возвращенные как NPOINTSоколо-NINST матрица. Это перераспределенные портфели.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.