Swaption объект прибора
Создать и оценить Swaption объект инструмента с использованием этого рабочего процесса:
Использовать fininstrument для создания Swaption объект прибора.
Использовать finmodel для указания HullWhite, BlackKarasinski, Black, Normal, или SABR модель для Swaption инструмент.
Использовать finpricer для указания Normal, SABR, Black, HullWhite, или IRTree метод ценообразования для 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
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 object и используйте 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 object и используйте 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 object и используйте 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 Параметры модели
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 object и используйте 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');

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