做什么(One-liner)
Koop-Korobilis (2013) 遗忘因子 Kalman filter 的 时变参数 VAR:β_t 连续演化(不像 MS 的有限 regime 跳变)+ EWMA 时变协方差 Σ_t + Cholesky 识别 + 结构冲击 IRF + 预测误差方差分解 (FEVD)。央行主流方法。
怎么用
直接 Python:
from services.mfle.tvp_var_kk import fit_tvp_var_kk
result = fit_tvp_var_kk(
df, # 宏观 DataFrame
lag=2, # VAR(2)
forgetting_lambda=0.97, # β 变化速度
ewma_kappa=0.96, # Σ 平滑
policy_column='FEDFUNDS', # 政策变量(移到最后)
irf_horizon=20, # IRF 时间跨度
)
# result['irf'] shape = (21, M, M)
# result['fevd'] shape = (21, M, M)
# result['beta_trajectory'] 显示时变系数演化Canvas(Phase B+ 将通过 tvp_var_v1 graphlet 暴露)。
核心公式
# 状态方程:
y_t = Z_t β_t + ε_t, ε_t ~ N(0, Σ_t)
β_t = β_{t-1} + η_t, η_t ~ N(0, Q_t)
# Koop-Korobilis 关键简化:
P_{t|t-1} = (1/λ) P_{t-1|t-1} # 遗忘因子替代 Q 采样
Σ_t = κ Σ_{t-1} + (1-κ) ê_t ê_t' # EWMA 替代 SV
# IRF (Cholesky + companion form):
L = chol(Σ_T)
A = companion_matrix(β_T)
IRF[h] = A^h 前 M 行 ⊗ [L; 0]
# FEVD: cumsum(IRF²) / rowsum假设与适用场景
假设:VAR(p) 线性 + β_t 随机游走 + Σ_t 平稳 EWMA + Cholesky 识别 + T > training + lag + 5 + M ≥ 2。
适用:货币政策传导、跨资产宏观冲击路径、时变敏感度分析、Canvas 结构性宏观节点。
不适用:需要 MCMC uncertainty bands(用 Primiceri 版本)、严格 stochastic vol、sign restrictions 识别、intraday、样本 < 40 obs。
输入 / 输出契约
(df, lag=2, forgetting_lambda=0.97, ewma_kappa=0.96, training_size?, policy_column?, irf_horizon=20) → {method, M, p, T_filtered, training_size, forgetting_lambda, ewma_kappa, irf_horizon, variables, policy_column, policy_shock_idx, beta_final (M,K_per), sigma_final (M,M), beta_trajectory (T_filtered,K), sigma_diag_trajectory (T_filtered,M), irf (horizon+1,M,M), fevd (horizon+1,M,M)}
已知局限
- 无 MCMC uncertainty bands — 只给点估计;用
tvp_svar_primiceri获 5%/50%/95% 后验分位数 - EWMA 是 SV 简化 — 严格 log-σ² 随机游走用 Primiceri
- Cholesky 对 policy 位置敏感 — 用户须理解 ordering 语义
- λ, κ 是超参 — 无交叉验证,默认值来自 Koop-Korobilis 推荐
- β_t 随机游走假设 — 若 DGP 是 regime-switching,用 MS-AR (
detect_regime) - OLS prior 依赖 training_size — 太小过噪,太大压缩 Kalman 覆盖
- VAR(p=5+) 计算成本 — 伴随矩阵 Mp × Mp 扩大,A^h 成本 O(h·M³p³)
- 不支持 VARX — 当前仅自回归
- Joseph-form 协方差更新 — 数值稳定但略慢
参考文献
Koop-Korobilis (2013) Large TVP-VARs + Raftery-Kárný-Ettler (2010) forgetting factor + Primiceri (2005) TVP-SVAR motivation + Lütkepohl (2005) VAR 教科书 + Sims (1980) Macroeconomics and Reality + Bierman (1977) factorization methods。详见 frontmatter。
Golden Test
tests/golden/fixtures/tier3/tvp_var_kk/,numpy_manual reference + 结构不变量 contract tests。1e-6 tolerance。15 tests:
7 Scenarios
macro_4var_baseline— 4 变量 VAR(2) + FEDFUNDS policy,央行标配stationary_2var_lag1— 最小 2 变量 VAR(1),测核心数学regime_shift_3var— 半程 vol 转变,λ=0.95 快速适应high_forgetting_lambda_099— λ=0.99 慢变low_forgetting_lambda_095— λ=0.95 快变insufficient_data— < 训练 + lag + 5,错误路径single_variable— M=1,错误路径
8 Contract Tests
determinism— 5 reruns 字节一致(无 MCMC)fevd_cholesky_row_zero_is_one_shock— Cholesky ID 下第一个变量 100% 由第一个冲击驱动fevd_rows_sum_to_one— 每 (h, i) 行和严格 = 1.0irf_shape_locked— (horizon+1, M, M) contractpolicy_column_moved_last— Cholesky ordering 语义lambda_sensitivity_smooth_vs_fast— λ 0.99 vs 0.93 系数移动量严格单调training_size_prior_stability— 前 training_size 期 β 严格相同method_enum_contract— method ∈ 2 个允许值
Changelog
- 1.0.0 (2026-04-21) — 首次 Active(Tier 3 新增 Koop-Korobilis TVP-VAR;与 Primiceri Bayesian MCMC 版本为姐妹 operator)

