Цена опциона и чувствительность по модели Heston с использованием числовой интеграции
добавляет необязательные аргументы пары имя-значение. PriceSens = optSensByHestonNI(___,Name,Value)
optSensByHestonNI использует численную интеграцию для вычисления чувствительности опций, а затем для печати поверхностей чувствительности опций.
Определение переменных опций и параметров модели Heston
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;Вычисление чувствительности опции для одиночного удара
Settle = datenum('29-Jun-2017'); Maturity = datemnth(Settle, 6); Strike = 80; Delta = optSensByHestonNI(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, ... V0, ThetaV, Kappa, SigmaV, RhoSV, 'DividendYield', DividendYield, 'OutSpec', "delta")
Delta = 0.5775
Вычисление чувствительности опций для вектора ударов
Strike входным может быть вектор.
Settle = datenum('29-Jun-2017'); Maturity = datemnth(Settle, 6); Strike = (76:2:84)'; Delta = optSensByHestonNI(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, ... V0, ThetaV, Kappa, SigmaV, RhoSV, 'DividendYield', DividendYield, 'OutSpec', "delta")
Delta = 5×1
0.7043
0.6433
0.5775
0.5083
0.4377
Вычисление чувствительности опций для вектора ударов и вектора дат одинаковой длины
Используйте 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 Delta = optSensByHestonNI(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, ... V0, ThetaV, Kappa, SigmaV, RhoSV, 'DividendYield', DividendYield, ... 'OutSpec', "delta") % Five values in vector output
Delta = 5×1
0.6848
0.6413
0.6095
0.5841
0.5631
Разверните окно «Вывод поверхности»
Установите ExpandOutput аргумент пары имя-значение для "true" для расширения выходных данных в NStrikesоколо-NMaturities матрица. В этом случае это квадратная матрица.
Delta = optSensByHestonNI(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, ... V0, ThetaV, Kappa, SigmaV, RhoSV, 'DividendYield', DividendYield, ... 'OutSpec', "delta", 'ExpandOutput', true) % (5 x 5) matrix output
Delta = 5×5
0.6848 0.6762 0.6703 0.6654 0.6609
0.6416 0.6413 0.6404 0.6390 0.6372
0.5960 0.6048 0.6095 0.6119 0.6129
0.5485 0.5671 0.5776 0.5841 0.5882
0.4997 0.5286 0.5452 0.5559 0.5631
Вычисление чувствительности опций для вектора ударов и вектора дат различной длины
Когда 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 Delta = optSensByHestonNI(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, ... V0, ThetaV, Kappa, SigmaV, RhoSV, 'DividendYield', DividendYield, ... 'OutSpec', "delta", 'ExpandOutput', true) % (5 x 6) matrix output
Delta = 5×6
0.7043 0.6848 0.6762 0.6703 0.6654 0.6609
0.6433 0.6416 0.6413 0.6404 0.6390 0.6372
0.5775 0.5960 0.6048 0.6095 0.6119 0.6129
0.5083 0.5485 0.5671 0.5776 0.5841 0.5882
0.4377 0.4997 0.5286 0.5452 0.5559 0.5631
Расчет чувствительности опционов для вектора ударов и вектора цен на активы
Когда 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 Delta = optSensByHestonNI(Rate, ManyAssetPrices, Settle, Maturity, OptSpec, Strike, ... V0, ThetaV, Kappa, SigmaV, RhoSV, 'DividendYield', DividendYield, ... 'OutSpec', "delta", 'ExpandOutput', true) % (5 x 4) matrix output
Delta = 5×4
0.4293 0.5708 0.6848 0.7705
0.3737 0.5193 0.6416 0.7364
0.3200 0.4668 0.5960 0.6994
0.2693 0.4143 0.5485 0.6597
0.2226 0.3628 0.4997 0.6177
Поверхности чувствительности опций печати
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)'; [Delta, Gamma, Rho, Theta, Vega, VegaLT] = ... optSensByHestonNI(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, ... V0, ThetaV, Kappa, SigmaV, RhoSV, 'DividendYield', DividendYield, ... 'OutSpec', ["delta", "gamma", "rho", "theta", "vega", "vegalt"], ... 'ExpandOutput', true); [X,Y] = meshgrid(Times,Strike); figure; surf(X,Y,Delta); title('Delta'); xlabel('Years to Option Expiry'); ylabel('Strike'); view(-112,34); xlim([0 Times(end)]);

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

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

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

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

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

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
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
PriceSens = optSensByHestonFFT(Rate, AssetPrice, Settle,Maturity, OptSpec, Strike, V0, ThetaV, Kappa, SigmaV, RhoSV,'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 Hestontrue
(по умолчанию) | логический со значениями true или falseФлаг, обозначающий состав Little Heston Trap по Albrecher et
al., указанный как пара, разделенная запятыми, состоящая из: 'LittleTrap' и логическое:
true - Использовать
композицию Albrecher et al.
false - Использовать оригинальную формацию Хестона.
Типы данных: logical
'OutSpec' - Определение выходных данных["price"]
(по умолчанию) | строковый массив со значениями "price", "delta", "gamma", "vega", "rho", "theta", и "vegalt" | массив ячеек символьных векторов со значениями 'price', 'delta', 'gamma', 'vega', 'rho', 'theta', и 'vegalt'Определите выходы, указанные как разделенная запятыми пара, состоящая из 'OutSpec' и NOUTоколо-1 или 1около-NOUT строковый массив или массив ячеек символьных векторов с поддерживаемыми значениями.
Примечание
"vega" - чувствительность по отношению к исходной волатильности sqrt (V0). Напротив, "vegalt" - чувствительность к долгосрочной волатильности sqrt (ThetaV).
Пример: OutSpec = ["price","delta","gamma","vega","rho","theta","vegalt"]
Типы данных: string | cell
'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
PriceSens - Цены опционов или чувствительностьЦены опционов или чувствительности, возвращенные как NINSTоколо-1, или NRowsоколо-NColumns, в зависимости от ExpandOutput. Аргумент пары имя-значение OutSpec определяет типы и порядок выходов.
Вариант ванили - это категория вариантов, включающая только самые стандартные компоненты.
Вариант ванили имеет срок годности и простую цену страйка. Варианты в американском и европейском стиле классифицируются как варианты ванили.
Окупаемость опциона на ваниль выглядит следующим образом:
Для вызова: , 0)
Для put: , 0)
где:
St - цена базового актива в момент времени t.
K - цена удара.
Дополнительные сведения см. в разделе Параметр ванили.
Модель Хестона является расширением модели Блэка-Шоулза, где волатильность (квадратный корень дисперсии) больше не считается постоянной, и теперь дисперсия следует стохастическому (CIR) процессу. Это позволяет моделировать предполагаемые улыбки волатильности, наблюдаемые на рынке.
Стохастическое дифференциальное уравнение:
где
r - непрерывная безрисковая ставка.
q - непрерывный дивидендный выход.
St - цена актива в момент времени t.
vt - отклонение цены основного средства в момент времени t.
v0 - начальное отклонение цены основного средства при t = 0 для (v0 > 0).
λ - долгосрочный уровень дисперсии для (start> 0).
δ - средняя скорость реверсирования для дисперсии для (start> 0).
startv - летучесть дисперсии для (startv > 0).
p - корреляция между процессами Вайнера Wt и Wvt для (-1 ≤ p ≤ 1).
Характеристическая функция 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] Хестон, С. Л. «Решение в закрытой форме для опционов со стохастической волатильностью с приложениями к облигациям и валютным опционам». Обзор финансовых исследований. Том 6. № 2. 1993.
[2] Льюис, А. Л. «Простая опционная формула для общего скачка-диффузии и других экспоненциальных процессов леви». Enquision Financial Systems and OptionCity.net, 2001.
optByBatesFFT | optByBatesNI | optByHestonFFT | optByHestonNI | optByMertonFFT | optByMertonNI | optSensByBatesFFT | optSensByBatesNI | optSensByHestonFFT | optSensByMertonFFT | optSensByMertonNI
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.