bootstrap

Кривая процентной ставки 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-by- 1 массив ячеек (где N количество инструментов), указывающее, какой инструмент находится в Instruments матрица. Приемлемые значения deposit, futures, swap, bond, и fra.

Instruments

N-by- 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 (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

(Необязательно) An 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, a заданное 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