主要内容

拟合DieBold Li模型

这个例子展示了如何构建美国1990 - 2010年每个月的收益率曲线的Diebold Li模型。这个例子也演示了如何通过对每个参数的时间序列拟合一个自回归模型来预测未来的收益率曲线。

该论文可以在这里找到:

https://www.nber.org/papers/w10048

加载数据

所使用的数据是每月1990年代到2010年的财政收益率为1 Mo,3莫,6莫,1 YR,2 YR,3 YR,5 YR,7 YR,10 YR,30 YR。

每日数据可以在这里找到:

https://www.treasury.gov/resource-center/data-chart-center/interest -rates/pages/textview.aspx?data=yieldall.

数据存储在MATLAB®数据文件作为MATLAB数据集对象。

加载Data_USYieldCurve%提取每个月的最后一天的数据MonthYearMat = repmat((1990:2010) ', 1、12)”;EOMDates = lbusdate (MonthYearMat (:), repmat((1:12), 21岁,1));MonthlyIndex =找到(ismember (Dataset.Properties.ObsNames datestr (EOMDates)));Estimationdataset =数据集(MonthlyIndex:);EstimationData =双(Estimationdataset);

Diebold李模型

Diebold和Li从Nelson Siegel模型开始

y = β 0. + β 1 + β 2 τ m 1 - E. - m τ - β 2 E. - m τ

把它改写成这样:

y T. τ = β 1 T. + β 2 T. 1 - E. - λ T. τ λ T. τ + β 3. T. 1 - E. - λ T. τ λ T. τ - E. - λ T. τ

上述模型允许以下列方式解释的因素:Beta1对应于屈服曲线的长期/水平,β2对应于短期/斜率,并且β3对应于中术术语/曲率。 λ 确定了曲率上的载荷在哪个成熟度时达到最大值,并控制了模型的指数衰减率。

Diebold和Li Advocate设置 λ 最大化中期因子,β3的负载,在30个月内。这也将问题从非线性拟合到简单的线性回归转换。

%明确设置时因子lambdalambda_t = .0609;构建因子负荷矩阵与数据相关的期限TimeToMat = [3 6 9 12 24 36 60 84 120 240 360]';X = [ones(size(TimeToMat)) (1 - exp(-lambda_t*TimeToMat))./(lambda_t*TimeToMat))......((1  -  expda_t * timetomat))./(lambda_t * timetomat) -  exp(-lambda_t * timetomat))];%绘制因子负荷情节(Timetomat,x)标题(时间因子为0.0609的Diebold Li模型的因子载荷)包含(的期限(月)) ylim([0 1.1]) legend({'beta1''beta2''beta3'},“位置”'东'

图包含轴。带有TIEBOLD LI模型的标题因子载荷的轴,随着时间因素为0.0609,包含3个类型的线路。这些对象代表Beta1,Beta2,Beta3。

合适的模型

一种DieBoldli.对象的开发是为了方便从产量数据拟合模型。这DieBoldli.对象继承orcurve.对象,因此getZeroRatesgetDiscountactors.getParYieldsgetForwardRates,toRateSpec方法都实现了。此外,该方法FityieldSfrombetas.被实施以估计β参数给出了观察到的市场产量的Lambda参数。

DieBoldli.对象用于适用于1990年至2010年的每个月的DieBold Li模型。

%预先释放βBeta =零(尺寸(估计数据,1),3);循环并拟合每个月末的收益率曲线为了JDX = 1:大小(估计数据,1)tmpcurvemodel = dieboldli.fitbetasfromyields(eomdates(eomdates(jdx),lambda_t * 12,stayadd(eomdates(eomdates(JDX),30 * timetomat),估计数据(JDX,:)');beta(jdx,:) = [tmpcurvemodel.beta1 tmpcurvemodel.beta2 tmpcurvemodel.beta3];结尾

迪堡李适合选定的日期包括在这里

PlotSettles = datenum ({'30 -May-1997''31 -aug-1998''29 -Jun-2001'2005年- 10月31日的});数字为了JDX = 1:长度(Plotsettles)子图(2,2,JDX)TMPIDX = find(strcmpi(strcmpi(reservationdataset.properties.obsnames,datestr(plotsettles(jdx))));tmpcurvemodel = dieboldli.fitbetasfromyields(plotsettles(jdx),lambda_t * 12,......daysadd (PlotSettles (jdx)、30 * TimeToMat), EstimationData (tmpIdx:) ');散射(daysadd (PlotSettles (jdx)、30 * TimeToMat), EstimationData (tmpIdx,:))PlottingDates = (PlotSettles (jdx) + 30:30: PlotSettles (jdx) + 30 * 360) ';情节(PlottingDates tmpCurveModel.getParYields (PlottingDates),'r-')标题('收益曲线'datestr(plotsettles(jdx))])dateTick结尾

图包含4个轴。1997年5月30日的标题产量曲线的轴1包含2个类型的散射物对象。1998年8月31日标题产量曲线的轴2包含2型散射,线路对象。29-jun-2001的标题屈服曲线的轴3包含2个类型的散射物,线。轴4具有标题屈服曲线31-OCT-2005包含2个型散射,线的物体。

预测

Diebold Li模型可以用来预测未来的收益率曲线。Diebold和Li提出对每个Beta参数的时间序列拟合一个AR(1)模型。这个拟合模型可以用来预测每个参数的未来值,并引申出未来的收益率曲线。

本例为MATLAB函数回归用于估计每个Beta的AR(1)模型的参数。

回归拟合的置信区间也用于产生两种额外的产量曲线预测,其用作屈服曲线的额外情况。

劳动可以调整变量以使不同的期间提前预测。例如,改变价值16.会将预测从提前1个月改为6个月预测。

MonthsLag = 1;[tmpBeta,bint] =回归(Beta(MonthsLag+1:end,1),[ones(size(Beta(MonthsLag+1:end,1))) Beta(1:end-MonthsLag,1)]);ForecastBeta(1,1) = [1 Beta(end,1)]*tmpBeta;ForecastBeta_Down(1, - 1) =[1β(结束,1)]*少女(:1);ForecastBeta_Up(1, - 1) =[1β(结束,1)]*少女(:,2);[tmpBeta,bint] = reress (Beta(MonthsLag+1:end,2),[ones(size(Beta(MonthsLag+1:end,2))) Beta(1:end-MonthsLag,2)]); / /月渣ForecastBeta(1,2) = [1 Beta(end,2)]*tmpBeta;ForecastBeta_Down(1、2)=[1β(,2)]*少女(:1);ForecastBeta_Up(1、2)=[1β(,2)]*少女(:,2);[tmpBeta,bint] = return (Beta(MonthsLag+1:end,3),[ones(size(Beta(MonthsLag+1:end,3))) Beta(1:end-MonthsLag,3)]); ForecastBeta(1,3) = [1 Beta(end,3)]*tmpBeta; ForecastBeta_Down(1,3) = [1 Beta(end,3)]*bint(:,1); ForecastBeta_Up(1,3) = [1 Beta(end,3)]*bint(:,2);预测收益率曲线图Settr = StaysAdd(eomdates(ENDATE(END),30 * WORENLAG);dieboldli_forecast = dieboldli('Paryield',解决ForecastBeta lambda_t * 12]);DieboldLi_Forecast_Up = DieboldLi ('Paryield',解决,[预测β5_UPLABDA_T* 12]);dieboldli_forecast_down = dieboldli('Paryield',定居[预测β1downlambda_t * 12]);Plottingdates =(沉淀+ 30:30:stand + 30 * 360)';绘图(plottingdates,dieboldli_forecast.getparyields(plottingdates),“b -”)举行情节(PlottingDates DieboldLi_Forecast_Up.getParYields (PlottingDates),'r-')情节(PlottingDates DieboldLi_Forecast_Down.getParYields (PlottingDates),'r-')标题('Diebold Li预测产量曲线上'datestr (EOMDates(结束)' 为了 'datestr(soll)])传奇({'预测曲线'“额外的场景”},“位置”“东南”) datetick

图包含轴。带有标题DieBold Li的轴在2010年至2010年12月31日-2011的2010年12月31日的收益曲线包含3个类型的类型。这些对象代表预测曲线,其他方案。

参考书目

此示例基于以下文件:

[1]弗朗西斯X.Iobold,Canlin Li,预测政府债券收益率期限的术语结构,CompuoreTrics杂志,130卷,2006年2月2日,第337-364页