Цена опциона и чувствительность по Merton76 модели с использованием числовой интеграции
добавляет необязательные аргументы пары имя-значение. PriceSens = optSensByMertonNI(___,Name,Value)
optSensByMertonNI использует численную интеграцию для вычисления чувствительности опций и последующего вывода на печать поверхностей чувствительности опций.
Определение переменных опций и параметров модели Merton76
AssetPrice = 80;
Rate = 0.03;
DividendYield = 0.02;
OptSpec = 'call';
Sigma = 0.16;
MeanJ = 0.02;
JumpVol = 0.08;
JumpFreq = 2;Вычисление чувствительности опции для одиночного удара
Settle = datenum('29-Jun-2017'); Maturity = datemnth(Settle, 6); Strike = 80; Delta = optSensByMertonNI(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, ... Sigma, MeanJ, JumpVol, JumpFreq, 'DividendYield', DividendYield, ... 'OutSpec', "delta")
Delta = 0.5283
Вычисление чувствительности опций для вектора ударов
Strike входным может быть вектор.
Settle = datenum('29-Jun-2017'); Maturity = datemnth(Settle, 6); Strike = (76:2:84)'; Delta = optSensByMertonNI(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, ... Sigma, MeanJ, JumpVol, JumpFreq, 'DividendYield', DividendYield, ... 'OutSpec', "delta")
Delta = 5×1
0.6727
0.6013
0.5283
0.4565
0.3883
Вычисление чувствительности опций для вектора ударов и вектора дат одинаковой длины
Используйте 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 = optSensByMertonNI(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, ... Sigma, MeanJ, JumpVol, JumpFreq, 'DividendYield', DividendYield, ... 'OutSpec', "delta")
Delta = 5×1
0.6419
0.5907
0.5565
0.5311
0.5110
% Five values in vector outputРазверните окно «Вывод поверхности»
Установите ExpandOutput аргумент пары имя-значение для "true" для расширения выходных данных в NStrikesоколо-NMaturities матрица. В этом случае это квадратная матрица.
Delta = optSensByMertonNI(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, ... Sigma, MeanJ, JumpVol, JumpFreq, 'DividendYield', DividendYield, ... 'OutSpec', "delta", 'ExpandOutput', true) % (5 x 5) matrix output
Delta = 5×5
0.6419 0.6305 0.6245 0.6204 0.6173
0.5922 0.5907 0.5905 0.5905 0.5905
0.5422 0.5507 0.5565 0.5607 0.5637
0.4927 0.5112 0.5229 0.5311 0.5372
0.4447 0.4725 0.4898 0.5020 0.5110
Вычисление чувствительности опций для вектора ударов и вектора дат различной длины
Когда 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 = optSensByMertonNI(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, ... Sigma, MeanJ, JumpVol, JumpFreq, 'DividendYield', DividendYield, ... 'OutSpec', "delta", 'ExpandOutput', true) % (5 x 6) matrix output
Delta = 5×6
0.6727 0.6419 0.6305 0.6245 0.6204 0.6173
0.6013 0.5922 0.5907 0.5905 0.5905 0.5905
0.5283 0.5422 0.5507 0.5565 0.5607 0.5637
0.4565 0.4927 0.5112 0.5229 0.5311 0.5372
0.3883 0.4447 0.4725 0.4898 0.5020 0.5110
Расчет чувствительности опционов для вектора ударов и вектора цен на активы
Когда 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 = optSensByMertonNI(Rate, ManyAssetPrices, Settle, Maturity, OptSpec, Strike, ... Sigma, MeanJ, JumpVol, JumpFreq, 'DividendYield', DividendYield, ... 'OutSpec', "delta", 'ExpandOutput', true) % (5 x 4) matrix output
Delta = 5×4
0.3796 0.5157 0.6419 0.7472
0.3315 0.4637 0.5922 0.7043
0.2874 0.4137 0.5422 0.6592
0.2474 0.3664 0.4927 0.6128
0.2117 0.3224 0.4447 0.5657
Поверхности чувствительности опций печати
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] = optSensByMertonNI(... Rate, AssetPrice,Settle, Maturity, OptSpec, Strike, ... Sigma, MeanJ, JumpVol, JumpFreq, 'DividendYield', DividendYield, ... 'OutSpec', ["delta", "gamma", "rho", "theta", "vega"], ... '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)]);

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
Sigma - Волатильность базового активаВолатильность недоделанного актива, определяемая как скалярное числовое значение.
Типы данных: 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 = optSensByMertonNI(Rate,AssetPrice,Settle,Maturity,OptSpec,Strike,Sigma,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
'OutSpec' - Определение выходных данных["price"]
(по умолчанию) | строковый массив со значениями "price", "delta", "gamma", "vega", "rho", и "theta"
| массив ячеек символьных векторов со значениями 'price', 'delta', 'gamma', 'vega', 'rho', и 'theta'Определите выходы, указанные как разделенная запятыми пара, состоящая из 'OutSpec' и NOUTоколо-1 или 1около-NOUT строковый массив или массив ячеек символьных векторов с поддерживаемыми значениями.
Примечание
"vega" - чувствительность по отношению к исходной волатильности sqrt (V0).
Пример: OutSpec = ["price","delta","gamma","vega","rho","theta"]
Типы данных: 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 - цена удара.
Дополнительные сведения см. в разделе Параметр ванили.
Модель диффузии прыжков Мертона (Merton (1976)) является другим расширением модели Блэка-Шоулза, где внезапные движения цен активов (как вверх, так и вниз) моделируются путем добавления параметров диффузии скачков с процессом Пуассона.
Стохастическое дифференциальное уравнение:
(dPt = 1) = λ pdt
где
r - непрерывная безрисковая ставка.
q - непрерывный дивидендный выход.
Wt - процесс Вайнера.
J - случайный процентный размер скачка, обусловленный происходящим скачком, где ln(1 + J) обычно распределяется со ) − δ22 и стандартным отклонением δ, а (1 + J) имеет логнормальное распределение:
мкJ) − δ22] 2δ22}
мкДж представляет собой среднее значение J для (мкДж > -1).
δ - стандартное отклонение ln(1 + J) для (δ≥ 0).
ƛp - годовая частота (интенсивность) процесса Пуассона Ptfor (ƛp ≥ 0).
λ - волатильность цены актива для (λ > 0).
Характеристическая функция ) для j = 1 (измерение цен на активы) и j = 2 (измерение, нейтральное по отношению к риску):
]−ϕ2σ22τ) m1=12, m2 =−12
где
start- переменная характеристической функции.
start- время до наступления зрелости (start= T- t).
i - единичное мнимое число (i2 = -1).
Численное интегрирование используется для оценки непрерывного интеграла для обратного преобразования Фурье.
Метод численного интегрирования в рамках 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] Конт, Р. и П. Танков. Финансовое моделирование с процессами перехода. Chapman & Hall/CRC Press, 2004.
[3] Хестон, С. Л. «Решение в закрытой форме для опционов со стохастической волатильностью с приложениями к облигациям и валютным опционам». Обзор финансовых исследований. Том 6. № 2. 1993.
[4] Льюис, А. Л. «Простая опционная формула для общего скачка-диффузии и других экспоненциальных процессов леви». Enquision Financial Systems and OptionCity.net, 2001.
[5] Мертон, Р. «Ценообразование опциона, когда возврат базового запаса является прерывистым». Журнал финансовой экономики. Том 3. 1976.
optByBatesFFT | optByBatesNI | optByHestonFFT | optByHestonNI | optByMertonFFT | optByMertonNI | optSensByBatesFFT | optSensByBatesNI | optSensByHestonFFT | optSensByHestonNI | optSensByMertonFFT
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.