Цена опции и чувствительности модели Бейтса с использованием конечных различий
[
вычисляет ванильную европейскую или американскую цену опций и чувствительность моделью Бейтса, используя неявный метод переменного направления (ADI).PriceSens
,PriceGrid
,AssetPrices
,Variances
,Times
] = optSensByBatesFD(Rate
,AssetPrice
,Settle
,ExerciseDates
,OptSpec
,Strike
,V0
,ThetaV
,Kappa
,SigmaV
,RhoSV
,MeanJ
,JumpVol
,JumpFreq
)
[
задает опции, использующие один или несколько аргументы пары "имя-значение" в дополнение к входным параметрам в предыдущем синтаксисе. PriceSens
,PriceGrid
,AssetPrices
,Variances
,Times
] = optSensByBatesFD(___,Name,Value
)
Задайте переменные опции и параметры модели Бейтса.
AssetPrice = 90; Strike = 100; Rate = 0.03; Settle = '01-Jan-2018'; ExerciseDates = '02-Jul-2018'; V0 = 0.04; ThetaV = 0.04; Kappa = 2; SigmaV = 0.25; RhoSV = -0.5; JumpVol = 0.4; MeanJ = exp(-0.5+JumpVol.^2/2)-1; JumpFreq = 0.2;
Вычислите американскую цену put option и чувствительности с помощью метода конечных различий.
OptSpec = 'Put'; [Price, Delta, Gamma, Rho, Theta, Vega, VegaLT] = optSensByBatesFD(Rate, AssetPrice, Settle, ExerciseDates,... OptSpec, Strike, V0, ThetaV, Kappa, SigmaV, RhoSV, MeanJ, JumpVol, JumpFreq, 'AmericanOpt', 1,... 'OutSpec', ["Price" "Delta" "Gamma" "Rho" "Theta" "Vega" "VegaLT"])
Price = 11.6116
Delta = -0.6578
Gamma = 0.0366
Rho = -20.1643
Theta = -4.8425
Vega = 14.3216
VegaLT = 8.1849
Rate
- Постоянно сложная процентная ставка без рискаПостоянно сложная процентная ставка без риска, заданная в виде скалярного десятичного числа.
Типы данных: double
AssetPrice
- Текущая базовая цена активаТекущая базовая цена актива, заданная в виде скалярного числа.
Типы данных: double
Settle
- Дата расчета опции Дата расчета опции, заданная в виде скаляра с использованием серийного номера даты, вектора символов даты, объекта datetime или строкового скаляра.
Типы данных: double
| char
| datetime
| string
ExerciseDates
- Даты опционных упражненийДаты упражнения опции, заданные как серийный номер даты, вектор символов даты, объект datetime или строковый скаляр:
Для европейской опции используйте скаляр серийный номер даты, вектор символов даты, массив datetime или строковые массивы. Для европейской опции, ExerciseDates
содержит только одно значение: дату истечения срока действия опции.
Для американской опции используйте 1
-by- 2
вектор серийных номеров дат, векторов символов даты, массивов datetime или строковых массивов для определения контуров дат упражнения. Американская опция может быть реализован в любую дату между или включая пару дат. Если только один не - NaN
указана дата, затем опция может быть реализована между Settle
дата и одно значение в списке ExerciseDates
.
Типы данных: double
| char
| datetime
| string
OptSpec
- Определение опции 'call'
или 'put'
| строку со значением "call"
или "put"
Определение опции, заданное как скаляр с использованием вектора символов или строки со значением 'call'
или 'put'
.
Типы данных: cell
| string
Strike
- значение цены опционной доставкиЗначение цены доставки опции, заданное в виде скалярного числа.
Типы данных: double
V0
- Начальное отклонение базового активаНачальное отклонение нижнего актива, заданное в виде скалярного числа.
Типы данных: double
ThetaV
- Долгосрочное отклонение базовых активовДолгосрочное отклонение базового актива, заданная в виде скалярного числа.
Типы данных: double
Kappa
- Средняя скорость пересмотра для отклонения базового активаСредняя скорость ревизии для базового актива, заданная в виде скалярного числа.
Типы данных: double
SigmaV
- Волатильность отклонения базового активаВолатильность отклонения базового актива, заданная в виде скалярного числа.
Типы данных: double
RhoSV
- Корреляция между процессами Вайнера для базового актива и его отклонениемКорреляция между процессами Вайнера для базового актива и его отклонением, заданная в виде скалярного числа.
Типы данных: 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
.
[PriceSens,PriceGrid] = optSensByBatesFD(Rate,AssetPrice,Settle,ExerciseDates,OptSpec,Strike,V0,ThetaV,Kappa,SigmaV,RhoSV,MeanJ,JumpVol,JumpFreq,'Basis',7,'OutSpec','delta')
'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'
и скалярным числом.
Примечание
Если вы вводите значение для DividendYield
, затем установите DividendAmounts
и ExDividendDates
= [ ]
или не вводите их. Если вы вводите значения для DividendAmounts
и ExDividendDates
, затем установите DividendYield
= 0
.
Типы данных: double
'DividendAmounts'
- Денежные дивиденды[ ]
(по умолчанию) | векторДенежные дивиденды, указанные как разделенная разделенными запятой парами, состоящая из 'DividendAmounts'
и NDIV
-by- 1
вектор.
Примечание
Каждая сумма дивидендов должна иметь соответствующую дату экс-дивидендов. Если вы вводите значения для DividendAmounts
и ExDividendDates
, затем установите DividendYield
= 0
.
Типы данных: double
'ExDividendDates'
- Даты бывших дивидендов[ ]
(по умолчанию) | последовательный номер даты | вектор символов даты | строковые массивы | массив datetimeДаты экс-дивидендов, заданные как разделенная разделенными запятой парами, состоящая из 'ExDividendDates'
и NDIV
-by- 1
вектор серийных номеров дат, векторов символов даты, строковых массивов или массивов datetime.
Типы данных: double
| char
| string
| datetime
'AssetPriceMax'
- Максимальная цена для контура сетки ценМаксимальная цена для контура сетки цен, заданная как разделенная разделенными запятой парами, состоящая из 'AssetPriceMax'
и положительная скалярная величина число.
Типы данных: double
'VarianceMax'
- Максимальное отклонение для контура сетки дисперсии1.0
(по умолчанию) | скалярным числомМаксимальное отклонение для контура сетки дисперсии, заданное как разделенная разделенными запятой парами, состоящая из 'VarianceMax'
в виде скалярного числа.
Типы данных: double
'AssetGridSize'
- Размер сетки активов для сетки конечных различий400
(по умолчанию) | скалярным числомРазмер сетки активов для сетки конечных различий, заданный как разделенная разделенными запятой парами, состоящая из 'AssetGridSize'
и скалярным числом.
Типы данных: double
'VarianceGridSize'
- Число узлов дисперсионной сетки для конечной разностной сетки200
(по умолчанию) | скалярным числомЧисло узлов сетки отклонения для конечного различия сетки, заданная как разделенная запятой пара, состоящая из 'VarianceGridSize'
и скалярным числом.
Типы данных: double
'TimeGridSize'
- Количество узлов временной сетки для конечной разностной сетки100
(по умолчанию) | положительный числовой скалярЧисло узлов временной сетки конечного различия сетки, заданная как разделенная запятой пара, состоящая из 'TimeGridSize'
и положительный числовой скаляр.
Типы данных: double
'AmericanOpt'
- Тип опции0
(Европейский) (по умолчанию) | скаляром со значением [0,1]
Тип опции, заданный как разделенная разделенными запятой парами, состоящая из 'AmericanOpt'
и скалярный флаг с одним из следующих значений:
0
- Европейский
1
- Американский
Типы данных: double
'OutSpec'
- Определить выходы['price']
(по умолчанию) | массив ячеек из векторов символов со значениями 'price'
, 'delta'
, 'gamma'
, 'vega'
, 'rho'
, 'theta'
, и 'vegalt'
| строковые массивы со значениями "price"
, "delta"
, "gamma"
, "vega"
, "rho"
, "theta"
, и "vegalt"
Задайте выходы, заданные как разделенная разделенными запятой парами, состоящая из 'OutSpec'
и a NOUT
- by- 1
или 1
-by- NOUT
Строковые массивы или массив ячеек векторов символов с поддерживаемыми значениями.
Примечание
'vega'
- чувствительность к начальной волатильности sqrt (V0
). Напротив, 'vegalt'
- чувствительность к долгосрочной волатильности sqrt (ThetaV
).
Пример: OutSpec = ['price','delta','gamma','vega','rho','theta','vegalt']
Типы данных: string
| cell
PriceSens
- Цена опции или чувствительностьЦена опции или чувствительность, возвращенная в виде числа. Область аргумента пары "имя-значение" OutSpec
определяет типы и порядок выходов.
PriceGrid
- Сетка, содержащая цены, рассчитанные методом конечного различияСетка, содержащая цены, рассчитанные методом конечного различия, возвращается как двумерная сетка с размером AssetGridSize
⨉ TimeGridSize
. Количество столбцов не обязательно равно TimeGridSize
потому что функция добавляет упражнения и даты бывших дивидендов к временной сетке. PriceGrid(:, :, end)
содержит цену на t = 0
.
AssetPrices
- Цены активаЦены актива, соответствующего первой размерности PriceGrid
, возвращается как вектор.
Variances
- ОтклоненияОтклонения, соответствующие второму измерению PriceGrid
, возвращается как вектор.
Times
- ВремяВремена, соответствующие третьей размерности PriceGrid
, возвращается как вектор.
A vanilla option - это категория опций, которая включает только самые стандартные компоненты.
Ванильная опция имеет срок годности и прямолинейную цену доставки. Опции в американском стиле и опции в европейском стиле классифицируются как опции ванили.
Выплата для ванильной опции следующая:
Для вызова:
Для размещения:
где:
St - цена базового актива на t времени.
K - цена доставки.
Для получения дополнительной информации смотрите Опцию Vanilla.
Модель Бейтса [1] расширяет модель Хестона, включив стохастическую волатильность и (подобно Мертону) параметры диффузии перехода в моделирование внезапных движений цен активов.
Стохастическое дифференциальное уравнение
где:
r - непрерывная безрисковая ставка.
q - непрерывное дивидендное выражение.
S t является ценой актива в момент t.
v t является отклонением цены основного средства в момент t.
J - размер случайного процентного перехода, обусловленный происходящим переходом, где ln
(1 + J) обычно распределяется со средним и стандартное отклонение, и (1 + J) имеет логнормальное распределение:
где:
v 0 является начальным отклонением цены актива при t = 0 (v 0 > 0).
θ - долгосрочный уровень отклонений для (θ > 0).
κ - средняя скорость реверсии для (κ > 0).
σ v является волатильностью отклонения для (σ v > 0 ).
p является корреляцией между процессами Вайнера W t и для (-1 ≤ p ≤ 1).
μ J является средним значением J для (μ J > -1 ).
δ - стандартное отклонение ln
(1 + J) для (δ ≥ 0 ).
- годовая частота (интенсивность) Пуассоновского процесса P t для ( ≥ 0).
[1] Бейтс, Д. С. «Переходы и стохастическая волатильность: процессы обменного курса, неявные в опциях Deutsche Mark». Обзор финансовых исследований. Том 9, № 1, 1996.
optByBatesFD
| optByHestonFD
| optByLocalVolFD
| optByMertonFD
| optSensByHestonFD
| optSensByLocalVolFD
| optSensByMertonFD
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.