Двойная начальная загрузка кривой

В этом примере показано, как загрузить прямую кривую с помощью различной кривой в дисконтировании.

Задайте данные

Данные необходимы для обоих дисконтная кривая и форвард. Для этого конкретного примера это принято, что данные предусмотрены EONIA (дисконтная кривая) и EURIBOR (прямая кривая). Однако этот подход может использоваться в любом случае, где кривая, которая будет создана, отличается, чем кривая, используемая в дисконтировании потоков наличности. В то время как данные в этом примере являются hardcoded, это могло также быть импортировано в MATLAB® с Datafeed Toolbox™ или Database Toolbox™.

Settle = datenum('20-Aug-2013');

% Deposit data
EONIADepositRates = [.0007 .00067]';
EONIADepositMat = datenum({'3-Sep-2013','20-Sep-2013'});
EONIADepositBasis = 2; % act/360
EONIADepositPeriod = 0;

% FRA
EONIAFRARates = [.00025 .0003 .00043 .00054]';
EONIAFRAStartDate = datenum({'11-Sep-2013','9-Oct-2013','13-Nov-2013','11-Dec-2013'});
EONIAFRAEndDate = datenum({'9-Oct-2013','13-Nov-2013','11-Dec-2013','11-Jan-2014'});
EONIAFRABasis = 2; % act/360
EONIAFRAPeriod = 0;

% Swap data
EONIASwapRates = [.0003 .001 .002 .004 .008 .012 .0155 .018 .0193 .02]';
EONIASwapMat = datemnth(Settle,12*[2:5 7 10 15 20 25 30]');
EONIASwapBasis = 5; % 30/360 ISDA
EONIASwapPeriod = 1;

% EURIBOR Deposit data
EURIBORDepositRates = [.0022 .0021 .002 .0019]';
EURIBORDepositMat = datenum({'3-Sep-2013','20-Sep-2013','21-Oct-2013','20-Nov-2013'});
EURIBORDepositBasis = 2; % act/360
EURIBORDepositPeriod = 0;

% EURIBOR Futures
EURIBORFRARates = [9982 9978 9976 9975]';
EURIBORFRAStartDate = datenum({'18-Dec-2013','19-Mar-2014','18-Jun-2014','17-Sep-2014'});
EURIBORFRAEndDate = datenum({'18-Mar-2014','19-Jun-2014','18-Sep-2014','17-Dec-2014'});
EURIBORFRABasis = 2; % act/360
EURIBORFRAPeriod = 4;

% EURIBOR Swap data
EURIBORSwapRates = [.0026 .0044 .0062 .0082 .012 .015 .018 .02 .021 .0215]';
EURIBORSwapMat = datemnth(Settle,12*[2:5 7 10 15 20 25 30]');
EURIBORSwapBasis = 5; % 30/360 ISDA
EURIBORSwapPeriod = 1;

Создайте дисконтную кривую EONIA

Создайте кривую EONIA. Это - по существу то же самое как один случай кривой.

CurveType = 'zero';
CurveCompounding = 1;
CurveBasis = 3; % act/365

nEONIADeposits = length(EONIADepositMat);
nEONIAFRA = length(EONIAFRAEndDate);
nEONIASwaps = length(EONIASwapMat);

EONIAInstrumentTypes = [repmat({'deposit'},nEONIADeposits,1);
    repmat({'fra'},nEONIAFRA,1);repmat({'swap'},nEONIASwaps,1)];

EONIAPeriod = [repmat(EONIADepositPeriod,nEONIADeposits,1);
    repmat(EONIAFRAPeriod,nEONIAFRA,1);repmat(EONIASwapPeriod,nEONIASwaps,1)];

EONIABasis = [repmat(EONIADepositBasis,nEONIADeposits,1);
    repmat(EONIAFRABasis,nEONIAFRA,1);repmat(EONIASwapBasis,nEONIASwaps,1)];

EONIAInstrumentData = [[repmat(Settle,[nEONIADeposits 1]);EONIAFRAStartDate;repmat(Settle,[nEONIASwaps 1])] ...
    [EONIADepositMat;EONIAFRAEndDate;EONIASwapMat] ...
    [EONIADepositRates;EONIAFRARates;EONIASwapRates]];

EONIACurve = IRDataCurve.bootstrap(CurveType,Settle,EONIAInstrumentTypes,...
    EONIAInstrumentData,'Compounding',CurveCompounding,'Basis',CurveBasis,...
    'InstrumentPeriod',EONIAPeriod,'InstrumentBasis',EONIABasis)
EONIACurve = 

			 Type: zero
		   Settle: 735466 (20-Aug-2013)
	  Compounding: 1
			Basis: 3 (actual/365)
	 InterpMethod: linear
			Dates: [16x1 double]
			 Data: [16x1 double]

Создайте EURIBOR, вперед изгибаются

EURIBOR прямая кривая создается сначала с помощью одного подхода кривой.

nEURIBORDeposits = length(EURIBORDepositMat);
nEURIBORFRA = length(EURIBORFRAEndDate);
nEURIBORSwaps = length(EURIBORSwapMat);

EURIBORInstrumentTypes = [repmat({'deposit'},nEURIBORDeposits,1);
    repmat({'futures'},nEURIBORFRA,1);repmat({'swap'},nEURIBORSwaps,1)];

EURIBORPeriod = [repmat(EURIBORDepositPeriod,nEURIBORDeposits,1);
    repmat(EURIBORFRAPeriod,nEURIBORFRA,1);repmat(EURIBORSwapPeriod,nEURIBORSwaps,1)];

EURIBORBasis = [repmat(EURIBORDepositBasis,nEURIBORDeposits,1);
    repmat(EURIBORFRABasis,nEURIBORFRA,1);repmat(EURIBORSwapBasis,nEURIBORSwaps,1)];

EURIBORInstrumentData = [repmat(Settle,size(EURIBORInstrumentTypes)) ...
    [EURIBORDepositMat;EURIBORFRAEndDate;EURIBORSwapMat] ...
    [EURIBORDepositRates;EURIBORFRARates;EURIBORSwapRates]];

EURIBORCurve_Single = IRDataCurve.bootstrap(CurveType,Settle,EURIBORInstrumentTypes,...
    EURIBORInstrumentData,'Compounding',CurveCompounding,'Basis',CurveBasis,...
    'InstrumentPeriod',EURIBORPeriod,'InstrumentBasis',EURIBORBasis)
EURIBORCurve_Single = 

			 Type: zero
		   Settle: 735466 (20-Aug-2013)
	  Compounding: 1
			Basis: 3 (actual/365)
	 InterpMethod: linear
			Dates: [18x1 double]
			 Data: [18x1 double]

Создайте кривую EURIBOR с кривой EONIA

Затем создайте кривую с помощью кривой EONIA в качестве кривой дисконтирования. Для этого задайте кривую EONIA как дополнительный входной параметр.

EURIBORCurve = IRDataCurve.bootstrap(CurveType,Settle,EURIBORInstrumentTypes,...
    EURIBORInstrumentData,'DiscountCurve',EONIACurve,'Compounding',...
    CurveCompounding,'Basis',CurveBasis,'InstrumentPeriod',EURIBORPeriod,...
    'InstrumentBasis',EURIBORBasis)
EURIBORCurve = 

			 Type: zero
		   Settle: 735466 (20-Aug-2013)
	  Compounding: 1
			Basis: 3 (actual/365)
	 InterpMethod: linear
			Dates: [18x1 double]
			 Data: [18x1 double]

Постройте график результатов

Постройте результаты сравнить кривые.

PlottingDates = (Settle+20:30:Settle+365*30)';
TimeToMaturity = yearfrac(Settle,PlottingDates);

figure
plot(TimeToMaturity, getZeroRates(EONIACurve, PlottingDates),'b')
hold on
plot(TimeToMaturity, getZeroRates(EURIBORCurve_Single, PlottingDates),'r')
plot(TimeToMaturity, getZeroRates(EURIBORCurve, PlottingDates),'g')
title('Comparison of Single Curve and Dual Curve Bootstrapping')
legend({'EONIA','EURIBOR','EURIBOR w/ EONIA Discounting'},'location','southeast')

Как ожидалось различие между двумя различными кривыми EURIBOR мало, но нетривиально.

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

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

[1] Ametrano, F, и Бьянчетти, M., Все Вы Всегда Требуемый, чтобы Знать О Нескольких Начальную загрузку Кривой Процентной ставки, но Боялось Спросить (2 апреля 2013), доступный в: https://papers.ssrn.com/sol3/papers.cfm? abstract_id=2219548.

[2] Бьянчетти, M., Две Кривые, Одна Цена, Журнал Риска, страницы 74-80, август 2010.

[3] Fujii, M, Симада, Y, Takahashi, A., Примечание по Конструкции Нескольких Кривых Подкачки с и без Имущественного залога (2 января 2010), Серии № CARF-F-154 Рабочего документа CARF, доступной в: https://papers.ssrn.com/sol3/papers.cfm? abstract_id=1440633.

[4] Меркурио, Фабио, процентные ставки и кредитный кризис: новые формулы и модели рынка (5 февраля 2009), номер научно-исследовательской работы портфеля Bloomberg 2010-01-FRONTIERS.

[5] Nashikkar, A., изучая дисконтирование OIS, стратегию процентной ставки Barclays Capital, 24 февраля 2011.

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

| | | |

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

Больше о

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