exponenta event banner

optByBatesNI

Цена опциона по модели Бейтса с использованием числовой интеграции

Описание

пример

Price = optByBatesNI(Rate,AssetPrice,Settle,Maturity,OptSpec,Strike,V0,ThetaV,Kappa,SigmaV,RhoSV,MeanJ,JumpVol,JumpFreq) вычисляет цену ванильного европейского опциона по модели Бейтса, используя численные методы интеграции.

пример

Price = optByBatesNI(___,Name,Value) добавляет необязательные аргументы пары имя-значение.

Примеры

свернуть все

optByBatesNI использует численную интеграцию для вычисления цен опционов и последующего построения поверхности цен опционов.

Определение переменных опций и параметров модели Бейтса

AssetPrice = 80;
Rate = 0.03;
DividendYield = 0.02;
OptSpec = 'call';

V0 = 0.04;
ThetaV = 0.05;
Kappa = 1.0;
SigmaV = 0.2;
RhoSV = -0.7;
MeanJ = 0.02;
JumpVol = 0.08;
JumpFreq = 2;

Расчет опционной цены для одной забастовки

Settle = datenum('29-Jun-2017');
Maturity = datemnth(Settle, 6);
Strike = 80; 

Call = optByBatesNI(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, V0, ...
    ThetaV, Kappa, SigmaV, RhoSV, MeanJ, JumpVol, JumpFreq, ...
    'DividendYield', DividendYield)
Call = 5.3484

Расчет опционных цен для вектора забастовок

Strike входным может быть вектор.

Settle = datenum('29-Jun-2017');
Maturity = datemnth(Settle, 6);
Strike = (76:2:84)';

Call = optByBatesNI(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, V0, ...
    ThetaV, Kappa, SigmaV, RhoSV, MeanJ, JumpVol, JumpFreq, ...
    'DividendYield', DividendYield)
Call = 5×1

    7.5765
    6.4020
    5.3484
    4.4173
    3.6073

Расчет опционных цен для вектора ударов и вектора дат одинаковой длины

Используйте Strike ввод для указания ударов. Также, Maturity ввод может быть вектором, но он должен соответствовать длине Strike вектор, если ExpandOutput аргумент пары имя-значение не установлен в значение "true".

Settle = datenum('29-Jun-2017');
Maturity = datemnth(Settle, [12 18 24 30 36]); % Five maturities
Strike = [76 78 80 82 84]'; % Five strikes

Call = optByBatesNI(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, V0, ...
    ThetaV, Kappa, SigmaV, RhoSV, MeanJ, JumpVol, JumpFreq, ...
    'DividendYield', DividendYield) % Five values in vector output
Call = 5×1

    9.7516
   10.3931
   10.8865
   11.2990
   11.6491

Разверните окно «Вывод поверхности»

Установите ExpandOutput аргумент пары имя-значение для "true" для расширения выходных данных в NStrikesоколо-NMaturities матрица. В этом случае это квадратная матрица.

Call = optByBatesNI(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, V0, ...
    ThetaV, Kappa, SigmaV, RhoSV, MeanJ, JumpVol, JumpFreq, ...
    'DividendYield', DividendYield, 'ExpandOutput', true) % (5 x 5) matrix output
Call = 5×5

    9.7516   11.4387   12.8395   14.0588   15.1361
    8.6554   10.3931   11.8344   13.0890   14.1980
    7.6432    9.4149   10.8865   12.1693   13.3046
    6.7153    8.5035    9.9951   11.2990   12.4553
    5.8705    7.6581    9.1594   10.4771   11.6491

Расчет опционных цен для вектора ударов и вектора дат различной длины

Когда ExpandOutput является "true", NStrikes не обязательно соответствовать NMaturities (то есть выход NStrikesоколо-NMaturities матрица может быть прямоугольной).

Settle = datenum('29-Jun-2017');
Maturity = datemnth(Settle, 12*(0.5:0.5:3)'); % Six maturities
Strike = (76:2:84)'; % Five strikes

Call = optByBatesNI(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, V0, ...
    ThetaV, Kappa, SigmaV, RhoSV, MeanJ, JumpVol, JumpFreq, ...
    'DividendYield', DividendYield, 'ExpandOutput', true) % (5 x 6) matrix output
Call = 5×6

    7.5765    9.7516   11.4387   12.8395   14.0588   15.1361
    6.4020    8.6554   10.3931   11.8344   13.0890   14.1980
    5.3484    7.6432    9.4149   10.8865   12.1693   13.3046
    4.4173    6.7153    8.5035    9.9951   11.2990   12.4553
    3.6073    5.8705    7.6581    9.1594   10.4771   11.6491

Расчет опционных цен для вектора забастовок и вектора цен активов

Когда ExpandOutput является "true", выходной сигнал также может быть NStrikesоколо-NAssetPrices прямоугольная матрица путем принятия вектора цен активов.

Settle = datenum('29-Jun-2017');
Maturity = datemnth(Settle, 12); % Single maturity
ManyAssetPrices = [70 75 80 85]; % Four asset prices
Strike = (76:2:84)'; % Five strikes

Call = optByBatesNI(Rate, ManyAssetPrices, Settle, Maturity, OptSpec, Strike, V0, ...
    ThetaV, Kappa, SigmaV, RhoSV, MeanJ, JumpVol, JumpFreq, ...
    'DividendYield', DividendYield, 'ExpandOutput', true) % (5 x 4) matrix output
Call = 5×4

    4.2033    6.6918    9.7516   13.2808
    3.5558    5.8111    8.6554   11.9993
    2.9906    5.0181    7.6432   10.7934
    2.5018    4.3096    6.7153    9.6651
    2.0825    3.6818    5.8705    8.6158

Печать поверхности цены опциона

Strike и Maturity входами могут быть векторы. Набор ExpandOutput кому "true" для вывода поверхности в виде NStrikesоколо-NMaturities матрица.

Settle = datenum('29-Jun-2017');
Maturity = datemnth(Settle, 12*[1/12 0.25 (0.5:0.5:3)]');
Times = yearfrac(Settle, Maturity);
Strike = (2:2:200)';

Call = optByBatesNI(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, V0, ...
    ThetaV, Kappa, SigmaV, RhoSV, MeanJ, JumpVol, JumpFreq, ...
    'DividendYield', DividendYield, 'ExpandOutput', true);


[X,Y] = meshgrid(Times,Strike);

figure;
surf(X,Y,Call);
title('Price');
xlabel('Years to Option Expiry');
ylabel('Strike');
view(-112,34);
xlim([0 Times(end)]);
zlim([0 80]);

Figure contains an axes. The axes with title Price contains an object of type surface.

Входные аргументы

свернуть все

Непрерывно складываемая безрисковая процентная ставка, заданная как скалярное десятичное значение.

Типы данных: double

Текущая базовая цена актива, указанная как числовое значение с использованием скаляра или NINSTоколо-1 или NColumnsоколо-1 вектор.

Дополнительные сведения о соответствующих размерах для AssetPrice, см. аргумент пара имя-значение ExpandOutput.

Типы данных: double

Дата расчета опциона, указанная как NINSTоколо-1 или NColumnsоколо-1 вектор с использованием серийных номеров дат, векторов символов даты, массивов даты и времени или строковых массивов. Settle дата должна быть до Maturity дата.

Дополнительные сведения о соответствующих размерах для Settle, см. аргумент пара имя-значение ExpandOutput.

Типы данных: double | char | datetime | string

Дата погашения опциона, указанная как NINSTоколо-1 или NColumnsоколо-1 вектор с использованием серийных номеров дат, векторов символов даты, массивов даты и времени или строковых массивов.

Дополнительные сведения о соответствующих размерах для Maturity, см. аргумент пара имя-значение ExpandOutput.

Типы данных: double | char | datetime | string

Определение опции, указанной как NINSTоколо-1 или NColumnsоколо-1 вектор с использованием массива ячеек из символьных векторов или строковых массивов со значениями 'call' или 'put'.

Дополнительные сведения о соответствующих размерах для OptSpec, см. аргумент пара имя-значение ExpandOutput.

Типы данных: cell | string

Цена страйка опциона, указанная как NINSTоколо-1, NRowsоколо-1, NRowsоколо-NColumns вектор ударных цен.

Дополнительные сведения о соответствующих размерах для Strike, см. аргумент пара имя-значение ExpandOutput.

Типы данных: double

Начальная дисперсия подстилающего актива, заданная как скалярное числовое значение.

Типы данных: double

Долгосрочная дисперсия подстилающего актива, заданная как скалярное числовое значение.

Типы данных: double

Средняя скорость пересмотра для подстилающего актива, заданная как скалярное числовое значение.

Типы данных: double

Волатильность дисперсии недоделанного актива, определяемая как скалярное числовое значение.

Типы данных: double

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

Типы данных: double

Среднее значение случайного процентного размера перехода (J), указанное как скалярное десятичное значение, где log(1 + J) обычно распределяется со средним (log(1+MeanJ)-0.5*JumpVol^ 2) и стандартное отклонениеJumpVol.

Типы данных: double

Стандартное отклонение log(1 + J) гдеJ - случайный размер перехода в процентах, заданный как скалярное десятичное значение.

Типы данных: double

Годовая частота процесса перехода Пуассона, заданная как скалярное числовое значение.

Типы данных: double

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: Price = optByBatesNI(Rate,AssetPrice,Settle,Maturity,OptSpec,Strike,V0,ThetaV,Kappa,SigmaV,RhoSV,MeanJ,JumpVol,JumpFreq,'Basis',7)

Количество дней прибора, указанное как пара, разделенная запятыми, состоящая из 'Basis' и скаляр, использующий поддерживаемое значение:

  • 0 = факт/факт

  • 1 = 30/360 (SIA)

  • 2 = фактически/360

  • 3 = факт/365

  • 4 = 30/360 (PSA)

  • 5 = 30/360 (ISDA)

  • 6 = 30/360 (европейский)

  • 7 = факт/365 (японский)

  • 8 = факт/факт (ICMA)

  • 9 = факт/360 (ICMA)

  • 10 = факт/365 (ICMA)

  • 11 = 30/360E (ICMA)

  • 12 = факт/365 (ISDA)

  • 13 = BUS/252

Дополнительные сведения см. в разделе Базис.

Типы данных: double

Постоянно смешанная базовая доходность активов, указанная как пара, разделенная запятыми, состоящая из 'DividendYield' и скалярное числовое значение.

Типы данных: double

Премия за риск волатильности, указанная как пара, разделенная запятыми, состоящая из 'VolRiskPremium' и скалярное числовое значение.

Типы данных: double

Флаг, обозначающий композицию «Little Heston Trap» Альбрехера и др., указанную как пара, разделенная запятыми, состоящая из: 'LittleTrap' и логическое:

  • true - Использовать композицию Albrecher et al.

  • false - Использовать оригинальную формацию Хестона.

Типы данных: logical

Абсолютный допуск ошибки для числового интегрирования, определяемый как разделенная запятыми пара, состоящая из 'AbsTol' и скалярное числовое значение.

Типы данных: double

Относительный допуск ошибки для числового интегрирования, определяемый как разделенная запятыми пара, состоящая из 'RelTol' и скалярное числовое значение.

Типы данных: double

Диапазон численного интегрирования, используемый для аппроксимации непрерывного интеграла [0 Inf], указанная как пара, разделенная запятыми, состоящая из 'IntegrationRange' и 1около-2 вектор, представляющий [LowerLimit UpperLimit].

Типы данных: double

Структура для вычисления цен и чувствительности опций с использованием числовой интеграции моделей, определяемая как пара, разделенная запятыми, состоящая из 'Framework' и скалярную строку или символьный вектор со следующими значениями:

  • "heston1993" или 'heston1993' - Метод, используемый в Хестоне (1993)

  • "lewis2001" или 'lewis2001' - Метод, используемый в Льюисе (2001)

Типы данных: char | string

Флаг для расширения выходных данных, указанный как разделенная запятыми пара, состоящая из 'ExpandOutput' и логическое:

  • true - если true, выходы: NRowsоколо- NColumns матрицы. NRows - количество ударов для каждого столбца, которое определяется Strike вход. Например, Strike может быть NRowsоколо-1 вектор или NRowsоколо-NColumns матрица. NColumns определяется размерами AssetPrice, Settle, Maturity, и OptSpec, которые все должны быть скалярными или NColumnsоколо-1 векторы.

  • false - если false, выходы: NINSTоколо-1 векторы. Кроме того, входные данные Strike, AssetPrice, Settle, Maturity, и OptSpec все должны быть скалярными или NINSTоколо-1 векторы.

Типы данных: logical

Выходные аргументы

свернуть все

Цены опционов, возвращенные как NINSTоколо-1, или NRowsоколо-NColumns, в зависимости от ExpandOutput.

Подробнее

свернуть все

Вариант ванили

Вариант ванили - это категория вариантов, включающая только самые стандартные компоненты.

Вариант ванили имеет срок годности и простую цену страйка. Варианты в американском и европейском стиле классифицируются как варианты ванили.

Окупаемость опциона на ваниль выглядит следующим образом:

  • Для вызова: max (St K, 0)

  • Для put: max (K St, 0)

где:

St - цена базового актива в момент времени t.

K - цена удара.

Дополнительные сведения см. в разделе Параметр ванили.

Модель диффузии скачка стохастической волатильности Бейтса

Модель Бейтса (Bates (1996)) является расширением модели Хестона, где, помимо стохастической волатильности, были добавлены параметры скачка диффузии, аналогичные Мертону (1976), для моделирования внезапных движений цен активов.

Стохастическое дифференциальное уравнение:

dSt = (r−q−λpμJ) Stdt+vtStdWt+JStdPtdvt =κ (θ−vt) dt +σvvtdWtE [dWtdWtv] =pdtprob (dPt=1) = λpdt

где

r - непрерывная безрисковая ставка.

q - непрерывный дивидендный выход.

St - цена актива в момент времени t.

vt - отклонение цены основного средства в момент времени t.

J - случайный процентный размер скачка, обусловленный происходящим скачком, где ln(1 + J) обычно распределяется со средним значением ln (1 + мкJ) − δ22 и стандартным отклонением δ, а (1 + J) имеет логнормальное распределение:

1 (1 + J) δ2āexp {[ln (1 + J) (ln (1 + мкJ) − δ22] 2δ22}

v0 - начальное отклонение цены основного средства при t = 0 (v0 > 0).

λ - долгосрочный уровень дисперсии для (start> 0).

δ - средняя скорость реверсирования для («» > 0 «»).

startv - дисперсная волатильность для (startv > 0).

p - корреляция между процессами Вайнера Wt и Wtv для (-1 ≤ p ≤ 1).

мкДж представляет собой среднее значение J для (мкДж > -1).

δ - стандартное отклонение ln(1 + J) для (δ ≥ 0 ).

λ p - годовая частота (интенсивность) процесса Пуассона Pt для (λ p ≥ 0).

Характеристическая функция fBatesj (start) для j = 1 (средний показатель цены актива) и j = 2 (нейтральный по отношению к риску показатель):

fBates (ϕ) =exp (Cj+Djv0+iϕlnSt) exp (λpτ (1 +μJ) mj+12 [(1 +μj) iϕeδ2 (mjiϕ + (iϕ) 22) −1] −λpτμJiϕ) mj = {m1=12m2 =−12} CJ = (r−q) iϕτ +κθσv2 [(bj−pσviϕ + ди-джей) τ−2ln (1−gjedjτ1−gj)] Dj=bj−pσviϕ + djσv2 (1−edjτ1−gjedjτ) gj=bj−pσviϕ + djbj−pσviϕ−djdj =  (bj−pσviϕ) 2−σv2 (2ujiϕ−ϕ2), где для j=1,2:u1=12, u2 =−12, b1 =κ +λVolRisk−pσv, b2 =κ +λVolRisk

где

start- переменная характеристической функции.

ƛVolRisk - премия за риск волатильности.

start- время созревания для (start= T - t).

i - единичное мнимое число для (i2 = -1).

Определения для Cj и Dj в «The Little Heston Trap» Альбрехера и др. (2007) являются:

CJ = (r−q) iϕτ +κθσv2 [(bj−pσviϕ−dj) τ−2ln (1−εje−djτ1−εj)] Dj=bj−pσviϕ−djσv2 (1−e−djτ1−εje−djτ) εj=bj−pσviϕ−djbj−pσviϕ + ди-джей

Метод численной интеграции в рамках Heston (1993)

Численное интегрирование используется для оценки непрерывного интеграла для обратного преобразования Фурье.

Метод численного интегрирования в рамках Heston (1993) основан на следующих выражениях:

Вызов (K) = Ste qτP1 Ke rτP2Put (K) = Вызов (K) +Ke−rτ−Ste−qτPj=12+1π∫0∞Re[e−iϕln (K) fj (

где

r - непрерывная безрисковая ставка.

q - непрерывный дивидендный выход.

St - цена актива в момент времени t.

К - это удар.

start- время до зрелости (start= T-t).

Call (K) - цена вызова при ударе K.

Пут (К) - цена пут при ударе К

i - единичное воображаемое число (i2 = -1)

start- переменная характеристической функции.

fj (start) является характеристической функцией для Pj (j = 1,2).

P1 - вероятность St > K при измерении цены актива для модели.

P2 - вероятность St > K в рамках нейтральной по риску меры для модели.

Где j = 1,2 таким образом, что f1 (в) и f2 (в) являются характерными функциями для вероятностей P1 и P2 соответственно.

Эта структура выбрана со значением по умолчанию “Heston1993” для Framework аргумент пары имя-значение.

Метод числовой интеграции в рамках Lewis (2001) Framework

Численное интегрирование используется для оценки непрерывного интеграла для обратного преобразования Фурье.

Метод численного интегрирования в рамках Lewis (2001) основан на следующих выражениях:

Вызов (k) =Ste−qτ−Ke−τtπ∫0∞Re[K−iuf2 (start= (u i2)) 1u2 + 14] duPut (K) = вызов (K) = Ke −

где

r - непрерывная безрисковая ставка.

q - непрерывный дивидендный выход.

St - цена актива в момент времени t.

К - это удар.

start- время до зрелости (start= T-t).

Call (K) - цена вызова при ударе K.

Пут (К) - цена пут при ударе К

i - единичное воображаемое число (i2 = -1)

start- переменная характеристической функции.

u - переменная характеристической функции для интегрирования, где start= = (u i2).

f2 (start) является характеристической функцией для P2.

P2 - вероятность St > K в рамках нейтральной по риску меры для модели.

Эта структура выбирается со значением “Lewis2001” для Framework аргумент пары имя-значение.

Ссылки

[1] Бейтс, Д. С. «Скачки и стохастическая волатильность: процессы обменного курса, неявные в опционах Deutsche Mark». Обзор финансовых исследований. Том 9. № 1. 1996.

[2] Хестон, С. Л. «Решение в закрытой форме для опционов со стохастической волатильностью с приложениями к облигациям и валютным опционам». Обзор финансовых исследований. Том 6. № 2. 1993.

[3] Льюис, А. Л. «Простая опционная формула для общего скачка-диффузии и других экспоненциальных процессов леви». Enquision Financial Systems and OptionCity.net, 2001.

Представлен в R2018a