Обе функции хеджирования превращают оптимизацию в ограниченную линейную задачу наименьших квадратов. (См. функцию lsqlin для получения подробной информации.) В частности, lsqlin попытки минимизировать проблему ограниченных линейных наименьших квадратов
где C, A и Aeq - матрицы, а d, b, beq, lb и ub - векторы. Для программного обеспечения Financial Instruments Toolbox™ x является вектором активов (контрактов).
В зависимости от ограничения и количества активов в портфеле может существовать или не существовать решение конкретной проблемы. Кроме того, если решение найдено, оно не может быть уникальным. Для существования уникального решения проблема наименьших квадратов должна быть достаточно и надлежащим образом ограничена.
Напомним, что hedgeopt позволяет распределить оптимальное хеджирование по одной из двух целей:
Минимизация затрат на хеджирование портфеля с учетом набора целевых чувствительности.
Минимизация чувствительности портфеля для данного набора максимальных целевых затрат.
В качестве примера воспроизведите результаты для примера полностью хеджированного портфеля.
TargetSens = [0 0 0]; FixedInd = [1 4 5 7 8]; [Sens,Cost,Quantity] = hedgeopt(Sensitivities, Price,... Holdings, FixedInd, [], [], TargetSens);
Sens =
-0.00 -0.00 -0.00
Cost =
23055.90
Quantity' =
98.72
-182.36
-19.55
80.00
8.00
-32.97
40.00
10.00
В этом примере найдено уникальное решение стоимостью чуть более 23 000 долларов. Матрица C (формируется внутри hedgeopt и передан в lsqlin) является активом Price вектор, выраженный в виде вектора строки.
C = Price' = [98.72 97.53 0.05 98.72 100.55 6.28 0.05 3.69]
Вектор d - текущая стоимость портфеля Value0 = 23674.62. В примере поддерживается, насколько это возможно, постоянная стоимость портфеля с учетом указанных ограничений.
При отсутствии каких-либо дополнительных ограничений цель наименьших квадратов включает одно уравнение с восемью неизвестными. Это недостаточно определенная система уравнений. Поскольку такие системы обычно имеют бесконечное количество решений, необходимо указать дополнительные ограничения для достижения решения с практической значимостью.
Дополнительные ограничения могут быть получены из двух источников:
Пользовательские ограничения равенства
Ограничения равенства целевой чувствительности, налагаемые hedgeopt
В примере «Полностью хеджированный портфель» указаны пять ограничений равенства, связанных с фиксированными активами 1, 4, 5, 7 и 8. Это уменьшает число неизвестных с восьми до трех, что все еще является недостаточно определенной системой. Однако при сочетании с первым голом hedgeopt, ограничения равенства, связанные с целевой чувствительностью в TargetSens создать дополнительную систему из трех уравнений с тремя неизвестными. Эта дополнительная система гарантирует, что средневзвешенное значение дельты, гамма и веги активов 2, 3 и 6 вместе с оставшимися активами, находящимися в фиксированном состоянии, удовлетворяют общим требованиям к целевой чувствительности портфеля в TargetSens.
Объединение целевого уравнения наименьших квадратов с тремя уравнениями чувствительности портфеля обеспечивает общую систему из четырех уравнений с тремя неизвестными активами. Это больше не является недостаточно определенной системой, и решение является таким, как показано на рисунке.
Если удерживаемые основные средства сокращаются, например, FixedInd = [1 4 5 7], hedgeopt возвращает беспроцентный, полностью хеджированный портфель (Sens = [0 0 0] и Cost = 0).
При дальнейшем сокращении FixedInd (например, [1 4 5], [1 4], или даже []), hedgeopt всегда возвращает беспроцентный, полностью хеджированный портфель. В этих случаях недостаточные ограничения приводят к недостаточно определенной системе. Хотя hedgeopt определяет отсутствие затрат, полностью хеджированные портфели, в них нет ничего уникального. Эти портфели имеют мало практического значения.
Ограничения должны быть достаточными и надлежащим образом определены. Дополнительные ограничения, не влияющие на оптимизацию, называются зависимыми ограничениями. В качестве простого примера предположим, что параметр Z ограничен таким образом, что . Кроме того, предположим, что вы каким-то образом добавляете другое ограничение, которое эффективно ограничивает . Теперь ограничений не влияет на оптимизацию.
Для иллюстрации использования hedgeopt чтобы минимизировать чувствительность портфеля для данной максимальной целевой стоимости, укажите целевую стоимость в размере 20 000 долл. США и определите новые чувствительность портфеля, запасы и стоимость перераспределенного портфеля.
MaxCost = 20000; [Sens, Cost, Quantity] = hedgeopt(Sensitivities, Price,... Holdings, [1 4 5 7 8], [], MaxCost);
Sens =
-4345.36 295.81 -6586.64
Cost =
20000.00
Quantity' =
100.00
-151.86
-253.47
80.00
8.00
-18.18
40.00
10.00
Этот пример соответствует точке $20000 по оси затрат в рисунках Профиль затрат на перераспределение, Доступные для перераспределения средства и Затраты на перераспределение.
При минимизации чувствительности максимальная целевая стоимость рассматривается как ограничение неравенства; в данном случае MaxCost больше всего вы готовы потратить на хеджирование портфеля. Матрица целей наименьших квадратов C - матрица, транспонирующая чувствительность входных активов
C = Sensitivities'
a 3около-8 матрица в этом примере, и d является 3около-1 вектор столбца нулей,
[0 0 0]'.
Без каких-либо дополнительных ограничений цель наименьших квадратов приводит к недостаточно определенной системе из трех уравнений с восемью неизвестными. Удерживая основные средства 1, 4, 5, 7 и 8 фиксированными, вы сокращаете число неизвестных с восьми до трех. Теперь, с системой из трех уравнений с тремя неизвестными, hedgeopt находит показанное решение.
Сокращение количества активов, находящихся на хранении, создает недооцененную систему с бессмысленными решениями. Например, посмотрите, что происходит только с четырьмя ограниченными активами.
FixedInd = [1 4 5 7]; [Sens, Cost, Quantity] = hedgeopt(Sensitivities, Price,... Holdings, FixedInd, [], MaxCost);
Sens =
-0.00 -0.00 -0.00
Cost =
20000.00
Quantity' =
100.00
-149.31
-14.91
80.00
8.00
-34.64
40.00
-32.60
Вы потратили 20 000 долларов (все средства, доступные для восстановления баланса), чтобы получить полностью хеджированный портфель.
Увеличив объем доступных средств до 50 000 долл. США, вы по-прежнему тратите все доступные средства, чтобы получить еще один полностью хеджированный портфель.
MaxCost = 50000; [Sens, Cost, Quantity] = hedgeopt(Sensitivities, Price,... Holdings, FixedInd, [],MaxCost);
Sens =
-0.00 0.00 0.00
Cost =
50000.00
Quantity' =
100.00
-473.78
-60.51
80.00
8.00
-18.20
40.00
385.60
Все решения недостаточно определенной системы бессмысленны. Вы покупаете и продаете различные активы для получения нулевой чувствительности, тратя все доступные средства каждый раз. Если вы уменьшите количество основных средств еще больше, эта проблема недостаточно ограничена, и вы не находите решения (выходы все NaN).
Следует также отметить, что при несогласованности ограничений решение не существует. Несогласованные ограничения создают неосуществимое пространство для решения; выходы все NaN.
hedgeslfДругая функция хеджирования, hedgeslf, пытается минимизировать чувствительность портфеля, так что повторно сбалансированный портфель сохраняет постоянную стоимость (повторно сбалансированный портфель хеджируется от рыночных движений и наиболее близок к самофинансированию). Если хеджирование самофинансирования не найдено, hedgeslf пытается сбалансировать портфель для минимизации чувствительности.
Из подхода системы наименьших квадратов, hedgeslf сначала пытается минимизировать затраты таким же образом, что hedgeopt делает. Если она не может решить эту проблему (без затрат, самофинансирование хеджирования невозможно), hedgeslf переходит к минимизации чувствительности, такой как hedgeopt. Таким образом, обсуждение ограничений для hedgeopt непосредственно применим к hedgeslf также.
Чтобы проиллюстрировать этот механизм хеджирования с использованием экзотических опционов капитала, рассмотрим портфель CRRInstSet получен из примера MAT-файла deriv.mat. Портфель состоит из восьми опционных инструментов: двух опционов на акции, одного барьера, одного компаунда, двух обратных и двух азиатских.
Функции хеджирования требуют ввода, которые включают текущие портфельные запасы (перерасчеты) и матрицу чувствительности инструментов. Чтобы создать эти входные данные, начните с загрузки портфеля примеров в память
load deriv.mat;
Затем вычислите цены и чувствительность инструментов в этом портфеле.
[Delta, Gamma, Vega, Price] = crrsens(CRRTree, CRRInstSet);
Извлеките текущие портфельные запасы (количество удержанных или количество контрактов).
Holdings = instget(CRRInstSet, 'FieldName', 'Quantity');
Для удобства поместите измерения дельты, гамма и веги чувствительности в матрицу чувствительности.
Sensitivities = [Delta Gamma Vega];
Каждая строка Sensitivities матрица связана с различным инструментом в портфеле и с каждым столбцом с различной мерой чувствительности.
disp([Price Holdings Sensitivities])
8.29 10.00 0.59 0.04 53.45
2.50 5.00 -0.31 0.03 67.00
12.13 1.00 0.69 0.03 67.00
3.32 3.00 -0.12 -0.01 -98.08
7.60 7.00 -0.40 -45926.32 88.18
11.78 9.00 -0.42 -112143.15 119.19
4.18 4.00 0.60 45926.32 49.21
3.42 6.00 0.82 112143.15 41.71
Первая колонка содержит долларовую цену за единицу каждого инструмента, вторая содержит запасы каждого инструмента, а третья, четвертая и пятая колонки содержат чувствительность дельты, гамма и вегского доллара соответственно.
Предположим, что вы хотите получить дельта, гамма и vega нейтральный портфель с помощью hedgeslf.
[Sens, Value1, Quantity]= hedgeslf(Sensitivities, Price, ... Holdings)
Sens =
0.00
-0.00
0.00
Value1 =
313.93
Quantity =
10.00
7.64
-1.56
26.13
9.94
3.73
-0.75
8.11
hedgeslf возвращает чувствительность портфеля к доллару (Sens), стоимость повторно сбалансированного портфеля (Value1) и новое распределение для каждого инструмента (Quantity).
Если Value0 и Value1 представляют стоимость портфеля до и после ребалансировки, соответственно, можно проверить стоимость путем сравнения стоимости портфеля.
Value0= Holdings' * Price
Value0 =
313.93
В этом примере портфель полностью хеджируется (одновременная дельта, гамма и вегская нейтральность) и самофинансируется (значения портфеля до и после балансирования (Value0 и Value1) одинаковы.
Предположим, что теперь вы хотите поместить некоторые верхние и нижние границы на отдельные инструменты в вашем портфеле. С помощью функции portcons, можно задать эти ограничения наряду с различными общими линейными ограничениями неравенства.
В качестве примера предположим, что в дополнение к фиксированному инструменту хранения 1, как и ранее, необходимо привязать позицию всех инструментов к +/- 20 договорам (для каждого инструмента не может быть сокращено или длиннее 20 договоров). Применение этих ограничений запрещает текущее положение в четвертом инструменте (длинный 26.13). Все остальные инструменты в настоящее время находятся в верхних/нижних границах.
Можно создать эти ограничения, сначала указав нижний и верхний векторы границ, а затем вызвав portcons.
LowerBounds = [-20 -20 -20 -20 -20 -20 -20 -20];
UpperBounds = [20 20 20 20 20 20 20 20];
ConSet = portcons('AssetLims', LowerBounds, UpperBounds);
Чтобы наложить эти ограничения, вызовите hedgeslf с ConSet в качестве последнего входного сигнала.
[Sens, Cost, Quantity1] = hedgeslf(Sensitivities, Price, ... Holdings, 1, ConSet)
Sens =
-0.00
0.00
0.00
Cost =
313.93
Quantity1 =
10.00
5.28
10.98
20.00
20.00
-6.99
-20.00
9.39
Обратите внимание, что hedgeslf обеспечивает соблюдение верхней границы четвертого инструмента, и портфель продолжает полностью хеджироваться и самофинансироваться.