Цена опциона по модели Бейтса с использованием числовой интеграции
добавляет необязательные аргументы пары имя-значение. 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]);

Rate - Постоянно усложняемая безрисковая процентная ставкаНепрерывно складываемая безрисковая процентная ставка, заданная как скалярное десятичное значение.
Типы данных: double
AssetPrice - Текущая базовая цена активаТекущая базовая цена актива, указанная как числовое значение с использованием скаляра или NINSTоколо-1 или NColumnsоколо-1 вектор.
Дополнительные сведения о соответствующих размерах для AssetPrice, см. аргумент пара имя-значение ExpandOutput.
Типы данных: double
Settle - Дата расчета опциона Дата расчета опциона, указанная как NINSTоколо-1 или NColumnsоколо-1 вектор с использованием серийных номеров дат, векторов символов даты, массивов даты и времени или строковых массивов. Settle дата должна быть до Maturity дата.
Дополнительные сведения о соответствующих размерах для Settle, см. аргумент пара имя-значение ExpandOutput.
Типы данных: double | char | datetime | string
Maturity - Дата погашения опционаДата погашения опциона, указанная как NINSTоколо-1 или NColumnsоколо-1 вектор с использованием серийных номеров дат, векторов символов даты, массивов даты и времени или строковых массивов.
Дополнительные сведения о соответствующих размерах для Maturity, см. аргумент пара имя-значение ExpandOutput.
Типы данных: double | char | datetime | string
OptSpec - Определение опциона 'call' или 'put' | строковый массив со значениями "call" или "put"Определение опции, указанной как NINSTоколо-1 или NColumnsоколо-1 вектор с использованием массива ячеек из символьных векторов или строковых массивов со значениями 'call' или 'put'.
Дополнительные сведения о соответствующих размерах для OptSpec, см. аргумент пара имя-значение ExpandOutput.
Типы данных: cell | string
Strike - Цена страйка опционаЦена страйка опциона, указанная как NINSTоколо-1, NRowsоколо-1, NRowsоколо-NColumns вектор ударных цен.
Дополнительные сведения о соответствующих размерах для Strike, см. аргумент пара имя-значение ExpandOutput.
Типы данных: double
V0 - Первоначальное отклонение базового активаНачальная дисперсия подстилающего актива, заданная как скалярное числовое значение.
Типы данных: double
ThetaV - Долгосрочное отклонение базового активаДолгосрочная дисперсия подстилающего актива, заданная как скалярное числовое значение.
Типы данных: double
Kappa - Средняя скорость пересмотра для отклонения базового активаСредняя скорость пересмотра для подстилающего актива, заданная как скалярное числовое значение.
Типы данных: double
SigmaV - Волатильность отклонения базового активаВолатильность дисперсии недоделанного актива, определяемая как скалярное числовое значение.
Типы данных: double
RhoSV - Корреляция между процессами Weiner для базового актива и его отклонениемКорреляция между процессами Вайнера для базового актива и его дисперсией, заданная как скалярное числовое значение.
Типы данных: double
MeanJ - Среднее значение случайного процентного размера скачкаСреднее значение случайного процентного размера перехода (J), указанное как скалярное десятичное значение, где log(1 + J) обычно распределяется со средним (log(1+MeanJ)-0.5*JumpVol^ 2) и стандартное отклонениеJumpVol.
Типы данных: double
JumpVol - Стандартное отклонение log(1 + J)Стандартное отклонение log(1 + J) гдеJ - случайный размер перехода в процентах, заданный как скалярное десятичное значение.
Типы данных: double
JumpFreq - Ежегодная частота процесса перехода ПуассонаГодовая частота процесса перехода Пуассона, заданная как скалярное числовое значение.
Типы данных: 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 (по умолчанию) | числовые значения: 0,1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13Количество дней прибора, указанное как пара, разделенная запятыми, состоящая из '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' - Постоянно увеличиваемая базовая доходность активов0
(по умолчанию) | числовыеПостоянно смешанная базовая доходность активов, указанная как пара, разделенная запятыми, состоящая из 'DividendYield' и скалярное числовое значение.
Типы данных: double
'VolRiskPremium' - Премия за риск волатильности0
(по умолчанию) | числовыеПремия за риск волатильности, указанная как пара, разделенная запятыми, состоящая из 'VolRiskPremium' и скалярное числовое значение.
Типы данных: double
'LittleTrap' - Флаг, обозначающий формулировку «Little Heston Trap»true
(по умолчанию) | логический со значениями true или falseФлаг, обозначающий композицию «Little Heston Trap» Альбрехера и
др., указанную как пара, разделенная запятыми, состоящая из: 'LittleTrap' и логическое:
true - Использовать
композицию Albrecher et al.
false - Использовать оригинальную формацию Хестона.
Типы данных: logical
'AbsTol' - Абсолютная погрешность для числового интегрирования1e-10
(по умолчанию) | числовыеАбсолютный допуск ошибки для числового интегрирования, определяемый как разделенная запятыми пара, состоящая из 'AbsTol' и скалярное числовое значение.
Типы данных: double
'RelTol' - Относительная погрешность для числового интегрирования1e-6
(по умолчанию) | числовыеОтносительный допуск ошибки для числового интегрирования, определяемый как разделенная запятыми пара, состоящая из 'RelTol' и скалярное числовое значение.
Типы данных: double
'IntegrationRange' - Диапазон численного интегрирования, используемый для аппроксимации непрерывного интеграла [0 Inf][1e-9 Inf]
(по умолчанию) | векторДиапазон численного интегрирования, используемый для аппроксимации непрерывного интеграла [0 Inf], указанная как пара, разделенная запятыми, состоящая из 'IntegrationRange' и 1около-2 вектор, представляющий [LowerLimit UpperLimit].
Типы данных: double
'Framework' - Основа для вычисления цен и чувствительности вариантов с использованием численной интеграции моделей"heston1993"
(по умолчанию) | строка со значениями "heston1993" или "lewis2001"
| символьный вектор со значениями 'heston1993' или 'lewis2001'
Структура для вычисления цен и чувствительности опций с использованием числовой интеграции моделей, определяемая как пара, разделенная запятыми, состоящая из 'Framework' и скалярную строку или символьный вектор со следующими значениями:
"heston1993" или 'heston1993' - Метод, используемый в Хестоне (1993)
"lewis2001" или 'lewis2001' - Метод, используемый в Льюисе (2001)
Типы данных: char | string
'ExpandOutput' - Флажок для расширения выходных данныхfalse (выходы: NINSTоколо-1 векторы) (по умолчанию) | логический со значением true или falseФлаг для расширения выходных данных, указанный как разделенная запятыми пара, состоящая из '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
Price - Цены опционовЦены опционов, возвращенные как NINSTоколо-1, или NRowsоколо-NColumns, в зависимости от ExpandOutput.
Вариант ванили - это категория вариантов, включающая только самые стандартные компоненты.
Вариант ванили имеет срок годности и простую цену страйка. Варианты в американском и европейском стиле классифицируются как варианты ванили.
Окупаемость опциона на ваниль выглядит следующим образом:
Для вызова: , 0)
Для put: , 0)
где:
St - цена базового актива в момент времени t.
K - цена удара.
Дополнительные сведения см. в разделе Параметр ванили.
Модель Бейтса (Bates (1996)) является расширением модели Хестона, где, помимо стохастической волатильности, были добавлены параметры скачка диффузии, аналогичные Мертону (1976), для моделирования внезапных движений цен активов.
Стохастическое дифференциальное уравнение:
= λpdt
где
r - непрерывная безрисковая ставка.
q - непрерывный дивидендный выход.
St - цена актива в момент времени t.
vt - отклонение цены основного средства в момент времени t.
J - случайный процентный размер скачка, обусловленный происходящим скачком, где ln(1 + J) обычно распределяется со ) − δ22 и стандартным отклонением δ, а (1 + J) имеет логнормальное распределение:
мкJ) − δ22] 2δ22}
v0 - начальное отклонение цены основного средства при t = 0 (v0 > 0).
λ - долгосрочный уровень дисперсии для (start> 0).
δ - средняя скорость реверсирования для («» > 0 «»).
startv - дисперсная волатильность для (startv > 0).
p - корреляция между процессами Вайнера Wt и для (-1 ≤ p ≤ 1).
мкДж представляет собой среднее значение J для (мкДж > -1).
δ - стандартное отклонение ln(1 + J) для (δ ≥ 0 ).
- годовая частота (интенсивность) процесса Пуассона Pt для ( ≥ 0).
Характеристическая функция ) для j = 1 (средний показатель цены актива) и j = 2 (нейтральный по отношению к риску показатель):
b1 =κ +λVolRisk−pσv, b2 =κ +λVolRisk
где
start- переменная характеристической функции.
ƛVolRisk - премия за риск волатильности.
start- время созревания для (start= T - t).
i - единичное мнимое число для (i2 = -1).
Определения для Cj и Dj в «The Little Heston Trap» Альбрехера и др. (2007) являются:
εj=bj−pσviϕ−djbj−pσviϕ + ди-джей
Численное интегрирование используется для оценки непрерывного интеграла для обратного преобразования Фурье.
Метод численного интегрирования в рамках Heston (1993) основан на следующих выражениях:
+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) основан на следующих выражениях:
K) = Ke −
где
r - непрерывная безрисковая ставка.
q - непрерывный дивидендный выход.
St - цена актива в момент времени t.
К - это удар.
start- время до зрелости (start= T-t).
Call (K) - цена вызова при ударе K.
Пут (К) - цена пут при ударе К
i - единичное воображаемое число (i2 = -1)
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.
optByBatesFFT | optByHestonFFT | optByHestonNI | optByMertonFFT | optByMertonNI | optSensByBatesFFT | optSensByBatesNI | optSensByHestonFFT | optSensByHestonNI | optSensByMertonFFT | optSensByMertonNI
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.