Skip to content

Latest commit

 

History

History
172 lines (143 loc) · 8.4 KB

File metadata and controls

172 lines (143 loc) · 8.4 KB

Structural Breaks in the Distributional Incidence of U.S. Federal Fiscal Policy, FY2000–2025

Author: Andy Salazar
Date: March 2026
Status: Working Paper
Paper: output/FINDINGS_v3_restructured.md  |  PDF: output/reports/


Overview

This repository contains the data, code, and replication materials for "Structural Breaks in the Distributional Incidence of U.S. Federal Fiscal Policy, FY2000–2025."

The paper provides a unified distributional analysis of U.S. federal fiscal policy combining:

  • 26 annual observations of CBO historical budget data (FY2000–FY2025)
  • Census Bureau income distribution series (24 annual observations)
  • CPS ASEC microdata for 8 benchmark years (1.4 million person-records) plus the full CPS ASEC 2024 (115,836 persons)
  • Treasury Monthly Treasury Statement administrative data
  • BLS Consumer Expenditure Survey 2023 spending shares
  • 12 CPI sub-indices tracking tariff-affected goods through January 2026

Key findings:

  • The FY2025 customs revenue spike (z = 25.8) and interest-crowding ratio (z = 2.4) are statistically identified structural breaks from quarter-century trends
  • The bottom 50% (136.6M persons) bear a combined fiscal burden of $182B ($1,331/person, 10.6% of pretax income) from spending cuts and tariff consumer burden
  • Under the SCOTUS tariff revocation + 15% legislative replacement (Section 12), the B50 burden nearly doubles to $320B ($2,341/person, 18.7%) under central estimates
  • Price stickiness implies tariff revocation provides zero consumer relief — the burden shifts from Treasury to corporate margins
  • Results are robust across 21 analytical specifications spanning 6 robustness dimensions

Replication

Prerequisites

  • Python 3.11+ (tested on 3.13.5)
  • Free API keys: FRED, Census Bureau
  • ~25 GB disk space (for database and microdata)
  • Optional: Pandoc + MiKTeX for journal-quality PDF generation

Quick Start

# 1. Clone and set up environment
git clone https://github.com/andsalazar/FederalBudgetAnalysis.git
cd FederalBudgetAnalysis
python -m venv venv
venv\Scripts\activate       # Windows
# source venv/bin/activate  # Linux/macOS
pip install -r requirements.txt

# 2. Configure API keys
cp .env.example .env
# Edit .env with your FRED and Census API keys

# 3. Run tests (no API keys needed)
python -m pytest tests/ -v    # 59 tests

# 4. Collect data (requires API keys + network)
python run_pipeline.py

# 5. Run all analyses
python run_25year_analysis.py
python run_counterfactual_analysis.py
python run_tariff_incidence_analysis.py
python run_real_analysis.py
python run_robustness_checks.py
python run_scotus_tariff_scenario.py

# 6. Generate figures and PDF
python generate_charts.py
python generate_new_figures.py
python generate_real_charts.py
python generate_scotus_figures.py
python generate_pdf.py                     # Requires Pandoc + LaTeX
python generate_pdf.py --engine xhtml2pdf  # Fallback (no LaTeX needed)

Or use the Makefile: make all (install → test → data → analysis → figures → report).

Data Availability

File Size Included in Repo Acquisition
data/raw/Annual_CY_February2026.csv 0.1 MB CBO Historical Budget Data download
data/raw/51134-2026-02-Historical-Budget-Data.xlsx 0.1 MB CBO Historical Budget Data download
data/processed/*.csv < 1 MB Generated by analysis scripts
output/tables/*.json < 1 MB Generated by analysis scripts
output/figures/*.png 6.8 MB Generated by figure scripts
output/reports/*.pdf 15.5 MB Generated by generate_pdf.py
data/federal_budget.db 8.5 MB Run python run_pipeline.py (requires FRED API key)
data/external/cps_asec_2024_microdata.csv 14.2 MB Run python acquire_cps_asec.py (requires Census API key)

Files marked ❌ exceed GitHub's recommended size limits or require API access. They are regenerated deterministically by the acquisition scripts listed above.

Project Structure

FederalBudgetAnalysis/
├── output/
│   ├── FINDINGS.md                  # Main paper (Markdown source)
│   ├── figures/                     # 49 publication-quality figures
│   │   ├── 01–10_*.png              # Descriptive budget (FY2015–2025)
│   │   ├── fig1–fig9_*.png          # Distributional impact
│   │   ├── 25yr_*.png               # 26-year structural trends
│   │   ├── fig11–fig20_*.png        # Analytical figures
│   │   ├── fig21–fig24_*.png        # SCOTUS scenario (Section 12)
│   │   └── real_*.png               # Real-terms supplementary
│   ├── tables/                      # JSON/CSV analysis outputs
│   └── reports/                     # Rendered PDFs
│
├── src/                             # Core library
│   ├── analysis/                    #   Econometric models (ITS, structural breaks)
│   ├── collectors/                  #   Data collectors (FRED, Treasury, CBO)
│   ├── database/                    #   SQLite schema & ORM
│   ├── visualization/               #   Chart generation
│   └── utils/                       #   Config loader
│
├── tests/                           # 59 unit tests (pytest)
├── docs/                            # Methodology, literature review, pre-registration
├── data/                            # Raw, processed, and external data
├── notebooks/                       # Exploratory Jupyter notebooks
│
├── run_25year_analysis.py           # 26-year structural trends & break tests
├── run_counterfactual_analysis.py   # CBO counterfactual & distributional attribution
├── run_tariff_incidence_analysis.py # CPI pass-through & DWL estimation
├── run_real_analysis.py             # Real-terms spending analysis
├── run_robustness_checks.py         # 6-dimension robustness battery (21 specs)
├── run_scotus_tariff_scenario.py    # SCOTUS revocation + 15% tariff scenario
├── run_services_control_test.py     # Traded goods vs. services control test
├── compute_b50_calibration.py       # CEX→CPS B50 quintile mapping
├── generate_charts.py               # Descriptive budget figures (1–10)
├── generate_new_figures.py          # Analytical figures (28–37)
├── generate_real_charts.py          # Real-terms figures (42–49)
├── generate_scotus_figures.py       # SCOTUS scenario figures (38–41)
├── generate_pdf.py                  # Markdown → PDF rendering
├── config.yaml                      # Central configuration
├── requirements.txt                 # Python dependencies
└── Makefile                         # Reproducibility pipeline

Data Sources

Source Series Observations Period
FRED 48 macro + 12 CPI + 11 NIPA ~53,000 1947–2026
Treasury Fiscal Data MTS Tables 5 & 9 ~11,000 2015–2025
CBO Historical Budget Data (67 series) ~4,700 1962–2035
Census Bureau CPS ASEC microdata (9 years) ~1.5M records 2002–2023
Census H-2 Household income quintile shares 24 annual 2000–2023
BLS CEX Consumer Expenditure Survey 2023 Table 1101 2023

Citation

If you use this code or data, please cite:

@techreport{salazar2026structural,
  title={Structural Breaks in the Distributional Incidence of {U.S.} Federal Fiscal Policy, {FY2000--FY2025}},
  author={Salazar, Andy},
  year={2026},
  month={March},
  type={Working Paper},
  institution={SSRN},
  number={6285038},
  url={https://papers.ssrn.com/sol3/papers.cfm?abstract_id=6285038},
  note={Replication package: \url{https://github.com/andsalazar/FederalBudgetAnalysis}}
}

License