Skip to content

Add state income tax revenue as calibration target #492

@MaxGhenis

Description

@MaxGhenis

Problem

State/district datasets are not calibrated to actual state income tax revenue, leading to potentially large deviations from real-world collections.

Evidence: Ohio deviation

When modeling Vivek Ramaswamy's proposal to eliminate Ohio capital gains tax, we found:

Metric PolicyEngine Actual
Ohio income tax revenue $24.4B ~$10B
Deviation 2.4x -

Sources for actual Ohio income tax revenue:

Current calibration targets

Per fit_calibration_weights.py, state/CD datasets currently calibrate to:

  • SNAP
  • Health insurance premiums
  • Household counts (stratum_group_id 4)

But not state income tax revenue.

Impact

  • Absolute revenue estimates for state tax reforms are unreliable
  • Distributional shares (e.g., "83% of benefit goes to top 1%") are likely still valid since they're relative
  • Users analyzing state tax policy may be misled by raw revenue numbers

Proposed solution

Add state income tax revenue as a calibration target using Census Bureau's Annual Survey of State Government Tax Collections.

Data source

The Census STC provides individual income tax collections by state annually since 1939. FRED also provides this data in a convenient format (e.g., OHINCTAX for Ohio).

Implementation

  1. Create pull_state_income_tax_targets.py to fetch Census STC or FRED data
  2. Add state_income_tax_state.csv calibration target file
  3. Include state_income_tax in the target_filter variables list in fit_calibration_weights.py
  4. Re-run calibration

Related

This was discovered while modeling Ramaswamy's Ohio capital gains tax elimination proposal for PolicyEngine analysis.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions