Skip to content

Add voluntary tax filer assignment#513

Merged
MaxGhenis merged 4 commits intomainfrom
add-voluntary-tax-filer
Feb 8, 2026
Merged

Add voluntary tax filer assignment#513
MaxGhenis merged 4 commits intomainfrom
add-voluntary-tax-filer

Conversation

@MaxGhenis
Copy link
Contributor

@MaxGhenis MaxGhenis commented Feb 7, 2026

Summary

  • Add would_file_taxes_voluntarily variable for tax units that file for non-refund reasons
  • Add filer count calibration targets by AGI band from SOI Table 1.1

Background

The tax_unit_is_filer variable in policyengine-us currently only captures:

  1. Required filers (income > threshold)
  2. Refund-seeking filers (negative income_tax)

However, SOI data shows ~21M filers with AGI < $10k, many of whom file voluntarily even when not required and not receiving a refund. These voluntary filers may file for reasons such as state filing requirements, documentation purposes, or habit.

Changes

Voluntary filer logic (cps.py)

  • Uses existing takes_up_eitc as proxy for refund-seeking behavior (no need for separate variable)
  • Adds would_file_taxes_voluntarily for tax units NOT taking up EITC who still file (~5%)
  • This captures filing for state requirements, documentation, or habit

Calibration targets (loss.py)

  • Add SOI Table 1.1 filer counts by AGI band as calibration targets
  • 7 AGI bands: <$0, $0-5k, $5k-10k, $10k-25k, $25k-50k, $50k-100k, $100k+
  • Includes ALL filers (not just taxable returns) to properly calibrate low-income filer counts
  • Uprates 2015 SOI counts to current year using population growth

Test plan

  • Verify CI passes
  • Confirm would_file_taxes_voluntarily is added to CPS dataset at ~5% rate for non-EITC takers
  • Verify new filer count calibration targets appear in loss matrix output

Dependencies

⚠️ Must merge PolicyEngine/policyengine-us#7333 first - defines would_file_taxes_voluntarily variable

Related issues

🤖 Generated with Claude Code

MaxGhenis and others added 3 commits February 7, 2026 17:18
SOI data shows many low-AGI filers who file taxes voluntarily even when
not required and not receiving a refund. This affects calibration accuracy
when comparing CPS-based filer counts to SOI totals.

Add would_file_taxes_voluntarily variable at tax_unit level with ~5%
probability, using seeded RNG for reproducibility. This enables
policyengine-us to incorporate voluntary filing behavior in its
tax_unit_is_filer variable.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Replace simple 5% voluntary filing rate with more nuanced approach:

1. Add would_file_for_refund variable that identifies tax units taking
   up EITC (95% of EITC takers are assumed to know they'll get a refund)

2. Apply voluntary filing rate (3%) only to those NOT already filing
   for a refund, to avoid double-counting

This better models the actual filing decision process where refundable
credit recipients have a clear financial incentive to file, while others
may file for state requirements, documentation, or habit.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Voluntary filer changes (cps.py):
- Remove redundant would_file_for_refund variable since takes_up_eitc
  already captures refund-seeking behavior
- Simplify to single would_file_taxes_voluntarily variable that applies
  only to tax units NOT taking up EITC
- Use 5% voluntary filing rate for non-EITC takers

Calibration target changes (loss.py):
- Add SOI Table 1.1 filer counts by AGI band as calibration targets
- Covers 7 bands: <$0, $0-5k, $5k-10k, $10k-25k, $25k-50k, $50k-100k, $100k+
- Includes all filers (not just taxable returns) to properly calibrate
  low-income filer counts which are important for distribution accuracy
- Uprates 2015 SOI counts to current year using population growth

This consolidates PR #514 into PR #513.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@MaxGhenis MaxGhenis merged commit 4d58579 into main Feb 8, 2026
7 checks passed
@MaxGhenis MaxGhenis deleted the add-voluntary-tax-filer branch February 8, 2026 04:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Impute probability of filing taxes among tax units with zero net tax

1 participant