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