Опционная цена по модели Хестона с использованием FFT и FRFT
[
добавляет необязательные аргументы пары "имя-значение". Price
,StrikeOut
] = optByHestonFFT(___,Name,Value
)
Использование optByHestonFFT
чтобы калибровать БПФ страйк-сетку, а затем вычислить цены на опцию и построить опцию поверхность цены.
Задайте переменные опции и параметры модели Хестона
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;
Вычислите цены на Опцию для всего БПФ (или FRFT) ударной сетки, не указывая «забастовка»
Расчет цен на опцию, а также вывод соответствующих забастовок. Если на Strike
вход пуст ([]
), опции цены будут вычисляться на всем БПФ (или FRFT) ударной сетке. Ударная сетка БПФ (или FRFT) определяется как exp(log-strike grid)
, где каждый столбец логарифмической сетки имеет NumFFT
точки с LogStrikeStep
интервалы, которые примерно центрированы вокруг каждого элемента журнала (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] = optByHestonFFT(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, ... V0, ThetaV, Kappa, SigmaV, RhoSV, '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.4843
58.8640 21.3767
68.6231 12.5614
80.0000 4.7008
93.2631 0.6496
108.7251 0.0144
126.7505 0.0001
Измените количество точек БПФ (или FRFT) и сравните с optByHestonNI
Попробуйте другое количество точек БПФ (или FRFT) и сравните результаты с прямым численным интегрированием. В отличие от optByHestonFFT
, который использует методы FFT (или FRFT) для быстрых расчетов во всей области значений ударов, optByHestonNI
функция использует прямое численное интегрирование, и оно обычно медленнее, особенно для нескольких ударов. Однако значения, вычисленные optByHestonNI
может служить эталоном для настройки настроек для optByHestonFFT
.
% 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] = optByHestonFFT(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, ... V0, ThetaV, Kappa, SigmaV, RhoSV, 'DividendYield', DividendYield, 'NumFFT', NumFFT); % Compare with numerical integration method Range = (510:516); Strike = Kout(Range); CallFFT = Call(Range); CallNI = optByHestonNI(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, V0, ... ThetaV, Kappa, SigmaV, RhoSV, 'DividendYield', DividendYield); Error = abs(CallFFT-CallNI); table(Strike, CallFFT, CallNI, Error)
ans=7×4 table
Strike CallFFT CallNI Error
______ _________ ___________ _________
12.696 66.066 66.696 0.62964
23.449 55.766 56.103 0.33672
43.312 36.359 36.539 0.17974
80 4.7727 4.7007 0.071928
147.76 0.066156 2.3472e-08 0.066156
272.93 0.013271 -2.5036e-09 0.013271
504.11 0.0034504 -3.0876e-07 0.0034508
Дальнейшие корректировки БПФ (или FRFT)
Если значения в выход CallFFT
значительно отличаются от таковых в CallNI
, попробуйте внести изменения в optByHestonFFT
настройки, такие как CharacteristicFcnStep
, LogStrikeStep
, NumFFT
, DampingFactor
и так далее. Обратите внимание, что if (LogStrikeStep
* CharacteristicFcnStep
) равен 2 * пи/ NumFFT
, используется БПФ. В противном случае используется FRFT.
Strike = []; % Strike is not specified (will use the entire FFT or FRFT strike grid) [Call, Kout] = optByHestonFFT(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, ... V0, ThetaV, Kappa, SigmaV, RhoSV, 'DividendYield', DividendYield, ... 'NumFFT', NumFFT, 'CharacteristicFcnStep', 0.065, 'LogStrikeStep', 0.001); % Compare with numerical integration method Strike = Kout(Range); CallFFT = Call(Range); CallNI = optByHestonNI(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, V0, ... ThetaV, Kappa, SigmaV, RhoSV, 'DividendYield', DividendYield); Error = abs(CallFFT-CallNI); table(Strike, CallFFT, CallNI, Error)
ans=7×4 table
Strike CallFFT CallNI Error
______ _______ ______ __________
79.76 4.826 4.826 2.7708e-08
79.84 4.7841 4.7841 3.0111e-08
79.92 4.7423 4.7423 3.2376e-08
80 4.7007 4.7007 3.4496e-08
80.08 4.6593 4.6593 3.6457e-08
80.16 4.6181 4.6181 3.8253e-08
80.24 4.577 4.577 3.9872e-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 = optByHestonFFT(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, ... V0, ThetaV, Kappa, SigmaV, RhoSV, 'DividendYield', DividendYield, 'NumFFT', NumFFT, ... 'CharacteristicFcnStep', 0.065, 'LogStrikeStep', 0.001)
Call = 4.7007
Вычислите опционные цены для вектора забастовок
Используйте Strike
вход для определения ударов.
Settle = datenum('29-Jun-2017'); Maturity = datemnth(Settle, 6); Strike = (76:2:84)'; Call = optByHestonFFT(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, ... V0, ThetaV, Kappa, SigmaV, RhoSV, 'DividendYield', DividendYield, 'NumFFT', NumFFT, ... 'CharacteristicFcnStep', 0.065, 'LogStrikeStep', 0.001)
Call = 5×1
7.0401
5.8053
4.7007
3.7316
2.8991
Вычислите Опцию цены для вектора забастовок и вектора дат той же длины
Используйте 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 = optByHestonFFT(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, ... V0, ThetaV, Kappa, SigmaV, RhoSV, 'DividendYield', DividendYield, 'NumFFT', NumFFT, ... 'CharacteristicFcnStep', 0.065, 'LogStrikeStep', 0.001) % Five values in vector output
Call = 5×1
8.9560
9.3419
9.6240
9.8560
10.0500
Разверните область «Выходы поверхности»
Установите ExpandOutput
аргумент пары "имя-значение" в "true"
чтобы расширить выходы в NStrikes
-по NMaturities
матрицы. В этом случае они являются квадратными матрицами.
[Call, Kout] = optByHestonFFT(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, ... V0, ThetaV, Kappa, SigmaV, RhoSV, 'DividendYield', DividendYield, 'NumFFT', NumFFT, ... 'CharacteristicFcnStep', 0.065, 'LogStrikeStep', 0.001, ... 'ExpandOutput', true) % (5 x 5) matrix outputs
Call = 5×5
8.9560 10.4543 11.7058 12.8009 13.7728
7.7946 9.3419 10.6337 11.7644 12.7685
6.7244 8.3028 9.6240 10.7828 11.8134
5.7475 7.3379 8.6771 9.8560 10.9074
4.8645 6.4474 7.7930 8.9840 10.0500
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 Call = optByHestonFFT(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, ... V0, ThetaV, Kappa, SigmaV, RhoSV, 'DividendYield', DividendYield, 'NumFFT', NumFFT, ... 'CharacteristicFcnStep', 0.065, 'LogStrikeStep', 0.001, ... 'ExpandOutput', true) % (5 x 6) matrix output
Call = 5×6
7.0401 8.9560 10.4543 11.7058 12.8009 13.7728
5.8053 7.7946 9.3419 10.6337 11.7644 12.7685
4.7007 6.7244 8.3028 9.6240 10.7828 11.8134
3.7316 5.7475 7.3379 8.6771 9.8560 10.9074
2.8991 4.8645 6.4474 7.7930 8.9840 10.0500
Вычислите опционные цены для вектора забастовок и вектора цен на активы
Когда 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 Call = optByHestonFFT(Rate, ManyAssetPrices, Settle, Maturity, OptSpec, Strike, ... V0, ThetaV, Kappa, SigmaV, RhoSV, 'DividendYield', DividendYield, 'NumFFT', NumFFT, ... 'CharacteristicFcnStep', 0.065, 'LogStrikeStep', 0.001, ... 'ExpandOutput', true) % (5 x 4) matrix output
Call = 5×4
3.2944 5.8047 8.9560 12.6052
2.6413 4.8810 7.7946 11.2507
2.0864 4.0575 6.7244 9.9738
1.6230 3.3325 5.7475 8.7783
1.2429 2.7028 4.8645 7.6676
Постройте график поверхности цены опции
Используйте 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; Call = optByHestonFFT(Rate, AssetPrice, Settle, Maturity, OptSpec, Strike, ... V0, ThetaV, Kappa, SigmaV, RhoSV, '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
-by- 1
или NColumns
-by- 1
вектор.
Для получения дополнительной информации о соответствующих размерностях для AssetPrice
, см. аргумент пары "имя-значение" ExpandOutput
.
Типы данных: double
Settle
- Дата расчета опции Дата расчета опции, заданная как NINST
-by- 1
или NColumns
-by- 1
вектор с последовательными номерами дат, векторами символов даты, массивами datetime или строковыми массивами. The 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"
Определение опции как '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)
. Каждый столбец логарифмической сетки имеет 'NumFFT'
точки с 'LogStrikeStep'
интервалы, которые примерно центрированы вокруг каждого элемента log(AssetPrice)
.
Для получения дополнительной информации о соответствующих размерностях для Strike
, см. аргумент пары "имя-значение" ExpandOutput
.
Типы данных: double
V0
- Начальное отклонение базового активаНачальное отклонение нижнего актива, заданное как скалярное числовое значение.
Типы данных: double
ThetaV
- Долгосрочное отклонение базовых активовДолгосрочное отклонение базового актива, заданная в виде скалярного числового значения.
Типы данных: double
Kappa
- Средняя скорость пересмотра для отклонения базового активаСредняя скорость ревизии для нижнего актива, заданная в виде скалярного числового значения.
Типы данных: double
SigmaV
- Волатильность отклонения базового активаВолатильность отклонения базового актива, заданная в виде скалярного числового значения.
Типы данных: double
RhoSV
- Корреляция между процессами Вайнера для базового актива и его отклонениемКорреляция между процессами Вайнера для базового актива и его отклонением, заданная в виде скалярного числового значения.
Типы данных: double
Задайте необязательные разделенные разделенными запятой парами Name,Value
аргументы. Name
- имя аргумента и Value
- соответствующее значение. Name
должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN
.
[Price,StrikeOut] = optByHestonFFT(Rate,AssetPrice,Settle,Maturity,OptSpec,Strike,V0,ThetaV,Kappa,SigmaV,RhoSV,'Basis',7)
'Basis'
- Основа прибора для подсчета дней0
(по умолчанию) | числовые значения: 0
, 1
, 2
, 3
, 4
, 6
, 7
, 8
, 9
, 10
, 11
, 12
, 13
Счетчик дней инструмента, заданный как разделенная разделенными запятой парами, состоящая из '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'
- Постоянно сложная доходность базовых активов0
(по умолчанию) | числоПостоянно сложное базовое выражение активов, указанный как разделенная запятой пара, состоящий из 'DividendYield'
и скалярное числовое значение.
Типы данных: double
'VolRiskPremium'
- Премия за риск волатильности0
(по умолчанию) | числоПремия за риск волатильности, заданная как разделенная разделенными запятой парами, состоящая из 'VolRiskPremium'
и скалярное числовое значение.
Типы данных: double
'LittleTrap'
- Флаг, указывающий на формулировку ловушки Little Hestontrue
(по умолчанию) | логическим со значениями true
или false
Флаг, указывающий на формулировку Little Heston Trap Альбрехером и
др., заданный как разделенная разделенными запятой парами, состоящая из 'LittleTrap' и логический:
true
- Используйте
композицию Albrecher et al.
false
- Использовать исходную формацию Хестона.
Типы данных: logical
'NumFFT'
- Количество точек сетки в переменной функции характеристики4096
(по умолчанию) | числоКоличество точек сетки в переменной функции характеристики и в каждом столбце логарифмической сетки, заданное как разделенная разделенными запятой парами, состоящая из 'NumFFT'
и скалярное числовое значение.
Типы данных: double
'CharacteristicFcnStep'
- Характеристическая функция, переменная интервала между сетками0.01
(по умолчанию) | числоХарактеристическая функция, переменная сетки интервала, задается как разделенная запятой пара, состоящая из 'CharacteristicFcnStep'
и скалярное числовое значение.
Типы данных: double
'LogStrikeStep'
- Логарифмический интервал сетки2*pi/NumFFT/CharacteristicFcnStep
(по умолчанию) | числоЛогарифмический интервал сетки, заданный как разделенная разделенными запятой парами, состоящая из 'LogStrikeStep'
и скалярное числовое значение.
Примечание
Если (LogStrikeStep
* CharacteristicFcnStep
) 2*pi
/ NumFFT
, используется БПФ. В противном случае используется FRFT.
Типы данных: double
'DampingFactor'
- Коэффициент затухания для композиции Карра-Мадана1.5
(по умолчанию) | числоКоэффициент затухания для композиции Карра-Мадана, заданная как разделенная запятой пара, состоящая из 'DampingFactor'
и скалярное числовое значение.
Типы данных: double
'Quadrature'
- Тип квадратурной матрицы"simpson"
(по умолчанию) | символьный вектор со значениями: 'simpson'
или 'trapezoidal'
| строковые массивы со значениями: "simpson"
или "trapezoidal"
Тип квадратуры, заданный как разделенная разделенными запятой парами, состоящая из 'Quadrature'
и один вектор символов или строковые массивы со значением 'simpson'
или 'trapezoidal'
.
Типы данных: char
| string
'ExpandOutput'
- Флаг для расширения выходовfalse
(выходы NINST
-by- 1
векторы) (по умолчанию) | логическим со значением true
или false
Флаг для расширения выходов, заданный как разделенная разделенными запятой парами, состоящая из 'ExpandOutput'
и логический:
true
- Если true
, выходы NRows
-by- NColumns
матрицы. NRows
количество ударов для каждого столбца и определяется Strike
вход. Для примера, Strike
может быть NRows
-by- 1
вектор, или NRows
-by- NColumns
матрица. Если Strike
пуст, NRows
равно NumFFT
. NColumns
определяется размерами AssetPrice
, Settle
, Maturity
, и OptSpec
, который должен быть либо скаляром, либо NColumns
-by- 1
векторы.
false
- Если false
, выходы NINST
-by- 1
векторы. Кроме того, входы Strike
, AssetPrice
, Settle
, Maturity
, и OptSpec
все должны быть либо скаляром, либо NINST
-by- 1
векторы.
Типы данных: logical
Price
- Опционные ценыОпционные цены, возвращенные как NINST
-by- 1
, или NRows
-by- NColumns
, в зависимости от ExpandOutput
.
StrikeOut
- Удары, соответствующие Price
Удары, соответствующие Price
, возвращается как NINST
-by- 1
, или NRows
-by- NColumns
, в зависимости от ExpandOutput
.
A vanilla option - это категория опций, которая включает только самые стандартные компоненты.
Ванильная опция имеет срок годности и прямолинейную цену доставки. Опции в американском стиле и опции в европейском стиле классифицируются как опции ванили.
Выплата для ванильной опции следующая:
Для вызова:
Для размещения:
где:
St - цена базового актива на t времени.
K - цена доставки.
Для получения дополнительной информации смотрите Опцию Vanilla.
Модель Хестона является расширением модели Блэка-Скоулза, где волатильность (квадратный корень отклонения) больше не принимается постоянной, и отклонение теперь следует стохастическому (CIR) процессу. Этот процесс позволяет моделировать подразумеваемые улыбки волатильности, наблюдаемые на рынке.
Стохастическое дифференциальное уравнение является:
где
r - непрерывная безрисковая ставка.
q - непрерывное дивидендное выражение.
S t является ценой актива в момент t.
v t является отклонением цены актива в то время t
v 0 является начальным отклонением цены актива при t = 0 для (v 0 > 0).
θ - долгосрочный уровень отклонений для (θ > 0).
κ - средняя скорость реверсии для отклонения (κ > 0).
σ v является волатильностью отклонения для (σ v > 0).
p - корреляция между процессами Вайнера W t и Wvt для (-1 ≤ p ≤ 1).
Функция характеристики для j = 1 (мера цены актива) и j = 2 (мера, нейтральная к риску) является:
где
ϕ - переменная функции характеристики.
ƛ VolRisk является премией за риск волатильности.
τ - время до зрелости (τ = T - t).
i - единичное мнимое число (i2 = -1).
Определения для C j и D j под «Ловушкой маленького Хестона» Albrecher et al. (2007):
Формулировка Карра и Мадана (1999 год) является популярной модифицированной реализацией среды (1993 год).
Вместо того, чтобы вычислять вероятности P 1 и P 2 как промежуточные шаги, Карр и Мадан разработали альтернативное выражение, так что взятие обратного преобразования Фурье дает саму опционную цену непосредственно.
где
τ - непрерывная безрисковая ставка.
q - непрерывное дивидендное выражение.
S t является ценой актива в момент t.
τ время к зрелости (τ = T - t).
Call (K) - цена вызова при K забастовки.
Put (K) - положительная цена при забастовке K
i является модулем мнимым числом (i2= -1)
.r- характеристическая функциональная переменная.
α - коэффициент затухания.
u - характерная переменная функции для интегрирования, где ϕ = (u - (α + 1) i).
f 2 (.r) является характеристической функцией для P 2.
P 2 - это вероятность S t > K под нейтральной к риску мерой для модели.
Чтобы применить FFT или FRFT к этой формулировке, переменная функции характеристики для интегрирования, u, дискретизирована в NumFFT
(N) точки с размером шага CharacteristicFcnStep
(И u), и логарифмический k дискретизирован в N точки с размером шага LogStrikeStep
(И k).
Дискретизированная характерная переменная функции для интегрирования, <reservedrangesplaceholder5> <reservedrangesplaceholder4> (для j = 1,2,3..., N), имеет минимальное значение 0 и максимальное значение (N-1) (Δ <reservedrangesplaceholder0>), и это приближает непрерывный диапазон интегрирования от 0 до бесконечности.
Дискретизированная логарифмическая сетка, k n (для n = 1, 2, 3, N), приблизительно центрирована вокруг ln
(S t), с минимальным значением
и максимальное значение
Где минимально допустимый удар
и максимально допустимый удар
В результате дискретизации выражение для опции вызова становится
где
Β u - размер шага дискретизированной переменной функции характеристики для интегрирования.
Β k - размер шага дискретизированного логарифмического удара.
N - количество точек БПФ или FRFT.
w j является весами для квадратуры, используемой для аппроксимации интеграла.
БПФ используется, чтобы вычислить вышеописанное выражение, если на k, и, u, распространяются следующие ограничения:
в противном случае функции используют метод FRFT, описанный в Chourdakis (2005).
[1] Albrecher, H., Mayer, P., Schoutens, W., and Tistaert, J. «The Little Heston Trap». Рабочий документ Linz and Graz University of Technology, K.U. Leuven, ING Financial Markets, 2006.
[2] Карр, П. и Д. Б. Мадан. «Оценка опций с использованием быстрого преобразования Фурье». Журнал вычислительных финансов. Vol 2. № 4. 1999.
[3] Chourdakis, K. «Опционное ценообразование с использованием дробного БПФ». Журнал вычислительных финансов. 2005.
[4] Heston, S. L. «A Closed-Form Решения for Опций with Stochastic Volatility with Applications to Bond and Currency Опций». Обзор финансовых исследований. Vol 6. № 2. 1993.
optByBatesFFT
| optByBatesNI
| optByHestonNI
| optByMertonFFT
| optByMertonNI
| optSensByBatesFFT
| optSensByBatesNI
| optSensByHestonFFT
| optSensByHestonNI
| optSensByMertonFFT
| optSensByMertonNI
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.