Загрузите кривую процентной ставки из данных о рынке
создает структуру данных для того, чтобы хранить данные о структуре термина процентной ставки. outCurve = irbootstrap(BootInstruments,Settle)outCurve выходом является ratecurve объект.
задает опции с помощью одного или нескольких аргументов пары "имя-значение" в дополнение к любой из комбинаций входных аргументов в предыдущем синтаксисе. Например, outCurve = irbootstrap(___,Name,Value)OutCurve = irbootstrap(Settle,BootInstruments,'Type',"zero",'Compounding',2,'Basis',5,'InterpMethod',"cubic") загружает кривую нулевой ширины от BootInstruments.
ratecurve Объект из данных о рынкеЗадайте депозит и подкачайте параметры
Settle = datetime(2018,3,21);
DepRates = [.0050769 .0054934 .0061432 .0072388 .0093263]';
DepTimes = [1 2 3 6 12]';
DepDates = datemnth(Settle,DepTimes);
nDeposits = length(DepTimes);
SwapRates = [.0112597 0;.0128489 0;.0138917 0;.0146135 0;.0151175 0;...
.0155184 0;.0158536 0;.0161435 0];
SwapTimes = (2:9)';
SwapDates = datemnth(Settle,12*SwapTimes);
nSwaps = length(SwapTimes);
nInst = nDeposits + nSwaps;Создайте вектор из инструментов подкачки рынка
Используйте fininstrument создать вектор из рынка Deposit и Swap инструментальные объекты.
BootInstruments(nInst,1) = fininstrument.FinInstrument; for ii=1:length(DepDates) BootInstruments(ii) = fininstrument("deposit",'Maturity',DepDates(ii),'Rate',DepRates(ii)); end for ii=1:length(SwapDates) BootInstruments(ii+nDeposits) = fininstrument("swap",'Maturity',SwapDates(ii),'LegRate',[SwapRates(ii) 0]); end
Создайте ratecurve Объект для кривой Нулевого Уровня
Используйте irbootstrap создать ratecurve объект для кривой нулевого уровня.
ZeroCurve = irbootstrap(BootInstruments,Settle)
ZeroCurve =
ratecurve with properties:
Type: "zero"
Compounding: -1
Basis: 0
Dates: [13x1 datetime]
Rates: [13x1 double]
Settle: 21-Mar-2018
InterpMethod: "linear"
ShortExtrapMethod: "next"
LongExtrapMethod: "previous"
DiscountCurve Входной параметрВ этом примере показано, как создать ratecurve объект с помощью irbootstrap с Deposit и Swap инструменты и DiscountCurve для дисконтирования потоков наличности.
Settle = datetime(2021,4,15); crvDates = Settle + [calmonths([1 2 3 6]) calyears([1 2 3 5 7 10 20 30])]'; crvRates = [0.0004 0.0004 0.0005 0.0006 0.0008 0.0018 0.0037 0.0088 0.013 0.0165 0.022 0.0233]'; DiscountCurve = ratecurve("zero",Settle,crvDates,crvRates); DepRates = [0.002 0.0021 0.0023 0.0024 .0028]'; DepDates = Settle + calmonths([1 2 3 6 12]'); SwapRates = [0.0041 0;0.0057 0;0.017 0;0.0193 0;0.024 0;0.027 0]; SwapTimes = [2 3 5 10 20 30]'; SwapDates = datemnth(Settle,12*SwapTimes); BootInstruments = [fininstrument("deposit","Maturity",DepDates,"Rate",DepRates); ... fininstrument("swap","Maturity",SwapDates,"LegRate",SwapRates)]; ZeroCurve = irbootstrap(BootInstruments,Settle,'DiscountCurve',DiscountCurve)
ZeroCurve =
ratecurve with properties:
Type: "zero"
Compounding: -1
Basis: 0
Dates: [11x1 datetime]
Rates: [11x1 double]
Settle: 15-Apr-2021
InterpMethod: "linear"
ShortExtrapMethod: "next"
LongExtrapMethod: "previous"
ratecurve Объект от BootInstruments для фьючерсов OIS и в течение ночи индексируемых подкачекСоздайте BootInstruments переменная как входной параметр к irbootstrap создать объект ratecurve. BootInstruments переменная имеет OISFuture инструмент возражает для одномесячных фьючерсов SOFR и трехмесячных фьючерсов SOFR и OvernightIndexedSwap инструментальный объект.
Создайте инструменты
Используйте fininstrument создать OISFuture инструментальный объект для одномесячных фьючерсов SOFR.
Settle = datetime(2021,3,4); HFDates = datetime(2021,3,1) + caldays(0:3)'; HistFixing = timetable(HFDates,[0.02;0.04;0.04;0.02]); % Data from the following: https://www.cmegroup.com/trading/interest-rates/stir/one-month-sofr_quotes_globex.html Prices_1M = [99.97 99.96 99.95]'; Maturity_1M = lbusdate(2021,[3 4 5]',[],[],'datetime'); StartDate_1M = fbusdate(2021,[3 4 5]',[],[],'datetime'); FutInstruments_1M = fininstrument("OISFuture","Maturity",Maturity_1M ,"QuotedPrice",Prices_1M,"StartDate",StartDate_1M,"Method","Average",... 'HistoricalFixing',HistFixing,'Name',"1MonthSOFRFuture")
FutInstruments_1M=3×1 object
3x1 OISFuture array with properties:
QuotedPrice
Method
Basis
StartDate
Maturity
Notional
BusinessDayConvention
Holidays
ProjectionCurve
HistoricalFixing
Name
Используйте fininstrument создать OISFuture инструментальный объект для трехмесячных фьючерсов SOFR.
% Data from the following: https://www.cmegroup.com/trading/interest-rates/stir/three-month-sofr_quotes_globex.html Prices_3M = [99.92 99.895 99.84 99.74]'; Dates_3M_Maturity = thirdwednesday([6 9 12 3]',[2021 2021 2021 2022]','datetime'); Dates_3M_Start = thirdwednesday([3 6 9 12]',2021,'datetime'); FutInstruments_3M = fininstrument("OISFuture","Maturity",Dates_3M_Maturity,... "QuotedPrice",Prices_3M,"StartDate",Dates_3M_Start,'HistoricalFixing',HistFixing,'Name',"3MonthSOFRFuture");
Используйте fininstrument создать OvernightIndexedSwap инструментальный объект.
SOFRSwapRates = [.0023 0;.0064 0;.013 0;.017 0;.0175 0]; SOFRSwapTimes = [3 5 10 20 30]; SOFRSwapDates = datemnth(Settle,12*SOFRSwapTimes)'; SOFRSwapInstruments = fininstrument("OvernightIndexedSwap","Maturity",SOFRSwapDates,"LegRate",SOFRSwapRates,'Name',"overnight_swap_instrument")
SOFRSwapInstruments=5×1 object
5x1 OvernightIndexedSwap array with properties:
LegRate
LegType
Reset
Basis
Notional
HistoricalFixing
ResetOffset
ProjectionCurve
BusinessDayConvention
Holidays
EndMonthRule
StartDate
Maturity
Name
Задайте BootInstruments для трех типов инструментов.
BootInstruments = [FutInstruments_1M;FutInstruments_3M;SOFRSwapInstruments]
BootInstruments=12×1 object
12x1 heterogeneous FinInstrument (OISFuture, OvernightIndexedSwap) array with properties:
Name
Создайте ratecurve Объект
Используйте irbootstrap создать ratecurve объект.
SOFRCurve = irbootstrap(BootInstruments,Settle)
SOFRCurve =
ratecurve with properties:
Type: "zero"
Compounding: -1
Basis: 0
Dates: [12x1 datetime]
Rates: [12x1 double]
Settle: 04-Mar-2021
InterpMethod: "linear"
ShortExtrapMethod: "next"
LongExtrapMethod: "previous"
ratecurve Объект от STIRFuture, Deposit, и Swap BootInstrumentsСоздайте BootInstruments для нескольких Deposit, STIRFuture, и Swap инструменты и затем используют irbootstrap создать и отобразить ratecurve объект.
Создайте инструменты
Используйте fininstrument создать Deposit инструментальный объект.
Settle = datetime(2021,6,15); DepRates = [0.0016 0.0017 .00175]'; DepDates = Settle + calmonths([1 2 3]'); Deposits = fininstrument("Deposit","Maturity",DepDates,"Rate",DepRates,'Name',"deposit_instrument")
Deposits=3×1 object
3x1 Deposit array with properties:
Rate
Period
Basis
Maturity
Principal
BusinessDayConvention
Holidays
Name
Используйте fininstrument создать STIRFuture инструментальный объект.
FutureRates = [0.002 0.0025 0.0035]'; FutMat = [datetime(2021,9,15) datetime(2021,12,15) datetime(2022,3,16)]'; FutEndDates = [datetime(2021,12,15) datetime(2022,3,15) datetime(2022,6,15)]'; Futures = fininstrument("STIRFuture","Maturity",FutMat,"RateEndDate",FutEndDates,"QuotedPrice",100 - 100*FutureRates,'Name',"stir_future_instrument")
Futures=3×1 object
3x1 STIRFuture array with properties:
QuotedPrice
Basis
RateEndDate
Maturity
Notional
BusinessDayConvention
Holidays
ProjectionCurve
Name
Используйте fininstrument создать Swap инструментальный объект.
SwapRates = [.0063 0;.0108 0;.013 0;.015 0;0.017 0;.018 0;0.019 0]; SwapTimes = [2 5 7 10 15 20 30]'; SwapDates = datemnth(Settle,12*SwapTimes); Swaps = fininstrument("Swap","Maturity",SwapDates,"LegRate",SwapRates,'Name',"swap_instrument")
Swaps=7×1 object
7x1 Swap array with properties:
LegRate
LegType
Reset
Basis
Notional
LatestFloatingRate
ResetOffset
DaycountAdjustedCashFlow
ProjectionCurve
BusinessDayConvention
Holidays
EndMonthRule
StartDate
Maturity
Name
Задайте BootInstruments для этих трех инструментов.
BootInstruments = [Deposits;Futures;Swaps];
Создайте ratecurve Объект Используя irbootstrap
Используйте irbootstrap создать ratecurve объект.
ConvexityAdj = (1:3)'/10000; ZeroCurve = irbootstrap(BootInstruments,Settle,'ConvexityAdjustment',ConvexityAdj,'InterpMethod','pchip')
ZeroCurve =
ratecurve with properties:
Type: "zero"
Compounding: -1
Basis: 0
Dates: [13x1 datetime]
Rates: [13x1 double]
Settle: 15-Jun-2021
InterpMethod: "pchip"
ShortExtrapMethod: "next"
LongExtrapMethod: "previous"
Постройте загруженную кривую
PlottingDates = Settle + calmonths(1:360); plot(PlottingDates,zerorates(ZeroCurve,PlottingDates)) xlabel('Maturity (Years)') ylabel('Zero Rate') title('Bootstrapped Curve')

BootInstruments — Набор инструментовНабор инструментов в виде массива инструментальных объектов. Набор инструментов может включать Depositподкачка, FRA, STIRFuture, OISFuture, и OvernightIndexedSwap инструменты.
Типы данных: object
Settle — Расчетный деньРасчетный день в виде скалярного datetime, последовательного номера даты, вектора символов даты или строки даты.
Типы данных: double | char | string | datetime
Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
OutCurve = irbootstrap(Settle,BootInstruments,'Type',"zero",'Compounding',2,'Basis',5,'InterpMethod',"cubic")Type — Тип кривой процентной ставки"zero"
(значение по умолчанию) | представляет в виде строки со значением "discount", "forward", или "zero" | вектор символов со значением 'discount', 'forward', или 'zero'Тип процентной ставки изгибается в виде разделенной запятой пары, состоящей из 'Type' и скалярная строка или вектор символов.
Примечание
Когда вы используете irbootstrap, значение вы задаете для Type может повлиять на конструкцию кривой, потому что она влияет на тип данных, которые интерполированы на (то есть, форвардные курсы, нулевые уровни или коэффициенты дисконтирования) во время процесса начальной загрузки.
Типы данных: char | string
Compounding — Соединение частотыCompounding для ratecurve объект (значение по умолчанию) | возможные значения включает: –1, 0, 1, 2, 3, 4, 6, 12.Соединение частоты в виде разделенной запятой пары, состоящей из 'Compounding' и скалярное числовое использование поддерживаемых значений: –1, 0, 1, 2, 3, 4, 6, или 12.
Типы данных: double
Basis — Базис дневного количества (фактическое/фактическое) (значение по умолчанию) | целое число от 0 к 13Базис дневного количества в виде разделенной запятой пары, состоящей из 'Basis' и скалярное целое число.
0 — фактический/фактический
1 — 30/360 (СИА)
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 — ШИНА/252
Для получения дополнительной информации смотрите Базис.
Типы данных: double
InterpMethod метод интерполяции"linear" (значение по умолчанию) | представляет в виде строки со значением "linear", "cubic", "next", "previous"pchip, "v5cubic", "makima", или "spline" | вектор символов со значением 'linear', 'cubic', 'next', 'previous'pchip, 'v5cubic', 'makima', или 'spline'Метод интерполяции в виде разделенной запятой пары, состоящей из 'InterpMethod' и скалярная строка или вектор символов с помощью поддерживаемого значения. Для получения дополнительной информации о методах интерполяции смотрите interp1.
Типы данных: char | string
ShortExtrapMethod — Метод экстраполяции для данных перед First Data "next" (значение по умолчанию) | представляет в виде строки со значением "linear", "next", "previous"pchip, "cubic", "v5cubic", "makima", или "spline" | вектор символов со значением 'linear', 'next', 'previous'pchip, 'cubic', 'v5cubic', 'makima', или 'spline'Метод экстраполяции для данных перед First Data в виде разделенной запятой пары, состоящей из 'ShortExtrapMethod' и скалярная строка или вектор символов с помощью поддерживаемого значения. Для получения дополнительной информации о методах интерполяции смотрите interp1.
Типы данных: char | string
LongExtrapMethod — Метод экстраполяции для данных после последних данных "previous" (значение по умолчанию) | представляет в виде строки со значением "linear", "next", "previous"pchip, "cubic", "v5cubic", "makima", или "spline" | вектор символов со значением 'linear', 'next', 'previous'pchip, 'cubic', 'v5cubic', 'makima', или 'spline'Метод экстраполяции для данных после последних данных в виде разделенной запятой пары, состоящей из 'LongExtrapMethod' и скалярная строка или вектор символов с помощью поддерживаемого значения. Для получения дополнительной информации о методах интерполяции смотрите interp1.
Типы данных: char | string
DiscountCurve — ratecurve объект для дисконтирования потоков наличностиratecurve.empty (значение по умолчанию) | скалярный ratecurve объектratecurve объект для дисконтирования потоков наличности в виде разделенной запятой пары, состоящей из 'DiscountCurve' и имя ранее созданного ratecurve объект.
Типы данных: object
ConvexityAdjustment — Корректировка выпуклости к STIRFuture инструмент (значение по умолчанию) | числовой векторКорректировка выпуклости к одному или нескольким STIRFuture инструменты в виде разделенной запятой пары, состоящей из 'ConvexityAdjustment' и NFutures- 1 вектор из числовых значений.
Примечание
Можно только использовать ConvexityAdjustment при использовании irbootstrap с STIRFuture инструмент. Кроме того, длина ConvexityAdjustment вектор должен совпадать с количеством STIRFuture инструменты.
Типы данных: double
outCurve — Кривая уровняratecurve объектКривая уровня, возвращенная как ratecurve объект. Объект имеет следующие свойства:
Type
Settle
Compounding
Basis
Dates
Rates
InterpMethod
ShortExtrapMethod
LongExtrapMethod
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.