Causal Lag Structure Discovery in Confounded Time Series via Orthogonalized Adaptive Estimation
Organizations: Department of Mathematics, University of California, Los Angeles · Department of Electrical and Computer Engineering, University of California, Los Angeles · Oxford-Man Institute of Quantitative Finance, University of Oxford · Department of Statistics, University of Oxford
Abstract
Finding which variables cause which others in multivariate time series, and at what lags, is central to science and policy, yet existing methods force a choice between flexible confounder adjustment, data-driven lag selection, and inference that controls the false discovery rate (FDR). ORACLE-VARX does all three in one pipeline. First, double/debiased machine learning (DML) removes nonlinear confounder effects from the outcomes and the lagged series. Second, adaptive causal lag estimation (ACLE) picks the lag order at each time step by sequential significance tests, tracking regime changes. Third, entry-wise -tests with Benjamini--Hochberg correction select directed edges at a target FDR. We prove that in each rolling window, the debiased coefficients are asymptotically normal around a window-averaged target, so their -tests are asymptotically valid. On a synthetic benchmark with time-varying structure and nonlinear confounding, ORACLE-VARX (LightGBM) tracks the true lag order best (RMSE vs --), has edge FDR , close to PCMCI () and below VAR () and VAR-LiNGAM (), and forecasts better than all three. On nine U.S. sector ETFs with macroeconomic confounders, it yields interpretable causal graphs whose lag order rises in high-volatility regimes.
Figures & tables
| Method | Lag Sel. | Conf. Adj. | DML |
|---|---|---|---|
| VAR | RMSE | None | – |
| VARX | RMSE | Linear | – |
| ACLE-VAR | ACLE | None | – |
| ACLE-VARX | ACLE | Linear | – |
| OR-VARX | RMSE | Nonlinear | ✓ |
| ORACLE-VARX | ACLE | Nonlinear | ✓ |
| Method | Lag | Coeff. | Fcst. | FDR | Power |
|---|---|---|---|---|---|
| RMSE | MAE | MAE | |||
| No confounders | |||||
| VAR | 1.475 | 0.060 | 0.110 | 0.129 | 0.655 |
| ACLE-VAR | 1.006 | 0.066 | 0.109 | 0.147 | 0.661 |
| All confounders, no DML | |||||
| VARX | 1.239 | 0.063 | 0.109 | 0.076 | 0.650 |
| Method | vix | macro5 | all10 |
|---|---|---|---|
| VAR | 1.08 | ||
| ACLE-VAR | 1.32 | ||
| VARX | 1.11 | 0.43 | 0.75 |
| ACLE-VARX | 1.07 | 0.81 | 0.86 |
| OR-VARX, ET | 0.71 | 0.71 | 0.67 |
| ORACLE-VARX, ET | 0.83 | 0.85 | 0.68 |
Appendix figures & tables12 assets
Supplementary material from the paper’s appendix.
Appendix
| Method | Obs. | Nonzero MAE | Fcst. MAE | Lag RMSE | FDR | Power | F1 |
|---|---|---|---|---|---|---|---|
| Non-DML methods | |||||||
| VAR | none | 0.0605 | 0.1100 | 1.475 | 0.129 | 0.655 | 0.734 |
| ACLE-VAR | none | 0.0655 | 0.1094 | 1.006 | 0.147 | 0.661 | 0.730 |
| VARX | all | 0.0627 | 0.1092 | 1.239 | 0.076 | 0.650 | 0.755 |
| ACLE-VARX | all | 0.0691 | 0.1081 | 1.099 | 0.080 | 0.651 | 0.754 |
| VARX | partial-2 | 0.0604 | 0.1098 | 1.292 | 0.096 | 0.647 | 0.745 |
| Method | Obs. | Nonzero MAE | Fcst. MAE | Lag RMSE | FDR | Power | F1 |
|---|---|---|---|---|---|---|---|
| PCMCI + OLS refit | all | 0.0646 | 0.1081 | 1.214 | 0.045 | 0.685 | 0.792 |
| PCMCI + OLS refit | partial-2 | 0.0664 | 0.1089 | 1.223 | 0.052 | 0.672 | 0.780 |
| PCMCI + OLS refit | partial-1 | 0.0664 | 0.1083 | 1.211 | 0.052 | 0.672 | 0.780 |
| PCMCI + OLS refit | none | 0.0657 | 0.1091 | 1.136 | 0.066 | 0.673 | 0.775 |
| VAR-LiNGAM | all | 0.0704 | 0.1074 | 1.132 | 0.187 | 0.641 | 0.703 |
| VAR-LiNGAM | partial-2 | 0.0710 | 0.1082 | 1.132 | 0.196 | 0.641 | 0.697 |
| Method | First-Stage Learner | Ann. Return (%) | Sharpe Ratio |
|---|---|---|---|
| VAR | — | 5.93 | 1.08 |
| ACLE-VAR | — | 7.34 | 1.32 |
| VARX | — | 4.22 | 0.75 |
| ACLE-VARX | — | 4.80 | 0.86 |
| OR-VARX | Extra Trees | 3.51 | 0.67 |
| ORACLE-VARX | Extra Trees | 3.55 | 0.68 |
| Method | Learner | Naive | Weighted | Top 50% | Top 25% | Top 75% |
|---|---|---|---|---|---|---|
| VAR | — | 4.32 / 1.04 | 5.93 / 1.08 | 6.16 / 0.95 | 5.12 / 1.01 | 8.41 / 0.86 |
| ACLE-VAR | — | 4.64 / 1.15 | 7.34 / 1.32 | 8.54 / 1.31 | 6.73 / 1.31 | 10.14 / 1.04 |
| VARX | OLS | 3.35 / 0.83 | 6.00 / 1.11 | 7.16 / 1.10 | 5.59 / 1.09 | 8.98 / 0.92 |
| ACLE-VARX | OLS | 3.09 / 0.78 | 5.83 / 1.07 | 6.47 / 1.00 | 5.85 / 1.14 | 8.76 / 0.90 |
| OR-VARX | LightGBM | 1.94 / 0.51 | 2.55 / 0.50 | 2.63 / 0.45 | 1.99 / 0.43 | 2.04 / 0.26 |
| OR-VARX | XGBoost | 0.98 / 0.27 | 1.43 / 0.29 | 2.07 / 0.36 | 1.79 / 0.38 | 3.21 / 0.38 |
| Method | Learner | Naive | Weighted | Top 50% | Top 25% | Top 75% |
|---|---|---|---|---|---|---|
| VAR | — | 4.32 / 1.04 | 5.93 / 1.08 | 6.16 / 0.95 | 5.12 / 1.01 | 8.41 / 0.86 |
| ACLE-VAR | — | 4.64 / 1.15 | 7.34 / 1.32 | 8.54 / 1.31 | 6.73 / 1.31 | 10.14 / 1.04 |
| VARX | OLS | 0.87 / 0.23 | 2.34 / 0.43 | 2.51 / 0.40 | 1.51 / 0.32 | 2.99 / 0.35 |
| ACLE-VARX | OLS | 1.99 / 0.48 | 4.66 / 0.81 | 5.25 / 0.79 | 3.56 / 0.69 | 7.87 / 0.82 |
| OR-VARX | LightGBM | 0.11 / 0.05 | 0.47 / 0.11 | 0.94 / 0.12 | 0.36 / 0.05 | 0.52 / 0.10 |
| OR-VARX | XGBoost | 0.21 / 0.03 | 0.83 / 0.12 | 0.95 / 0.12 | 0.16 / 0.01 | 2.96 / 0.27 |
| Method | Learner | Naive | Weighted | Top 50% | Top 25% | Top 75% |
|---|---|---|---|---|---|---|
| VAR | — | 4.32 / 1.04 | 5.93 / 1.08 | 6.16 / 0.95 | 5.12 / 1.01 | 8.41 / 0.86 |
| ACLE-VAR | — | 4.64 / 1.15 | 7.34 / 1.32 | 8.54 / 1.31 | 6.73 / 1.31 | 10.14 / 1.04 |
| VARX | OLS | 1.87 / 0.46 | 4.22 / 0.75 | 5.03 / 0.77 | 3.45 / 0.66 | 7.27 / 0.77 |
| ACLE-VARX | OLS | 1.89 / 0.47 | 4.80 / 0.86 | 5.68 / 0.86 | 3.38 / 0.65 | 5.98 / 0.66 |
| OR-VARX | LightGBM | 0.44 / 0.09 | 0.13 / 0.05 | 0.33 / 0.02 | 0.46 / 0.07 | 1.44 / 0.19 |
| OR-VARX | XGBoost | 0.79 / 0.21 | 0.29 / 0.08 | 0.64 / 0.13 | 0.15 / 0.06 | 2.95 / 0.27 |
| Panel A: Experiment Configuration | ||
|---|---|---|
| Parameter | Synthetic | ETF |
| 5 | 10 | |
| -grid | ||
| OLS window | 200 days | 504 days |
| Tree training window | 200 days | 504 days |
| Validation days | 20 | 21 |
| Synthetic | ETF | |
| Windows | 2,595 | 4,261 |
| Blocks | 140 | 228 |
| Fits per block | 60 | 585 |
| Ours ( ) | 8,400 | 133,380 |
| (A) fresh split per window | 155,700 (18.5 ) | 2,492,685 (18.7 ) |
| (B) same estimator per window | 1,704,960 (203 ) | 62,198,370 (466 ) |
| Learner | Ours | Per window | (A) | (B) |
|---|---|---|---|---|
| Extra Trees | 6.1 min | 0.14 s | 1.9 h | 20.8 h |
| Random Forest | 9.4 min | 0.22 s | 2.4 h | 31.8 h |
| LightGBM | 13.6 min | 0.31 s | 3.7 h | 45.9 h |
| XGBoost | 17.1 min | 0.40 s | 6.1 h | 57.9 h |
| Synthetic | ETF ( all10 ) | |||
| Method | Window | Run | Window | Run |
| PCMCI (ParCorr) | 0.16 s | 7 min | 4.4–9.1 s | 5–11 h |
| PCMCI (CMIknn) | 6.2–6.6 min | 268–284 h | 1 h | 4,000 h |
| VAR-LiNGAM | 0.02 s | 1 min | 9–15 s | 11–17 h |
| Ours, Extra Trees | 0.14 s | 6.1 min | – | 1.6 h ∗ |
| Ours, TabPFN (A100) | – | 48–57 s | – | 88 min |