bootstrap

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

Класс

@IRDataCurve

Синтаксис

Dcurve = IRDataCurve.bootstrap(Type,Settle,InstrumentTypes,Instruments)

Dcurve = IRDataCurve.bootstrap(Type,Settle,InstrumentTypes,Instruments,'Parameter1',Value1,'Parameter2',Value2, ...)

Аргументы

Type

Тип кривой процентной ставки. Type относится к типу данных в кривой, которая загружается от инструментов рынка. Приемлемые значения: discount, forward, или zero.

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

Settle

Скаляр или вектор-столбец расчетных дней.

InstrumentTypes

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

Instruments

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 контракт.

Compounding

(Необязательно) Скаляр, который устанавливает частоту соединения в год для IRDataCurve объект:

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

  •  0 = Простой процент (никакое соединение) для “нулевой” и “дисконтной” кривой вводит только, не поддерживаемый для “прямых” кривых

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

  •  2 = Полугодовое соединение (значение по умолчанию)

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

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

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

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

Basis

(Необязательно) основание Дневного количества кривой процентной ставки. Скаляр целых чисел.

  •  0 = фактический/фактический (значение по умолчанию)

  •  1 = 30/360 (СИА)

  •  2 = Фактический/360

  •  3 = Фактический/365

  •  4 = 30/360 (BMA)

  •  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

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

InterpMethod

(Необязательно) Значения:

  • 'linear' — Линейная интерполяция (значение по умолчанию).

  • 'constant' — Кусочная постоянная интерполяция.

  • 'pchip' — Кусочная кубическая интерполяция Эрмита.

  • 'spline' — Интерполяция кубическим сплайном.

IRBootstrapOptionsObj

(Необязательно) IRBootstrapOptions объект.

DiscountCurve

(Необязательно) RateSpec для кривой, используемой, чтобы обесценить потоки наличности.

Инструментальные параметры

Для каждой связи Instrument, можно задать следующие дополнительные инструментальные параметры как пары параметра/значения. Например, InstrumentBasis отличает инструмент связи Basis значение от Basis кривой значение. Для инструментов типа deposit, futures, или swap Basis и Compounding значения должны быть идентичными для каждого экземпляра инструмента.

InstrumentCouponRate

(Необязательно) Десятичное число, указывающее на годовую процентную ставку раньше, определяло купоны, подлежащие оплате на инструменте.

InstrumentPeriod

(Необязательно) Купоны в год инструмента. Вектор целых чисел. Позволенными значениями является 0, 1, 2 (значение по умолчанию), 3, 4, 6, и 12.

InstrumentBasis

(Необязательно) основание Дневного количества инструмента. Вектор целых чисел.

  •  0 = фактический/фактический (значение по умолчанию)

  •  1 = 30/360 (СИА)

  •  2 = Фактический/360

  •  3 = Фактический/365

  •  4 = 30/360 (BMA)

  •  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

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

InstrumentEndMonthRule

(Необязательно) правило Конца месяца. Вектор. Это правило применяется только когда Maturity дата конца месяца в течение месяца, имея 30 или меньше дней. 0 = проигнорируйте правило, подразумевая, что дата купонного платежа инструмента всегда является тем же числовым днем месяца. 1 = установите правило о (значении по умолчанию), подразумевая, что дата купонного платежа инструмента всегда является прошлым фактическим днем месяца.

InstrumentIssueDate

(Необязательно) Дата, когда инструмент был выпущен.

InstrumentFirstCouponDate

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

InstrumentLastCouponDate

(Необязательно) Последняя дата купона связи перед датой погашения; используемый, когда связь имеет неправильный последний период купона. В отсутствие заданного FirstCouponDate, заданный LastCouponDate определяет структуру купона связи. Структура купона связи является усеченной в LastCouponDate, независимо от того, где это падает и сопровождается только датой потока наличности зрелости связи. Если вы не задаете LastCouponDate, платежные дни потока наличности определяются из других входных параметров.

InstrumentFace

(Необязательно) Поверхность или номинальная стоимость. Значение по умолчанию = 100.

Примечание

При использовании 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 (ежеквартально).

Описание

Dcurve = IRDataCurve.bootstrap(Type, Settle, InstrumentTypes, Instruments, 'Parameter1', Value1, 'Parameter2', Value2, ...) загружает кривую процентной ставки из данных о рынке. Даты загруженной кривой соответствуют датам погашения входных инструментов. Необходимо ввести дополнительные аргументы для Basis, Compounding, Interpmethod, IRBootstrapOptionsObj, и DiscountCurve как пары параметра/значения.

Примеры

свернуть все

В этом примере начальной загрузки, 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

В этом примере начальной загрузки, 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

Используйте 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 для отрицательных нулевых уровней при решении подкачки обнуляют точки.

Представленный в R2008b