Цена опции и чувствительность моделью Bates с помощью БПФ и FRFT
[PriceSens,StrikeOut] = optSensByBatesFFT(Rate,AssetPrice,Settle,Maturity,OptSpec,Strike,V0,ThetaV,Kappa,SigmaV,RhoSV,MeanJ,JumpVol,JumpFreq)
[PriceSens,StrikeOut] = optSensByBatesFFT(___,Name,Value)
[
добавляют дополнительные аргументы пары "имя-значение". PriceSens
,StrikeOut
] = optSensByBatesFFT(___,Name,Value
)
Используйте optSensByBatesFFT
, чтобы калибровать сетку забастовки БПФ для чувствительности, вычислить чувствительность опции и поверхности чувствительности опции графика.
Задайте переменные опции, и убавляет параметры модели
AssetPrice = 80;
Rate = 0.03;
DividendYield = 0.02;
OptSpec = 'call';
V0 = 0.04;
ThetaV = 0.05;
Kappa = 1.0;
SigmaV = 0.2;
RhoSV = -0.7;
MeanJ = 0.02;
JumpVol = 0.08;
JumpFreq = 2;
Вычислите чувствительность опции для целого БПФ (или FRFT) сетка забастовки, не задавая "забастовку"
Вычислите чувствительность опции и также выведите соответствующие забастовки. Если вход Strike
будет пуст ([]
), чувствительность опции будет вычислена на целом БПФ (или FRFT) сетка забастовки. БПФ (или FRFT) сетка забастовки определяется как exp(log-strike grid)
, где каждый столбец сетки логарифмической забастовки имеет точки NumFFT
с LogStrikeStep
, располагающим с интервалами, которые примерно сосредоточены вокруг каждого элемента log(AssetPrice)
. Значение по умолчанию для NumFFT
2^12. В дополнение к чувствительности в первом выводе дополнительный последний вывод содержит соответствующие забастовки.
Settle = datenum('29-Jun-2017'); Maturity = datemnth(Settle, 6); Strike = []; % Strike is not specified (will use the entire FFT strike grid) % Compute option sensitivities for the entire FFT strike grid [Delta, Kout] = optSensByBatesFFT(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, ... V0, ThetaV, Kappa, SigmaV, RhoSV, MeanJ, JumpVol, JumpFreq, ... 'DividendYield', DividendYield, 'OutSpec', "delta"); % Show the lowest and highest strike values on the FFT strike grid format MinStrike = Kout(1) % Lowest possible strike in the current FFT strike grid
MinStrike = 2.9205e-135
MaxStrike = Kout(end) % Highest possible strike in the current FFT strike grid
MaxStrike = 1.8798e+138
% Show a subset of the strikes and corresponding option sensitivities
Range = (2046:2052);
[Kout(Range) Delta(Range)]
ans = 7×2
50.4929 0.9846
58.8640 0.9585
68.6231 0.8498
80.0000 0.5630
93.2631 0.1955
108.7251 0.0319
126.7505 0.0033
Измените количество БПФ (или FRFT) точки и сравните с optSensByBatesNI
Попробуйте различное количество БПФ (или FRFT) точки и сравните результаты с численным интегрированием. В отличие от optSensByBatesFFT
, который использует БПФ (или FRFT) методы для быстрого вычисления через целую область значений забастовок, функция optSensByBatesNI
использует прямое численное интегрирование, и это обычно медленнее, специально для нескольких забастовок. Однако значения, вычисленные optSensByBatesNI
, могут служить сравнительным тестом для корректировки настроек для optSensByBatesFFT
.
% Try a smaller number of FFT points % (e.g. for faster performance or smaller memory footprint) NumFFT = 2^10; % Smaller than the default value of 2^12 Strike = []; % Strike is not specified (will use the entire FFT strike grid) [Delta, Kout] = optSensByBatesFFT(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, ... V0, ThetaV, Kappa, SigmaV, RhoSV, MeanJ, JumpVol, JumpFreq, ... 'DividendYield', DividendYield, 'OutSpec', "delta", 'NumFFT', NumFFT); % Compare with numerical integration method Range = (510:516); Strike = Kout(Range); DeltaFFT = Delta(Range); DeltaNI = optSensByBatesNI(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, V0, ... ThetaV, Kappa, SigmaV, RhoSV, MeanJ, JumpVol, JumpFreq, ... 'DividendYield', DividendYield, 'OutSpec', "delta"); Error = abs(DeltaFFT-DeltaNI); table(Strike, DeltaFFT, DeltaNI, Error)
ans=7×4 table
Strike DeltaFFT DeltaNI Error
______ __________ __________ __________
12.696 0.9265 0.99002 0.063524
23.449 0.95153 0.99002 0.038497
43.312 0.95928 0.98928 0.029994
80 0.5355 0.56303 0.027531
147.76 0.0016267 0.00025691 0.0013698
272.93 0.00058267 1.8942e-09 0.00058267
504.11 0.00017752 8.7099e-10 0.00017752
Внесите дальнейшие корректировки в БПФ (или FRFT)
Если значения в выводе DeltaFFT
существенно отличаются от тех в DeltaNI
, попытайтесь внести изменения в настройки optSensByBatesFFT
, такие как CharacteristicFcnStep
, LogStrikeStep
, NumFFT
, DampingFactor
, и так далее. Обратите внимание на то, что, если (LogStrikeStep
* CharacteristicFcnStep
) 2*pi/NumFFT
, БПФ используется. В противном случае FRFT используется.
Strike = []; % Strike is not specified (will use the entire FFT or FRFT strike grid) [Delta, Kout] = optSensByBatesFFT(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, ... V0, ThetaV, Kappa, SigmaV, RhoSV, MeanJ, JumpVol, JumpFreq, ... 'DividendYield', DividendYield, 'OutSpec', "delta", 'NumFFT', NumFFT, ... 'CharacteristicFcnStep', 0.065, 'LogStrikeStep', 0.001); % Compare with numerical integration method Strike = Kout(Range); DeltaFFT = Delta(Range); DeltaNI = optSensByBatesNI(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, V0, ... ThetaV, Kappa, SigmaV, RhoSV, MeanJ, JumpVol, JumpFreq, ... 'DividendYield', DividendYield, 'OutSpec', "delta"); Error = abs(DeltaFFT-DeltaNI); table(Strike, DeltaFFT, DeltaNI, Error)
ans=7×4 table
Strike DeltaFFT DeltaNI Error
______ ________ _______ __________
79.76 0.57037 0.57037 6.3042e-09
79.84 0.56793 0.56793 7.156e-09
79.92 0.56548 0.56548 7.975e-09
80 0.56303 0.56303 8.7573e-09
80.08 0.56057 0.56057 9.4992e-09
80.16 0.55811 0.55811 1.0197e-08
80.24 0.55564 0.55564 1.0847e-08
% Save the final FFT (or FRFT) strike grid for future reference. For % example, it provides information about the range of Strike inputs for % which the FFT (or FRFT) operation is valid. FFTStrikeGrid = Kout; MinStrike = FFTStrikeGrid(1) % Strike cannot be less than MinStrike
MinStrike = 47.9437
MaxStrike = FFTStrikeGrid(end) % Strike cannot be greater than MaxStrike
MaxStrike = 133.3566
Вычислите чувствительность опции для одной забастовки
Однажды желаемый БПФ (или FRFT) настройки определяются, используют вход Strike
, чтобы задать забастовки вместо того, чтобы обеспечить пустой массив. Если заданные забастовки не совпадают со значением на БПФ (или FRFT) сетка забастовки, выходные параметры интерполированы на заданных забастовках.
Settle = datenum('29-Jun-2017'); Maturity = datemnth(Settle, 6); Strike = 80; Delta = optSensByBatesFFT(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, ... V0, ThetaV, Kappa, SigmaV, RhoSV, MeanJ, JumpVol, JumpFreq, ... 'DividendYield', DividendYield, 'OutSpec', "delta", 'NumFFT', NumFFT, ... 'CharacteristicFcnStep', 0.065, 'LogStrikeStep', 0.001)
Delta = 0.5630
Вычислите чувствительность опции для вектора забастовок
Используйте вход Strike
, чтобы задать забастовки.
Settle = datenum('29-Jun-2017'); Maturity = datemnth(Settle, 6); Strike = (76:2:84)'; Delta = optSensByBatesFFT(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, ... V0, ThetaV, Kappa, SigmaV, RhoSV, MeanJ, JumpVol, JumpFreq, ... 'DividendYield', DividendYield, 'OutSpec', "delta", 'NumFFT', NumFFT, ... 'CharacteristicFcnStep', 0.065, 'LogStrikeStep', 0.001)
Delta = 5×1
0.6807
0.6234
0.5630
0.5011
0.4392
Вычислите чувствительность опции для вектора забастовок и вектора дат тех же длин
Используйте вход 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 = optSensByBatesFFT(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, ... V0, ThetaV, Kappa, SigmaV, RhoSV, MeanJ, JumpVol, JumpFreq, ... 'DividendYield', DividendYield, 'OutSpec', "delta", 'NumFFT', NumFFT, ... 'CharacteristicFcnStep', 0.065, 'LogStrikeStep', 0.001) % Five values in vector output
Delta = 5×1
0.6625
0.6232
0.5958
0.5748
0.5577
Расширьте Выходные параметры для поверхности
Установите аргумент пары "имя-значение" ExpandOutput
"true"
расширять выходные параметры в NStrikes
-by-NMaturities
матрицы. В этом случае они - квадратные матрицы.
[Delta, Kout] = optSensByBatesFFT(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, ... V0, ThetaV, Kappa, SigmaV, RhoSV, MeanJ, JumpVol, JumpFreq, ... 'DividendYield', DividendYield, 'OutSpec', "delta", 'NumFFT', NumFFT, ... 'CharacteristicFcnStep', 0.065, 'LogStrikeStep', 0.001, ... 'ExpandOutput', true) % (5 x 5) matrix output
Delta = 5×5
0.6625 0.6556 0.6515 0.6483 0.6455
0.6222 0.6232 0.6239 0.6241 0.6238
0.5805 0.5900 0.5958 0.5996 0.6019
0.5381 0.5564 0.5674 0.5748 0.5798
0.4954 0.5225 0.5389 0.5499 0.5577
Kout = 5×5
76 76 76 76 76
78 78 78 78 78
80 80 80 80 80
82 82 82 82 82
84 84 84 84 84
Вычислите чувствительность опции для вектора забастовок и вектора дат различных длин
Когда ExpandOutput
является "true"
, NStrikes
не должны совпадать с NMaturities
. Таким образом, вывод NStrikes
-by-NMaturities
матрица может быть прямоугольным.
Settle = datenum('29-Jun-2017'); Maturity = datemnth(Settle, 12*(0.5:0.5:3)'); % Six maturities Strike = (76:2:84)'; % Five strikes Delta = optSensByBatesFFT(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, ... V0, ThetaV, Kappa, SigmaV, RhoSV, MeanJ, JumpVol, JumpFreq, ... 'DividendYield', DividendYield, 'OutSpec', "delta", 'NumFFT', NumFFT, ... 'CharacteristicFcnStep', 0.065, 'LogStrikeStep', 0.001, ... 'ExpandOutput', true) % (5 x 6) matrix output
Delta = 5×6
0.6807 0.6625 0.6556 0.6515 0.6483 0.6455
0.6234 0.6222 0.6232 0.6239 0.6241 0.6238
0.5630 0.5805 0.5900 0.5958 0.5996 0.6019
0.5011 0.5381 0.5564 0.5674 0.5748 0.5798
0.4392 0.4954 0.5225 0.5389 0.5499 0.5577
Вычислите чувствительность опции для вектора забастовок и вектора цен активов
Когда ExpandOutput
является "true"
, выводом может также быть NStrikes
-by-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 = optSensByBatesFFT(Rate, ManyAssetPrices, Settle, Maturity, OptSpec, ... Strike, V0, ThetaV, Kappa, SigmaV, RhoSV, MeanJ, JumpVol, JumpFreq, ... 'DividendYield', DividendYield, 'OutSpec', "delta", 'NumFFT', NumFFT, ... 'CharacteristicFcnStep', 0.065, 'LogStrikeStep', 0.001, ... 'ExpandOutput', true) % (5 x 4) matrix output
Delta = 5×4
0.4350 0.5579 0.6625 0.7457
0.3881 0.5124 0.6222 0.7120
0.3432 0.4670 0.5805 0.6763
0.3010 0.4223 0.5381 0.6390
0.2619 0.3789 0.4954 0.6002
Постройте поверхности чувствительности опции
Используйте вход Strike
, чтобы задать забастовки. Увеличьте значение для NumFFT
, чтобы поддержать более широкую область значений забастовок. Кроме того, вход Maturity
может быть вектором. Установите ExpandOutput
на "true"
выводить поверхности как NStrikes
-by-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)'; % Increase 'NumFFT' to support a wider range of strikes NumFFT = 2^13; [Delta, Gamma, Rho, Theta, Vega, VegaLT] = optSensByBatesFFT(... Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, ... V0, ThetaV, Kappa, SigmaV, RhoSV, MeanJ, JumpVol, JumpFreq, ... 'DividendYield', DividendYield, 'NumFFT', NumFFT, ... 'CharacteristicFcnStep', 0.065, 'LogStrikeStep', 0.001, ... 'OutSpec', ["delta", "gamma", "rho", "theta", "vega", "vegalt"], ... '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; surf(X,Y,Gamma) title('Gamma') xlabel('Years to Option Expiry') ylabel('Strike') view(-112,34); xlim([0 Times(end)]);
figure; surf(X,Y,Rho) title('Rho') xlabel('Years to Option Expiry') ylabel('Strike') view(-112,34); xlim([0 Times(end)]);
figure; surf(X,Y,Theta) title('Theta') xlabel('Years to Option Expiry') ylabel('Strike') view(-112,34); xlim([0 Times(end)]);
figure; surf(X,Y,Vega) title('Vega') xlabel('Years to Option Expiry') ylabel('Strike') view(-112,34); xlim([0 Times(end)]);
figure; surf(X,Y,VegaLT) title('VegaLT') xlabel('Years to Option Expiry') ylabel('Strike') view(-112,34); xlim([0 Times(end)]);
Rate
— Постоянно составляемая безрисковая процентная ставкаПостоянно составляемая безрисковая процентная ставка, заданная как скалярное десятичное значение.
Типы данных: double
AssetPrice
— Текущая цена базового активаТекущая цена базового актива, заданная как числовое значение с помощью скаляра или NINST
-by-1
или NColumns
-by-1
вектор.
Для получения дополнительной информации о соответствующих размерностях для AssetPrice
смотрите аргумент пары "имя-значение" ExpandOutput
.
Типы данных: double
Settle
— Расчетный день опции Расчетный день опции, заданный как NINST
-by-1
или NColumns
-by-1
вектор с помощью последовательных чисел даты, векторов символов даты, массивов datetime или строковых массивов. Дата Settle
должна быть перед датой Maturity
.
Для получения дополнительной информации о соответствующих размерностях для Settle
смотрите аргумент пары "имя-значение" ExpandOutput
.
Типы данных: double
| char
| datetime
| string
Maturity
— Дата погашения опцииДата погашения опции, заданная как NINST
-by-1
или NColumns
-by-1
вектор с помощью последовательных чисел даты, векторов символов даты, массивов datetime или строковых массивов.
Для получения дополнительной информации о соответствующих размерностях для Maturity
смотрите аргумент пары "имя-значение" ExpandOutput
.
Типы данных: double
| char
| datetime
| string
OptSpec
— Определение опции 'call'
или 'put'
| массив строк со значениями "call"
или "put"
Определение опции, заданной как NINST
-by-1
или NColumns
-by-1
вектор с помощью массива ячеек из символьных векторов или строковых массивов со значениями 'call'
или 'put'
.
Для получения дополнительной информации о соответствующих размерностях для OptSpec
смотрите аргумент пары "имя-значение" ExpandOutput
.
Типы данных: cell
| string
Strike
— Значение цены исполнения опциона опцииЗначение цены исполнения опциона опции, заданное как NINST
-by-1
, NRows
-by-1
, NRows
-by-NColumns
вектор цен исполнения опциона.
Если этот вход является пустым массивом ([]
), цены опции вычисляются на целом БПФ (или FRFT) сетка забастовки, которая определяется как exp(log-strike grid)
. Каждый столбец сетки логарифмической забастовки has 'NumFFT'
указывает с 'LogStrikeStep'
, располагающим с интервалами, которые примерно сосредоточены вокруг каждого элемента log(AssetPrice)
.
Для получения дополнительной информации о соответствующих размерностях для Strike
смотрите аргумент пары "имя-значение" ExpandOutput
.
Типы данных: 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
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
[PriceSens,StrikeOut] = optSensByBatesFFT(Rate,AssetPrice,Settle,Maturity,OptSpec,Strike,V0,ThetaV,Kappa,SigmaV,RhoSV,MeanJ,JumpVol,JumpFreq,'Basis',7)
'Basis'
— Основание дневного количества инструмента0
(значение по умолчанию) | числовые значения: 0
, 1
, 2
, 3
, 4
, 6
, 7
, 8
, 9
, 10
, 11
, 12
, 13
Дневное количество инструмента, заданного как пара, разделенная запятой, состоящая из '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'
— Постоянно составляемая доходность базовых активов0
(значение по умолчанию) | числовойПостоянно составляемая доходность базовых активов, заданная как пара, разделенная запятой, состоящая из 'DividendYield'
и скалярного числового значения.
Типы данных: double
'VolRiskPremium'
— Надбавка за риск энергозависимости0
(значение по умолчанию) | числовойНадбавка за риск энергозависимости, заданная как пара, разделенная запятой, состоящая из 'VolRiskPremium'
и скалярного числового значения.
Типы данных: double
'LittleTrap'
— Отметьте указание на Небольшую формулировку Прерывания Хестонаtrue
(значение по умолчанию) | логический со значениями true
или false
Отметьте указание на Небольшую формулировку Прерывания Хестона Albrecher и др.
, заданный как пара, разделенная запятой, состоящая из 'LittleTrap'
и логического:
tRUE
Используйте Albrecher и др.
формулировка.
ложь
Используйте исходное формирование Хестона.
Типы данных: логический
'OutSpec'
— Define выходные параметры["price"]
(значение по умолчанию) | массив строк со значениями "price"
, "delta"
, "gamma"
, "vega"
, "rho"
, "theta"
и "vegalt"
| массив ячеек из символьных векторов со значениями 'price'
, 'delta'
, 'gamma'
, 'vega'
, 'rho'
, 'theta'
и 'vegalt'
Задайте выходные параметры, заданные как пара, разделенная запятой, состоящая из 'OutSpec'
и NOUT
- 1
или 1
-by-NOUT
массив строк или массив ячеек из символьных векторов с поддерживаемыми значениями.
"vega"
является чувствительностью с уважением начальная энергозависимость sqrt (V0
). Напротив, "vegalt"
является чувствительностью относительно долгосрочной энергозависимости sqrt (ThetaV
).
Пример: OutSpec = ["price","delta","gamma","vega","rho","theta","vegalt"]
Типы данных: string
| cell
'NumFFT'
— Количество узлов решетки в переменной характеристической функции4096
(значение по умолчанию) | числовойКоличество узлов решетки в переменной характеристической функции и в каждом столбце сетки логарифмической забастовки, заданной как пара, разделенная запятой, состоящая из 'NumFFT'
и скалярного числового значения.
Типы данных: double
'CharacteristicFcnStep'
— Интервал сетки переменной характеристической функции0.01
(значение по умолчанию) | числовойИнтервал сетки переменной характеристической функции, заданный как пара, разделенная запятой, состоящая из 'CharacteristicFcnStep'
и скалярного числового значения.
Типы данных: double
'LogStrikeStep'
— Интервал сетки логарифмической забастовки2*pi/NumFFT/CharacteristicFcnStep
(значение по умолчанию) | числовойИнтервал сетки логарифмической забастовки, заданный как пара, разделенная запятой, состоящая из 'LogStrikeStep'
и скалярного числового значения.
Если (LogStrikeStep
*CharacteristicFcnStep
) 2*pi
/NumFFT
, БПФ используется. В противном случае FRFT используется.
Типы данных: double
'DampingFactor'
— Затухание фактора для формулировки Топкого-места-Madan1.5
(значение по умолчанию) | числовойЗатухание фактора для формулировки Топкого-места-Madan, заданной как пара, разделенная запятой, состоящая из 'DampingFactor'
и скалярного числового значения.
Типы данных: double
'Quadrature'
— Тип квадратуры"simpson"
(значение по умолчанию) | вектор символов с values:'simpson'
или 'trapezoidal'
| массив строк со значениями: "simpson"
или "trapezoidal"
Тип квадратуры, заданной как пара, разделенная запятой, состоящая из 'Quadrature'
и односимвольного векторного массива или массива строк со значением 'simpson'
или 'trapezoidal'
.
Типы данных: char | string
'ExpandOutput'
— Отметьте, чтобы расширить выходные параметрыfalse
(выходными параметрами является NINST
-by-1
векторы) (значение по умолчанию) | логический со значением true
или false
Отметьте, чтобы расширить выходные параметры, заданные как пара, разделенная запятой, состоящая из 'ExpandOutput'
и логического:
tRUE
Если true
, выходными параметрами является NRows
NColumns
матрицами. NRows
является количеством борьбы за каждый столбец, и это определяется входом Strike
. Например, Strike
может быть NRows
-by-1
вектор или NRows
-by-NColumns
матрица. Если Strike
пуст, NRows
равен NumFFT
. NColumns
определяется размерами AssetPrice
, Settle
, Maturity
и OptSpec
, который должен все быть или скаляром или NColumns
-by-1
векторы.
ложь
Если false
, выходными параметрами является NINST
-by-1
векторы. Кроме того, входные параметры Strike
, AssetPrice
, Settle
, Maturity
и OptSpec
должны все быть или скаляром или NINST
-by-1
векторы.
Типы данных: логический
PriceSens
— Цены опции или чувствительностьЦены опции или чувствительность, возвращенная как NINST
-by-1
или NRows
-by-NColumns
, в зависимости от ExpandOutput
. Аргумент пары "имя-значение" OutSpec
определяет типы и порядок выходных параметров.
StrikeOut
— Забастовки, соответствующие Price
Забастовки, соответствующие Price
, возвращенному как NINST
-by-1
или NRows
-by-NColumns
, в зависимости от ExpandOutput
.
Модель Бэйтса (Бэйтс (1996)) является расширением модели Хестона, где в дополнение к стохастической энергозависимости параметры диффузии скачка, подобные Мертону (1976), были также добавлены, чтобы смоделировать внезапные перемещения цен активов.
Стохастическое дифференциальное уравнение:
где
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).
Характеристическая функция для j = 1 (средняя мера цен активов) и j =2 (нейтральная к риску мера):
где
ϕ является переменной характеристической функции.
ƛ VolRisk является надбавкой за риск энергозависимости.
τ является временем к зрелости для (τ = T - t).
i является модульным мнимым числом для (i 2 =-1).
Определения для C j и D j под “Небольшим Прерыванием Хестона” Albrecher и др. (2007):
Топкое место и Мадан (1999) формулировка являются популярной измененной реализацией Хестона (1993) среда.
Вместо того, чтобы вычислять вероятности, P 1 и P 2 как промежуточное звено продвигается, Топкое место и Мадан разработали альтернативное выражение так, чтобы взятие его обратного преобразования Фурье дало саму цену опции непосредственно.
где
r является непрерывным безрисковым уровнем.
q является непрерывной дивидендной доходностью.
S t является ценой активов во время t.
τ время к зрелости (τ = T-t).
Call (K) является досрочной ценой в забастовке K.
Put (K) является помещенной ценой в забастовке K.
i является модульным мнимым числом (i 2 =-1).
ϕ переменная характеристической функции.
α фактор затухания.
u является переменной характеристической функции для интегрирования, где ϕ = (u - (α + 1) i).
f 2 (ϕ) является характеристической функцией для P 2.
P 2 является вероятностью S t> K под нейтральной к риску мерой для модели.
Чтобы применить БПФ или FRFT к этой формулировке, переменная характеристической функции для интегрирования, u, дискретизируется в NumFFT
(N) точки с размером шага CharacteristicFcnStep
(Δu), и логарифмическая забастовка, k дискретизируется в точки N с размером шага LogStrikeStep
(Δk).
Дискретизированная переменная характеристической функции для интегрирования, u j (для j = 1,2,3, …, N), имеет минимальное значение 0 и максимальное значение (N-1) (Δu), и это аппроксимирует непрерывный диапазон интегрирования от 0 до бесконечности.
Дискретизированная сетка логарифмической забастовки, k n (для n = 1, 2, 3, N) приблизительно сосредоточена вокруг ln
(S t) с минимальным значением
и максимальное значение
Где минимальная допустимая забастовка
и максимальная допустимая забастовка
В результате дискретизации выражение для колл-опциона становится
где
Δu является размером шага дискретизированной переменной характеристической функции для интегрирования.
Δk является размером шага дискретизированной логарифмической забастовки.
N является количеством точек FFT/FRFT
w j является весами для квадратуры, используемой для приближения интеграла.
БПФ используется, чтобы выполнить вышеупомянутое выражение, если Δk и Δu подвергаются следующему ограничению:
в противном случае функции используют метод FRFT, описанный в Chourdakis (2005).
[1] Albrecher, H., Майер, P., Schoutens, W. и Tistaert, J. "Небольшое прерывание Хестона". Рабочий документ, Линц и технологический университет Граца, K.U. Левен, финансовые рынки ING, 2006.
[2] Убавляет, D. S. “Скачки и стохастическая энергозависимость: процессы обменного курса, неявные в опциях немецкой марки”. Анализ финансовых исследований. Vol 9. № 1. 1996.
[3] Топкое место, P. и Д.Б. Мадан. “Оценка опции Используя быстрое преобразование Фурье”. Журнал вычислительных финансов. Vol 2. № 4. 1999.
[4] Chourdakis, K. “Оценка опции Используя дробный БПФ”. Журнал вычислительных финансов. 2005.
[5] Хестон, S. L. “Решение закрытой формы для опций со стохастической энергозависимостью с приложениями к опциям связи и валюты”. Анализ финансовых исследований. Vol 6. № 2. 1993.
optByBatesFFT
| optByBatesNI
| optByHestonFFT
| optByHestonNI
| optByMertonFFT
| optByMertonNI
| optSensByBatesNI
| optSensByHestonFFT
| optSensByHestonNI
| optSensByMertonFFT
| optSensByMertonNI
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.