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
).
В этом примере вы загружаете кривую подкачки от депозитов, фьючерсов Евродоллара и подкачек. Входные данные о рынке для этого примера трудно закодированы и заданы как два массива ячеек данных; один массив ячеек указывает, что тип инструмента и другого содержит 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'})
График демонстрирует прямые и нулевые кривые уровня для данных о рынке.
В этом примере вы загружаете кривую подкачки от депозитов, фьючерсов Евродоллара и подкачек. Входные данные о рынке для этого примера трудно закодированы и заданы как два массива ячеек данных; один массив ячеек указывает на тип инструмента, и другой массив ячеек содержит 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
функция вызвана в зависимости от IRBootStrapOptions
объект. Входные параметры к bootstrap
функция включает кривую 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
График демонстрирует кривую выражений паритета для данных о рынке.
IRBootStrapOptions
| IRDataCurve
| IRFunctionCurve
| IRFitOptions