主要内容

拟合Diebold李模型

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

这篇论文可以在这里找到:

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

加载数据

每月使用的数据是美国公债收益率(殖利率)从1990年到2010年的男高音1 Mo, 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%提取数据,每个月的最后一天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和李开始与纳尔逊·西格尔模型

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对应于中期/曲率。 λ 决定了成熟的加载在曲率是最大化,和管理的指数衰减速率模型。

Diebold和李提倡设置 λ 加载在中期因素,最大化Beta3 30个月。这也将问题从简单线性回归的非线性拟合。

%显式地设置时间因素λlambda_t = .0609;%构造一个矩阵的因子载荷%男高音与数据相关联TimeToMat = [3 6 9 12 24 36 60 84 120 240 360) ';X =[(大小(TimeToMat)) (1 - exp (-lambda_t * TimeToMat))。/ (lambda_t * TimeToMat)((1 - exp (-lambda_t * TimeToMat))。/ (lambda_t * TimeToMat) - exp (-lambda_t * TimeToMat)));%绘制因子载荷情节(TimeToMat X)标题(的因子载荷Diebold .0609李模型与时间因素的)包含(的期限(月)1.1)ylim([0])传说({“Beta1”,“Beta2”,“Beta3”},“位置”,“东”)

图包含一个坐标轴对象。坐标轴对象与标题因子载荷.0609 Diebold李模型与时间因素,包含成熟(个月)包含3线类型的对象。这些对象代表Beta1, Beta2 Beta3。

合适的模型

一个DieboldLi对象开发促进从收益率数据拟合模型。的DieboldLi对象继承自IRCurve对象,因此getZeroRates,getDiscountFactors,getParYields,getForwardRates,toRateSpec方法都实现。此外,该方法fitYieldsFromBetas实现估计β参数λ参数观察市场收益率。

DieboldLi对象用于适合Diebold李模型为每个月从1990年到2010年。

% Preallocate贝塔β= 0(大小(EstimationData, 1), 3);%循环和适合每个月收益率曲线的结束jdx = 1:尺寸(EstimationData, 1) tmpCurveModel = DieboldLi.fitBetasFromYields (EOMDates (jdx) lambda_t * 12, daysadd (EOMDates (jdx)、30 * TimeToMat), EstimationData (jdx:) ');β(jdx:) = [tmpCurveModel。Beta1 tmpCurveModel。Beta2 tmpCurveModel.Beta3];结束

Diebold李适合在选定日期都包含在这里

PlotSettles = [datetime (1997、5、30), datetime(31) 1998年,8日,datetime(29) 2001年,6日,datetime (2005、10、31)];图jdx = 1:长度(PlotSettles)次要情节(2,2,jdx) tmpIdx =找到(strcmpi (Estimationdataset.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轴对象。收益率曲线轴对象与标题1 - 1997年5月30 -包含2散射类型的对象,线。坐标轴对象与标题2 - 8月31日收益率曲线1998包含2散射类型的对象,线。坐标轴对象3标题截止2001年6月29日收益率曲线包含2散射类型的对象,线。坐标轴对象与标题4 - 10月31日收益率曲线2005包含2散射类型的对象,线。

预测

Diebold李模型可以用来预测未来的收益率曲线。Diebold和李提出拟合时间序列的AR(1)模型的每个测试参数。这个拟合模型可以用来预测未来的每个参数的值,进而未来的收益率曲线。

对于这个示例MATLAB函数回归用于估计AR(1)模型的参数为每个测试。

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

MonthsLag变量可以调整不同时期提前预测。例如,改变的价值16会改变的预测提前提前1月到6月的预测。

MonthsLag = 1;[tmpBeta,少女]=回归(β(MonthsLag + 1:结束,1),[的(大小(β(MonthsLag + 1:最终,1)))β(1:end-MonthsLag, 1)));ForecastBeta(1, - 1) =[1β(结束,1)]* tmpBeta;ForecastBeta_Down(1, - 1) =[1β(结束,1)]*少女(:1);ForecastBeta_Up(1, - 1) =[1β(结束,1)]*少女(:,2);[tmpBeta,少女]=回归(β(MonthsLag + 1:结束,2),[的(大小(β(MonthsLag + 1:结束,2)))β(1:end-MonthsLag, 2)));ForecastBeta(1、2) =[1β(,2)]* tmpBeta;ForecastBeta_Down(1、2) =[1β(,2)]*少女(:1);ForecastBeta_Up(1、2) =[1β(,2)]*少女(:,2);[tmpBeta,少女]=回归(β(MonthsLag + 1:结束,3),[的(大小(β(MonthsLag + 1:最终,3)))β(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);%预测收益率曲线图解决= daysadd (EOMDates(结束),30 * MonthsLag);DieboldLi_Forecast = DieboldLi (“ParYield”,解决ForecastBeta 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 -”)举行情节(PlottingDates DieboldLi_Forecast_Up.getParYields (PlottingDates),的r -)情节(PlottingDates DieboldLi_Forecast_Down.getParYields (PlottingDates),的r -)标题(“李Diebold预测收益率曲线”datestr (EOMDates(结束)“对”datestr(解决)])传说({的预测曲线,“额外的场景”},“位置”,“东南”)datetick

图包含一个坐标轴对象。坐标轴对象与标题Diebold李预测收益率曲线为30 - 1月31日- 12月- 2010 - 2011包含3线类型的对象。这些对象代表预测曲线,额外的场景。

参考书目

这个例子是基于以下文章:

[1]弗朗西斯•x Diebold Canlin李。“预测政府债券收益率的期限结构。”计量经济学杂志问题2,体积130年,2006年2月,页337 - 364。

相关的话题