Swaption инструментальный объект
Создайте и оцените Swaption инструментальный объект для одного или нескольких инструментов Swaption с помощью этого рабочего процесса:
Использование fininstrument создать Swaption инструментальный объект для одного или нескольких инструментов Swaption.
Использование finmodel задавать HullWhite, BlackKarasinski, Black, Normal, SABR, или LinearGaussian2F модель для Swaption инструментальный объект.
Выберите метод ценообразования.
При использовании HullWhite, BlackKarasinski, Black, Normal, или SABR модель, использовать finpricer задавать Normal, SABR, Black, HullWhite, или IRTree метод ценообразования для одного или нескольких Swaption инструменты.
При использовании HullWhite или LinearGaussian2F модель, использовать finpricer задавать IRMonteCarlo метод ценообразования для одного или нескольких Swaption инструменты.
Для получения дополнительной информации об этом рабочем процессе смотрите Начало работы с Рабочими процессами Используя Основанную на объектах Среду для Оценки Финансовых инструментов.
Для получения дополнительной информации о доступных моделях и методах ценообразования для Swaption инструмент, смотрите, Выбирают Instruments, Models и Pricers.
создает SwaptionInstrument = fininstrument(InstrumentType,'Strike',strike_value,'ExerciseDate',exercice_date)Swaption объект для одного или нескольких инструментов 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'Инструментальный тип в виде строки со значением "Swaption", вектор символов со значением 'Swaption', NINST- 1 массив строк со значениями "Swaption", или NINST- 1 массив ячеек из символьных векторов со значениями 'Swaption'.
Типы данных: char | cell | 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' и скалярное неотрицательное десятичное число или NINST- 1 вектор из неотрицательных десятичных чисел.
Типы данных: double
ExerciseDate — Дата осуществления опцииДата осуществления опции в виде разделенной запятой пары, состоящей из 'ExerciseDate' и скалярный datetime, последовательный номер даты, вектор символов даты, строка даты или NINST- 1 вектор из datetimes, последовательных чисел даты, массива ячеек векторов символов даты или массива строки даты.
Примечание
Для европейской опции существует только один ExerciseDate на дате окончания срока действия опции.
Если вы используете векторы символов даты или строки даты, формат должен быть распознаваемым datetime потому что ExerciseDate свойство хранится как datetime.
Типы данных: double | char | cell | string | datetime
Swap — Лежание в основе Swap объектSwap возразите | вектор из Swap объектыЛежание в основе Swap объект в виде разделенной запятой пары, состоящей из 'Swap' и скалярный Swap возразите или NINST- 1 вектор из Swap объекты.
Типы данных: object
Swaption Аргументы в виде пар имя-значениеOptionType — Тип опции "call" (значение по умолчанию) | представляет в виде строки со значениями "call" или "put" | массив строк со значениями "call" или "put" | вектор символов со значением 'call' или 'put' | массив ячеек из символьных векторов со значениями 'call' или 'put'Тип опции в виде разделенной запятой пары, состоящей из 'OptionType' и скалярная строка или вектор символов или NINST- 1 массив ячеек из символьных векторов или массив строк.
Типы данных: char | cell | string
ExerciseStyle — Стиль осуществления опции"European" (значение по умолчанию) | представляет в виде строки со значением "European"
| массив строк со значениями "European"
| вектор символов со значением 'European' | массив ячеек из символьных векторов со значениями "European"
Осуществление опции разрабатывает в виде разделенной запятой пары, состоящей из 'ExerciseStyle' и скалярная строка или вектор символов или NINST- 1 массив ячеек из символьных векторов или массив строк.
Примечание
Когда вы задаете Swap инструмент как базовый актив для Swaption инструмент и использование Normal, SABR, Black, или HullWhite калькулятор цен, Swap инструмент LegType должен быть ["fixed","float"] или ["float","fixed"] и Swaption инструмент ExerciseStyle должен быть "European".
Типы данных: string | cell | char
Name — Пользовательское имя для инструмента" "
(значение по умолчанию) | представляет в виде строки | массив строк | вектор символов | массив ячеек из символьных векторовПользовательское имя для инструмента в виде разделенной запятой пары, состоящей из 'Name' и скалярная строка или вектор символов или NINST- 1 массив ячеек из символьных векторов или массив строк.
Типы данных: char | cell | string
Strike — Значение забастовки опцииЗначение забастовки опции, возвращенное как скалярное неотрицательное десятичное число или NINST- 1 вектор из неотрицательных десятичных чисел.
Типы данных: double
ExerciseDate — Дата осуществления опцииДата осуществления опции, возвращенная как скалярный datetime или NINST- 1 вектор из datetimes.
Типы данных: datetime
Swap — Лежание в основе Swap объектSwap возразите | вектор из Swap объектыSwap объект, возвращенный как скалярный Swap возразите или NINST- 1 вектор из Swap объекты.
Типы данных: object
OptionType — Тип опции"call" (значение по умолчанию) | представляет в виде строки со значением "call" или "put" | массив строк со значениями "call" или "put"Тип опции, возвращенный как скалярная строка или NINST- 1 массив строк со значением "call" или "put".
Типы данных: string
ExerciseStyle — Стиль осуществления опции"European" (значение по умолчанию) | представляет в виде строки со значением "European" | массив строк со значениями "European"Стиль осуществления опции, возвращенный как скалярная строка или NINST- 1 массив строк со значением "European".
Типы данных: string
Name — Пользовательское имя для инструмента" "
(значение по умолчанию) | представляет в виде строки | массив строкПользовательское имя для инструмента, возвращенного как строка или NINST- 1 массив строк.
Типы данных: 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 объект калькулятора цен и использование 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 инструмент, когда вы используете 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.
Swaption = fininstrument("Swaption",'Strike',[0.02 ; 0.03 ; 0.04],'ExerciseDate',datetime([2022,3,15 ; 2022,4,15 ; 2022,5,15]),'Swap',Swap,'Name',"swaption_option")
Swaption=3×1 object
3x1 Swaption array with properties:
OptionType
ExerciseStyle
ExerciseDate
Strike
Swap
Name
Создайте 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 объект калькулятора цен и использование 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 = 3×1
10.8558
9.0442
7.4883
Этот пример показывает рабочий процесс, чтобы оценить 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 объект калькулятора цен и использование 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 объект калькулятора цен и использование 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
Этот пример показывает рабочий процесс, чтобы оценить Swaption инструмент при использовании LinearGaussian2F модель и IRMonteCarlo метод ценообразования.
Создайте ratecurve Объект
Создайте ratecurve объект с помощью ratecurve.
Settle = datetime(2019,1,1); 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: 01-Jan-2019
InterpMethod: "linear"
ShortExtrapMethod: "next"
LongExtrapMethod: "previous"
Создайте Swap Инструментальный объект
Используйте fininstrument создать базовый Swap инструментальный объект.
Swap = fininstrument("Swap",'Maturity',datetime(2022,1,1),'LegRate',[0.05,0.04],'Name',"swap_instrument")
Swap =
Swap with properties:
LegRate: [0.0500 0.0400]
LegType: ["fixed" "float"]
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: NaT
Maturity: 01-Jan-2022
Name: "swap_instrument"
Создайте Swaption Инструментальный объект
Используйте fininstrument создать Swaption инструментальный объект.
Swaption = fininstrument("Swaption",'Strike',0.02,'ExerciseDate',datetime(2021,7,1),'Swap',Swap,'Name',"swaption_option")
Swaption =
Swaption with properties:
OptionType: "call"
ExerciseStyle: "european"
ExerciseDate: 01-Jul-2021
Strike: 0.0200
Swap: [1x1 fininstrument.Swap]
Name: "swaption_option"
Создайте LinearGaussian2F Объект модели
Используйте finmodel создать LinearGaussian2F объект модели.
LinearGaussian2FModel = finmodel("LinearGaussian2F",'Alpha1',0.07,'Sigma1',0.01,'Alpha2',0.5,'Sigma2',0.006,'Correlation',-0.7)
LinearGaussian2FModel =
LinearGaussian2F with properties:
Alpha1: 0.0700
Sigma1: 0.0100
Alpha2: 0.5000
Sigma2: 0.0060
Correlation: -0.7000
Создайте IRMonteCarlo Объект калькулятора цен
Используйте finpricer создать IRMonteCarlo объект калькулятора цен и использование ratecurve объект для 'DiscountCurve' аргумент пары "имя-значение".
simDates = datetime(2019,7,1)+calmonths(0:6:30); outPricer = finpricer("IRMonteCarlo",'Model',LinearGaussian2FModel,'DiscountCurve',myRC,'SimulationDates',simDates)
outPricer =
G2PPMonteCarlo with properties:
NumTrials: 1000
RandomNumbers: []
DiscountCurve: [1x1 ratecurve]
SimulationDates: [01-Jul-2019 01-Jan-2020 01-Jul-2020 ... ]
Model: [1x1 finmodel.LinearGaussian2F]
Цена Swaption Инструмент
Используйте price вычислить цену и чувствительность для Swaption инструмент.
[Price,outPR] = price(outPricer,Swaption,["all"])Price = 1.5065
outPR =
priceresult with properties:
Results: [1x4 table]
PricerData: [1x1 struct]
outPR.Results
ans=1×4 table
Price Delta Gamma Vega
______ ______ ______ _________________
1.5065 44.746 -257.2 1.6729 -2.0015
В этом примере показано, как калибровать переключенный 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
Загрузите данные о подразумеваемой волатильности рынка
Рынок swaption колебания заключается в кавычки в терминах переключенных Черных колебаний с 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 объект калькулятора цен и использование 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 или плательщик swaption позволяют покупателю опции вводить в процентную ставку, загружают, который покупатель опции платит фиксированной процентной ставке и получает плавающий курс.
put swaption или приемник swaption позволяют покупателю опции вводить в процентную ставку, загружают, который покупатель опции получает фиксированную процентную ставку и платит плавающему курсу.
Swap | finmodel | finpricer | volatilitiesУ вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.