MATLAB.Exponenta
MATLAB и Simulink на русском
Технологии разработки и отладки
		сложных технических систем
 

Financial Derivatives Toolbox

Financial Toolbox: разбор демонстрационных примеров

  В оглавление \ К предыдущему разделу \ К следующему разделу

Хеджирование портфеля с ограничениями

Определение вышеприведенных функций хеджирования сводится к решению задачи линейной квадратичной оптимизации с ограничениями. (Для дополнительной информации необходимо ознакомится с возможностями функции lsqlin, входящую в Optimization Toolbox. В частности, функция lsqlin осуществляет минимизацию при использовании линейных ограничений для квадратичного функционала:

Где C,A и A e q - являются матрицами, а,b,beq,lb и ub являются векторами. Для Financial Derivatives Toolbox вектор представляет собой вектор ограничений на составные части портфеля – количество контрактов финансовых инструментов.

В данном разделе приводятся несколько примеров установки ограничений и обсуждаются ситуации, которые связаны с проблемой разрешимости задачи линейной квадратичной оптимизации с ограничениями. Будут рассмотрены следующие примеры:

  • Пример. Полное хеджирование портфеля,
  • Пример. Минимизация чуствительности портфеля,
  • Пример. Недоопределенная система,
  • Пример. Функция hedgeslf и портфель с ограничениями.

В зависимости от ограничений и количества финансовых инструментов в портфеле, решение конкретной задачи оптимизации может существовать, а может и не существовать. Более того, если решение найдено, оно может не быть уникальным. Для существования уникального решения задача линейной квадратичной оптимизации с ограничениями должна быть полностью определенной.

Пример. Полное хеджирование портфеля

Напомним, что функция 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

В этом примере найдено уникальное решение задачи оптимизации при затратах, превышающих $23000. Матрица C (формируется в процессе выполнения функции hedgeopt и передается для выполнения функции lsqlin), представляет собой вектор цен финансовых инструментов, выраженных в виде вектора-строки, его содержание может быть получено выполнением команды:

Price'

Результат будет иметь вид:

Вектор 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).

Если, в дальнейшем продолжить снятие фиксации финансовых инструментов портфеля, например ( [1 4 5], [1 4], или даже [] ), функция hedgeopt всегда будет возвращать отсутствие затрат для полностью хеджированного портфеля. В этом случае, появляется недоопределенность системы, как следствие недостатка ограничений. Хотя функция hedgeopt не определяет затрат для полностью хеджированного портфеля, уникального решения задачи оптимизации не существует.

Такие портфели имеют небольшое практическое применение. Таким образом, ограничения должны быть достаточными и корректно определенными. Дополнительные ограничения не имеют эффекта для оптимизации и называются зависимыми ограничениями. В качестве простого примера, предположим что параметр Z представляет собой ограничение, такое что Z 1. Более того, предположим, что, каким-то образом мы дополняем еще одним ограничением, так что Z 0 . В следствие чего, ограничение Z 1 не будет иметь никакого значения в процессе решения задачи оптимизации.

Пример. Минимизация чуствительности портфеля

Проиллюстрируем использование функции hedgeopt c целью минимизации чуствительности портфеля при заданных максимальных затратах в размере $20000 на процесс ребалансировки портфеля и определим искомую чуствительность портфеля, его структуру и связанные с процессом ребалансировки затраты. Выполним следующие команды:

MaxCost = 20000;
[Sens, Cost, Quantity] = hedgeopt(Sensitivities, Price,...
Holdings, [1 4 5 7 8], [], MaxCost);

В результате получим расчетную чуствительность портфеля и структуру портфеля:

Sens =
-4345.36 295.81 -6586.64

Анализ этого примера соответствует рисункам, построенным для чуствительности портфеля в разделе «Минимизация чуствительности портфеля».

Когда минимизируется чуствительность, максимальные финансовые затраты рассматриваются для процесса ребалансировки как ограничения в виде неравенств, в данном случае, параметром MaxCost определяются максимальные затраты для процесса ребалансировки портфеля. Матрица C есть транспонированная матрица относительно входной чуствительности составных частей портфеля. Её размер [3x8] для данного примера, а вектор вектор-столбец нулей [0 0 0]’.

Выполнив команду

Sensitivities'

Получим результат, представляющий собой транспонированную матрицу.

Без каких-либо дополнительных ограничений данная задача квадратичной оптимизации с линейными ограничениями является недоопределенной системой, состоящей из трех уравнений с восьмью неизвестными. Фиксированием в портфеле финансовых инструментов под номерами 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
 

Структура портфеля будет иметь вид:

Было затрачено $20000 (для ребалансировки портфеля, в данном случае, доступны любые финансовые ресурсы) для достижения полностью хеджированного портфеля.

В случае увеличения ресурсов до $50000, также достигается другой, но тоже полностью хеджированный портфель. Выполним команды:

MaxCost = 50000;
[Sens, Cost, Quantity] = hedgeopt(Sensitivities, Price,...
Holdings, FixedInd, [],MaxCost);

Получим следующие характеристики портфеля и его структуру:

Sens =
-0.00 0.00 0.00
Cost =
50000.00

Все решения для недоопределенной системы являются допустимыми. Можно покупать и продавать различные финансовые инструменты, входящие в портфель для достижения нулевой чуствительности, расходуя тем самым в процессе ребалансировки портфеля все допустимые ресурсы. Если и далее снизить количество зафиксированных финансовых инструментов портфеля, тогда задача квадратичной оптимизации с линейными ограничениями будет иметь недостаточное количество ограничений, соответственно этому решение не будет найдено (результат выполнения функций будет такой NaN).

Таким образом, заметим, что решения не существует в случае, если ограничения являются недостаточными. Пространство поиска оптимизационной задачи становится бесконечным – результат решения задачи оптимизации имеет вид - NaN.

Пример. Функция hedgeslf и портфель с ограничениями

Другая функция хеджирования hedgeslf, осуществляет минимизацию чуствительности портфеля, так что ребалансированный портфель имеет некоторое постоянное значение (ребалансированный портфель хеджируется относительно движений рынка и он является близким к самофинансируемому портфелю). Если же самофинансируемый портфель не найден, функция hedgeslf осуществляет ребалансировку портфеля с достижением минимальной чуствительности.

Исходя из метода квадратичной оптимизации, функция hedgeslf, во-первых минимизирует затраты таким же способом, что и функция hedgopt. Если она не находит решение данной задачи оптимизации (например, если нет никаких затрат, невозможно построить самофинансируемый портфель), тогда функция hedgeslf осуществляет минимизацию чуствительности, аналогично функции hedgopt. Таким образом, рассуждения относительно ограничений для функции hedgopt являются справедливыми и для функции hedgeslf.

Для иллюстрации этой возможности хеджирования, используем экзотический опцион, находящийся в портфеле CRRInstSet, загружаемый с помощью МАТ-файла 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

Первый столбец содержит долларовое изменение на единицу изменения цены каждого финансового инструмента, второй количество инструментов в портфеле, третий, четвертый и пятый столбцы содержат статистические характеристики чуствительности дельту, гамму и вегу, измеряемые в долларах, соответственно.

Предположим, что необходимо получить дельта, гамма и вега нейтральный портфель, с использованием функции hedgeslf.

[Sens, Value1, Quantity]= hedgeslf(Sensitivities, Price, ...
Holdings)

Получим следующую структуру портфеля:

Функция hedgeslf возвращает долларовую чуствительность портфеля (Sens), стоимость ребалансированного протфеля (Value1) и структуру портфеля. Если Value0 и Value1 представляют собой стоимости портфеля до и после процесса ребалансировки, то можно проверить начальную стоимость портфеля:

Value0= Holdings' * Price

В результате получим

Таким образом, в данном примере, портфель является полностью хеджированным (одновременное хеджирование по трем статистическим характеристикам дельте, гамме и веге) и, кроме того, портфель является самофинансируемым (стоимость портфеля до и после процесса ребалансирования является одной и той же).

Предположим теперь, что есть необходимость разместить некоторые верхние и нижние границы на индивидуальные финансовые инструменты портфеля. Используя функцию Financial Toolbox portcons, можно специфицировать эти ограничения, совместно с основными линейными ограничениями для решения задачи оптимизации.

Предположим, например, что дополнительно фиксируется один финансовый инструмент, как и ранее было рассмотрено, это может быть достигнуто дополнительным ограничением для коротких и длинных контрактов в размере 20 (это означает, что для каждого финансового инструмента портфеля нельзя иметь открытыми более 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);

Для удовлетворения специфицированным ограничениям, осуществим вызов функции hedgeopt с ограничениями указанными в ConSet. Выполним команду:

[Sens, Cost, Quantity1] = hedgeslf(Sensitivities, Price, ...
Holdings, 1, ConSet)

Результат будет иметь вид:

Необходимо отметить, что в результате решения задачи оптимизации с дополнительным ограничением обращение к функции  hedgeslf  позволило удовлетворить дополнительным ограничениям, а ребалансировка портфеля  с достижением полного хеджирования, осуществлена за счет самофинансирования. 

  В оглавление \ К предыдущему разделу \ К следующему разделу

 

Поиск по сайту:

Система Orphus

Яндекс.Метрика