主要内容

拟合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®DATA文件中作为MATLAB数据集目的。

加载data_usyieldcurve.%提取每个月的最后一天的数据月份= repmat((1990:2010)',1,12)';eomdates = lbusdate(月份日本(:),repmat((1:12)',21,1));lontleIndex = find(ismember(dataset.properties.obsnames,datestr(eomdates)));估计dataset = dataSet(lontleIndex,:);估计data = double(估计dataset);

diebold li模型

Diebold和Li从尼尔森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 = [(大小(timetomat))(1  -  expda_t * timetomat))./(lambda_t * timetomat)......((1  -  expda_t * timetomat))./(lambda_t * timetomat) -  exp(-lambda_t * timetomat))];%绘制因子加载情节(Timetomat,x)标题('DieBold Li模型的因子装载,随时间因素为0.0609')Xlabel('成熟(月份)')ylim([0 1.1])传奇({'beta1''beta2''beta3'},'地点''东方的'

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

适合模型

一种DieBoldli.开发了对象以便于从产量数据拟合模型。这DieBoldli.对象继承自orcurve.对象,所以召集机会getDiscountactors.getParyields.GetForwardrates., 和托尔斯邮编方法都实施。此外,该方法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];结尾

这里包含Diebold Li适合选定的日期

plotsettles = datenum({'30 -May-1997''31 -aug-1998''29 -Jun-2001''31 -oct-2005'});数字为了JDX = 1:长度(Plotsettles)子图(2,2,JDX)TMPIDX = find(strcmpi(strcmpi(reservationdataset.properties.obsnames,datestr(plotsettles(jdx))));tmpcurvemodel = dieboldli.fitbetasfromyields(plotsettles(jdx),lambda_t * 12,......StaysAdd(Plotsettles(JDX),30 * Timetomat),估计数据(tmpidx,:)');散射(Tainsettles(Plotsettles(JDX),30 * Timetomat),估计数据(TMPIDX,:))保持Plottingdates =(Plotsettles(JDX)+30:30:Plotsettles(JDX)+ 30 * 360)';绘图(绘图,tmpcurvemodel.getparyields(绘图),'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提出将AR(1)模型拟合到每个测试阶段的时间序列。然后,该拟合模型可以用于预测每个参数的未来值,并通过延伸,未来产量曲线。

对于此示例,MATLAB功能回归用于估计每个测试版的AR(1)模型的参数。

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

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

月份= 1;[tmpbeta,bint] =回归(beta(月份+ 1:end,1),[(尺寸(beta(beta(thelaag + 1:end,1)))beta(1:end-themonlag,1)]);预测β(1,1)= [1 beta(终端,1)] * tmpbeta;预测β1down(1,1)= [1 beta(结束,1)] *烧烤(:,1);ForecastBeta_up(1,1)= [1 beta(终端,1)] *烧烤(:,2);[tmpbeta,bint] =回归(beta(月份+ 1:end,2),[(尺寸(beta(beta(beta(beta(thaplag + 1:end,2)))beta(1:end-themonlag,2)]);预测β(1,2)= [1 beta(结束,2)] * tmpbeta;预测β_Down(1,2)= [1 beta(结束,2)] *烧烤(:,1);预期预测β(1,2)= [1 beta(终端,2)] *烧烤(:,2);[tmpbeta,bint] =回归(beta(tomanlag + 1:end,3),[(尺寸(beta(beta(beta(thellag + 1:end,3)))beta(1:端子 - 月底,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',解决[预测贝特拉Lambda_t * 12]);dieboldli_forecast_up = dieboldli('Paryield',解决,[预测β5_UPLABDA_T* 12]);dieboldli_forecast_down = dieboldli('Paryield',定居[预测β1downlambda_t * 12]);Plottingdates =(沉淀+ 30:30:stant + 30 * 360)';绘图(plottingdates,dieboldli_forecast.getparyields(plottingdates),'b-') 抓住绘图(plottingdates,dieboldli_forecast_up.getparyields(plottingdates),'r-')绘图(plottingdates,dieboldli_forecast_down.getparyields(plottingdates),'r-') 标题(['Diebold Li预测产量曲线上'DATSTR(EOMDATES(END))' 为了 '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页