--- license: apache-2.0 tags: - time-series - forecasting - foundation-model - macroeconomics - fred-md - arxiv:2606.28670 library_name: tempopfn pipeline_tag: time-series-forecasting --- # MacroCast **Paper:** Carriero, Pettenuzzo & Shekhar (2026), *MACROCAST: A Vintage-Consistent Time Series Foundation Model for Real-Time Macroeconomic Forecasting* — [arXiv:2606.28670](https://arxiv.org/abs/2606.28670) ([SSRN](https://ssrn.com/abstract=7004218)). **MacroCast** is a compact (~1.2M-parameter) time-series foundation model for **macroeconomic forecasting**. It forecasts a full panel of monthly indicators in a **single forward pass** (no autoregressive windowing) and returns **probabilistic** (9-quantile) forecasts. It is trained in two stages: 1. Base model: A ~1.2M-parameter linear-RNN backbone (built on [TempoPFN](https://github.com/automl/TempoPFN), Apache-2.0), trained from scratch **entirely on synthetic data** (no real macro data). 2. **MacroCast** — Base model **fine-tuned** on FRED-MD via an expanding-window, real-time-vintage procedure, using a mixture of macro-calibrated synthetic panels (block-bootstrap, per-variable AR, Dynamic Factor Model, and BVAR). ## Vintages (real-time fine-tuning) This repo ships **one checkpoint per fine-tuning vintage** (in `models/`). Each checkpoint is MacroCast fine-tuned on only the FRED-MD data available *through that cutoff* — e.g. the 2010 vintage has never seen post-2010 data — so you can choose how much history the model has seen and run **leak-free real-time / backtesting** experiments. The available vintages, their data cutoffs, and per-vintage variable counts are listed in `manifest.json` (`default_year` is used when no year is given). ## Usage **Install dependencies** (needs a **GPU**). On Colab/Jupyter prefix with `!`; `torch` is already present on Colab, otherwise install the build: ```bash pip install flash-linear-attention==0.5.0 transformers==5.8.1 einops gluonts huggingface_hub ``` ```python from huggingface_hub import snapshot_download import sys local = snapshot_download(repo_id="shubhranshu/MacroCast") sys.path.insert(0, local) # for forecast.py from forecast import MacroCastForecaster # List vintages, then load MacroCast for one (year=None -> latest): print(MacroCastForecaster.available_years(local)) # e.g. [1998, ..., 2023] f = MacroCastForecaster.from_pretrained(local, year=2023) # history: np.ndarray of shape [T, N] (T monthly steps, N FRED-MD variables) point, quantiles = f.predict(history, horizon=12, freq="M") ``` - `point`: `[horizon, N]` median (0.5-quantile) forecast. - `quantiles`: `[horizon, N, 9]` forecasts for quantiles 0.1 … 0.9. ## Model details - **Architecture**: GatedDeltaProduct linear-RNN, `embed=128`, 3 layers, ~1.2M params. - **Objective**: 9-quantile (0.1…0.9) pinball loss. - **Pre-training**: synthetic priors only (GP, kernel, Ornstein–Uhlenbeck, ForecastPFN, CauKer, sine/sawtooth/step, …) — no real macro data. - **MacroCast fine-tuning**: FRED-MD real-time vintages expanded into a synthetic mixture — `real` + `block-bootstraps`, `arima` (per-variable AR), `dfm` (Dynamic Factor Model), and `bvar_clust` / `bvar_full` (Minnesota BVAR). ## Intended use and limitations - Built for **monthly macroeconomic** panels. Feed transformed/stationary inputs. - Forecasts are statistical outputs, **not financial or policy advice**. ## Citation If you use MacroCast, please cite: ```bibtex @misc{carriero2026macrocast, title = {{MACROCAST}: A Vintage-Consistent Time Series Foundation Model for Real-Time Macroeconomic Forecasting}, author = {Carriero, Andrea and Pettenuzzo, Davide and Shekhar, Shubhranshu}, year = {2026}, eprint = {2606.28670}, archivePrefix = {arXiv}, primaryClass = {econ.EM}, url = {https://arxiv.org/abs/2606.28670} } ``` ## Acknowledgements & license Built on [TempoPFN](https://github.com/automl/TempoPFN) (Apache-2.0): the model backbone, trainer, and synthetic-data generators are vendored from that project and modified for macroeconomic forecasting. Released under Apache-2.0. Please also cite TempoPFN (Moroshan et al., 2025, arXiv 2510.25502).