Цена опции моделью Bates с помощью БПФ и FRFT
[
добавляют дополнительные аргументы пары "имя-значение". Price
,StrikeOut
] = optByBatesFFT(___,Name,Value
)
Используйте optByBatesFFT
чтобы калибровать сетку забастовки БПФ, вычислите цены опции и постройте поверхность цены опции.
Задайте переменные опции, и убавляет параметры модели
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
Вычислите цены опции и также выведите соответствующие забастовки. Если 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 prices for the entire FFT strike grid [Call, Kout] = optByBatesFFT(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, ... V0, ThetaV, Kappa, SigmaV, RhoSV, MeanJ, JumpVol, JumpFreq, ... 'DividendYield', DividendYield); % 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 prices
Range = (2046:2052);
[Kout(Range) Call(Range)]
ans = 7×2
50.4929 29.4990
58.8640 21.4545
68.6231 12.8544
80.0000 5.3484
93.2631 1.2404
108.7251 0.1648
126.7505 0.0152
Измените количество БПФ (или FRFT) точки и сравните с optByBatesNI
Попробуйте различное количество БПФ (или FRFT) точки и сравните результаты с прямым численным интегрированием. В отличие от optByBatesFFT
, который использует БПФ (или FRFT) методы для быстрого расчета через целую область значений забастовок, optByBatesNI
функционируйте использует прямое численное интегрирование, и это обычно медленнее, особенно для нескольких забастовок. Однако значения вычисляются optByBatesNI
может служить сравнительным тестом для корректировки настроек для optByBatesFFT
.
% Try a smaller number of FFT (or FRFT) 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) [Call, Kout] = optByBatesFFT(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, ... V0, ThetaV, Kappa, SigmaV, RhoSV, MeanJ, JumpVol, JumpFreq, ... 'DividendYield', DividendYield, 'NumFFT', NumFFT); % Compare with numerical integration method Range = (510:516); Strike = Kout(Range); CallFFT = Call(Range); CallNI = optByBatesNI(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, ... V0, ThetaV, Kappa, SigmaV, RhoSV, MeanJ, JumpVol, JumpFreq, 'DividendYield', DividendYield); Error = abs(CallFFT-CallNI); table(Strike, CallFFT, CallNI, Error)
ans=7×4 table
Strike CallFFT CallNI Error
______ _________ ___________ _________
12.696 66.237 66.696 0.45912
23.449 55.86 56.103 0.24239
43.312 36.418 36.541 0.12246
80 5.4029 5.3484 0.054469
147.76 0.044921 0.0010864 0.043835
272.93 0.0094655 -7.8249e-08 0.0094656
504.11 0.0024986 -3.3873e-07 0.0024989
Внесите дальнейшие корректировки в БПФ (или FRFT)
Если значения в выходе CallFFT
существенно отличаются от тех в CallNI
, попытайтесь внести изменения в optByBatesFFT
настройки, такие как CharacteristicFcnStep
, LogStrikeStep
, NumFFT
, DampingFactor
, и так далее. Обратите внимание на то, что, если (LogStrikeStep
* CharacteristicFcnStep
) 2*pi / NumFFT
, БПФ используется. В противном случае FRFT используется.
Strike = []; % Strike is not specified (will use the entire FFT or FRFT strike grid) [Call, Kout] = optByBatesFFT(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, ... V0, ThetaV, Kappa, SigmaV, RhoSV, MeanJ, JumpVol, JumpFreq, ... 'DividendYield', DividendYield, 'NumFFT', NumFFT, 'CharacteristicFcnStep', 0.065, ... 'LogStrikeStep', 0.001); % Compare with numerical integration method Strike = Kout(Range); CallFFT = Call(Range); CallNI = optByBatesNI(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, ... V0, ThetaV, Kappa, SigmaV, RhoSV, MeanJ, JumpVol, JumpFreq, 'DividendYield', DividendYield); Error = abs(CallFFT-CallNI); table(Strike, CallFFT, CallNI, Error)
ans=7×4 table
Strike CallFFT CallNI Error
______ _______ ______ __________
79.76 5.4682 5.4682 1.5355e-08
79.84 5.4281 5.4281 1.4833e-08
79.92 5.3882 5.3882 1.4244e-08
80 5.3484 5.3484 1.359e-08
80.08 5.3088 5.3088 1.2875e-08
80.16 5.2693 5.2693 1.2101e-08
80.24 5.23 5.23 1.1272e-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; Call = optByBatesFFT(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, ... V0, ThetaV, Kappa, SigmaV, RhoSV, MeanJ, JumpVol, JumpFreq, ... 'DividendYield', DividendYield, 'NumFFT', NumFFT, 'CharacteristicFcnStep', 0.065, ... 'LogStrikeStep', 0.001)
Call = 5.3484
Вычислите цены опции за вектор из забастовок
Используйте Strike
введите, чтобы задать забастовки.
Settle = datenum('29-Jun-2017'); Maturity = datemnth(Settle, 6); Strike = (76:2:84)'; Call = optByBatesFFT(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, ... V0, ThetaV, Kappa, SigmaV, RhoSV, MeanJ, JumpVol, JumpFreq, ... 'DividendYield', DividendYield, 'NumFFT', NumFFT, 'CharacteristicFcnStep', 0.065, ... 'LogStrikeStep', 0.001)
Call = 5×1
7.5765
6.4020
5.3484
4.4173
3.6073
Вычислите цены опции за вектор из забастовок и вектор из дат тех же длин
Используйте 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 Call = optByBatesFFT(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, ... V0, ThetaV, Kappa, SigmaV, RhoSV, MeanJ, JumpVol, JumpFreq, ... 'DividendYield', DividendYield, 'NumFFT', NumFFT, 'CharacteristicFcnStep', 0.065, ... 'LogStrikeStep', 0.001) % Five values in vector output
Call = 5×1
9.7516
10.3931
10.8865
11.2990
11.6491
Расширьте Выходные параметры для поверхности
Установите ExpandOutput
аргумент пары "имя-значение" "true"
расширять выходные параметры в NStrikes
- NMaturities
матрицы. В этом случае они - квадратные матрицы.
[Call, Kout] = optByBatesFFT(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, ... V0, ThetaV, Kappa, SigmaV, RhoSV, MeanJ, JumpVol, JumpFreq, ... 'DividendYield', DividendYield, 'NumFFT', NumFFT, 'CharacteristicFcnStep', 0.065, ... 'LogStrikeStep', 0.001, 'ExpandOutput', true) % (5 x 5) matrix output
Call = 5×5
9.7516 11.4387 12.8395 14.0588 15.1361
8.6554 10.3931 11.8344 13.0890 14.1980
7.6432 9.4149 10.8865 12.1693 13.3046
6.7153 8.5035 9.9952 11.2990 12.4553
5.8705 7.6581 9.1594 10.4771 11.6491
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
- NMaturities
матрица может быть прямоугольной).
Settle = datenum('29-Jun-2017'); Maturity = datemnth(Settle, 12*(0.5:0.5:3)'); % Six maturities Strike = (76:2:84)'; % Five strikes Call = optByBatesFFT(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, ... V0, ThetaV, Kappa, SigmaV, RhoSV, MeanJ, JumpVol, JumpFreq, ... 'DividendYield', DividendYield, 'NumFFT', NumFFT, 'CharacteristicFcnStep', 0.065, ... 'LogStrikeStep', 0.001, 'ExpandOutput', true) % (5 x 6) matrix output
Call = 5×6
7.5765 9.7516 11.4387 12.8395 14.0588 15.1361
6.4020 8.6554 10.3931 11.8344 13.0890 14.1980
5.3484 7.6432 9.4149 10.8865 12.1693 13.3046
4.4173 6.7153 8.5035 9.9952 11.2990 12.4553
3.6073 5.8705 7.6581 9.1594 10.4771 11.6491
Вычислите цены опции за вектор из забастовок и вектор из цен активов
Когда 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 Call = optByBatesFFT(Rate, ManyAssetPrices, Settle, Maturity, OptSpec, Strike, ... V0, ThetaV, Kappa, SigmaV, RhoSV, MeanJ, JumpVol, JumpFreq, ... 'DividendYield', DividendYield, 'NumFFT', NumFFT, 'CharacteristicFcnStep', 0.065, ... 'LogStrikeStep', 0.001, 'ExpandOutput', true) % (5 x 4) matrix output
Call = 5×4
4.2033 6.6918 9.7516 13.2808
3.5558 5.8112 8.6554 11.9993
2.9906 5.0181 7.6432 10.7934
2.5018 4.3096 6.7153 9.6652
2.0825 3.6818 5.8705 8.6158
Постройте поверхность цены опции
Используйте Strike
введите, чтобы задать забастовки. Увеличьте значение для NumFFT
поддерживать более широкую область значений забастовок. Кроме того, 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)'; % Increase |NumFFT| to support a wider range of strikes NumFFT = 2^13; Call = optByBatesFFT(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, ... V0, ThetaV, Kappa, SigmaV, RhoSV, MeanJ, JumpVol, JumpFreq, ... 'DividendYield', DividendYield, 'NumFFT', NumFFT, 'CharacteristicFcnStep', 0.065, ... 'LogStrikeStep', 0.001, 'ExpandOutput', true); [X,Y] = meshgrid(Times,Strike); figure; surf(X,Y,Call); title('Price'); xlabel('Years to Option Expiry'); ylabel('Strike'); view(-112,34); xlim([0 Times(end)]); zlim([0 80]);
Rate
— Постоянно составляемая безрисковая процентная ставкаПостоянно составляемая безрисковая процентная ставка в виде скалярного десятичного значения.
Типы данных: double
AssetPrice
— Текущая цена базового активаТекущая цена базового актива в виде числового значения с помощью скаляра или NINST
- 1
или NColumns
- 1
вектор.
Для получения дополнительной информации о соответствующих размерностях для AssetPrice
, смотрите аргумент пары "имя-значение" ExpandOutput
.
Типы данных: double
Settle
— Расчетный день опции Расчетный день опции в виде NINST
- 1
или NColumns
- 1
вектор с помощью последовательных чисел даты, векторов символов даты, массивов datetime или строковых массивов. Settle
дата должна быть перед Maturity
дата.
Для получения дополнительной информации о соответствующих размерностях для Settle
, смотрите аргумент пары "имя-значение" ExpandOutput
.
Типы данных: double |
char
| datetime
| string
Maturity
— Дата погашения опцииДата погашения опции в виде NINST
- 1
или NColumns
- 1
вектор с помощью последовательных чисел даты, векторов символов даты, массивов datetime или строковых массивов.
Для получения дополнительной информации о соответствующих размерностях для Maturity
, смотрите аргумент пары "имя-значение" ExpandOutput
.
Типы данных: double |
char
| datetime
| string
OptSpec
— Определение опции 'call'
или 'put'
| массив строк со значениями "call"
или "put"
Определение опции в виде NINST
- 1
или NColumns
- 1
вектор с помощью массива ячеек из символьных векторов или строковых массивов со значениями 'call'
или 'put'
.
Для получения дополнительной информации о соответствующих размерностях для OptSpec
, смотрите аргумент пары "имя-значение" ExpandOutput
.
Типы данных: cell
| string
Strike
— Значение цены исполнения опциона опцииЗначение цены исполнения опциона опции в виде NINST
- 1
, NRows
- 1
, NRows
- 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
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
[Price, StrikeOut] = optByBatesFFT(Rate,AssetPrice,Settle,Maturity,OptSpec,Strike,V0,ThetaV,Kappa,SigmaV,RhoSV,MeanJ,JumpVol,JumpFreq,'Basis',7)
'Basis'
— Базис дневного количества инструмента
(значение по умолчанию) | числовые значения: 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'
— Постоянно составляемое выражение базового актива
(значение по умолчанию) | числовойПостоянно составляемый базовый актив уступает в виде разделенной запятой пары, состоящей из 'DividendYield'
и скалярное числовое значение.
Типы данных: double
'VolRiskPremium'
— Надбавка за риск энергозависимости
(значение по умолчанию) | числовойНадбавка за риск энергозависимости в виде разделенной запятой пары, состоящей из 'VolRiskPremium'
и скалярное числовое значение.
Типы данных: double
'LittleTrap'
— Отметьте указание на Небольшую формулировку Прерывания Хестонаtrue
(значение по умолчанию) | логический со значениями true
или false
Отметьте указание на Небольшую формулировку Прерывания Хестона Albrecher и др.
в виде разделенной запятой пары, состоящей из 'LittleTrap'
и логическое:
true
— Используйте Albrecher и др.
формулировка.
false
— Используйте исходное формирование Хестона.
Типы данных: логический
'NumFFT'
— Количество узлов решетки в переменной характеристической функции
(значение по умолчанию) | числовойКоличество узлов решетки в переменной характеристической функции и в каждом столбце сетки логарифмической забастовки в виде разделенной запятой пары, состоящей из 'NumFFT'
и скалярное числовое значение.
Типы данных: double
'CharacteristicFcnStep'
— Интервал сетки переменной характеристической функции
(значение по умолчанию) | числовойИнтервал сетки переменной характеристической функции в виде разделенной запятой пары, состоящей из 'CharacteristicFcnStep'
и скалярное числовое значение.
Типы данных: double
'LogStrikeStep'
— Интервал сетки логарифмической забастовки2*pi/NumFFT/CharacteristicFcnStep
(значение по умолчанию) | числовойИнтервал сетки логарифмической забастовки в виде разделенной запятой пары, состоящей из 'LogStrikeStep'
и скалярное числовое значение.
Примечание
Если (LogStrikeStep
*CharacteristicFcnStep
) 2*pi
/NumFFT
, БПФ используется. В противном случае FRFT используется.
Типы данных: double
'DampingFactor'
— Коэффициент затухания для формулировки Топкого-места-Madan
(значение по умолчанию) | числовойКоэффициент затухания для формулировки Топкого-места-Madan в виде разделенной запятой пары, состоящей из 'DampingFactor'
и скалярное числовое значение.
Типы данных: double
'Quadrature'
— Тип квадратуры"simpson"
(значение по умолчанию) | вектор символов с values:'simpson'
или 'trapezoidal'
| массив строк со значениями: "simpson"
или "trapezoidal"
Тип квадратуры в виде разделенной запятой пары, состоящей из 'Quadrature'
и односимвольный векторный массив или массив строк со значением 'simpson'
или 'trapezoidal'
.
Типы данных: char |
string
'ExpandOutput'
— Отметьте, чтобы расширить выходные параметрыfalse
(выходными параметрами является NINST
- 1
векторы) (значение по умолчанию) | логический со значением true
или false
Отметьте, чтобы расширить выходные параметры в виде разделенной запятой пары, состоящей из 'ExpandOutput'
и логическое:
true
— Если true
, выходными параметрами является NRows
- NColumns
матрицы. NRows
количество борьбы за каждый столбец, и это определяется Strike
входной параметр. Например, Strike
может быть NRows
- 1
вектор или NRows
- NColumns
матрица. Если Strike
пусто, NRows
равно NumFFT
. NColumns
определяется размерами AssetPrice
, Settle
, Maturity
, и OptSpec
, который должен все быть или скаляром или NColumns
- 1
векторы.
false
— Если false
, выходными параметрами является NINST
- 1
векторы. Кроме того, входные параметры Strike
, AssetPrice
, Settle
, Maturity
, и OptSpec
должен все быть или скаляр или NINST
- 1
векторы.
Типы данных: логический
Price
— Цены опцииЦены опции, возвращенные как NINST
- 1
, или NRows
- NColumns
, В зависимости от ExpandOutput
.
StrikeOut
— Забастовки, соответствующие Price
Забастовки, соответствующие Price
, возвращенный как NINST
- 1
, или NRows
- NColumns
, В зависимости от ExpandOutput
.
vanilla option является категорией опций, которая включает только самые стандартные компоненты.
Опция ванили имеет дату истечения срока и прямую цену исполнения опциона. Американские параметры стиля и европейские параметры стиля оба категоризированы как опции ванили.
Выплата для опции ванили следующие:
Для вызова:
Для помещенного:
где:
St является ценой базового актива во время t.
K является ценой исполнения опциона.
Для получения дополнительной информации см. Опцию Ванили.
Модель Бэйтса (Бэйтс (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.
optByBatesNI
| optByHestonFFT
| optByHestonNI
| optByMertonFFT
| optByMertonNI
| optSensByBatesFFT
| optSensByBatesNI
| optSensByHestonFFT
| optSensByHestonNI
| optSensByMertonFFT
| optSensByMertonNI
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.