Цена опциона по модели Heston с использованием FFT и FRFT
[ добавляет необязательные аргументы пары имя-значение. Price,StrikeOut] = optByHestonFFT(___,Name,Value)
Использовать optByHestonFFT для калибровки страйк-сетки БПФ, а затем вычисления цен опционов и построения графика поверхности цен опционов.
Определение переменных опций и параметров модели Heston
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 вход пуст ( [] ), цены опционов будут рассчитываться по всей страйк-сетке FFT (или FRFT). Ударная сетка БПФ (или БПФ) определяется как exp(log-strike grid), где каждый столбец сетки log-strike имеет 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 gridMaxStrike = 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
Изменить количество точек БПФ (или БПФ) и Сравнить с optByHestonNI
Попробуйте использовать другое количество точек БПФ (или БПФ) и сравните результаты с прямым числовым интегрированием. В отличие от этого, 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
Дальнейшие корректировки БПФ (или БПФ)
Если значения в выходных данных CallFFT значительно отличаются от таковых в CallNI, попробуйте внести коррективы в optByHestonFFT настройки, такие как 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] = 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 MaxStrikeMaxStrike = 133.3566
Расчет опционной цены для одной забастовки
После определения требуемых настроек БПФ (или БПФ) используйте 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около-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около-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около-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около-1 или NColumnsоколо-1 вектор.
Дополнительные сведения о соответствующих размерах для AssetPrice, см. аргумент пара имя-значение ExpandOutput.
Типы данных: double
Settle - Дата расчета опциона Дата расчета опциона, указанная как NINSTоколо-1 или NColumnsоколо-1 вектор с использованием серийных номеров дат, векторов символов даты, массивов даты и времени или строковых массивов. Settle дата должна быть до Maturity дата.
Дополнительные сведения о соответствующих размерах для Settle, см. аргумент пара имя-значение ExpandOutput.
Типы данных: double | char | datetime | string
Maturity - Дата погашения опционаДата погашения опциона, указанная как NINSTоколо-1 или NColumnsоколо-1 вектор с использованием серийных номеров дат, векторов символов даты, массивов даты и времени или строковых массивов.
Дополнительные сведения о соответствующих размерах для Maturity, см. аргумент пара имя-значение ExpandOutput.
Типы данных: double | char | datetime | string
OptSpec - Определение опциона 'call' или 'put' | строковый массив со значениями "call" или "put"Определение опции как 'call' или 'put', указано как NINSTоколо-1 или NColumnsоколо-1 вектор с использованием массива ячеек из символьных векторов или строковых массивов со значениями "call" или "put".
Дополнительные сведения о соответствующих размерах для OptSpec, см. аргумент пара имя-значение ExpandOutput.
Типы данных: cell | string
Strike - Цена страйка опционаЦена страйка опциона, указанная как NINSTоколо-1, NRowsоколо-1, NRowsоколо-NColumns вектор ударных цен.
Если этот вход является пустым массивом ([]), цены опционов вычисляются по всей страйк-сетке FFT (или FRFT), которая определяется как exp(log-strike grid). Каждый столбец сетки log-strike имеет 'NumFFT' точки с 'LogStrikeStep' интервалы, которые грубо центрированы вокруг каждого элемента log(AssetPrice).
Дополнительные сведения о соответствующих размерах для Strike, см. аргумент пара имя-значение ExpandOutput.
Типы данных: double
V0 - Первоначальное отклонение базового активаНачальная дисперсия подстилающего актива, заданная как скалярное числовое значение.
Типы данных: double
ThetaV - Долгосрочное отклонение базового активаДолгосрочная дисперсия подстилающего актива, заданная как скалярное числовое значение.
Типы данных: double
Kappa - Средняя скорость пересмотра для отклонения базового активаСредняя скорость пересмотра для подстилающего актива, заданная как скалярное числовое значение.
Типы данных: double
SigmaV - Волатильность отклонения базового активаВолатильность дисперсии недоделанного актива, определяемая как скалярное числовое значение.
Типы данных: double
RhoSV - Корреляция между процессами Weiner для базового актива и его отклонениемКорреляция между процессами Вайнера для базового актива и его дисперсией, заданная как скалярное числовое значение.
Типы данных: 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 по Albrecher et
al., указанный как пара, разделенная запятыми, состоящая из: 'LittleTrap' и логическое:
true - Использовать
композицию Albrecher et al.
false - Использовать оригинальную формацию Хестона.
Типы данных: logical
'NumFFT' - Количество точек сетки в переменной функции признака4096
(по умолчанию) | числовыеКоличество точек сетки в переменной характеристической функции и в каждом столбце сетки log-strike, указанной как разделенная запятыми пара, состоящая из 'NumFFT' и скалярное числовое значение.
Типы данных: double
'CharacteristicFcnStep' - Переменный шаг сетки характеристической функции0.01
(по умолчанию) | числовыеПеременная шаг сетки характеристической функции, указанная как разделенная запятыми пара, состоящая из 'CharacteristicFcnStep' и скалярное числовое значение.
Типы данных: double
'LogStrikeStep' - Интервал между решетками каротажа2*pi/NumFFT/CharacteristicFcnStep
(по умолчанию) | числовыеИнтервал сетки log-strike, указанный как разделенная запятыми пара, состоящая из 'LogStrikeStep' и скалярное числовое значение.
Примечание
Если (LogStrikeStep*CharacteristicFcnStepявляется 2*pi/NumFFT, используется БПФ. В противном случае используется FRFT.
Типы данных: double
'DampingFactor' - Коэффициент демпфирования для состава Carr-Madan1.5
(по умолчанию) | числовыеКоэффициент демпфирования для состава Карра-Мадана, определяемый как пара, разделенная запятыми, состоящая из 'DampingFactor' и скалярное числовое значение.
Типы данных: double
'Quadrature' - Тип квадратуры"simpson"
(по умолчанию) | символьный вектор со значениями:'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 векторы.
Типы данных: logical
Price - Цены опционовЦены опционов, возвращенные как NINSTоколо-1, или NRowsоколо-NColumns, в зависимости от ExpandOutput.
StrikeOut - Удары, соответствующие PriceУдары, соответствующие Price, возвращено как NINSTоколо-1, или NRowsоколо-NColumns, в зависимости от ExpandOutput.
Вариант ванили - это категория вариантов, включающая только самые стандартные компоненты.
Вариант ванили имеет срок годности и простую цену страйка. Варианты в американском и европейском стиле классифицируются как варианты ванили.
Окупаемость опциона на ваниль выглядит следующим образом:
Для вызова: , 0)
Для put: , 0)
где:
St - цена базового актива в момент времени t.
K - цена удара.
Дополнительные сведения см. в разделе Параметр ванили.
Модель Хестона является расширением модели Блэка-Шоулза, где волатильность (квадратный корень дисперсии) больше не считается постоянной, и теперь дисперсия следует стохастическому (CIR) процессу. Этот процесс позволяет моделировать предполагаемые улыбки волатильности, наблюдаемые на рынке.
Стохастическое дифференциальное уравнение:
где
r - непрерывная безрисковая ставка.
q - непрерывный дивидендный выход.
St - цена актива в момент времени t.
vt - отклонение цены актива в момент времени t
v0 - начальное отклонение цены основного средства при t = 0 для (v0 > 0).
λ - долгосрочный уровень дисперсии для (start> 0).
δ - средняя скорость реверсирования для дисперсии для (start> 0).
startv - летучесть дисперсии для (startv > 0).
p - корреляция между процессами Вайнера Wt и Wvt для (-1 ≤ p ≤ 1).
Характеристическая функция j = 1 (мера цены актива) и j = 2 (нейтральная к риску мера):
b1 =κ +λVolRisk−pσv, b2 =κ +λVolRisk
где
start- переменная характеристической функции.
ƛVolRisk - премия за риск волатильности.
start- время до наступления зрелости (start= T - t).
i - единичное мнимое число (i2 = -1).
Определения для Cj и Dj в «The Little Heston Trap» Альбрехера и др. (2007) являются:
εj=bj−pσviϕ−djbj−pσviϕ + ди-джей
Формулировка Карра и Мадана (1999) является популярной модифицированной реализацией структуры Хестона (1993).
Вместо того, чтобы вычислять вероятности P1 и P2 как промежуточные шаги, Карр и Мадан разработали альтернативное выражение, так что принятие его обратного преобразования Фурье дает цену опциона непосредственно.
Пут (K) = вызов (K) + Ke − r
где
start- непрерывная безрисковая ставка.
q - непрерывный дивидендный выход.
St - цена актива в момент времени t.
start- время до зрелости (start= T-t).
Call (K) - цена вызова при ударе K.
Пут (К) - цена пут при ударе К
i - единичное воображаемое число (i2 = -1)
start- переменная характеристической функции.
α - коэффициент демпфирования.
u - это переменная характеристической функции для интегрирования, где start= = (u - (α + 1) i).
f2 (start) является характеристической функцией для P2.
P2 - вероятность St > K в рамках нейтральной по риску меры для модели.
Чтобы применить FFT или FRFT к этой формулировке, переменная характеристической функции для интегрирования u дискретизируется в NumFFT(N) точек с размером шага CharacteristicFcnStep (Δu), и логарифмический удар k дискретизируется в N точек с размером шага LogStrikeStep(Δk).
Дискретизированная переменная характеристической функции для интегрирования uj (для j = 1,2,3,..., N) имеет минимальное значение 0 и максимальное значение (N-1) (Δu) и аппроксимирует диапазон непрерывного интегрирования от 0 до бесконечности.
Дискретизированная логарифмическая решетка, kn (для n = 1, 2, 3, N) приблизительно центрирована вокругln(St), с минимальным значением
N2Δk
и максимальное значение, равное
1) Δk
Где минимально допустимый удар
N2Δk)
и максимально допустимый удар
Δk]
В результате дискретизации выражение для опции вызова становится
(St)] (uj)] wj
где
Δu - размер шага переменной дискретизированной характеристической функции для интегрирования.
Δk - размер шага дискретизированного логарифмического удара.
N - количество точек БПФ или БПФ.
wj - веса квадратуры, используемые для аппроксимации интеграла.
FFT используется для оценки вышеуказанного выражения, если Δk и Δu подвержены следующему ограничению:
2πN)
в противном случае функции используют метод FRFT, описанный в Chourdakis (2005).
[1] Альбрехер, Х., Майер, П., Шоутенс, В. и Тистаерт, Дж. «Маленькая ловушка Хестона». Рабочий документ, Линц и Грацский технологический университет, К. У. Левен, ING Financial Markets, 2006.
[2] Карр, П. и Д. Б. Мадан. «Оценка опциона с использованием быстрого преобразования Фурье». Журнал вычислительных финансов. Том 2. № 4. 1999.
[3] Чурдакис, К. «Опционное ценообразование с использованием дробного БПФ». Журнал вычислительных финансов. 2005.
[4] Хестон, С. Л. «Решение в закрытой форме для опционов со стохастической волатильностью с приложениями к облигациям и валютным опционам». Обзор финансовых исследований. Том 6. № 2. 1993.
optByBatesFFT | optByBatesNI | optByHestonNI | optByMertonFFT | optByMertonNI | optSensByBatesFFT | optSensByBatesNI | optSensByHestonFFT | optSensByHestonNI | optSensByMertonFFT | optSensByMertonNI
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.