bootstrap

Загрузите кривую процентной ставки из данных о рынке

Описание

пример

DCurve = IRDataCurve.bootstrap(Type,Settle,InstrumentTypes,Instruments) загружает кривую процентной ставки из данных о рынке. Даты загруженной кривой соответствуют датам погашения входных инструментов.

пример

DCurve = IRDataCurve.bootstrap(___,Name,Value) добавляют дополнительные аргументы пары "имя-значение".

Примеры

свернуть все

В этом примере начальной загрузки, InstrumentTypes, Instruments, и Settle дата задана:

InstrumentTypes = {'Deposit';'Deposit';...
'Futures';'Futures';'Futures';'Futures';'Futures';'Futures';...
'Swap';'Swap';'Swap';'Swap';};

Instruments = [datenum('08/10/2007'),datenum('09/17/2007'),.0532000; ...
datenum('08/10/2007'),datenum('11/17/2007'),.0535866; ...
datenum('08/08/2007'),datenum('19-Dec-2007'),9485; ...
datenum('08/08/2007'),datenum('19-Mar-2008'),9502; ...
datenum('08/08/2007'),datenum('18-Jun-2008'),9509.5; ...
datenum('08/08/2007'),datenum('17-Sep-2008'),9509; ...
datenum('08/08/2007'),datenum('17-Dec-2008'),9505.5; ...
datenum('08/08/2007'),datenum('18-Mar-2009'),9501; ...
datenum('08/08/2007'),datenum('08/08/2014'),.0530; ...
datenum('08/08/2007'),datenum('08/08/2019'),.0551; ...
datenum('08/08/2007'),datenum('08/08/2027'),.0565; ...
datenum('08/08/2007'),datenum('08/08/2037'),.0566];

CurveSettle = datenum('08/10/2007');

Используйте bootstrap метод, чтобы создать IRDataCurve объект.

bootModel = IRDataCurve.bootstrap('Forward', CurveSettle, ...
InstrumentTypes, Instruments,'InterpMethod','pchip');

Создать график для загруженных данных о рынке:

PlottingDates = (datenum('08/11/2007'):30:CurveSettle+365*25)';
plot(PlottingDates, getParYields(bootModel, PlottingDates),'r')
ylim([0 .06])
datetick

Figure contains an axes object. The axes object contains an object of type line.

В этом примере начальной загрузки, InstrumentTypes, Instruments, и Settle дата задана:

CurveSettle = datenum('8-Mar-2010');

InstrumentTypes = {'Deposit';'Deposit';'Deposit';'Deposit';...
    'Futures';'Futures';'Futures';'Futures';'Swap';'Swap';'Bond';'Bond'};

Instruments = [datenum('8-Mar-2010'),datenum('8-Apr-2010'),.003; ...
    datenum('8-Mar-2010'),datenum('8-Jun-2010'),.005; ...
    datenum('8-Mar-2010'),datenum('8-Sep-2010'),.007; ...
    datenum('8-Mar-2010'),datenum('8-Mar-2011'),.009; ...
    datenum('8-Mar-2010'),datenum('18-Jun-2011'),9840; ...
    datenum('8-Mar-2010'),datenum('17-Sep-2011'),9820; ...
    datenum('8-Mar-2010'),datenum('17-Dec-2011'),9810; ...
    datenum('8-Mar-2010'),datenum('18-Mar-2012'),9800; ...
    datenum('8-Mar-2010'),datenum('8-Mar-2015'),.025; ...
    datenum('8-Mar-2010'),datenum('8-Mar-2020'),.035; ...
    datenum('8-Mar-2010'),datenum('8-Mar-2030'),99; ...
    datenum('8-Mar-2010'),datenum('8-Mar-2040'),101];

Когда связи используются, InstrumentCouponRate должен быть задан:

InstrumentCouponRate = [zeros(10,1);.045;.05];

Отметьте для параметров, которые только применимы к связям (InstrumentFirstCouponDate, InstrumentLastCouponDate, InstrumentIssueDate, InstrumentFace) записи для инструментов несвязи (депозиты и фьючерсы) проигнорированы.

Используйте bootstrap метод, чтобы создать IRDataCurve объект.

bootModel = IRDataCurve.bootstrap('Forward', CurveSettle, ...
InstrumentTypes, Instruments,'InterpMethod','pchip',...
'InstrumentCouponRate',InstrumentCouponRate);

Создайте график для загруженных данных о рынке.

PlottingDates = datemnth(CurveSettle,1:30*12);
plot(PlottingDates, getParYields(bootModel, PlottingDates),'r')
ylim([0 .06])
datetick

Figure contains an axes object. The axes object contains an object of type line.

Используйте IRBootstrapOptionsObj дополнительный аргумент с bootstrap метод, чтобы допускать отрицательные нулевые уровни при решении для подкачки обнуляет точки.

Settle = datenum('15-Mar-2015'); 
InstrumentTypes = {'Deposit';'Deposit';'Swap';'Swap';'Swap';'Swap';}; 

Instruments = [Settle,datenum('15-Jun-2015'),.001; ... 
Settle,datenum('15-Dec-2015'),.0005; ... 
Settle,datenum('15-Mar-2016'),-.001; ... 
Settle,datenum('15-Mar-2017'),-0.0005; ... 
Settle,datenum('15-Mar-2018'),.0017; ... 
Settle,datenum('15-Mar-2020'),.0019]; 

irbo = IRBootstrapOptions('LowerBound',-1); 

bootModel = IRDataCurve.bootstrap('zero', Settle, InstrumentTypes,... 
    Instruments,'IRBootstrapOptions',irbo); 

bootModel.getZeroRates(datemnth(Settle,1:60))
ans = 60×1

    0.0012
    0.0011
    0.0010
    0.0009
    0.0008
    0.0008
    0.0007
    0.0006
    0.0005
   -0.0000
      ⋮

Обратите внимание на то, что дополнительный аргумент для LowerBound установлен в -1 для отрицательных нулевых уровней при решении подкачки обнуляют точки.

Входные параметры

свернуть все

Тип кривой процентной ставки загружается от инструментов рынка, заданных при помощи скалярного вектора символов.

При использовании bootstrap, выбор Type параметр может повлиять на конструкцию кривой, потому что это будет влиять на тип данных, которые будут интерполированы на (то есть, форвардные курсы, нулевые уровни или коэффициенты дисконтирования) во время процесса начальной загрузки. Так кривые, которые загружаются с помощью различного Type параметры подвергаются различным алгоритмам начальной загрузки с различными методами интерполяции, и они могут иногда приводить к различным результатам при использовании “получить” функций (например, getForwardRates).

Типы данных: char

Уладьте дату кривой процентной ставки, заданное использование скалярного вектора символов даты или последовательного номера даты.

Типы данных: double | char

Инструментальные типы, заданное использование N- 1 массив ячеек (где N количество инструментов), указание, какой инструмент находится в Instruments матрица. Приемлемыми значениями является 'deposit', 'futures'подкачка, 'bond', и 'fra'.

Типы данных: char | cell

Инструменты в виде N- 3 матрица данных для Instruments где первым столбцом является Settle дата, вторым столбцом является Maturity, и третий столбец является рыночной котировкой (датами должен быть MATLAB® числа даты). Рыночная котировка представляет следующее для каждого инструмента:

  • deposit: уровень

  • futures: цена (например, 9628.54)

  • swap: уровень

  • bond: чистая цена

  • fra: форвардный курс

    Примечание

    Instruments введите для fra и для futures отличаются. А именно, форвардный курс, лежащий в основе fra запускается на дату начала (столбец 1 Instruments) и концы на дату окончания (столбец 2 Instruments). В то время как форвардный курс, лежащий в основе futures заключите контракт запускается в дату погашения futures заключите контракт и концы в дату n спустя месяцы после futures зрелость, где n является периодичностью futures контракт.

Типы данных: double

Аргументы name-value

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: DCurve = IRDataCurve.bootstrap('Forward',CurveSettle,InstrumentTypes,Instruments,'InterpMethod','pchip')
Аргументы в виде пар имя-значение для всех инструментов связи

свернуть все

Соединение частоты в год для IRDataCurve объект в виде разделенной запятой пары, состоящей из 'Compounding' и скалярное числовое использование одного из поддерживаемых значений:

  • −1 = Непрерывное соединение

  • 0 = Простой процент (никакое соединение)

  • 1 = Ежегодное соединение

  • 2 = Полугодовое соединение

  • 3 = Соединение три раза в год

  • 4 = Ежеквартально соединение

  • 6 = Два раза в месяц соединение

  • 12 = Ежемесячно соединение

Типы данных: double

Дневной базис количества процентной ставки изгибается в виде разделенной запятой пары, состоящей из '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' и скалярный вектор символов. Для получения дополнительной информации о методах интерполяции смотрите interp1.

Типы данных: char

Объект IRBootstrapOptions в виде разделенной запятой пары, состоящей из 'IRBootstrapOptionsObj' и IRBootstrapOptions возразите ранее созданному использованию IRBootStrapOptions.

Типы данных: object

RateSpec для кривой, используемой к дисконтированным потокам денежных средств в виде разделенной запятой пары, состоящей из 'DiscountCurve' и RateSpec возразите ранее созданному использованию intenvset или toRateSpec.

Типы данных: object

Аргументы в виде пар имя-значение для каждого инструмента связи

свернуть все

Годовая процентная ставка, чтобы определить купоны, подлежащие оплате на инструменте в виде разделенной запятой пары, состоящей из 'InstrumentCouponRate' и скалярное десятичное значение.

Типы данных: double

Купоны в год для инструмента в виде разделенной запятой пары, состоящей из 'InstrumentPeriod' и скалярное числовое значение.

Типы данных: double

Дневной базис количества инструмента в виде разделенной запятой пары, состоящей из 'InstrumentBasis' и скалярное целое число.

  • 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

Примечание

InstrumentBasis отличает инструмент связи Basis значение от кривой процентной ставки Basis значение.

Для получения дополнительной информации смотрите Базис.

Типы данных: double

Правило конца месяца в виде разделенной запятой пары, состоящей из 'InstrumentEndMonthRule' и логическое значение. Это правило применяется только когда Maturity дата конца месяца в течение месяца, имея 30 или меньше дней.

  • 0 = проигнорируйте правило, подразумевая, что дата купонного платежа связи всегда является тем же числовым днем месяца.

  • 1 = set правило о (значении по умолчанию), означая, что дата купонного платежа связи всегда является прошлым фактическим днем месяца.

Типы данных: логический

Инструментальная дата выпуска в виде разделенной запятой пары, состоящей из 'InstrumentIssueDate' и скалярный вектор символов даты или последовательный номер даты.

Типы данных: char | double

Дата, когда связь делает свой первый купонный платеж (используемый, когда связь имеет неправильный первый период купона) в виде разделенной запятой пары, состоящей из 'InstrumentFirstCouponDate' и скалярный вектор символов даты или последовательный номер даты. Когда InstrumentFirstCouponDate и InstrumentLastCouponDate оба заданы, InstrumentFirstCouponDate более приоритетен в определении структуры купонного платежа. Если вы не задаете InstrumentFirstCouponDate, платежные дни потока наличности определяются из других входных параметров.

Типы данных: char | double

Последняя дата купона связи перед датой погашения (используемый, когда связь имеет неправильный последний период купона) в виде разделенной запятой пары, состоящей из 'InstrumentLastCouponDate' и скалярный вектор символов даты или последовательный номер даты. В отсутствие заданного InstrumentFirstCouponDate, заданный InstrumentLastCouponDate определяет структуру купона связи. Структура купона связи является усеченной в InstrumentLastCouponDate, независимо от того, где это падает и сопровождается только датой потока наличности зрелости связи. Если вы не задаете InstrumentLastCouponDate, платежные дни потока наличности определяются из других входных параметров.

Типы данных: char | double

Поверхность или номинальная стоимость в виде разделенной запятой пары, состоящей из 'InstrumentFace' и числовой скаляр.

Типы данных: double

Примечание

При использовании Instrument пары "имя-значение", можно задать простой процент для Instrument путем определения InstrumentPeriod значение как 0. Если InstrumentBasis и InstrumentPeriod не заданы для Instrument, следующие значения по умолчанию используются:

  • deposit инструмент использует InstrumentBasis как 2 (действие/360) и InstrumentPeriod 0 (простой процент).

  • futures инструмент использует InstrumentBasis как 2 (действие/360) и InstrumentPeriod 4 (ежеквартально).

  • swap инструмент использует InstrumentBasis как 2 (действие/360) и InstrumentPeriod 2.

  • bond инструмент использует InstrumentBasis как 0 (действие/действие) и InstrumentPeriod 2.

  • FRA инструмент использует InstrumentBasis как 2 (действие/360) и InstrumentPeriod 4 (ежеквартально).

Выходные аргументы

свернуть все

Кривая процентной ставки из данных о рынке, возвращенных как структура.

Представленный в R2008b
Для просмотра документации необходимо авторизоваться на сайте