主要内容

拟合Diebold Li模型

此示例显示如何构建来自1990年至2010年的每个月的DIEBOLD LI模型。该示例还通过将自回归模型拟合到每个参数的时间序列来说明如何预测未来产量曲线。

本文可以在这里找到:

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

加载数据

使用的数据是1990年至2010年1个月、3个月、6个月、1个月、2个月、3个月、5个月、7个月、10个月、20个月、30个月期限的月度国债收益率。

每日数据可在此找到:

https://www.treasury.gov/resource-center/data-chart-center/interest-rates/Pages/TextView.aspx?data=yieldAll

数据作为MATLAB文件存储在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 τ. 1 - e - τ. - β 2 e - τ.

并将其重写为以下内容:

y t τ. β 1 t + β 2 t 1 - e - λ. t τ. λ. t τ. + β 3. t 1 - e - λ. t τ. λ. t τ. - e - λ. t τ.

通过上述模型,可以将这些因素解释为:Beta1对应于收益率曲线的长期/水平,Beta2对应于短期/斜率,Beta3对应于中期/曲率。 λ. 确定曲率上的载荷最大化的成熟度,并控制模型的指数衰减率。

迪堡和李主张设置 λ. 使中期因子Beta3在30个月时的负荷最大化。这也将问题从非线性拟合转化为简单的线性回归。

%显式设置时间因子lambda_t = .0609;%构造因子负载的矩阵与数据相关的价值Timetomat = [3 6 9 12 24 36 60 84 120 240 360]';x = [(大小(timetomat))(1  -  expda_t * timetomat))./(lambda_t * timetomat)...((1 - exp(-lambda_t*TimeToMat))./(lambda_t*TimeToMat) - exp(-lambda_t*TimeToMat))];%绘制因子加载情节(TimeToMat X)标题('DieBold Li模型的因子装载,随时间因素为0.0609')xlabel('成熟(月份)')ylim([0 1.1])传奇({“Beta1”“Beta2”“Beta3”},'地点'“东”

图中包含一个轴对象。带有TIENBOLD LI模型的轴对象,带有时间因素的模骨LI模型.0609包含3个类型线的3个对象。这些对象代表Beta1,Beta2,Beta3。

符合模型

一个DieboldLi开发了对象以便于从产量数据拟合模型。的DieboldLi对象继承自IRCurve对象,所以召集机会getDiscountFactorsgetParyields.GetForwardrates., 和托尔斯邮编方法都实施。此外,该方法fitYieldsFromBetas的实现,以估计给定的lambda参数的Beta参数的观察市场收益率。

DieboldLi对象用于拟合1990年至2010年每个月的Diebold Li模型。

%预分配betaβ= 0(大小(EstimationData, 1), 3);%循环通过并拟合每月的每端产量曲线jdx = 1:size(EstimationData,1) tmpCurveModel = dieboldfi . fitbetasfromyields (EOMDates(jdx),lambda_t*12,daysadd(EOMDates(jdx),30*TimeToMat),EstimationData(jdx,:)'); / /β(jdx:) = [tmpCurveModel。Beta1 tmpCurveModel。Beta2 tmpCurveModel.Beta3];结束

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

plotsettles = datenum({“30 - 1997年5月- - - - - -”31日- 8月- 1998的截止2001年6月29日的'31 -oct-2005'});数字tmpIdx = find(strcmpi(Estimationdataset.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日具有标题收益率曲线的Axis对象1包含两个类型为散布、直线的对象。1998年8月31日具有标题收益率曲线的Axis对象2包含两个类型为“散布”、“直线”的对象。2001年6月29日具有标题收益率曲线的轴对象3包含两个类型为散布、直线的对象。2005年10月31日具有标题收益率曲线的Axis对象4包含两个类型为散布、直线的对象。

预测

DieBold Li模型可用于预测未来产量曲线。Diebold和Li提出将AR(1)模型拟合到每个测试阶段的时间序列。然后,该拟合模型可以用于预测每个参数的未来值,并通过延伸,未来产量曲线。

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

回归拟合的置信区间也用于生成两个额外的收益率曲线预测,作为收益率曲线的额外可能情景。

MonthsLag变量可以进行调整,以作出不同时期的提前预测。例如,更改值from16将预测从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);%预测产量曲线figure set = daysadd(EOMDates(end),30*MonthsLag);DieboldLi_Forecast = DieboldLi (“ParYield”,解决[预测贝特拉Lambda_t * 12]);dieboldli_forecast_up = dieboldli(“ParYield”,解决ForecastBeta_Up lambda_t * 12]);DieboldLi_Forecast_Down = DieboldLi (“ParYield”,解决ForecastBeta_Down lambda_t * 12]);PlottingDates =(解决+ 30:30:解决+ 30 * 360)';情节(PlottingDates DieboldLi_Forecast.getParYields (PlottingDates),“b-”) 抓住绘图(绘图日期,DieboldLi\u Forecast\u Up.getParYields(绘图日期),的r -)绘图(plottingdates,dieboldli_forecast_down.getparyields(plottingdates),的r -) 标题([李国宝预测未来收益率曲线日期(EOMDates(end))“对”datestr(解决)])传说({的预测曲线'其他方案'},'地点''东南')DateTick.

图中包含一个轴对象。以diboldli预测的2010年12月31日至2011年1月30日的收益曲线为标题的轴对象包含3个线型对象。这些对象表示预测曲线,附加场景。

参考书目

本示例基于以下论文:

[1] Francis X. Diebold,Canlin Li。“预测政府债券收益率的术语结构。”中国经济学杂志,第130卷,第2期,2006年2月,337-364页。

相关话题