Цена опции моделью Merton76 с помощью численного интегрирования
Price = optByMertonNI(Rate,AssetPrice,Settle,Maturity,OptSpec,Strike,Sigma,MeanJ,JumpVol,JumpFreq)
Price = optByMertonNI(___,Name,Value)
optByMertonNI
использует численное интегрирование, чтобы вычислить цены опции и затем построить поверхность цены опции.
Задайте переменные опции и параметры модели 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; Call = optByMertonNI(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, ... Sigma, MeanJ, JumpVol, JumpFreq, 'DividendYield', DividendYield)
Call = 4.5600
Вычислите цены опции за вектор забастовок
Вход Strike
может быть вектором.
Settle = datenum('29-Jun-2017'); Maturity = datemnth(Settle, 6); Strike = (76:2:84)'; Call = optByMertonNI(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, ... Sigma, MeanJ, JumpVol, JumpFreq, 'DividendYield', DividendYield)
Call = 5×1
6.7410
5.5762
4.5600
3.6891
2.9551
Вычислите цены опции за вектор забастовок и вектор дат тех же длин
Используйте вход 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 = optByMertonNI(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, ... Sigma, MeanJ, JumpVol, JumpFreq, 'DividendYield', DividendYield)
Call = 5×1
8.5589
8.9439
9.2316
9.4653
9.6565
% Five values in vector output
Расширьте Вывод для поверхности
Установите аргумент пары "имя-значение" ExpandOutput
"true"
расширять вывод в NStrikes
-by-NMaturities
матрица. В этом случае это - квадратная матрица.
Call = optByMertonNI(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, ... Sigma, MeanJ, JumpVol, JumpFreq, 'DividendYield', DividendYield, ... 'ExpandOutput', true) % (5 x 5) matrix output
Call = 5×5
8.5589 9.9675 11.1343 12.1492 13.0464
7.4844 8.9439 10.1481 11.1939 12.1181
6.5125 8.0023 9.2316 10.2999 11.2449
5.6401 7.1402 8.3827 9.4653 10.4249
4.8630 6.3545 7.5990 8.6881 9.6565
Вычислите цены опции за вектор забастовок и вектор дат различных длин
Когда ExpandOutput
является "true"
, NStrikes
не должны совпадать с NMaturities
. Таким образом, вывод NStrikes
-by-NMaturities
матрица может быть прямоугольным.
Settle = datenum('29-Jun-2017'); Maturity = datemnth(Settle, 12*(0.5:0.5:3)'); % Six maturities Strike = (76:2:84)'; % Five strikes Call = optByMertonNI(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, ... Sigma, MeanJ, JumpVol, JumpFreq, 'DividendYield', DividendYield, ... 'ExpandOutput', true) % (5 x 6) matrix output
Call = 5×6
6.7410 8.5589 9.9675 11.1343 12.1492 13.0464
5.5762 7.4844 8.9439 10.1481 11.1939 12.1181
4.5600 6.5125 8.0023 9.2316 10.2999 11.2449
3.6891 5.6401 7.1402 8.3827 9.4653 10.4249
2.9551 4.8630 6.3545 7.5990 8.6881 9.6565
Вычислите цены опции за вектор забастовок и вектор цен активов
Когда ExpandOutput
является "true"
, выводом может также быть NStrikes
-by-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 = optByMertonNI(Rate, ManyAssetPrices, Settle, Maturity, OptSpec, Strike, ... Sigma, MeanJ, JumpVol, JumpFreq, 'DividendYield', DividendYield, ... 'ExpandOutput', true) % (5 x 4) matrix output
Call = 5×4
3.4186 5.6579 8.5589 12.0417
2.8538 4.8401 7.4844 10.7343
2.3718 4.1205 6.5125 9.5230
1.9635 3.4922 5.6401 8.4090
1.6198 2.9476 4.8630 7.3921
Постройте поверхность цены опции
Strike
и входные параметры Maturity
могут быть векторами. Установите ExpandOutput
на "true"
выводить поверхность как NStrikes
-by-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 = optByMertonNI(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, ... Sigma, 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
-by-1
или NColumns
-by-1
вектор.
Для получения дополнительной информации о соответствующих размерностях для AssetPrice
смотрите аргумент пары "имя-значение" ExpandOutput
.
Типы данных: double
Settle
— Расчетный день опции Расчетный день опции, заданный как NINST
-by-1
или NColumns
-by-1
вектор с помощью последовательных чисел даты, векторов символов даты, массивов datetime или строковых массивов. Дата Settle
должна быть перед датой Maturity
.
Для получения дополнительной информации о соответствующих размерностях для Settle
смотрите аргумент пары "имя-значение" ExpandOutput
.
Типы данных: double
| char
| datetime
| string
Maturity
— Дата погашения опцииДата погашения опции, заданная как NINST
-by-1
или NColumns
-by-1
вектор с помощью последовательных чисел даты, векторов символов даты, массивов datetime или строковых массивов.
Для получения дополнительной информации о соответствующих размерностях для Maturity
смотрите аргумент пары "имя-значение" ExpandOutput
.
Типы данных: double
| char
| datetime
| string
OptSpec
— Определение опции 'call'
или 'put'
| массив строк со значениями "call"
или "put"
Определение опции, заданной как NINST
-by-1
или NColumns
-by-1
вектор с помощью массива ячеек из символьных векторов или строковых массивов со значениями 'call'
или 'put'
.
Для получения дополнительной информации о соответствующих размерностях для OptSpec
смотрите аргумент пары "имя-значение" ExpandOutput
.
Типы данных: cell
| string
Strike
— Значение цены исполнения опциона опцииЗначение цены исполнения опциона опции, заданное как NINST
-by-1
, NRows
-by-1
, NRows
-by-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
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
Price = optByMertonNI(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 (СИА)
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 = ШИНА/252
Для получения дополнительной информации смотрите основание.
Типы данных: double
'DividendYield'
— Постоянно составляемая доходность базовых активов0
(значение по умолчанию) | числовойПостоянно составляемая доходность базовых активов, заданная как пара, разделенная запятой, состоящая из 'DividendYield'
и скалярного числового значения.
Типы данных: double
'AbsTol'
Допуск абсолютной погрешности к численному интегрированию1e-10
(значение по умолчанию) | числовойДопуск абсолютной погрешности к численному интегрированию, заданному как пара, разделенная запятой, состоящая из 'AbsTol'
и скалярного числового значения.
Типы данных: double
'RelTol'
Допуск относительной погрешности к численному интегрированию1e-6
(значение по умолчанию) | числовойДопуск относительной погрешности к численному интегрированию, заданному как пара, разделенная запятой, состоящая из 'RelTol'
и скалярного числового значения.
Типы данных: double
'IntegrationRange'
— Область значений численного интегрирования раньше аппроксимировала непрерывный интеграл по [0 Inf]
[1e-9 Inf]
(значение по умолчанию) | векторОбласть значений численного интегрирования раньше аппроксимировала непрерывный интеграл по [0 Inf]
, заданному как пара, разделенная запятой, состоящая из 'IntegrationRange'
и 1
-by-2 vector
представление [LowerLimit UpperLimit]
.
Типы данных: double
'Framework'
— Среда за вычислительные цены опции и чувствительность с помощью численного интегрирования моделей"heston1993"
(значение по умолчанию) | представляет в виде строки со значениями "heston1993"
или "lewis2001"
| вектор символов со значениями 'heston1993'
или 'lewis2001'
Среда за вычислительные цены опции и чувствительность с помощью численного интегрирования моделей, заданных как пара, разделенная запятой, состоящая из 'Framework'
и скалярной строки или вектора символов со следующими значениями:
"heston1993"
или 'heston1993'
— Метод используется в Хестоне (1993)
"lewis2001"
или 'lewis2001'
— Метод используется в Льюисе (2001)
Типы данных: char | string
'ExpandOutput'
— Отметьте, чтобы расширить выходные параметрыfalse
(выходными параметрами является NINST
-by-1
векторы) (значение по умолчанию) | логический со значением true
или false
Отметьте, чтобы расширить выходные параметры, заданные как пара, разделенная запятой, состоящая из 'ExpandOutput'
и логического:
tRUE
Если true
, выходными параметрами является NRows
NColumns
матрицами. NRows
является количеством борьбы за каждый столбец, и это определяется входом Strike
. Например, Strike
может быть NRows
-by-1
вектор или NRows
-by-NColumns
матрица. NColumns
определяется размерами AssetPrice
, Settle
, Maturity
и OptSpec
, который должен все быть или скаляром или NColumns
-by-1
векторы.
ложь
Если false
, выходными параметрами является NINST
-by-1
векторы. Кроме того, входные параметры Strike
, AssetPrice
, Settle
, Maturity
и OptSpec
должны все быть или скаляром или NINST
-by-1
векторы.
Типы данных: логический
Price
— Цены опцииЦены опции, возвращенные как NINST
-by-1
или NRows
-by-NColumns
, в зависимости от ExpandOutput
.
Модель диффузии скачка Мертона (Мертон (1976)) является различным расширением модели Black-Scholes, где внезапные перемещения цен активов (оба вверх и вниз) моделируются путем добавления параметров диффузии скачка с Пуассоновским процессом.
Стохастическое дифференциальное уравнение:
где
r является непрерывным безрисковым уровнем.
q является непрерывной дивидендной доходностью.
W t является процессом Вайнера.
J является случайным условным выражением размера скачка процента на появлении скачка, где ln
(1+J) нормально распределен со средним значением и стандартное отклонение δ, и (1+J) имеет логарифмически нормальное распределение:
μ J является средним значением J для (μ J>-1).
δ является стандартным отклонением ln
(1+J) для (δ ≥ 0).
ƛ p является ежегодной частотой (интенсивность) Пуассоновского процесса P t для (ƛ p ≥ 0).
σ является энергозависимостью цены активов на (σ> 0).
Характеристическая функция для j = 1 (мера цен активов) и j = 2 (нейтральная к риску мера):
где
ϕ является переменной характеристической функции
τ является временем к зрелости (τ = T - t).
i является модульным мнимым числом (i 2 =-1).
Численное интегрирование используется, чтобы оценить непрерывный интеграл для обратного преобразования Фурье.
Метод численного интегрирования при Хестоне (1993) среда основан на следующих выражениях:
где
r является непрерывным безрисковым уровнем.
q является непрерывной дивидендной доходностью.
S t является ценой активов во время t.
K является забастовкой.
τ время к зрелости (τ = T-t).
Call (K) является досрочной ценой в забастовке K.
Put (K) является помещенной ценой в забастовке K
i является модульным мнимым числом (i 2 =-1)
ϕ переменная характеристической функции.
f j (ϕ) является характеристической функцией для P j (j = 1,2).
P 1 является вероятностью S t> K под мерой цен активов для модели.
P 2 является вероятностью S t> K под нейтральной к риску мерой для модели.
Где j = 1,2 так, чтобы f 1 (ϕ) и f 2 (ϕ) был характеристическими функциями для вероятностей P 1 и P 2, соответственно.
Эта среда выбрана со значением по умолчанию “Heston1993”
для аргумента пары "имя-значение" Framework
.
Численное интегрирование используется, чтобы оценить непрерывный интеграл для обратного преобразования Фурье.
Метод численного интегрирования при Льюисе (2001) среда основан на следующих выражениях:
где
r является непрерывным безрисковым уровнем.
q является непрерывной дивидендной доходностью.
S t является ценой активов во время t.
K является забастовкой.
τ время к зрелости (τ = T-t).
Call (K) является досрочной ценой в забастовке K.
Put (K) является помещенной ценой в забастовке K
i является модульным мнимым числом (i 2 =-1)
ϕ переменная характеристической функции.
u является переменной характеристической функции для интегрирования, где .
f 2 (ϕ) является характеристической функцией для P 2.
P 2 является вероятностью S t> K под нейтральной к риску мерой для модели.
Эта среда выбрана со значением “Lewis2001”
для аргумента пары "имя-значение" Framework
.
[1] Убавляет, D. S. “Скачки и стохастическая энергозависимость: процессы обменного курса, неявные в опциях немецкой марки”. Анализ финансовых исследований. Vol 9. № 1. 1996.
[2] Продолжение следует, R. и П. Танков. Финансовое моделирование с процессами скачка. Chapman & Hall/CRC Press, 2004.
[3] Хестон, S. L. “Решение закрытой формы для опций со стохастической энергозависимостью с приложениями к опциям связи и валюты”. Анализ финансовых исследований. Vol 6. № 2. 1993.
[4] Льюис, A. L. “Простая формула опции для общей диффузии скачка и других экспоненциальных процессов налога”. Предположите финансовые системы и OptionCity.net, 2001.
[5] Мертон, R. “Оценка опции, Когда Базовые Возвраты Запаса Прерывисты”. Журнал Финансовой Экономики. Vol 3. 1976.
optByBatesFFT
| optByBatesNI
| optByHestonFFT
| optByHestonNI
| optByMertonFFT
| optSensByBatesFFT
| optSensByBatesNI
| optSensByHestonFFT
| optSensByHestonNI
| optSensByMertonFFT
| optSensByMertonNI
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.