Опция цену локальной моделью волатильности, используя конечные разности
[
вычислите цену Vanilla European или American опции по локальной модели волатильности, используя метод Crank-Nicolson. Price
,PriceGrid
,AssetPrices
,Times
]
= optByLocalVolFD(Rate
,AssetPrice
,Settle
,ExerciseDates
,OptSpec
,Strike
,ImpliedVolData
)
[
задает опции, использующие один или несколько аргументы пары "имя-значение" в дополнение к входным параметрам в предыдущем синтаксисе. Price
,PriceGrid
,AssetPrices
,Times
]
= optByLocalVolFD(___,Name,Value
)
Задайте переменные опции.
AssetPrice = 590; Strike = 590; Rate = 0.06; DividendYield = 0.0262; Settle = '01-Jan-2018'; ExerciseDates = '01-Jan-2020';
Задайте данные о подразумеваемой поверхности волатильности.
Maturity = ["06-Mar-2018" "05-Jun-2018" "12-Sep-2018" "10-Dec-2018" "01-Jan-2019" ... "02-Jul-2019" "01-Jan-2020" "01-Jan-2021" "01-Jan-2022" "01-Jan-2023"]; Maturity = repmat(Maturity,10,1); Maturity = Maturity(:); ExercisePrice = AssetPrice.*[0.85 0.90 0.95 1.00 1.05 1.10 1.15 1.20 1.30 1.40]; ExercisePrice = repmat(ExercisePrice,1,10)'; ImpliedVol = [... 0.190; 0.168; 0.133; 0.113; 0.102; 0.097; 0.120; 0.142; 0.169; 0.200; ... 0.177; 0.155; 0.138; 0.125; 0.109; 0.103; 0.100; 0.114; 0.130; 0.150; ... 0.172; 0.157; 0.144; 0.133; 0.118; 0.104; 0.100; 0.101; 0.108; 0.124; ... 0.171; 0.159; 0.149; 0.137; 0.127; 0.113; 0.106; 0.103; 0.100; 0.110; ... 0.171; 0.159; 0.150; 0.138; 0.128; 0.115; 0.107; 0.103; 0.099; 0.108; ... 0.169; 0.160; 0.151; 0.142; 0.133; 0.124; 0.119; 0.113; 0.107; 0.102; ... 0.169; 0.161; 0.153; 0.145; 0.137; 0.130; 0.126; 0.119; 0.115; 0.111; ... 0.168; 0.161; 0.155; 0.149; 0.143; 0.137; 0.133; 0.128; 0.124; 0.123; ... 0.168; 0.162; 0.157; 0.152; 0.148; 0.143; 0.139; 0.135; 0.130; 0.128; ... 0.168; 0.164; 0.159; 0.154; 0.151; 0.147; 0.144; 0.140; 0.136; 0.132]; ImpliedVolData = table(Maturity, ExercisePrice, ImpliedVol);
Вычислите европейский вызов опции цену.
OptSpec = 'Call'; Price = optByLocalVolFD(Rate, AssetPrice, ... Settle, ExerciseDates, OptSpec, Strike, ImpliedVolData, 'DividendYield',DividendYield)
Price = 65.1319
Rate
- Постоянно сложная процентная ставка без рискаПостоянно сложная процентная ставка без риска, заданная скалярным числом.
Типы данных: double
AssetPrice
- Текущая базовая цена активаТекущая базовая цена актива, заданная в виде скалярного числа.
Типы данных: double
Settle
- Дата расчетаДата расчета, заданная как скалярный серийный номер даты, вектор символов даты, массив datetime или строковые массивы.
Типы данных: double
| char
| datetime
| string
ExerciseDates
- Даты опционных упражненийДаты упражнения опции, заданные как серийный номер даты, вектор символов даты, массив datetime или строковые массивы:
Для европейской опции существует только один ExerciseDates
значение, и это дата истечения срока действия опции.
Для американской опции используйте 1
-by- 2
вектор серийных номеров дат, векторов символов даты, массивов datetime или строковых массивов. Американская опция может быть реализован в любую дату между или включая пару дат. Если только один не - NaN
дата указана, опция может быть реализована между Settle
и одинарная дата, указанная в ExerciseDates
.
Типы данных: double
| char
| cell
| datetime
| string
OptSpec
- Определение опции 'call'
или 'put'
| строковые массивы со значениями "call"
или "put"
Определение опции, заданное как вектор символов или строковые массивы со значениями 'call'
или 'put'
.
Типы данных: char
| string
Strike
- значение цены опционной доставкиОпция цены опциона, заданное как неотрицательный скаляр.
Типы данных: double
ImpliedVolData
- Таблица дат погашения, цены забастовки или упражнений и соответствующие подразумеваемые волатильностиТаблица дат погашения, цен забастовки или упражнений и их соответствующих предполагаемых волатильностей, указанная как NVOL
-by- 3
таблица.
Типы данных: table
Задайте необязательные разделенные разделенными запятой парами Name,Value
аргументы. Name
- имя аргумента и Value
- соответствующее значение. Name
должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN
.
Price = optByLocalVolFD(Rate,AssetPrice,Settle, ExerciseDates,OptSpec,Strike,ImpliedVolData,'AssetGridSize',1000)
'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'
и a NDIV
-by- 1
вектор.
Для каждой суммы дивидендов должна быть соответствующая ExDividendDates
дата. Если вы вводите значения для DividendAmounts
и ExDividendDates
, затем установите DividendYield
= 0
.
Примечание
Если вы вводите значение для DividendYield
, затем установите DividendAmounts
и ExDividendDates
= [ ]
или не вводите их.
Типы данных: double
'ExDividendDates'
- Даты бывших дивидендов[ ]
(по умолчанию) | последовательный номер даты | вектор символов даты | массив datetime | строковые массивыДаты экс-дивидендов, заданные как разделенная разделенными запятой парами, состоящая из 'ExDividendDates'
и a NDIV
-by- 1
вектор.
Типы данных: double
| char
| string
| datetime
'AssetPriceMax'
- Максимальная цена для контура сетки ценAssetPriceMax
значения вычисляются с помощью распределений активов на сроке (по умолчанию) | положительной скалярной величинеМаксимальная цена для контура сетки цен, заданная как разделенная разделенными запятой парами, состоящая из 'AssetPriceMax'
и положительная скалярная величина.
Типы данных: double
'AssetGridSize'
- Размер сетки активов для сетки конечных различий400
(по умолчанию) | положительная скалярная величинаРазмер сетки активов для сетки конечных различий, заданный как разделенная разделенными запятой парами, состоящая из 'AssetGridSize'
и положительная скалярная величина.
Типы данных: double
'TimeGridSize'
- Размер временной сетки для сетки с конечным различием100
(по умолчанию) | положительная скалярная величинаРазмер временной сетки для сетки с конечным различием, заданный как разделенная разделенными запятой парами, состоящая из 'TimeGridSize'
и положительная скалярная величина.
Типы данных: double
'AmericanOpt'
- Тип опции0
(Европейский) (по умолчанию) | скаляром со значениями [0,1]
Тип опции, заданный как разделенная разделенными запятой парами, состоящая из 'AmericanOpt'
и положительный целый скалярный флаг с одним из следующих значений:
0
- Европейский
1
- Американский
Типы данных: double
'InterpMethod'
- Метод интерполяции для оценки подразумеваемой поверхности летучести от ImpliedVolData
'linear'
(по умолчанию) | символьный вектор со значениями 'linear'
, 'makima'
, 'spline'
, или 'tpaps'
| строку со значениями "linear"
, "makima"
, "spline"
, или "tpaps"
Метод интерполяции для оценки подразумеваемой поверхности волатильности от ImpliedVolData
, заданная как разделенная разделенными запятой парами, состоящая из 'InterpMethod'
и вектор символов или строковые массивы с одним из следующих значений:
'linear'
- Линейная интерполяция
'makima'
- Модифицированная кубическая эрмитовая интерполяция Акима
'spline'
- Кубическая сплайн интерполяция
'tpaps'
- Тонкоплитная сглаживающая сплайн интерполяция
Примечание
The 'tpaps'
метод использует функцию тонкого диска сглаживания сплайна из Curve Fitting Toolbox™.
The 'makima'
и 'spline'
методы работают только для данных с сеткой. Для данных , имеющих разбросов используйте 'linear'
или 'tpaps'
методы.
Для получения дополнительной информации о сетчатых или рассеянных данных и деталях о методах интерполяции, см. «Сетчатые и рассеянные выборочные данные» и Интерполяция сетчатых данных.
Типы данных: char
| string
Price
- Цена опцииЦена опции, возвращенная в виде скалярного числа.
PriceGrid
- Сетка, содержащая цены, рассчитанные методом конечных различийСетка, содержащая цены, рассчитанные методом конечного различия, возвращенная как сетка, двумерная с размером AssetGridSize
⨉ TimeGridSize
. Количество столбцов не должно равняться TimeGridSize
, потому что ExerciseDates
и ExDividendDates
добавляются к временной сетке. PriceGrid(:, :, end)
содержит цену на t = 0
.
AssetPrices
- Цены активовЦены актива, соответствующего первой размерности PriceGrid
, возвращается как вектор.
Times
- ВремяВремя, соответствующее второму измерению PriceGrid
, возвращается как вектор.
A vanilla option - это категория опций, которая включает только самые стандартные компоненты.
Ванильная опция имеет срок годности и прямолинейную цену доставки. Опции в американском стиле и опции в европейском стиле классифицируются как опции ванили.
Выплата для ванильной опции следующая:
Для вызова:
Для размещения:
где:
St - цена базового актива на t времени.
K - цена доставки.
Для получения дополнительной информации смотрите Опцию Vanilla.
Модель локальной волатильности рассматривает волатильность как функцию как текущего уровня активов, так и времени.
Локальная волатильность может быть оценена с помощью формулы Дюпира [2]:
[1] Андерсен, Л. Б. и Р. Братертон-Рэтклифф. «Улыбка волатильности опции: неявный подход с конечной разницей». Журнал вычислительных финансов. Том 1, № 2, 1997, стр. 5-37.
[2] Дюпир, Б. «Ценообразование с улыбкой». Риск. Том 7, № 1, 1994, стр. 18-20.
optByBatesFD
| optByHestonFD
| optByMertonFD
| optSensByBatesFD
| optSensByHestonFD
| optSensByLocalVolFD
| optSensByMertonFD
| optstockbyfd
| optstocksensbyfd
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.