README.md

MacroFilters

Lifecycle:
experimental R-CMD-check CRAN
status DOI

Working Paper Available: The econometric methodology and mathematical proofs underlying this package are distributed via SSRN: Robust Real-Time Macroeconomic Trend Extraction: A Gradient Boosting Approach.

MacroFilters is a unified, high-performance library for extracting trend and cycle components from macroeconomic time series. It combines classical filters (Hodrick-Prescott, Hamilton, Boosted HP) with its flagship algorithm, the MacroBoost Hybrid (MBH) — a gradient-boosting filter with Huber loss that is immune to structural shocks such as COVID-19, financial crises, and wars.

Why MacroFilters instead of mFilter or neverhpfilter?

The End-Point Problem: Solved

During extreme black swan events, traditional filters anchored in $L_2$ loss mechanically deform the long-run structural trend to absorb massive, transitory outliers.

As demonstrated with Real US GDP during the 2020 Q2 COVID-19 collapse, the standard HP filter bends towards the shock. The MBH filter isolates the exogenous shock entirely within the cyclical component, preserving absolute trend integrity in real-time.

Furthermore, ex-ante spectral alignment ensures the MBH filter perfectly matches the baseline cyclical volatility of the industry-standard HP filter during normal conditions, unlike the excessively volatile Hamilton filter.

(Plots generated using real-time vintage data from the Federal Reserve Economic Data - FRED).

Installation

# install.packages("devtools")
devtools::install_github("michal0091/MacroFilters")

Quick Start Arsenal

| Function | Method | Key Advantage | |----|----|----| | hp_filter() | Hodrick-Prescott (1997) | Sparse O(n) implementation | | hamilton_filter() | Hamilton (2018) | OLS regression, no spurious cycles | | bhp_filter() | Boosted HP — Phillips & Shi (2021) | Iterative fitting with BIC/ADF stopping | | mbh_filter() | MacroBoost Hybrid | Robust to outliers via Huber loss |

All functions return a list of class c("macrofilter", "list").

library(MacroFilters)

# Fast, agnostic filtering on any time-series object
hp_result  <- hp_filter(us_gdp_xts)
mbh_result <- mbh_filter(us_gdp_xts)

# Access components directly
mbh_result$trend
mbh_result$cycle

# Add 95% bootstrap confidence bands and plot them
mbh_ci <- mbh_filter(us_gdp_xts, boot_iter = 50L)
autoplot(mbh_ci)            # ggplot: trend, observed series and confidence ribbon

Further Reading



Try the MacroFilters package in your browser

Any scripts or data that you put into this service are public.

MacroFilters documentation built on June 12, 2026, 1:06 a.m.