Navigating the Dual Mandate: An Empirical Analysis of Federal Reserve Policy Regimes (1995–2025)

Evaluating Pre-FAIT, FAIT, and the Return to Flexible Inflation Targeting

Author

Muhammad Imran

Published

September 27, 2026

library(tidyverse)
library(lubridate)
library(patchwork)
library(stringr)



# Safe helper function to fetch FRED CSV data
fetch_fred <- function(series_id) {
  # Keep ONLY alphanumeric letters and numbers in the series_id
  clean_id <- gsub("[^A-Za-z0-9_]", "", series_id)
  
  # Clean, plain URL string
  raw_url <- paste0("https://fred.stlouisfed.org/graph/fredgraph.csv?id=", clean_id)
  
  # Download directly to temp file
  temp_file <- tempfile(fileext = ".csv")
  download.file(raw_url, destfile = temp_file, mode = "wb", quiet = TRUE)
  
  # Read CSV
  df <- read_csv(temp_file, show_col_types = FALSE)
  colnames(df) <- c("date", "price")
  unlink(temp_file)
  
  df %>%
    mutate(
      date = lubridate::as_date(date),
      price = as.numeric(price)
    ) %>%
    drop_na()
}

# Fetch all required macroeconomic series
cpi_df      <- fetch_fred("CPIAUCSL") %>% rename(CPI = price)
fedfunds_df <- fetch_fred("FEDFUNDS") %>% rename(FedFunds = price)
unrate_df   <- fetch_fred("UNRATE")   %>% rename(Unemployment = price)
jolts_df    <- fetch_fred("JTSJOL")   %>% rename(JobOpenings = price) 
unemp_level <- fetch_fred("UNEMPLOY") %>% rename(UnempLevel = price)  

# Combine into master extended dataset (macro_ext)
macro_ext <- cpi_df %>%
  inner_join(fedfunds_df, by = "date") %>%
  inner_join(unrate_df, by = "date") %>%
  left_join(jolts_df, by = "date") %>%
  left_join(unemp_level, by = "date") %>%
  filter(date >= as.Date("1995-01-01") & date <= as.Date("2025-12-31")) %>%
  arrange(date) %>%
  mutate(
    CPI_YoY = (CPI / lag(CPI, 12) - 1) * 100,
    RealFedFunds = FedFunds - CPI_YoY,
    VU_Ratio = JobOpenings / UnempLevel
  ) %>%
  drop_na(CPI_YoY)

# Alias for backward compatibility
macro_data <- macro_ext

Executive Summary

The Federal Reserve operates under a statutory Dual Mandate established by Congress: achieving price stability and maximum employment. Historically, these goals have existed in friction, often analyzed through the framework of the Phillips Curve, which posits an inverse relationship between inflation and unemployment.

This report examines thirty years of U.S. monetary policy (1995–2025), focusing on the shift from strict point-in-time inflation targeting to Flexible Average Inflation Targeting (FAIT) in August 2020, and the subsequent policy reset in August 2025. Through data pulled directly from the Federal Reserve Economic Data (FRED) system, we assess whether these regime changes successfully achieved macroeconomic stability.

Theoretical Framework & The Dual Mandate

The Statutory Mandate

The Federal Reserve targets:

  • Price Stability: Defined as a long-run annualized inflation rate of \(2\%\).

  • Maximum Employment: The highest level of employment that the economy can sustain without generating excessive inflationary pressure (often aligned with the Natural Rate of Unemployment or \(u^*\)).

(Note: While informal discussions sometimes conflate terms, Congress mandates maximum employment, not maximum unemployment.)

Mathematical Formulation of Policy Trade-Offs

The traditional Phillips Curve framework describes inflation (\(\pi_t\)) as a function of expected inflation (\(\pi_t^e\)), excess demand measured by unemployment relative to its natural rate (\(u_t - u_t^*\)), and exogenous supply shocks (\(\epsilon_t\)):

\[\pi_t = \pi_t^e - \gamma (u_t - u_t^*) + \epsilon_t\]

Where: * \(\pi_t = \frac{CPI_t - CPI_{t-12}}{CPI_{t-12}} \times 100\) represents the Year-over-Year (YoY) Consumer Price Index growth rate. * \(\gamma > 0\) measures the responsiveness of inflation to labor market tightness.

Under strict point-in-time targeting (Pre-2020), the Fed aimed to maintain:

\[\lim_{k \to \infty} \mathbb{E}_t [\pi_{t+k}] = 2\%\]

Under Flexible Average Inflation Targeting (FAIT) (2020–2025), the target was modified so that past deviations below target (\(\pi_\tau < 2\%\)) were offset by temporary future overshoots:

\[\frac{1}{T} \sum_{\tau=t-T}^{t} \pi_\tau = 2\%\]


Macroeconomic Data Analysis in R

We fetch thirty years of monthly economic indicators using the tidyquant package:

  • Consumer Price Index for All Urban Consumers (CPIAUCSL): Seasonally adjusted index level.

  • Effective Federal Funds Rate (FEDFUNDS): Primary monetary policy lever.

  • Civilian Unemployment Rate (UNRATE): Seasonally adjusted unemployment rate.

knitr::opts_chunk$set(echo = FALSE, message = FALSE, warning = FALSE)
library(tidyverse)
library(patchwork)

Timeline of Federal Reserve Policy Regimes

Evaluation of Policy Regimes: The Chicago Fed “Bullseye”

To evaluate the success of Fed policy, we utilize a version of the Chicago Fed Bullseye framework. The center of the bullseye represents the policy target:

  • Target Inflation (pi*): 2.0%

  • Target Unemployment (u*): 4.1% (NAIRU estimate)

The red dashed circles (and inner asterisk) represent the Federal Reserve’s Dual Mandate “Bullseye” Target Zone.

Here is what each component indicates:

  • Red Asterisk (*) Center: The exact ideal economic target set by the Federal Reserve—2.0% YoY CPI Inflation and 4.1% Unemployment Rate (the natural rate of unemployment/NAIRU).

  • Inner Red Dashed Circle: The Optimal / Tight Target Zone. Data points inside this ring mean the economy was performing near the Fed’s dual mandate goals.

  • Outer Orange Dotted Circle: The Acceptable / Tolerance Band. Data points outside this boundary indicate a significant policy failure or macroeconomic shock (such as sub-target deflation risk in 2010 or the >9% inflation overshoot during 2021–2022).

The Non-Linear Beveridge/Phillips Curve (V/U Ratio)

During the post-COVID period, traditional unemployment (U) stayed low while inflation skyrocketed. Economists discovered that the Vacancy-to-Unemployed (V/U) ratio provided a far superior signal of labor market overheating than U alone. Demonstrate that traditional unemployment failed to predict post COVID inflation, while the Vacancy to unemployed ration accurately captured labor shortage shocks.

Policy Success Metric — Disinflation Trajectory Comparison

To evaluate whether pre-FAIT vs FAIT targeting regimes were “successful,” I plot the inflation reduction path against unemployment across major inflation shocks (2000 Dot-Com Peak, 2008 Great Financial Crisis, and 2021–2025 FAIT Disinflation). It directly evaluates policy effectiveness by tracing the trajectory of inflation reduction vs labor market cost across the 2008 GFC, 2015 Pre-FAIT tightening, and 2021-2025 FAIT cycles.

Synthesis & Policy Takeaways

The Breakdown of the 2010s Phillips Curve

During the 2010–2019 expansion, unemployment fell from 9.8% down to 3.5%. Traditional Phillips Curve models suggested that low unemployment would ignite wage-push inflation, prompting rate hikes in 2015–2018. However, inflation remained persistently below 2%. This dynamic demonstrated a flattened Phillips Curve (gamma to 0), motivating the switch to FAIT in August 2020.

The FAIT Policy Outcome (2020–2025)

FAIT was designed to prevent long-term inflation expectations from falling too low. However, when applied during post-pandemic supply disruptions and demand recovery (2021–2022), inflation surged to over 9.0%. Because FAIT anchored policy to prior years of low inflation, rate hikes were initially delayed. When the Fed acted, it engaged in one of the most aggressive rate-tightening cycles in modern policy history.

The August 2025 Strategy Shift

In August 2025, the Federal Reserve officially retired the explicit average targeting regime, returning to a forward-looking flexible targeting framework akin to pre-2020 policy. This shift highlights that backward-looking average inflation targets can create policy inertia during unexpected supply shocks.