exponenta event banner

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 параметры подвергаются различным алгоритмам начальной загрузки с различными методами интерполяции, и они иногда могут давать разные результаты при использовании методов «get» (например, getForwardRates).

Settle

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

InstrumentTypes

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

Instruments

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

  • 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 (SIA)

  • 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 = BUS/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 (SIA)

  • 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 = BUS/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 (act/360) и InstrumentPeriod является 0 (простой интерес).

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

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

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

  • FRA использование инструментов InstrumentBasis как 2 (act/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

Figure contains an axes. The axes 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. The axes 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 для отрицательных нулевых ставок при решении нулевой точки свопа.

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