optSensByLocalVolFD

Цена опции и чувствительность локальной моделью энергозависимости, с помощью конечных разностей

Синтаксис

[PriceSens,PriceGrid,AssetPrices,Times] = optSensByLocalVolFD(Rate,AssetPrice,Settle,ExerciseDates,OptSpec,Strike,ImpliedVolData)
[PriceSens,PriceGrid,AssetPrices,Times] = optSensByLocalVolFD(___,Name,Value)

Описание

пример

[PriceSens,PriceGrid,AssetPrices,Times] = optSensByLocalVolFD(Rate,AssetPrice,Settle,ExerciseDates,OptSpec,Strike,ImpliedVolData) вычислите цену опции и чувствительность локальной моделью энергозависимости, с помощью метода Заводной-рукоятки-Nicolson.

пример

[PriceSens,PriceGrid,AssetPrices,Times] = optSensByLocalVolFD(___,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';
[Delta,Gamma,Lambda,Theta,Price]  = optSensByLocalVolFD(Rate, AssetPrice, ...
Settle, ExerciseDates, OptSpec, Strike, ImpliedVolData, 'DividendYield',DividendYield, ...
'OutSpec',["Delta" "Gamma" "Lambda" "Theta" "Price"])
Delta = 0.5462
Gamma = 0.0082
Lambda = 4.9173
Theta = -20.8350
Price = 65.5302

Входные параметры

свернуть все

Постоянно составляемая безрисковая процентная ставка, заданная числовым скаляром.

Типы данных: double

Текущая цена базового актива, заданная как числовой скаляр.

Типы данных: double

Расчетный день, заданный как скалярный последовательный номер даты, вектор символов даты, объект datetime или массив строк

Типы данных: double | char | datetime | string

Даты осуществления опции, заданные как последовательный номер даты, вектор символов даты, массив datetime или массив строк:

  • Для европейской опции существует только одно значение ExerciseDates, и это - дата окончания срока действия опции.

  • Для американской опции используйте 1-by-2 вектор последовательных чисел даты, векторов символов даты, datetimes, или строк. Американская опция может быть осуществлена в любую дату между или включая пару дат. Если только одна non-NaN дата перечислена, опция может быть осуществлена между Settle и одной перечисленной датой в ExerciseDates.

Типы данных: double | char | cell | datetime | string

Определение опции, заданной как вектор символов или массив строк со значением 'call' или 'put'.

Типы данных: char | string

Значение цены исполнения опциона опции, заданное как неотрицательный скаляр.

Типы данных: double

Таблица дат погашения, забастовки или цен исполнения и их соответствующей подразумеваемой волатильности, заданной как NVOL-by-3 таблица.

Типы данных: table

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: PriceSens = Price = optByLocalVolFD(Rate,AssetPrice,Settle, ExerciseDates,OptSpec,Strike,ImpliedVolData,'AssetGridSize',1000,'OutSpec',{'delta','gamma','vega','lambda','rho','theta','price'})

Основание дневного количества, заданное как пара, разделенная запятой, состоящая из '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' и числового скаляра.

Примечание

Если вы вводите значение для DividendYield, то установленный DividendAmounts и ExDividendDates = [ ] или не вводят их. Если вы вводите значения для DividendAmounts и ExDividendDates, то установленный DividendYield = 0.

Типы данных: double

Суммы денежного дивиденда, заданные как пара, разделенная запятой, состоящая из 'DividendAmounts' и NDIV-by-1 вектор.

Для каждой суммы дивиденда должна быть соответствующая дата ExDividendDates. Если вы вводите значения для DividendAmounts и ExDividendDates, то установленный DividendYield = 0.

Примечание

Если вы вводите значение для DividendYield, то установленный DividendAmounts и ExDividendDates = [ ] или не вводят их.

Типы данных: double

Без дивиденда даты, заданные как пара, разделенная запятой, состоящая из 'ExDividendDates' и NDIV-by-1 вектор.

Типы данных: double | char | string | datetime

Максимальная цена за ценовой контур сетки, заданный как пара, разделенная запятой, состоящая из 'AssetPriceMax' и положительной скалярной величины.

Типы данных: double

Размер сетки актива для сетки конечной разности, заданной как пара, разделенная запятой, состоящая из 'AssetGridSize' и положительной скалярной величины.

Типы данных: double

Размер сетки времени для сетки конечной разности, заданной как пара, разделенная запятой, состоящая из 'TimeGridSize' и положительной скалярной величины.

Типы данных: double

Тип опции, заданный как пара, разделенная запятой, состоящая из 'AmericanOpt' и положительного целочисленного скаляра, отмечает с помощью одного из этих значений:

  • 0 — Европеец

  • 1 — Американец

Типы данных: double

Метод интерполяции для оценки подразумеваемой волатильности появляется от ImpliedVolData, заданного как пара, разделенная запятой, состоящая из 'InterpMethod' и вектора символов или строки с одним из следующих значений:

  • 'linear' — Линейная интерполяция

  • 'makima' — Измененный Акима кубическая интерполяция Эрмита

  • сплайн Интерполяция кубическим сплайном

  • 'tpaps' — Тонкая пластина, сглаживающая интерполяцию сплайна

Примечание

Метод 'tpaps' использует тонкую пластину, сглаживающую функциональность сплайна от Curve Fitting Toolbox™.

'makima' и методы 'spline' работают только на данные с координатной сеткой. Для данных, имеющий разброс используйте методы 'tpaps' или 'linear'.

Для получения дополнительной информации об или данных, имеющий разброс с координатной сеткой и деталях о методах интерполяции, смотрите и Рассеянные Выборочные данные С координатной сеткой (MATLAB) и Интерполяция Данных С координатной сеткой (MATLAB).

Типы данных: char | string

Задайте выходные параметры, заданные как пара, разделенная запятой, состоящая из 'OutSpec' и NOUT - 1 или 1-by-NOUT массив ячеек из символьных векторов с возможными значениями 'price', 'delta', 'gamma', 'vega', 'lambda', 'rho' и 'theta'.

Пример: OutSpec = {'delta','gamma','vega','lambda','rho','theta','price'}

Типы данных: cell | string

Выходные аргументы

свернуть все

Цена опции и чувствительность, возвращенная как числовой скаляр. OutSpec определяет типы и порядок вывода.

Сетка, содержащая цены, вычисленные методом конечной разности, возвращенным как сетка, которая двумерна с размером AssetGridSizeTimeGridSize. Количество столбцов не должно быть равно TimeGridSize, потому что ExerciseDates и ExDividendDates добавляются к сетке времени. PriceGrid(:, :, end) содержит цену за t = 0.

Цены актива, соответствующего первой размерности PriceGrid, возвращенного как вектор.

Времена соответствуя второму измерению PriceGrid, возвращенного как вектор.

Больше о

свернуть все

Локальная модель энергозависимости

Локальная модель энергозависимости обрабатывает энергозависимость как функцию оба из уровня оборотного актива и времени.

Локальная энергозависимость может быть оценена при помощи формулы [2] Dupire:

σloc2(K,τ)=σimp2+2τσimpσimpτ+2(τd)KτσimpσimpK(1+Kd1τσimpK)2+K2τσimp(2σimpK2d1τ(σimpK)2)d1=ln(S0/K)+((τd)+σimp2/2)τσimpτ

Ссылки

[1] Андерсен, L. B. и Р. Бразэтон-Рэтклифф. "Улыбка Энергозависимости Опции Акции: Неявный Подход Конечной разности". Журнал Вычислительных Финансов. Издание 1, Номер 2, 1997, стр 5–37.

[2] Dupire, B. "Оценивая с Улыбкой". Риск. Издание 7, Номер 1, 1994, стр 18–20.

Введенный в R2018b