Создание объекта 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сплайн, constant, и pchip).

Пример 1

В этом примере вы загружаете кривую подкачки от депозитов, фьючерсов Евродоллара и подкачек. Входные данные о рынке для этого примера трудно закодированы и заданы как два массива ячеек данных; один массив ячеек указывает, что тип инструмента и другого содержит 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 класса. Входные параметры к этому методу включают кривую 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

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

Смотрите также

| | |

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

Больше о

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