exponenta event banner

Создание объекта IRDataCurve

Создание IRDataCurve см. следующие параметры:

Конструктор IRDataCurve с датами и данными

Используйте IRDataCurve конструктор с векторами дат и данных для создания объекта кривой процентной ставки. При построении IRDataCurve можно также использовать дополнительные входные данные для определения способа построения кривой процентных ставок на основе дат и данных.

Пример

В этом примере создаются векторы для Dates и Data для кривой процентных ставок:

Data = [2.09 2.47 2.71 3.12 3.43 3.85 4.57 4.58]/100;
Dates = daysadd(today,[360 2*360 3*360 5*360 7*360 10*360 20*360 30*360],1);

Используйте IRDataCurve конструктор для построения объектов процентных ставок на основе constant и pchip методы интерполяции:

irdc_const = IRDataCurve('Forward',today,Dates,Data,'InterpMethod','constant');
irdc_pchip = IRDataCurve('Forward',today,Dates,Data,'InterpMethod','pchip');

Постройте график кривых прямой и нулевой скорости для двух IRDataCurve объекты на основе constant и pchip методы интерполяции:

PlottingDates = daysadd(today,180:10:360*30,1);
plot(PlottingDates, getForwardRates(irdc_const, PlottingDates),'b')
hold on
plot(PlottingDates, getForwardRates(irdc_pchip, PlottingDates),'r')
plot(PlottingDates, getZeroRates(irdc_const, PlottingDates),'g')
plot(PlottingDates, getZeroRates(irdc_pchip, PlottingDates),'yellow')
legend({'Constant Forward Rates','PCHIP Forward Rates','Constant Zero Rates',...
'PCHIP Zero Rates'},'location','SouthEast')
title('Interpolation methods for IRDataCurve objects')
datetick

График демонстрирует взаимосвязь прямой и нулевой кривых ставки.

Загрузка IRDataCurve на основе рыночных инструментов

Используйте метод начальной загрузки на основе рыночных инструментов для создания объекта кривой процентной ставки. При начальной загрузке также можно определить ряд методов интерполяции (linear, spline, constant, и pchip).

Пример 1

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

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. Входные данные для этого метода включают кривуюType (zero или forward), Settle дата, InstrumentTypes, и Instrument данные. bootstrap метод также поддерживает необязательные аргументы, включая метод интерполяции, объединение, базис и структуру опций для начальной загрузки. Например, выполняется передача объекта @ IRBootstrapOptions, содержащего информацию для ConvexityAdjustment пересылать ставки.

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))
bootModel = 

IRDataCurve

			 Type: Forward
		   Settle: 733264 (10-Aug-2007)
	  Compounding: -1
			Basis: 0 (actual/actual)
	 InterpMethod: pchip
			Dates: [29x1 double]
			 Data: [29x1 double]

bootstrap метод использует функцию Optimization Toolbox™ для решения любых загрузочных скоростей.

Постройте график прямой и нулевой кривых:

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

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

График демонстрирует кривые форвардной и нулевой ставок для рыночных данных.

Пример 2

В этом примере выполняется загрузка кривой свопа из депозитов, фьючерсов на евродоллары и свопов. Входные рыночные данные для этого примера жестко кодируются и определяются как два массива данных ячеек; один массив ячеек указывает тип инструмента, а другой массив ячеек содержит Settle, Maturity стоимости и рыночная квота для инструмента. Этот пример начальной загрузки также демонстрирует использование InstrumentBasis для каждого Instrument тип:

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. Входные данные для этого метода включают кривуюType (zero или forward), Settle дата, InstrumentTypes, и Instrument данные. bootstrap метод также поддерживает необязательные аргументы, включая метод интерполяции, объединение, базис и структуру опций для начальной загрузки. В этом примере выполняется передача дополнительного Basis значение для каждого типа прибора:

bootModel=IRDataCurve.bootstrap('Forward',CurveSettle,InstrumentTypes, ...
Instruments,'InterpMethod','pchip','InstrumentBasis',[repmat(2,8,1);repmat(0,4,1)])
bootModel = 

	IRDataCurve

			 Type: Forward
		   Settle: 733264 (10-Aug-2007)
	  Compounding: 2
			Basis: 0 (actual/actual)
	 InterpMethod: pchip
			Dates: [12x1 double]
			 Data: [12x1 double]

bootstrap метод использует функцию Optimization Toolbox для решения любых загрузочных скоростей.

Постройте график доходной кривой с использованием getParYields способ:

PlottingDates = (datenum('08/11/2007'):30:CurveSettle+365*25)';
plot(PlottingDates, getParYields(bootModel, PlottingDates),'r')
datetick

График демонстрирует кривую доходности для рыночных данных.

См. также

| | |

Связанные примеры

Подробнее

Внешние веб-сайты