Определение цен барьерных опционов с помощью сеток. Часть первая – постоянные барьеры

ОГЛАВЛЕНИЕ

Это первая часть в серии из четырех статей об определении цен на экзотические опционы с помощью методов на базе сетки. В этой части будет рассмотрен очень простой пример опциона с постоянным барьером.

•    Скачать демонстрационный проект - 5.26 Кб
•    Скачать исходники - 12.2 Кб

Введение

Стоит отметить, что представленный метод можно расширить до вмещения опционов с несколькими постоянными барьерами. После изучения простого примера перейдем к более сложным опционам с изменяющимися во времени барьерами. Статья об изменяющихся во времени барьерах будет охватывать широкий спектр возможных барьеров, в том числе (но не только) одиночные и множественные линейные, меняющиеся во времени, барьеры и экспоненциальные барьеры. В третьей части серии будет рассмотрено определение цен бермудских опционов на триномиальной сетке и представлен ряд наглядных решений задач, которые ставят бермудские опционы. Наконец, в четвертой части серии, будет рассмотрен совершенно другой метод: модель адаптивной сетки (AMM). Этот метод является альтернативой изучаемому в частях 1-3. Данная серия дает представление о неизбежных трудностях расчета цен опционов и делает всеобщим достоянием некоторый код определения цен опционов. Для начала, данная статья будет посвящена одиночному барьеру, но в случае интереса в нее будут включены различные постоянные барьеры (т.е. активация, деактивация).

Справка

Аналитические формулы ценообразования опционов типа Блэк-Шольца пользуются большим вниманием в литературе по ценообразованию на рынке ценных бумаг. Однако на практике методы ценообразования на базе сетки остаются излюбленным методом определения цен экзотических опционов типа барьерных и бермудских опционов. Но если бы история остановилась там, не пришлось бы писать эту серию статей. Известно, что для таких сложных типов опционов стандартные методы сетки с трудом вырабатывают приближенные значения цен; особенно когда начальная базовая цена близка к барьеру. В ряде случаев эти численные методы терпят полную неудачу, и не удается вычислить цену опциона. Для борьбы с этой проблемой был разработан ряд специальных методов сетки для определения цен барьерных опционов. Однако множественные, нелинейные и дискретные барьеры уничтожают некоторые из этих методов. Крайне необходим универсальный многоцелевой алгоритм.

Представленный в данной статье алгоритм разработан  именно с этим расчетом. Он основан на очень общем (но простом) методе, не только позволяющем изучить ценообразование, когда базовая цена как угодно близка к барьеру, но и вырабатывающем точные приближенные значения цен для всех типов барьерных опционов, включая бермудские. Приложенный к статье код служит строго для колл-опционов с нижней границей. Код для более сложных опционов будет рассмотрен в дальнейших статьях серии. Для простоты рассматривается биномиальная сетка; однако расширить метод до триномиального дерева достаточно просто. Предоставленный код реализован для триномиальной сетки. Наконец, по требованию может быть добавлен дополнительный код для опционов активации и деактивации с постоянными барьерами.

Задача

Барьерный опцион является зависящим от пути опционом. Его выигрыш определяется тем, достигает ли цена базового актива некоторого заранее установленного уровня цены, согласованного в момент контрактной покупки. В случае барьерного опциона с нижней границей выигрыш опциона установлен в ноль, когда базовая цена падает ниже барьера. Цену этого типа опциона можно определить с помощью того же метода триномиального дерева, применяемого для определения цен ванильных опционов; но без некоторого изменения триномиальное дерево будет сходиться с крайне низкой скоростью к "истинной" цене опциона. Одно возможное решение – передвинуть узлы сетки для увеличения сходимости, но это становится трудным (если не невозможным) для кривых барьеров. Более простой и понятный метод предусматривает корректировку вероятностей сетки с надлежащей поправкой. Базовый принцип использовался ранее для повышения скоростей сходимости алгоритмов ценообразования опционов Монте-Карло.


 
Рисунок 1. Конфигурация сетки для барьерного опциона с постоянным барьером L

Рисунок 1 показывает конструкцию трехпериодной биномиальной сетки с постоянным барьером, L. Из-за дискретизированного пути, по которому меняется цена актива, базовая цена актива может нарушить барьер опциона без обнаружения этого моделированием методом Монте-Карло. Один способ смягчить эту проблему – использовать верхнюю границу броуновского моста для расчета вероятности того, что базовая цена актива дойдет до барьера для любого данного шага моделирования. Однако этот метод не лишен недостатков. Его нельзя эффективно использовать для определения цен опционов с множественным барьером и с меняющимся во времени барьером без серии приближений для вероятности выхода броуновского моста. Применение этих поправок вероятности к вероятностям сетки триномиального дерева позволяет определять цены опционов с одиночными и множественными постоянными барьерами на триномиальной сетке. Недавние разработки в литературе о ценообразовании дают источник для этих приближений вероятности выхода. Теперь эти приближения применяются к практической задаче ценообразования.

Поправка

В качестве вводного примера рассмотрено трехпериодное биномиальное дерево базового актива для колл-опциона с нижней границей, показанное на рисунке 1. На рисунке L является (нижним) барьером опциона, а индексированные значения S являются ценами узла для разных периодов времени, индексированных разделением по времени:


 
T – зрелость опциона, а n – число делений дерева. Чтобы определить цену опциона, строятся биномиальные деревья для базового актива и опциона обычным образом, с одним отличием: изменяется вероятность перехода биномиального дерева, если обнаруживается потенциальное пересечение барьера между узлами в текущий период времени и следующий период времени. На рисунке 1 такая ситуация могла бы возникнуть при переходе от S(T0) к S(T0+d). Надо скорректировать связанную вероятность перехода. Для осуществления корректировки вероятность перехода умножается на соответствующую вероятность выхода; в данном случае, при условии [1] для колла с нижней границей:

Следовательно, при такой корректировке вероятности скорректированная по вероятности цена опциона записывается так:

где CDAO – цена колл-опциона с нижней границей, а C(ST0+dt) – цена колл-опциона в узле S(T0+dt). Корректировка вероятности эквивалентна превращению биномиального дерева в триномиальное дерево вблизи барьера. Третья ветвь отражает вероятность, что барьер достигнут в промежуточный момент. Тогда опцион отменяется. Следовательно, третья ветвь не вносит вклад в стоимость опциона и может быть пропущена. Такой проход в цикле по сетке позволяет выработать приближение для "истинной" цены опциона.


Использование кода

Код для случая постоянного барьера содержится в классе по имени AdjustedBarrier. Он реализован в файле AdjustedBarrier.h и основан на оптимизированном алгоритме триномиального дерева. Корректировка вероятности применяется по мере перемещения по сетке. Главный цикл для колл-опциона с нижней границей следующий:

// Двигаться обратно по дереву
// с помощью "ползучего триномиального" алгоритма
for (int i = (nlevels-1); i >= 0; i--)
{
    index = outerindex;
    for (int j = 0; j <= (2*i); j++)
    {
        _tree[j].option = (dUp * _tree[j+2].option +
                      dMid * _tree[j+1].option +
                    dDown * _tree[j].option) * discount;
    
     // корректировка вероятности перехода
    if (_tree[index].spot > dbarrier)
    {
        pUpAdj = ProbAdjust(_tree[index].spot, _tree[index+1].spot, dvol, dt, dbarrier);
         pMidAdj = ProbAdjust(_tree[index].spot, _tree[index].spot, dvol, dt, dbarrier);
        pDownAdj = ProbAdjust(_tree[index].spot, _tree[index-1].spot, dvol, dt, dbarrier);
        _tree[j].option = (dUp * (1.0 - pUpAdj) * _tree[j+2].option +
                           dMid * (1.0 - pMidAdj) * _tree[j+1].option +
                   dDown * (1.0 - pDownAdj) * _tree[j].option) * discount;
    }
    else
        _tree[j].option = 0.0;
           
    index++;
    }
    outerindex++;
}

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

// тестовые значения
int levels = 800;
double spot = 100;
double strike = 100;
double volatility = 25;
double rate = 10;
double maturity = 1;
double barrier = 95;
   
// Определить цену колл-опциона с нижней границей
double DownOutOption = AdjustedBarrier::PriceBarrierOption(levels, spot, strike,
    volatility, rate, maturity, barrier);

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

Final option price from ADJUSTED PROBABILITY method is: 7.087516
 (requiring 0.000000 microseconds or 0.000000 seconds for the underlying tree
  and 1071541.000000 microseconds or 1.071541 seconds for the option tree)

Total calculation time: 1071541.000000 microseconds (1.071541 seconds)

Option price from HAUG FORMULA is: 7.049658


Press any key to continue . . .

Скорость и сходимость

Для тестирования кода сравнивается сходимость данного метода со сходимостью триномиальной модели Кокса-Росса-Рубинштейна (CRR). Результаты для сходимости двух методов показаны на рисунке 2, вместе с "истинным" (или аналитическим) значением опциона:

Рисунок 2: Сравнение и анализ сходимости

Рисунок 2 показывает быструю сходимость модели корректировки вероятности по сравнению со стандартной триномиальной сеткой без коррекции. Увеличение точности налицо, и сходимость к расчетному значению (отмечено красным) весьма быстрая по сравнению с моделью CRR. Однако некоторые колебания в приближении цены остаются после 500 делений сетки. Причина в том, что, хотя корректируются вероятности сетки, дискретизация сетки все же приводит к некоторой неточности. Ради крайне обобщенного алгоритма приходится мириться с некоторой неточностью. Для повышения точности можно выбрать большое число делений сетки, но из-за этого увеличится время выполнения.

Рисунок 3

Рисунок 3 показывает таблицу, представляющую результаты для поведения цены колл-опциона с нижней границей, когда биржевой курс близок к границе. Последний столбец содержит цену колл-опциона с нижней границей с использованием аналитического решения. Цены в квадратных скобках получены из стандартной модели. Цены, помеченные “-”, не удалось вычислить с помощью стандартного метода перемещения узла – то есть числа использованных делений не хватило для выработки приближения для расчетной цены.

Рисунок 3 показывает сравнение между моделью корректировки вероятности и стандартной моделью сетки. Записи, помеченные "-", показывают неудачу стандартной модели. То есть традиционная модель сетки не может выработать приближение цены. Однако представленная в статье модель всегда дает приближение цены опциона.

Рисунок 4

Рисунок 4 показывает выполнения для алгоритма для сеток базового актива и опциона (левая ось – в секундах, правая ось - в микросекундах). Левая ось обозначает дерево опциона (сплошная линия), тогда как правая ось означает базовое дерево (пунктирная линия). После 3.000 делений сетки время расчета быстро возрастает. При 10.000 делениях оно приближается к 1 минуте. Все вычисления выполнялись на процессоре 1.83 Ггц с 2 гб оперативной памяти. Типовой расчет для 1000 делений сетки и постоянного барьера требует примерно 3 секунд.

Заключение

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