начальная загрузка

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

Класс

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

Instruments

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

  • deposit: уровень

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

  • подкачка: уровень

  • 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 Кусочная кубическая интерполяция Эрмита.

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

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