Начальная загрузка кривой подкачки

Этот пример показывает, как загрузить кривую процентной ставки, часто называемую кривой подкачки, с помощью объекта IRDataCurve. Статический метод начальной загрузки берет в качестве входных параметров массив ячеек инструментов рынка (который может быть депозитами, фьючерсами процентной ставки, подкачками и связями), и загружает кривую процентной ставки или форварда или кривой нулевой ширины. Также возможно задать несколько методов интерполяции, включая кусочный постоянный, линейный, и Кусочный кубический эрмитов интерполяционный многочлен (PCHIP).

Получите данные

Кривая загружается от данных о рынке. В этом примере мы загрузим кривую подкачки от депозитов, фьючерсов Евродоллара и подкачек.

В данном примере мы трудно закодировали входные данные о рынке, которые просто заданы как 2 массива ячеек данных, тот, который указывает на тип инструмента и второго массива ячеек, содержащего Settle, Maturity и Рыночную котировку для инструмента. Для депозитов и подкачек, кавычка является уровнем, и для фьючерсов EuroDollar, кавычка является ценой. Несмотря на то, что связи не используются в этом примере, связь была бы заключена в кавычки с ценой.

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

Instruments = [datenum('08/10/2007'),datenum('08/17/2007'),.0532063; ...
    datenum('08/10/2007'),datenum('08/24/2007'),.0532000; ...
    datenum('08/10/2007'),datenum('09/17/2007'),.0532000; ...
    datenum('08/10/2007'),datenum('10/17/2007'),.0534000; ...
    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('17-Jun-2009'),9494.5; ...
    datenum('08/08/2007'),datenum('16-Sep-2009'),9489; ...
    datenum('08/08/2007'),datenum('16-Dec-2009'),9481.5; ...
    datenum('08/08/2007'),datenum('17-Mar-2010'),9478; ...
    datenum('08/08/2007'),datenum('16-Jun-2010'),9474; ...
    datenum('08/08/2007'),datenum('15-Sep-2010'),9469.5; ...
    datenum('08/08/2007'),datenum('15-Dec-2010'),9464.5; ...
    datenum('08/08/2007'),datenum('16-Mar-2011'),9462.5; ...
    datenum('08/08/2007'),datenum('15-Jun-2011'),9456.5; ...
    datenum('08/08/2007'),datenum('21-Sep-2011'),9454; ...
    datenum('08/08/2007'),datenum('21-Dec-2011'),9449.5; ...
    datenum('08/08/2007'),datenum('08/08/2014'),.0530; ...
    datenum('08/08/2007'),datenum('08/08/2017'),.0545; ...
    datenum('08/08/2007'),datenum('08/08/2019'),.0551; ...
    datenum('08/08/2007'),datenum('08/08/2022'),.0559; ...
    datenum('08/08/2007'),datenum('08/08/2027'),.0565; ...
    datenum('08/08/2007'),datenum('08/08/2032'),.0566; ...
    datenum('08/08/2007'),datenum('08/08/2037'),.0566];

Создайте Кривую через Начальную загрузку

Метод bootstrap называется как статический метод класса IRDataCurve. Входные параметры к этому методу включают тип кривой (Нуль или Вперед), улаживают дату, инструментальные типы, инструментальные данные и дополнительные аргументы включая метод интерполяции, соединение и структуру опций для начальной загрузки. Обратите внимание на то, что в этом примере, мы являемся передающими в объекте IRBootstrapOptions, который включает информацию для корректировки выпуклости форвардных курсов.

IRsigma = .01;
CurveSettle = datenum('08/10/2007');
bootModel = IRDataCurve.bootstrap('Forward', CurveSettle, ...
    InstrumentTypes, Instruments,'InterpMethod','pchip',...
    'Compounding',-1,'IRBootstrapOptions',...
    IRBootstrapOptions('ConvexityAdjustment',@(t) .5*IRsigma^2.*t.^2));

График

Мы можем теперь построить и прямые и кривые нулевой ширины.

PlottingDates = (CurveSettle+20:30:CurveSettle+365*25)';
TimeToMaturity = yearfrac(CurveSettle,PlottingDates);
BootstrappedForwardRates = bootModel.getForwardRates(PlottingDates);
BootstrappedZeroRates = bootModel.getZeroRates(PlottingDates);

figure
hold on
plot(TimeToMaturity,BootstrappedForwardRates,'r')
plot(TimeToMaturity,BootstrappedZeroRates,'g')
title('Bootstrapped Curve')
xlabel('Time')
legend({'Forward','Zero'})

Библиография

Этот пример чертит из следующих бумаг и статей в журнале:

[1] Хейган, P., запад, G. (2006), "Методы интерполяции для конструкции кривой", прикладные математические финансы, Vol 13, № 2

[2] Рон, URI (2000), "Практическое руководство, чтобы подкачать конструкцию кривой", рабочие документы 00-17, Банк Канады.