基于决策树与贝叶斯DNS的宏观机制转换利率模型
1. 项目概述与核心价值
如果你在固收研究或者宏观交易领域待过一段时间,肯定会遇到一个让人头疼的问题:那些经典的收益率曲线模型,比如动态Nelson-Siegel模型,在样本内拟合得挺好,但一到样本外预测或者解释某些特殊时期的利率行为时,就有点力不从心了。问题出在哪?一个核心的假设是,模型的参数是恒定不变的。但现实是,经济周期在轮动,货币政策在切换,从“大缓和”时期到全球金融危机,再到后来的量化宽松和近年的高通胀环境,驱动利率曲线的力量怎么可能一成不变?这就是“机制转换”模型要解决的核心痛点——它允许模型的动态行为在不同的“经济状态”或“机制”下发生变化。
传统上,做机制转换常用马尔可夫转换模型,状态是潜在的、需要估计的。但这带来两个问题:一是经济解释性有时比较模糊,你很难说清第“1”号状态到底对应着联储的什么政策立场;二是计算复杂度高,特别是状态多了以后。我们这次要聊的这个项目,提供了一种新颖且直观的思路:用决策树这种机器学习工具,直接根据可观测的宏观经济变量(比如联邦基金利率、通胀率)来“切割”出不同的经济机制,然后将其嵌入到动态Nelson-Siegel的框架里。简单说,我们不再猜状态,而是让数据通过宏观变量告诉我们,现在处于哪个“机制”。
这个项目的技术价值在于,它巧妙地在计量经济学的结构化模型与机器学习的灵活性之间架起了一座桥。你得到的不仅是一个预测能力可能更强的模型,更重要的是,每个机制都有清晰的宏观经济标签(例如“高FFR机制”、“低FFR-高INFL机制”),这极大地增强了模型结论的经济可解释性。对于从事利率曲线建模、宏观经济与金融市场联动分析,或是需要构建条件于经济状态的交易策略的从业者来说,这套方法提供了一个强大的新工具箱。
2. 核心模型框架:宏观工具化的机制转换DNS
2.1 基础:动态Nelson-Siegel模型与宏观扩展
在深入机制转换之前,得先打好地基。经典的Nelson-Siegel模型是一个极其优雅的收益率曲线静态拟合公式。而Diebold和Li(2006)将其动态化,提出了动态Nelson-Siegel模型,其核心公式为:
[ y_t(\tau) = L_t + S_t \left(\frac{1 - e^{-\lambda \tau}}{\lambda \tau}\right) + C_t \left(\frac{1 - e^{-\lambda \tau}}{\lambda \tau} - e^{-\lambda \tau}\right) + \epsilon_t(\tau) ]
这里,(y_t(\tau))是t时刻期限为(\tau)的利率。模型用三个潜在因子来刻画整个曲线:
- 水平因子 (L_t):驱动长期利率,可以理解为对远期通胀预期和真实长期利率的综合反映。
- 斜率因子 (S_t):通常计算为(短期利率 - 长期利率),反映了货币政策的松紧和短期经济预期。
- 曲率因子 (C_t):捕捉收益率曲线中间部分的凸度变化。
这三个因子被假设遵循一个向量自回归过程,比如一阶VAR(1): [ F_t = \mu + A F_{t-1} + \eta_t, \quad \eta_t \sim N(0, H) ] 其中 (F_t = [L_t, S_t, C_t]')。
宏观扩展:为了建立与宏观经济的联系,我们将宏观变量直接纳入因子动态过程。假设我们加入三个宏观变量:产能利用率(CU_t)、联邦基金利率(FFR_t)和通胀率(INFL_t)。那么状态向量扩展为 (F_t = [L_t, S_t, C_t, CU_t, FFR_t, INFL_t]')。此时,VAR系统的参数矩阵(A)和扰动协方差矩阵(H)就同时包含了收益率因子自身、宏观变量自身以及它们之间相互影响的动态关系。这就是一个“收益率-宏观”联立模型。
2.2 机制转换的引入:从马尔可夫到决策树
传统的马尔可夫机制转换模型,假设潜在状态(z_t)服从一个马尔可夫链,参数((\mu_{z_t}, A_{z_t}, H_{z_t}))随状态而变。状态是估计出来的,虽然可以通过事后分析(比如计算状态下的宏观变量均值)来赋予经济含义,但终究是“事后解释”。
本项目采用的“宏观工具化”方法,则是一种“事前划分”的思路:
- 划分依据:我们不再估计一个隐状态序列,而是直接利用可观测的宏观经济变量(如(FFR_t, INFL_t))作为“分割变量”。
- 划分工具:使用决策树(具体是回归树)的算法逻辑。树的每个节点都是一个二元分割问题(例如,(FFR_t > c_1)?),最终将整个样本时期划分成若干个互斥且完备的“叶子节点”,每个叶子节点就对应一个经济机制(Regime)。
- 划分标准:这里的关键创新在于,分割点的选择不是基于常见的均方误差,而是基于整个“收益率-宏观”DNS模型的贝叶斯边际似然。也就是说,算法会尝试所有可能的分割点和分割变量,选择那个能使划分后、每个子集(机制)内模型拟合“最优”的分割方案。这确保了划分出的机制在统计上对于描述收益率与宏观的联合动态是最有区分度的。
实操心得:这种方法的巨大优势在于计算效率和解释性。一旦树的结构确定(比如通过交叉验证选择树深),每个样本点所属的机制是确定已知的,这避免了马尔可夫模型中对状态序列进行复杂的抽样推断,大大简化了后续的参数估计和预测。你可以直接把机制虚拟变量带入模型进行分样本估计。
2.3 模型估计:贝叶斯吉布斯抽样
对于划分好的机制,我们需要估计每个机制(g)下对应的参数:因子均值(\mu_g),自回归矩阵(A_g),扰动协方差矩阵(H_g),以及载荷衰减参数(\lambda)和收益率方程误差方差(Q)。项目采用了贝叶斯框架下的吉布斯抽样进行估计。这是一个系统的“分而治之”的过程:
- 潜在因子抽样:在给定模型参数和其他条件下,使用卡尔曼滤波和平滑器从其后验分布中抽取整个样本期的潜在因子序列(\tilde{F}_T)。这是状态空间模型估计的标准步骤,确保了因子估计考虑了整个时间序列的信息。
- 参数抽样:
- (A_g)矩阵:对其采用了尖峰-平板先验进行变量选择。这意味着对于(A_g)中的每个非对角元素,我们引入一个二元潜变量(\gamma_{jk}^g),指示该元素是否应被包含在模型中(“平板”,方差较大)还是应被收缩至0(“尖峰”,方差极小)。这能自动识别出不同机制下,哪些因子间的动态关系是重要的,增强了模型的稀疏性和解释性。
- (H_g)矩阵:假设服从逆Wishart分布,这是一个多元方差的共轭先验,便于抽样。
- (\mu_g, Q, \lambda):均采用共轭或易于抽样的先验(如正态分布、逆Gamma分布),并使用Metropolis-Hastings算法处理(\lambda)的非标准条件后验。
注意事项:吉布斯抽样的实现需要仔细处理初始化和燃烧期。通常,我们可以先用经典的两步法(先通过横截面回归得到因子,再对因子做VAR)估计出参数,作为MCMC抽样的初始值。需要运行足够多次的迭代(如10000次),并舍弃前一部分(如2000次)作为燃烧期,以确保抽取的样本来自平稳的后验分布。
3. 实证分析:数据、机制识别与结果解读
3.1 数据准备与预处理
项目使用了1971年8月至2022年12月的美国国债收益率数据,这覆盖了多个重要的经济和货币政策周期。宏观变量选择了产能利用率(CU)(代表实体经济)、联邦基金利率(FFR)(代表货币政策立场)和通胀率(INFL)(代表价格稳定目标)。
关键步骤:
- 收益率数据:通常选择一组标准期限,如3个月、6个月、1年、2年、5年、7年、10年等,构成收益率曲线的横截面。
- 宏观数据:需要进行标准化或去趋势化处理吗?在文中,宏观变量似乎是直接使用的,但实践中,对于(CU)和(INFL),有时会对其进行去趋势或缺口计算,以捕捉经济周期成分。FFR通常直接使用。
- 参数初始化:衰减参数(\lambda)通常固定为0.0609(对应约30个月的最大曲率载荷),或将其作为参数进行估计。项目文中显示使用了随机游走MH算法估计(\lambda),先验设定在0.01到0.1之间,这是一个合理的范围。
3.2 机制识别结果:树如何分割经济状态
根据文中表5的t检验结果和上下文,决策树最终识别出了三个显著不同的机制:
- 机制1(高FFR机制):这个机制的特征是联邦基金利率处于相对高位。这通常对应着央行为了对抗通胀而采取紧缩货币政策的时期。
- 机制2(低FFR、低INFL机制):这个机制下,利率和通胀都处于低位。这可能对应着经济复苏乏力、通缩压力显现,或者危机后的宽松政策环境。
- 机制3(低FFR、高INFL机制):这是一个看似矛盾的组合——低利率但高通胀。这让人联想到“滞胀”环境,或者更近期的,在通胀初期央行行动滞后,实际利率为负的时期。
表5的t检验清晰地表明,这三个机制在核心参数((A)和(H)矩阵的对角元素)上存在统计显著的差异。例如,比较机制1和机制2,(A_{1,1})(水平因子的持续性)的t统计量为-53.43,p值为0.00,强烈拒绝“两者均值相等”的原假设。这意味着不同机制下,收益率因子和宏观变量的动态持续性、波动性(由(H)矩阵体现)都有本质不同,验证了机制划分的必要性和有效性。
3.3 脉冲响应分析:透视跨机制互动差异
脉冲响应函数是理解变量间动态关系的利器。图8展示了三个机制下,“收益率到宏观”和“宏观到收益率”的双向冲击传导。
- 机制3(低FFR,高INFL):IRF显示存在清晰的“收益率到宏观”的响应(即收益率因子冲击会影响宏观变量),但“宏观到收益率”的响应很弱。这支持了“宏观跨越”的观点——宏观变量中的信息已经充分体现在了收益率曲线中,因此宏观冲击对收益率没有额外的预测能力。
- 机制2(低FFR,低INFL):在这个机制中,双向的冲击传导都很微弱。收益率冲击对宏观影响小,宏观冲击对收益率影响也小。这表明在此状态下,收益率曲线与宏观经济的联动性较低,可能各自受其他特定因素驱动。
- 机制1(高FFR):这里出现了对“宏观跨越”的明显违背。存在显著的“宏观到收益率”响应,特别是FFR冲击会影响所有收益率因子(L, S, C),CU冲击也会影响曲率因子C。这意味着,在高利率机制下,宏观经济信息包含了尚未被收益率曲线完全定价的信息,对预测未来收益率走势具有独立价值。
核心发现解读:这个分析最精彩的部分在于,它揭示了“宏观跨越”不是一个非黑即白的命题,而是一个机制依赖的现象。在央行积极干预、利率高企的机制1下,宏观信息是重要的;而在其他机制下,宏观的边际预测能力则很弱或不存在。这对于资产定价和投资策略的启示是深远的:你不能用一个固定的模型来套用所有时期,必须对经济状态进行条件化分析。
4. 模型实现的关键细节与避坑指南
4.1 决策树构建与贝叶斯边际似然
如何具体实现这个“基于边际似然的决策树”?
- 候选分割:对于每一个时间点t,考虑每一个宏观变量(如FFR_t)作为潜在的分割变量。将该变量在t时刻的值作为一个候选分割点c。
- 计算似然:执行一次分割,将样本分为两个子集:(S_{left} = {s: X_s^{(j)} \leq c}) 和 (S_{right} = {s: X_s^{(j)} > c})。对于每个子集,计算“收益率-宏观”DNS模型的贝叶斯边际似然。边际似然是模型对数据的整体拟合优度,在贝叶斯框架下,它是在积分掉所有参数后得到的。
- 选择最优分割:遍历所有变量和所有可能的分割点(通常考虑分位数点以减少计算量),选择那个使得两个子集边际似然之和最大的(变量,分割点)组合。
- 递归生长:对生成的子集重复上述过程,直到满足停止条件(如树达到最大深度、子集样本量过小、或似然提升不显著)。
技术难点:直接计算DNS状态空间模型的精确边际似然是困难的。实践中常采用近似方法,如Chib(1995)的方法,利用吉布斯抽样的输出进行计算;或者使用贝叶斯信息准则作为代理。文中可能采用了某种高效的近似算法。
注意:树的深度需要谨慎选择。太浅可能无法捕捉复杂的机制转换,太深则会导致过拟合和机制样本量过小。建议使用交叉验证或设置一个最小的叶子节点样本量(如总样本的10%)来防止过拟合。
4.2 吉布斯抽样中的技术要点
- 潜在因子抽样(卡尔曼平滑):这是计算最密集的部分。对于包含宏观变量的高维状态空间,需要高效实现。好消息是,由于DNS的载荷矩阵(\Lambda)是确定性的(由(\lambda)和期限(\tau)决定),且误差协方差(Q)假设为对角矩阵,这大大简化了卡尔曼滤波中的矩阵求逆运算。可以使用“扰动平滑”算法来高效抽取整个因子路径。
- 处理机制转换:在每一轮吉布斯迭代中,由于机制(z_t)是已知的(由决策树确定),我们可以根据(z_t)的取值,将数据分配到对应的机制(g)下,然后分别使用属于该机制的数据子集来更新参数((\mu_g, A_g, H_g))。这相当于并行运行了G个独立的贝叶斯VAR估计。
- 尖峰-平板先验的实现:对于(A_g)的每个元素(a_{jk}^g),其先验是: [ a_{jk}^g | \gamma_{jk}^g \sim (1-\gamma_{jk}^g) N(0, \xi_0^2) + \gamma_{jk}^g N(0, \xi_1^2) ] 其中(\xi_0^2)很小(如(10^{-5}),尖峰),(\xi_1^2)较大(如1,平板)。(\gamma_{jk}^g)服从伯努利分布。在抽样时,我们需要交替更新:
- 给定(\gamma),从正态后验中抽取(a)。
- 给定(a),计算(\gamma)的后验概率(与边际似然相关)并抽取新的(\gamma)。 文中附录的推导展示了这一过程。一个常见技巧是:对于转移矩阵(A_g)的对角线元素(因子自身的滞后项),我们通常强制(\gamma_{jj}^g=1),即认为因子一定依赖于自身的前一期,这符合经济学直觉并保证了模型的稳定性。
4.3 模型诊断与稳健性检查
完成估计后,必须进行一系列诊断:
- MCMC收敛性:观察关键参数(如(\lambda), 各机制(A_g)的主对角线元素)的迹图。它们应该围绕一个均值平稳波动,没有明显的趋势。可以使用Gelman-Rubin统计量等工具进行更正式的检验。
- 机制持续性:检查每个机制持续的时间长度。如果某个机制只持续了很短的时间(比如一两个月),那么其参数估计可能不可靠,需要考虑是否过度分割。
- 样本外预测:将模型用于滚动窗口或扩展窗口的样本外预测,与单机制DNS模型、传统马尔可夫转换DNS模型进行比较。评估指标可以是收益率水平预测的均方根误差,也可以是收益率曲线变化方向预测的准确性。这是检验模型实用价值的金标准。
- 敏感性分析:
- 宏观变量选择:尝试不同的宏观变量组合(如加入失业率、GDP增长等),看机制划分结果是否稳定。
- 树深度:尝试不同的最大树深(如2, 3, 4),观察核心结论(如三个机制的经济含义、宏观跨越的机制依赖性)是否发生变化。
- 先验设定:调整尖峰-平板先验的方差参数((\xi_0^2, \xi_1^2)),看变量选择的结果是否稳健。
5. 从研究到实践:策略含义与扩展方向
5.1 对投资与交易策略的启示
- 条件化宏观交易:研究最直接的启示是,基于宏观经济信号(如FFR突破阈值)的交易策略需要“机制条件化”。在识别出的“高FFR机制”下,宏观数据发布(如非农就业、CPI)对利率市场的冲击可能更大、更持久,因为此时宏观信息具有独立的预测价值。相反,在“低FFR-低INFL”机制下,宏观数据的影响可能被市场提前充分定价,交易机会更多来自技术面或流动性因素。
- 曲线交易策略:不同机制下,收益率曲线因子的动态((A_g)矩阵)不同。例如,在高FFR机制下,FFR冲击对斜率因子(S_t)影响显著,这可能意味着在加息周期中,做平曲线(short 2s-10s)的策略有更清晰的宏观驱动。模型可以用于计算不同机制下,各期限利差对宏观冲击的敏感度,从而优化曲线交易的头寸规模和时机。
- 风险管理的应用:不同机制对应着不同的波动率状态(由(H_g)矩阵刻画)。例如,“低FFR-高INFL”机制可能伴随着更高的宏观和利率不确定性。风险管理模型(如VaR)可以引入这种机制转换,在经济状态切换时动态调整风险资本要求。
5.2 模型可能的扩展与改进
- 时变机制划分:当前的决策树生成一个静态的样本划分。一个自然的扩展是引入滚动窗口或递归的树构建方法。例如,每个月都用截至当期的数据重新估计决策树和模型参数,这样得到的机制划分和参数都是时变的,更能适应经济结构的渐进变化。
- 融入更多机器学习元素:
- 随机森林/梯度提升树:用集成学习的方法来构建机制划分,通过对多棵树的投票或平均,可以得到更稳定、更鲁棒的机制识别结果,减少单棵决策树可能的不稳定性。
- 神经网络作为分割函数:用一个小型神经网络来学习一个关于宏观变量的连续“机制概率”,而不是硬分割。这可以平滑机制之间的转换,可能更符合经济状态渐变的事实。
- 与无套利模型的结合:DNS模型是一个纯统计模型。将其与无套利约束的金融理论模型结合,是学术界的前沿方向。可以在机制转换的框架下,引入无套利条件,使得模型不仅能拟合和预测,还能用于利率衍生品的定价。
- 应用于其他资产类别:这套“宏观工具化机制转换”的框架具有很强的通用性。完全可以将其应用于信用利差曲线、外汇远期曲线、大宗商品期限结构的建模中,研究不同宏观机制下这些资产价格曲线的动态特征。
5.3 实操中可能遇到的挑战与应对
- 计算成本:虽然比传统的马尔可夫转换MCMC计算量小,但结合决策树搜索和贝叶斯估计,计算量依然可观。对于高频数据或更长的样本期,需要考虑代码优化(如使用JAX、Julia等高性能语言)、并行计算(不同机制的参数更新可以并行)以及云计算资源。
- 机制标签的稳定性:在样本外预测时,新数据点需要被归类到某个已有机制中。这需要保存决策树的划分规则。如果新数据的宏观特征落在了树的某个节点,但该节点在样本内未被分割(即属于一个叶子节点),则归类简单。但如果宏观环境发生了结构性突变,新数据可能完全落在历史样本的分布之外,这时模型可能失效。需要建立一套“默认机制”或异常值处理规则。
- 过度拟合与机制数量:决策树容易过拟合。除了交叉验证,一个实用的做法是,不仅看统计显著性(如t检验),更要看经济显著性。识别出的机制是否对应着清晰、公认的经济阶段(如沃尔克抗通胀时期、格林斯潘大缓和时期、全球金融危机时期、后疫情通胀时期)?如果机制划分结果难以解释,即使统计上显著,其应用价值也会打折扣。
这个项目为我们展示了一条将机器学习灵活性与计量经济学结构模型深度结合的清晰路径。它不仅仅是一个复杂的模型,更是一种分析范式:在面对金融时间序列的非线性、结构性变化时,主动地、数据驱动地去寻找并定义这些变化背后的宏观驱动力,然后在此基础上进行条件化的建模与分析。在实际工作中,从理解这个框架开始,到复现核心结果,再到将其思想应用于自己面对的具体问题,每一步都能带来对市场更深一层的认知。
