exponenta event banner

optSensByLocalVolFD

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

Описание

пример

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

пример

[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.5519
Gamma = 0.0091
Lambda = 4.9994
Theta = -20.9529
Price = 65.1319

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

свернуть все

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

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

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

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

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

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

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

  • Для европейского варианта есть только один ExerciseDates и это дата истечения срока действия опции.

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

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

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

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

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

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

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

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

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

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. 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 (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' и скалярный числовой.

Примечание

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

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

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

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

Примечание

При вводе значения для DividendYield, затем установить DividendAmounts и ExDividendDates = [ ] или не вводите их.

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

Даты бывших дивидендов, указанные как пара, разделенная запятыми, состоящая из 'ExDividendDates' и NDIVоколо-1 вектор.

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

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

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

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

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

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

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

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

  • 0 - Европейский

  • 1 - американский

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

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

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

  • 'makima' - Модифицированная Akima кубическая эрмитовая интерполяция

  • 'spline' - Интерполяция кубических сплайнов

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

Примечание

'tpaps' метод использует функцию сглаживания тонколистовых сплайнов из Toolbox™ «Фитинг кривой».

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

Дополнительные сведения о привязанных к сетке или разбросанных по сетке данных и подробные сведения о методах интерполяции см. в разделах Привязанные к сетке и разбросанные по сетке данные выборки и Интерполяция привязанных к сетке данных.

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

Определите выходы, указанные как разделенная запятыми пара, состоящая из 'OutSpec' и NOUTоколо-1 или 1около-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, возвращено как вектор.

Подробнее

свернуть все

Вариант ванили

Вариант ванили - это категория вариантов, включающая только самые стандартные компоненты.

Вариант ванили имеет срок годности и простую цену страйка. Варианты в американском и европейском стиле классифицируются как варианты ванили.

Окупаемость опциона на ваниль выглядит следующим образом:

  • Для вызова: max (St K, 0)

  • Для put: max (K St, 0)

где:

St - цена базового актива в момент времени t.

K - цена удара.

Дополнительные сведения см. в разделе Параметр ванили.

Локальная модель волатильности

Локальная модель волатильности рассматривает волатильность как функцию как уровня текущих активов, так и времени.

Локальную волатильность можно оценить по формуле Дюпира [2]:

startloc2 (K, start) =σimp2+2τσimp∂σimp∂τ+2 (start− d) Kτσimp∂σimp∂K (1+Kd1τ∂σimp∂K) 2 + K2τσimp (∂2σimp∂K2−d1τ (∂σimp∂K) 2) d1 = ln (S0/K) + (

Ссылки

[1] Андерсен, Л. Б. и Р. Браттон-Рэтклифф. «Волатильность опциона на акции улыбается: неявный подход с конечной разницей». Журнал вычислительных финансов. Том 1, номер 2, 1997, стр. 5-37.

[2] Дюпир, Б. «Ценообразование с улыбкой». Риск. Том 7, номер 1, 1994, стр. 18-20.

Представлен в R2018b