PolicyEngine / PolicyEngine/policyengine-skills

/analyze-policy output: Federal standard deduction +$1,000, all statuses (2026-2035) — 10-year run

Open
#26 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
0
Forks
2
Avg merge
2h 46m
Merged PRs (30d)
6

Description

Filed by the /analyze-policy pipeline as a live end-to-end demo (Pavel-initiated). Updated 2026-07-01 with real 10-year run (policy 97853) after the initial single-year submission surfaced the yr1×N extrapolation problem and a per-year-indexed baseline gotcha (see notes below).

Reform

Increase the federal standard deduction by $1,000 across all five filing statuses, tax years 2026-2035. Values inflate from the 2026 baseline in $1K steps each year (matching baseline inflation indexing).

Filing status 2026 baseline 2026 reform 2035 baseline 2035 reform
JOINT $32,200 $33,200 $38,750 $39,750
SURVIVING_SPOUSE $32,200 $33,200 $38,750 $39,750
HEAD_OF_HOUSEHOLD $24,150 $25,150 $29,050 $30,050
SINGLE $16,100 $17,100 $19,350 $20,350
SEPARATE $16,100 $17,100 $19,350 $20,350

Verdict: PASS-WITH-NOTES · Policy ID: 97853 (single-row policy 97852 was superseded — see below) · Baseline: 2 (US current law)

Headline result — 10 years, real per-year runs

Metric Value
Federal 10yr cost −$196.10B
State tax revenue 10yr −$2.36B
Combined 10yr −$198.46B
Yr-1 (2026) federal −$17.86B
Yr-10 (2035) federal −$21.35B (+19.6% growth over window)
Distributional signature Progressive — Gini −0.026% consistently, top-1% share −0.011 to −0.012pp/yr
Poverty impact (avg across years) Modest reduction (−0.02% to −0.24% relative all-poverty each year)
Households affected ~42-43%
Per-year cost table
Year Federal ($B) State ($B) Gini Δ % Top-1% Δ pp Poverty Δ %
2026 −17.86 −0.35 −0.026 −0.012 −0.025
2027 −17.86 −0.31 −0.027 −0.011 −0.102
2028 −18.27 −0.31 −0.028 −0.011 −0.131
2029 −18.63 −0.23 −0.029 −0.011 −0.241
2030 −19.80 −0.15 −0.026 −0.012 −0.201
2031 −20.08 −0.26 −0.026 −0.012 −0.001
2032 −20.47 −0.20 −0.026 −0.011 −0.135
2033 −20.68 −0.20 −0.026 −0.011 −0.170
2034 −21.10 −0.18 −0.026 −0.011 −0.118
2035 −21.35 −0.17 −0.026 −0.011 −0.079
10yr −196.10 −2.36

Federal cost rises 19.6% across the window because the fixed +$1K bump captures a growing marginal population of filers as nominal incomes rise. The initial single-year run's naive yr1×10 = $178.6B extrapolation understated the true cost by $17.5B (~10%).

Distributional signature

  • Progressive. Gini decreases consistently, top-1% share decreases every year. Top deciles itemize (SALT + mortgage + charity) so few claim the std ded; std ded benefits concentrate in middle-income deciles.
  • Non-refundable. Decile 1 gets essentially $0 — no tax liability to offset. Middle-income deciles (5-8) benefit most.
  • Wide coverage. ~42-43% of households benefit each year — much broader than SALT/CDCC reforms.

Reform dict (for reproducibility)

Policy 97853 submits per-year values because std ded has per-year inflation-indexed baseline rows (see the pipeline finding below). Structure:

{
  "gov.irs.deductions.standard.amount.JOINT": {
    "2026-01-01.2026-12-31": 33200,
    "2027-01-01.2027-12-31": 34050,
    "2028-01-01.2028-12-31": 34700,
    "...": "...",
    "2035-01-01.2035-12-31": 39750
  },
  "gov.irs.deductions.standard.amount.SINGLE": { /* 2026-2035 per-year */ },
  "gov.irs.deductions.standard.amount.HEAD_OF_HOUSEHOLD": { /* 2026-2035 per-year */ },
  "gov.irs.deductions.standard.amount.SEPARATE": { /* 2026-2035 per-year */ },
  "gov.irs.deductions.standard.amount.SURVIVING_SPOUSE": { /* 2026-2035 per-year */ }
}

Full reform-dict archived in analyses/2026-07-01-us-standard-deduction-plus-1k.md.

Comparison

No external source scored this exact reform shape. Two adjacent-shape mirrors are backlog items (would corroborate the +$1K estimate against real published numbers):

  1. OBBBA 2025 std ded bump ($750 single / $1,500 joint) vs TCJA-extension baseline — JCT-scored
  2. TCJA std ded near-doubling vs pre-TCJA baseline — JCT ~$700B/decade

Neither was executed in this analysis. The 10-year yr-by-yr headline stands on its own microsim; external corroboration deferred.

Methodology

  • API: 10 parallel calls to api.policyengine.org/us/economy/97853/over/2?time_period={2026..2035}
  • Wall clock: ~15 min for all 10 to complete under API contention
  • Dataset: enhanced_cps (advertised) → backed by populace-us-2024-cd-concept-budget-dbbdcec-512e-b2500-r2-20260627T022640Z
  • Model: PE-US 1.745.0
  • Static analysis; no behavioral response
  • Full archive: analyses/2026-07-01-us-standard-deduction-plus-1k.md

Pipeline findings surfaced by this run

1. Naive yr1×N extrapolation was misleading

Single-year × 10 = $178.6B UNDERSTATED the true 10-year cost of $196.1B by $17.5B / ~10%. Under the updated pipeline (PR #27, merged as f4dad88), single-year archives no longer report a naive extrapolation. Multi-year runs use real per-year API calls.

2. Per-year-indexed baseline gotcha (new)

The original single-row policy 97852 (2026-01-01.2035-12-31: 33200) only overrode the 2026 baseline row. Std ded has per-year inflation-indexed baseline rows (2027=$33,050, 2028=$33,700, ..., 2035=$38,750). The reform-dict semantics: a value at date X overrides the baseline row at date X but does NOT sweep forward through subsequent baseline rows. Result: 2027-2035 fell back to inflation-indexed baseline — reform=baseline — impact=0.

Pipeline fix needed: microsim-runner should validate reform-dict row coverage against baseline row count before submission. When a single reform-dict row covers a date range where the baseline has multiple rows, warn (or auto-expand to per-year values). This is what turned the first 10-year run into 9 zero-impact years, and would be a silent failure without post-hoc inspection.

The corrected policy 97853 submits per-year values (baseline+$1K for each year). This is what should be the default for any reform touching an inflation-indexed parameter family.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start at the microsim-runner pipeline and trace how reform dictionaries are submitted and how baseline rows are represented. Add validation for reform-dict coverage against the baseline row count, with a warning or expansion when one range spans multiple baseline rows. Done means inflation-indexed reforms cannot silently produce zero-impact years; verify against the standard-deduction example and the archived analysis.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
tooling
Issue type
Feature
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
58/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.