Загрузка по двойной кривой

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

Определите данные

Данные необходимы как для кривой переадресации, так и для кривой скидки. Для этого конкретного примера принято, что данные предоставлены для EONIA (кривая дисконтирования) и EURIBOR (прямая кривая). Однако этот подход может использоваться в любом случае, когда построенная кривая отличается от кривой, используемой для дисконтирования денежных потоков. Хотя данные в этом примере жестко закодированы, они также могут быть импортированы в 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] Bianchetti, M., Two Curves, One Price, Risk Magazine, pages 74-80, August 2010.

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

[4] Mercurio, Fabio, процентные ставки и кредитный кризис: новые формулы и модели рынка (5 февраля 2009 года), портфель Bloomberg Research Paper № 2010-01-FRONTIERS.

[5] Nashikkar, A., Understanding OIS Discounting, Barclays Capital Interest Rate Strategy, 24 февраля 2011 г.

См. также

| | | |

Похожие примеры

Подробнее о

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

Для просмотра документации необходимо авторизоваться на сайте