Swaption объект прибора
Создайте и оцените Swaption объект инструмента, использующий этот рабочий процесс:
Дополнительные сведения об этом рабочем процессе см. в разделе Запуске с рабочими процессами с использованием объектной среды для ценообразования финансовых инструментов.
Для получения дополнительной информации о доступных моделях и методах ценообразования для Swaption инструмент, см. «Выбор инструментов», «Модели» и «Цены».
создает SwaptionInstrument = fininstrument(InstrumentType,'Strike',strike_value,'ExerciseDate',exercice_date)Swaption объект путем определения InstrumentType и устанавливает свойства для необходимых аргументов пары "имя-значение" Strike и ExerciseDate. Для получения дополнительной информации о Swaption инструмент, см. Подробнее о.
устанавливает необязательные свойства с помощью дополнительных пар "имя-значение" в дополнение к необходимым аргументам в предыдущем синтаксисе. Для примера, SwaptionInstrument = fininstrument(___,Name,Value)SwaptionInstrument = fininstrument("Swaption",'Strike',0.67,'ExerciseDate',datetime(2019,1,30),'Swap',Swap_obj,'OptionType',"put",'ExerciseStyle',"European",'Name',"swaption_instrument") создает Swaption поставить инструмент с ударом 0,67 и европейскими упражнениями. Можно задать несколько аргументы пары "имя-значение".
InstrumentType - Тип КИПиА"Swaption" | вектор символов с 'Swaption' значенийТип инструмента, заданный как строка со значением "Swaption" или вектор символов со значением 'Swaption'.
Типы данных: char | string
Swaption Аргументы в виде пар имя-значениеУкажите требуемые и необязательные разделенные запятой пары Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.
SwaptionInstrument = fininstrument("Swaption",'Strike',.67,'ExerciseDate',datetime(2019,1,30),'Swap',Swap_obj,'OptionType',"put",'ExerciseStyle',"European",'Name',"swaption_instrument")Swaption Аргументы в виде пар имя-значение'Strike' - Значение падения опцииЗначение падения опции, заданное как разделенная разделенными запятой парами, состоящая из 'Strike' и скаляр неотрицательное десятичное значение.
Типы данных: double
'ExerciseDate' - Дата выполнения опцииДата выполнения опции, заданная как разделенная разделенными запятой парами, состоящая из 'ExerciseDate' и скалярное значение datetime, серийный номер даты, вектор символов даты или строка даты.
Примечание
Для европейской опции существует только один ExerciseDate на дату истечения срока действия опции.
Если вы используете вектор символов даты или строку даты, формат должен быть распознаваемым datetime потому что ExerciseDate свойство сохранено как datetime.
Типы данных: double | char | string | datetime
'Swap' - Базовые Swap объектSwap объектБазовые Swap объект, заданный как разделенная разделенными запятой парами, состоящая из 'Swap' и скаляр Swap объект.
Типы данных: object
Swaption Аргументы в виде пар имя-значение'OptionType' - Тип опции "call" (по умолчанию) | строку со значениями "call" или "put" | вектор символов с 'call' значений или 'put'Тип опции, заданный как разделенная разделенными запятой парами, состоящая из 'OptionType' и скалярную строку или вектор символов.
Типы данных: char | string
'ExerciseStyle' - Стиль упражнения опции"European" (по умолчанию) | строку со значением "European"
| вектор символов с 'European' значенийОпция стиль упражнения, заданный как разделенная запятой пара, состоящий из 'ExerciseStyle' и скалярную строку или вектор символов.
Примечание
Когда вы задаете Swap инструмент как базовый актив для Swaption инструмент и использование Normal, SABR, Black, или HullWhite цена, Swap контрольно-измерительные LegType должен быть ["fixed","float"] или ["float","fixed"] и Swaption контрольно-измерительные ExerciseStyle должен быть "European".
Типы данных: string | char
'Name' - Определяемое пользователем имя прибора" "
(по умолчанию) | строку | вектор символовОпределяемое пользователем имя инструмента, заданное как разделенная разделенными запятой парами, состоящая из 'Name' и скалярную строку или вектор символов.
Типы данных: char | string
Strike - Значение падения опцииЗначение падения опции, возвращаемое как скаляр неотрицательное десятичное значение.
Типы данных: double
ExerciseDate - Дата выполнения опцииДата выполнения опции, возвращенная как datetime.
Типы данных: datetime
Swap - Базовые Swap объектSwap объектSwap объект, возвращенный в виде скаляра Swap объект.
Типы данных: object
OptionType - Тип опции"call" (по умолчанию) | строку со значением "call" или "put"Тип опции, возвращенный как строка со значением "call" или "put".
Типы данных: string
ExerciseStyle - Стиль упражнения опции"European" (по умолчанию) | строку со значением "European"Опция стиле упражнения возвращается как строка со значением "European".
Типы данных: string
Name - Определяемое пользователем имя прибора" "
(по умолчанию) | строкуОпределяемое пользователем имя инструмента, возвращаемое как строка.
Типы данных: string
Этот пример показывает рабочий процесс, чтобы оценить Swaption инструмент, когда вы используете SABR модель и SABR метод ценообразования.
Создание ratecurve Объект
Создайте ratecurve объект, использующий ratecurve.
Settle = datetime(2018,9,15); Type = 'zero'; ZeroTimes = [calmonths(6) calyears([1 2 3 4 5 7 10 20 30])]'; ZeroRates = [0.0052 0.0055 0.0061 0.0073 0.0094 0.0119 0.0168 0.0222 0.0293 0.0307]'; ZeroDates = Settle + ZeroTimes; myRC = ratecurve('zero',Settle,ZeroDates,ZeroRates)
myRC =
ratecurve with properties:
Type: "zero"
Compounding: -1
Basis: 0
Dates: [10x1 datetime]
Rates: [10x1 double]
Settle: 15-Sep-2018
InterpMethod: "linear"
ShortExtrapMethod: "next"
LongExtrapMethod: "previous"
Создание Swap Объект прибора
Использование fininstrument чтобы создать базовую Swap объект прибора.
Swap = fininstrument("Swap",'Maturity',datetime(2027,3,15),'LegRate',[0 0],'LegType',... ["float","fixed"],'Notional',100,'StartDate',datetime(2022,3,15),'Name',"swap_instrument")
Swap =
Swap with properties:
LegRate: [0 0]
LegType: ["float" "fixed"]
Reset: [2 2]
Basis: [0 0]
Notional: 100
LatestFloatingRate: [NaN NaN]
ResetOffset: [0 0]
DaycountAdjustedCashFlow: [0 0]
ProjectionCurve: [0x0 ratecurve]
BusinessDayConvention: ["actual" "actual"]
Holidays: NaT
EndMonthRule: [1 1]
StartDate: 15-Mar-2022
Maturity: 15-Mar-2027
Name: "swap_instrument"
Создание Swaption Объект прибора
Использование fininstrument для создания Swaption объект прибора.
Swaption = fininstrument("Swaption",'Strike',0.02,'ExerciseDate',datetime(2022,3,15),'Swap',Swap,'Name',"swaption_option")
Swaption =
Swaption with properties:
OptionType: "call"
ExerciseStyle: "european"
ExerciseDate: 15-Mar-2022
Strike: 0.0200
Swap: [1x1 fininstrument.Swap]
Name: "swaption_option"
Создание SABR Объект модели
Использование finmodel для создания SABR объект модели.
SabrModel = finmodel("SABR",'Alpha',0.032,'Beta',0.04,'Rho',.08,'Nu',0.49,'Shift',0.002)
SabrModel =
SABR with properties:
Alpha: 0.0320
Beta: 0.0400
Rho: 0.0800
Nu: 0.4900
Shift: 0.0020
VolatilityType: "black"
Создание SABR Объект прейскуранта
Использование finpricer для создания SABR и используйте объект pricer ratecurve объект для 'DiscountCurve' аргумент пары "имя-значение".
outPricer = finpricer("analytic",'Model',SabrModel,'DiscountCurve',myRC)
outPricer =
SABR with properties:
DiscountCurve: [1x1 ratecurve]
Model: [1x1 finmodel.SABR]
Ценовые Swaption Инструмент
Использование price чтобы вычислить цену для Swaption прибора.
Price = price(outPricer,Swaption)
Price = 10.8558
Этот пример показывает рабочий процесс, чтобы оценить Swaption инструмент, когда вы используете Black модель и Black метод ценообразования.
Создание ratecurve Объект
Создайте ratecurve объект, использующий ratecurve.
Settle = datetime(2018,9,15); Type = 'zero'; ZeroTimes = [calmonths(6) calyears([1 2 3 4 5 7 10 20 30])]'; ZeroRates = [0.0052 0.0055 0.0061 0.0073 0.0094 0.0119 0.0168 0.0222 0.0293 0.0307]'; ZeroDates = Settle + ZeroTimes; myRC = ratecurve('zero',Settle,ZeroDates,ZeroRates)
myRC =
ratecurve with properties:
Type: "zero"
Compounding: -1
Basis: 0
Dates: [10x1 datetime]
Rates: [10x1 double]
Settle: 15-Sep-2018
InterpMethod: "linear"
ShortExtrapMethod: "next"
LongExtrapMethod: "previous"
Создание Swap Объект прибора
Использование fininstrument чтобы создать базовую Swap объект прибора.
Swap = fininstrument("Swap",'Maturity',datetime(2027,3,15),'LegRate',[0 0],'LegType',... ["float","fixed"],'Notional',100,'StartDate',datetime(2022,3,15),'Name',"swap_instrument")
Swap =
Swap with properties:
LegRate: [0 0]
LegType: ["float" "fixed"]
Reset: [2 2]
Basis: [0 0]
Notional: 100
LatestFloatingRate: [NaN NaN]
ResetOffset: [0 0]
DaycountAdjustedCashFlow: [0 0]
ProjectionCurve: [0x0 ratecurve]
BusinessDayConvention: ["actual" "actual"]
Holidays: NaT
EndMonthRule: [1 1]
StartDate: 15-Mar-2022
Maturity: 15-Mar-2027
Name: "swap_instrument"
Создание Swaption Объект прибора
Использование fininstrument для создания Swaption объект прибора.
Swaption = fininstrument("Swaption",'Strike',0.02,'ExerciseDate',datetime(2022,3,15),'Swap',Swap,'Name',"swaption_option")
Swaption =
Swaption with properties:
OptionType: "call"
ExerciseStyle: "european"
ExerciseDate: 15-Mar-2022
Strike: 0.0200
Swap: [1x1 fininstrument.Swap]
Name: "swaption_option"
Создание Black Объект модели
Использование finmodel для создания Black объект модели.
BlackModel = finmodel("Black",'Volatility',0.032,'Shift',0.002)
BlackModel =
Black with properties:
Volatility: 0.0320
Shift: 0.0020
Создание Black Объект прейскуранта
Использование finpricer для создания Black и используйте объект pricer ratecurve объект для 'DiscountCurve' аргумент пары "имя-значение".
outPricer = finpricer("analytic",'Model',BlackModel,'DiscountCurve',myRC)
outPricer =
Black with properties:
Model: [1x1 finmodel.Black]
DiscountCurve: [1x1 ratecurve]
Ценовые Swaption Инструмент
Использование price чтобы вычислить цену для Swaption прибора.
Price = price(outPricer,Swaption)
Price = 3.3116
Этот пример показывает рабочий процесс, чтобы оценить Swaption инструмент, когда вы используете HullWhite модель и IRTree метод ценообразования.
Создание ratecurve Объект
Создайте ratecurve объект, использующий ratecurve.
Settle = datetime(2018,9,15); Type = 'zero'; ZeroTimes = [calmonths(6) calyears([1 2 3 4 5 7 10 20 30])]'; ZeroRates = [0.0052 0.0055 0.0061 0.0073 0.0094 0.0119 0.0168 0.0222 0.0293 0.0307]'; ZeroDates = Settle + ZeroTimes; myRC = ratecurve('zero',Settle,ZeroDates,ZeroRates)
myRC =
ratecurve with properties:
Type: "zero"
Compounding: -1
Basis: 0
Dates: [10x1 datetime]
Rates: [10x1 double]
Settle: 15-Sep-2018
InterpMethod: "linear"
ShortExtrapMethod: "next"
LongExtrapMethod: "previous"
Создание Swap Объект прибора
Использование fininstrument чтобы создать базовую Swap объект прибора.
Swap = fininstrument("Swap",'Maturity',datetime(2027,3,15),'LegRate',[0 0],'LegType',... ["float","fixed"],'Notional',100,'StartDate',datetime(2022,3,15),'Name',"swap_instrument")
Swap =
Swap with properties:
LegRate: [0 0]
LegType: ["float" "fixed"]
Reset: [2 2]
Basis: [0 0]
Notional: 100
LatestFloatingRate: [NaN NaN]
ResetOffset: [0 0]
DaycountAdjustedCashFlow: [0 0]
ProjectionCurve: [0x0 ratecurve]
BusinessDayConvention: ["actual" "actual"]
Holidays: NaT
EndMonthRule: [1 1]
StartDate: 15-Mar-2022
Maturity: 15-Mar-2027
Name: "swap_instrument"
Создание Swaption Объект прибора
Использование fininstrument для создания Swaption объект прибора.
Swaption = fininstrument("Swaption",'Strike',0.02,'ExerciseDate',datetime(2022,3,15),'Swap',Swap,'Name',"swaption_option")
Swaption =
Swaption with properties:
OptionType: "call"
ExerciseStyle: "european"
ExerciseDate: 15-Mar-2022
Strike: 0.0200
Swap: [1x1 fininstrument.Swap]
Name: "swaption_option"
Создание HullWhite Объект модели
Использование finmodel для создания HullWhite объект модели.
HullWhiteModel = finmodel("HullWhite",'Alpha',0.032,'Sigma',0.04)
HullWhiteModel =
HullWhite with properties:
Alpha: 0.0320
Sigma: 0.0400
Создание IRTree Объект прейскуранта
Использование finpricer для создания IRTree и используйте объект pricer ratecurve объект для 'DiscountCurve' аргумент пары "имя-значение".
outPricer = finpricer("IRTree",'Model',HullWhiteModel,'DiscountCurve',myRC,'TreeDates',ZeroDates)
outPricer =
HWBKTree with properties:
Tree: [1x1 struct]
TreeDates: [10x1 datetime]
Model: [1x1 finmodel.HullWhite]
DiscountCurve: [1x1 ratecurve]
Ценовые Swaption Инструмент
Использование price вычислить цену и чувствительность для Swaption прибора.
[Price, outPR] = price(outPricer,Swaption,["all"])Price = 14.6581
outPR =
priceresult with properties:
Results: [1x4 table]
PricerData: [1x1 struct]
outPR.Results
ans=1×4 table
Price Vega Gamma Delta
______ ______ _______ _____
14.658 321.44 -2261.6 142.2
Этот пример показывает, как калибровать сдвинутые SABR параметры модели для Swaption инструмент, когда вы используете SABR метод ценообразования.
Загрузка рыночных данных
% Zero curve ValuationDate = datetime("5-Mar-2016", 'Locale', 'en_US'); ZeroDates = datemnth(ValuationDate,[1 2 3 6 9 12*[1 2 3 4 5 6 7 8 9 10 12]])'; ZeroRates = [-0.33 -0.28 -0.24 -0.12 -0.08 -0.03 0.015 0.028 ... 0.033 0.042 0.056 0.095 0.194 0.299 0.415 0.525]'/100; Compounding = 1; ZeroCurve = ratecurve("zero",ValuationDate,ZeroDates,ZeroRates,'Compounding',Compounding)
ZeroCurve =
ratecurve with properties:
Type: "zero"
Compounding: 1
Basis: 0
Dates: [16x1 datetime]
Rates: [16x1 double]
Settle: 05-Mar-2016
InterpMethod: "linear"
ShortExtrapMethod: "next"
LongExtrapMethod: "previous"
% Define the swaptions SwaptionSettle = datetime("5-Mar-2016", 'Locale', 'en_US'); SwaptionExerciseDate = datetime("5-Mar-2017", 'Locale', 'en_US'); SwaptionStrikes = (-0.6:0.01:1.6)'/100; % Include negative strikes SwapMaturity = datetime("5-Mar-2022", 'Locale', 'en_US'); % Maturity of underlying swap OptSpec = 'call';
Вычисление скорости прямого свопа путем создания Swap Инструмент
Использование fininstrument для создания Swap объект прибора.
LegRate = [0 0]; Swap = fininstrument("Swap", 'Maturity', SwapMaturity, 'LegRate', LegRate, "LegType",["fixed" "float"],... "ProjectionCurve", ZeroCurve, "StartDate", SwaptionExerciseDate)
Swap =
Swap with properties:
LegRate: [0 0]
LegType: ["fixed" "float"]
Reset: [2 2]
Basis: [0 0]
Notional: 100
LatestFloatingRate: [NaN NaN]
ResetOffset: [0 0]
DaycountAdjustedCashFlow: [0 0]
ProjectionCurve: [1x2 ratecurve]
BusinessDayConvention: ["actual" "actual"]
Holidays: NaT
EndMonthRule: [1 1]
StartDate: 05-Mar-2017
Maturity: 05-Mar-2022
Name: ""
ForwardValue = parswaprate(Swap,ZeroCurve)
ForwardValue = 7.3271e-04
Загрузка рыночных подразумеваемых данных о волатильности
Рыночные волатильности свопциона котируются с точки зрения сдвинутых черных волатильностей с 0.8 процентный сдвиг.
StrikeGrid = [-0.5; -0.25; -0.125; 0; 0.125; 0.25; 0.5; 1.0; 1.5]/100;
MarketStrikes = ForwardValue + StrikeGrid;
Shift = 0.008; % 0.8 percent shift
MarketShiftedBlackVolatilities = [21.1; 15.3; 14.0; 14.6; 16.0; 17.7; 19.8; 23.9; 26.2]/100;
ATMShiftedBlackVolatility = MarketShiftedBlackVolatilities(StrikeGrid==0);Калибровка сдвинутых SABR Параметры модели
The Beta параметр предопределен на 0.5. Использование volatilities для вычисления подразумеваемой волатильности.
Beta = 0.5; % Calibrate Alpha, Rho, and Nu objFun = @(X) MarketShiftedBlackVolatilities - volatilities(finpricer("Analytic", 'Model', ... finmodel("SABR", 'Alpha', X(1), 'Beta', Beta, 'Rho', X(2), 'Nu', X(3), 'Shift', Shift), ... 'DiscountCurve', ZeroCurve), SwaptionExerciseDate, ForwardValue, MarketStrikes); X = lsqnonlin(objFun, [0.5 0 0.5], [0 -1 0], [Inf 1 Inf]);
Local minimum possible. lsqnonlin stopped because the final change in the sum of squares relative to its initial value is less than the value of the function tolerance.
Alpha = X(1); Rho = X(2); Nu = X(3);
Создание SABR Модель с использованием калиброванных параметров
Использование finmodel для создания SABR объект модели.
SABRModel = finmodel("SABR",'Alpha',Alpha,'Beta',Beta,'Rho',Rho,'Nu',Nu,'Shift',Shift)
SABRModel =
SABR with properties:
Alpha: 0.0135
Beta: 0.5000
Rho: 0.4654
Nu: 0.4957
Shift: 0.0080
VolatilityType: "black"
Создание SABR Расчет цены с использованием калиброванных SABR Модель и вычисление волатильности
Использование finpricer для создания SABR и используйте объект pricer ratecurve объект для 'DiscountCurve' аргумент пары "имя-значение".
SABRPricer = finpricer("Analytic", 'Model', SABRModel, 'DiscountCurve', ZeroCurve)
SABRPricer =
SABR with properties:
DiscountCurve: [1x1 ratecurve]
Model: [1x1 finmodel.SABR]
SABRShiftedBlackVolatilities = volatilities(SABRPricer, SwaptionExerciseDate, ForwardValue, SwaptionStrikes)
SABRShiftedBlackVolatilities = 221×1
0.2978
0.2911
0.2848
0.2787
0.2729
0.2673
0.2620
0.2568
0.2518
0.2470
⋮
figure; plot(MarketStrikes, MarketShiftedBlackVolatilities, 'o', ... SwaptionStrikes, SABRShiftedBlackVolatilities); h = gca; line([0,0],[min(h.YLim),max(h.YLim)],'LineStyle','--'); ylim([0.13 0.31]) xlabel('Strike'); legend('Market quotes','Shifted SABR', 'location', 'southeast'); title (['Shifted Black Volatility (',num2str(Shift*100),' percent shift)']);

Ценовые Swaption Инструменты, использующие калиброванные SABR Модель и SABR Калькулятор цен
% Create swaption instruments NumInst = length(SwaptionStrikes); Swaptions(NumInst, 1) = fininstrument("Swaption", ... 'Strike', SwaptionStrikes(1), 'ExerciseDate', SwaptionExerciseDate(1), 'Swap', Swap); for k = 1:NumInst Swaptions(k) = fininstrument("Swaption", 'Strike', SwaptionStrikes(k), ... 'ExerciseDate', SwaptionExerciseDate, 'Swap', Swap, 'OptionType', OptSpec); end Swaptions
Swaptions=221×1 object
16x1 Swaption array with properties:
OptionType
ExerciseStyle
ExerciseDate
Strike
Swap
Name
⋮
% Price swaptions using the SABR pricer SwaptionPrices = price(SABRPricer,Swaptions); figure; plot(SwaptionStrikes, SwaptionPrices, 'r'); h = gca; line([0,0],[min(h.YLim),max(h.YLim)],'LineStyle','--'); xlabel('Strike'); title ('Swaption Price');

Свопцион call swaption или плательщика позволяет покупателю опции заключить процентный своп, при котором покупатель опции платит фиксированную ставку и получает плавающую ставку.
Свопцион put swaption или приемник позволяет покупателю опции заключить процентный своп, при котором покупатель опции получает фиксированную ставку и платит плавающую ставку.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.