optSensByMertonNI

Цена опции и чувствительность моделью Merton76 с помощью численного интегрирования

Описание

пример

PriceSens = optSensByMertonNI(Rate,AssetPrice,Settle,Maturity,OptSpec,Strike,Sigma,MeanJ,JumpVol,JumpFreq) вычисляет европейскую цену опции ванили и чувствительность моделью Merton76, с помощью численного интегрирования.

пример

PriceSens = optSensByMertonNI(___,Name,Value) добавляют дополнительные аргументы пары "имя-значение".

Примеры

свернуть все

optSensByMertonNI численное интегрирование использования, чтобы вычислить чувствительность опции и затем построить поверхности чувствительности опции.

Задайте переменные опции и параметры модели 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; 

Delta = optSensByMertonNI(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, ...
    Sigma, MeanJ, JumpVol, JumpFreq, 'DividendYield', DividendYield, ...
    'OutSpec', "delta")
Delta = 0.5283

Вычислите чувствительность опции для вектора из забастовок

Strike введите может быть вектор.

Settle = datenum('29-Jun-2017');
Maturity = datemnth(Settle, 6);
Strike = (76:2:84)';

Delta = optSensByMertonNI(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, ...
    Sigma, MeanJ, JumpVol, JumpFreq, 'DividendYield', DividendYield, ...
    'OutSpec', "delta")
Delta = 5×1

    0.6727
    0.6013
    0.5283
    0.4565
    0.3883

Вычислите чувствительность опции для вектора из забастовок и вектора из дат тех же длин

Используйте 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

Delta = optSensByMertonNI(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, ...
    Sigma, MeanJ, JumpVol, JumpFreq, 'DividendYield', DividendYield, ...
    'OutSpec', "delta")
Delta = 5×1

    0.6419
    0.5907
    0.5565
    0.5311
    0.5110

    % Five values in vector output

Расширьте Выход для поверхности

Установите ExpandOutput аргумент пары "имя-значение" "true" расширять выход в NStrikes- NMaturities матрица. В этом случае это - квадратная матрица.

Delta = optSensByMertonNI(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, ...
    Sigma, MeanJ, JumpVol, JumpFreq, 'DividendYield', DividendYield, ...
    'OutSpec', "delta", 'ExpandOutput', true) % (5 x 5) matrix output
Delta = 5×5

    0.6419    0.6305    0.6245    0.6204    0.6173
    0.5922    0.5907    0.5905    0.5905    0.5905
    0.5422    0.5507    0.5565    0.5607    0.5637
    0.4927    0.5112    0.5229    0.5311    0.5372
    0.4447    0.4725    0.4898    0.5020    0.5110

Вычислите чувствительность опции для вектора из забастовок и вектора из дат различных длин

Когда ExpandOutput "true", NStrikes не должны совпадать с NMaturities. Таким образом, выход NStrikes- NMaturities матрица может быть прямоугольной.

Settle = datenum('29-Jun-2017');
Maturity = datemnth(Settle, 12*(0.5:0.5:3)'); % Six maturities
Strike = (76:2:84)'; % Five strikes

Delta = optSensByMertonNI(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, ...
    Sigma, MeanJ, JumpVol, JumpFreq, 'DividendYield', DividendYield, ...
    'OutSpec', "delta", 'ExpandOutput', true)  % (5 x 6) matrix output
Delta = 5×6

    0.6727    0.6419    0.6305    0.6245    0.6204    0.6173
    0.6013    0.5922    0.5907    0.5905    0.5905    0.5905
    0.5283    0.5422    0.5507    0.5565    0.5607    0.5637
    0.4565    0.4927    0.5112    0.5229    0.5311    0.5372
    0.3883    0.4447    0.4725    0.4898    0.5020    0.5110

Вычислите чувствительность опции для вектора из забастовок и вектора из цен активов

Когда ExpandOutput "true", выходом может также быть NStrikes- 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

Delta = optSensByMertonNI(Rate, ManyAssetPrices, Settle, Maturity, OptSpec, Strike, ...
    Sigma, MeanJ, JumpVol, JumpFreq, 'DividendYield', DividendYield, ...
    'OutSpec', "delta", 'ExpandOutput', true) % (5 x 4) matrix output
Delta = 5×4

    0.3796    0.5157    0.6419    0.7472
    0.3315    0.4637    0.5922    0.7043
    0.2874    0.4137    0.5422    0.6592
    0.2474    0.3664    0.4927    0.6128
    0.2117    0.3224    0.4447    0.5657

Постройте поверхности чувствительности опции

Strike и Maturity входные параметры могут быть векторами. Установите ExpandOutput к "true" выводить поверхности как NStrikes- 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)';

[Delta, Gamma, Rho, Theta, Vega] = optSensByMertonNI(...
    Rate, AssetPrice,Settle, Maturity, OptSpec, Strike, ...
    Sigma, MeanJ, JumpVol, JumpFreq, 'DividendYield', DividendYield, ...
    'OutSpec', ["delta", "gamma", "rho", "theta", "vega"], ...
    'ExpandOutput', true);

[X,Y] = meshgrid(Times,Strike);

figure;
surf(X,Y,Delta);
title('Delta');
xlabel('Years to Option Expiry');
ylabel('Strike');
view(-112,34);
xlim([0 Times(end)]);

Figure contains an axes. The axes with title Delta contains an object of type surface.

figure;
surf(X,Y,Gamma)
title('Gamma')
xlabel('Years to Option Expiry')
ylabel('Strike')
view(-112,34);
xlim([0 Times(end)]);

Figure contains an axes. The axes with title Gamma contains an object of type surface.

figure;
surf(X,Y,Rho)
title('Rho')
xlabel('Years to Option Expiry')
ylabel('Strike')
view(-112,34);
xlim([0 Times(end)]);

Figure contains an axes. The axes with title Rho contains an object of type surface.

figure;
surf(X,Y,Theta)
title('Theta')
xlabel('Years to Option Expiry')
ylabel('Strike')
view(-112,34);
xlim([0 Times(end)]);

Figure contains an axes. The axes with title Theta contains an object of type surface.

figure;
surf(X,Y,Vega)
title('Vega')
xlabel('Years to Option Expiry')
ylabel('Strike')
view(-112,34);
xlim([0 Times(end)]);

Figure contains an axes. The axes with title Vega contains an object of type surface.

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

свернуть все

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

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

Текущая цена базового актива в виде числового значения с помощью скаляра или NINST- 1 или NColumns- 1 вектор.

Для получения дополнительной информации о соответствующих размерностях для AssetPrice, смотрите аргумент пары "имя-значение" ExpandOutput.

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

Расчетный день опции в виде NINST- 1 или NColumns- 1 вектор с помощью последовательных чисел даты, векторов символов даты, массивов datetime или строковых массивов. Settle дата должна быть перед Maturity дата.

Для получения дополнительной информации о соответствующих размерностях для Settle, смотрите аргумент пары "имя-значение" ExpandOutput.

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

Дата погашения опции в виде NINST- 1 или NColumns- 1 вектор с помощью последовательных чисел даты, векторов символов даты, массивов datetime или строковых массивов.

Для получения дополнительной информации о соответствующих размерностях для Maturity, смотрите аргумент пары "имя-значение" ExpandOutput.

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

Определение опции в виде NINST- 1 или NColumns- 1 вектор с помощью массива ячеек из символьных векторов или строковых массивов со значениями 'call' или 'put'.

Для получения дополнительной информации о соответствующих размерностях для OptSpec, смотрите аргумент пары "имя-значение" ExpandOutput.

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

Значение цены исполнения опциона опции в виде NINST- 1, NRows- 1, NRows- NColumns вектор из цен исполнения опциона.

Для получения дополнительной информации о соответствующих размерностях для Strike, смотрите аргумент пары "имя-значение" ExpandOutput.

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

Энергозависимость актива подчиненного в виде скалярного числового значения.

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

Среднее значение случайного размера скачка процента (J) в виде скалярного десятичного значения, где log(1+J) нормально распределено со средним значением (log(1+MeanJ)-0.5*JumpVol^2) и стандартное отклонение JumpVol.

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

Стандартное отклонение log(1+J), где J случайный размер скачка процента в виде скалярного десятичного значения.

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

Ежегодная частота процесса скачка Пуассона в виде скалярного числового значения.

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

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

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

Пример: Price = optSensByMertonNI(Rate,AssetPrice,Settle,Maturity,OptSpec,Strike,Sigma,MeanJ,JumpVol,JumpFreq,'Basis',7)

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

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

Задайте выходные параметры в виде разделенной запятой пары, состоящей из 'OutSpec' и NOUT- 1 или 1- NOUT массив строк или массив ячеек из символьных векторов с поддерживаемыми значениями.

Примечание

"vega" чувствительность с уважением начальная энергозависимость sqrt (V0).

Пример: OutSpec = ["price","delta","gamma","vega","rho","theta"]

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

Допуск абсолютной погрешности к численному интегрированию в виде разделенной запятой пары, состоящей из 'AbsTol' и скалярное числовое значение.

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

Допуск относительной погрешности к численному интегрированию в виде разделенной запятой пары, состоящей из 'RelTol' и скалярное числовое значение.

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

Область значений численного интегрирования раньше аппроксимировала непрерывный интеграл по [0 Inf]В виде разделенной запятой пары, состоящей из 'IntegrationRange' и 1- 2 вектор, представляющий [LowerLimit UpperLimit].

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

Среда за вычислительные цены опции и чувствительность с помощью численного интегрирования моделей в виде разделенной запятой пары, состоящей из 'Framework' и скалярная строка или вектор символов со следующими значениями:

  • "heston1993" или 'heston1993' — Метод используется в Хестоне (1993)

  • "lewis2001" или 'lewis2001' — Метод используется в Льюисе (2001)

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

Отметьте, чтобы расширить выходные параметры в виде разделенной запятой пары, состоящей из 'ExpandOutput' и логическое:

  • true — Если true, выходными параметрами является NRows- NColumns матрицы. NRows количество борьбы за каждый столбец, и это определяется Strike входной параметр. Например, Strike может быть NRows- 1 вектор или NRows- NColumns матрица. NColumns определяется размерами AssetPrice, Settle, Maturity, и OptSpec, который должен все быть или скаляром или NColumns- 1 векторы.

  • false — Если false, выходными параметрами является NINST- 1 векторы. Кроме того, входные параметры Strike, AssetPrice, Settle, Maturity, и OptSpec должен все быть или скаляр или NINST- 1 векторы.

Типы данных: логический

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

свернуть все

Цены опции или чувствительность, возвращенная как NINST- 1, или NRows- NColumns, В зависимости от ExpandOutput. Аргумент пары "имя-значение" OutSpec определяет типы и порядок выходных параметров.

Больше о

свернуть все

Опция ванили

vanilla option является категорией опций, которая включает только самые стандартные компоненты.

Опция ванили имеет дату истечения срока и прямую цену исполнения опциона. Американские параметры стиля и европейские параметры стиля оба категоризированы как опции ванили.

Выплата для опции ванили следующие:

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

  • Для помещенного: max(KSt,0)

где:

St является ценой базового актива во время t.

K является ценой исполнения опциона.

Для получения дополнительной информации см. Опцию Ванили.

Модель диффузии скачка Мертона

Модель диффузии скачка Мертона (Мертон (1976)) является различным расширением модели Black-Scholes, где внезапные перемещения цен активов (оба вверх и вниз) моделируются путем добавления параметров диффузии скачка с Пуассоновским процессом.

Стохастическое дифференциальное уравнение:

dSt=(rqλpμj)Stdt+σStdWt+JStdPtprob (dPt=1)=λpdt

где

r является непрерывным безрисковым уровнем.

q является непрерывной дивидендной доходностью.

W t является процессом Вайнера.

J является случайным условным выражением размера скачка процента на появлении скачка, где ln(1+J) нормально распределено со средним значением ln(1+μJ)δ22 и стандартное отклонение δ, и (1+J) имеет логарифмически нормальное распределение:

1(1+J)δ2πexp{[ln(1+J)(ln(1+μJ)δ22]2δ22}

μ J является средним значением J для (μ J>-1).

δ является стандартным отклонением ln(1+J) для (δ ≥ 0).

ƛ p является ежегодной частотой (интенсивность) Пуассоновского процесса P t для (ƛ p ≥ 0).

σ является энергозависимостью цены активов на (σ> 0).

Характеристическая функция fMerton76j(ϕ) для j = 1 (мера цен активов) и j = 2 (нейтральная к риску мера):

fMerton76j=fBSjexp(λpτ(1+μj)mj+12[(1+μj)iϕeδ2(mjiϕ+(iϕ)22)1]λpτμjiϕ)где для j=1,2:fBS1(ϕ)=fBS2(ϕi)fBS2(i)fBS2(ϕ)=exp(iϕ[lnSt+(rqσ22)τ]ϕ2σ22τ)m1=12,m2=12

где

ϕ является переменной характеристической функции.

τ является временем к зрелости (τ = T - t).

i является модульным мнимым числом (i 2 =-1).

Метод численного интегрирования при Хестоне (1993) среда

Численное интегрирование используется, чтобы оценить непрерывный интеграл для обратного преобразования Фурье.

Метод численного интегрирования при Хестоне (1993) среда основан на следующих выражениях:

Call(K)=SteqτP1KerτP2Put(K)=Call(K)+KerτSteqτPj=12+1π0Re[eiϕln(K)fj(ϕ)iϕ]dϕ

где

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) среда

Численное интегрирование используется, чтобы оценить непрерывный интеграл для обратного преобразования Фурье.

Метод численного интегрирования при Льюисе (2001) среда основан на следующих выражениях:

Call(k)=SteqτKeτtπ0Re[Kiuf2(ϕ=(ui2))1u2+14]duPut(K)=Call(K)=KeτtSteqτ

где

r является непрерывным безрисковым уровнем.

q является непрерывной дивидендной доходностью.

S t является ценой активов во время t.

K является забастовкой.

τ время к зрелости (τ = T-t).

Call (K) является досрочной ценой в забастовке K.

Put (K) является помещенной ценой в забастовке K.

i является модульным мнимым числом (i 2 =-1).

ϕ переменная характеристической функции.

u является переменной характеристической функции для интегрирования, где ϕ=(ui2).

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.

Введенный в R2018a