Skip to content

Update federal tax parameters to the 2027 amounts in Rev. Proc. 2026-35 - #10683

Merged
MaxGhenis merged 6 commits into
PolicyEngine:mainfrom
DTrim99:irs-2027-indexing
Nov 10, 2026
Merged

MaxGhenis merged 6 commits into
PolicyEngine:mainfrom
DTrim99:irs-2027-indexing

Conversation

@DTrim99

@DTrim99 DTrim99 commented Nov 6, 2026 •

Copy link
Copy Markdown
Collaborator

Updates federal tax parameters to the 2027 inflation-adjusted amounts the IRS published in Rev. Proc. 2026-35. Before this PR, 2027 values came from CBO forecasts, internal forecasts or gov.irs.uprating. The published PDF still reads "[Release Date, 2026]" in section 1. The amounts below are from section 3.

Federal amounts

Item (Rev. Proc. section, PDF page) Parameter 2026 2027
Tax brackets, §1(j)(2) (3.01, pp. 4-6) gov.irs.income.bracket.thresholds e.g. single 12% from $12,400 single 12,800 / 52,025 / 109,125 / 208,325 / 264,550 / 661,375; joint 25,600 / 104,050 / 218,250 / 416,650 / 529,100 / 793,650; HoH 18,250 / 69,650 / 109,100 / 208,300 / 264,550 / 661,350; separate as single except 37% from 396,825
Capital gains 0% / 15% maximums, §1(j)(5) (3.03, p. 7) gov.irs.capital_gains.thresholds joint 98,900 / 613,700 joint and surviving spouse 102,100 / 633,600; HoH 68,350 / 598,400; single 51,050 / 563,200; separate 51,050 / 316,800
CTC, §24 (3.05, p. 8) gov.irs.credits.ctc.amount.base, ...refundable.individual_max $2,200 / $1,700 $2,300 / $1,800 (both already projected; now cited)
EITC maximum, §32(b) (3.06, p. 10) gov.irs.credits.eitc.max 664 / 4,427 / 7,316 / 8,231 685 / 4,573 / 7,552 / 8,496
EITC phase-out start ...eitc.phase_out.start 10,860 / 23,890 11,210 / 24,660
EITC joint bonus ...eitc.phase_out.joint_bonus 7,280 / 7,270 7,520 (18,730 − 11,210) / 7,510 (32,170 − 24,660)
EITC investment income limit, §32(i) ...eitc.phase_out.max_investment_income 12,200 12,600
AMT exemption, §55(d)(1) (3.11, p. 11) gov.irs.income.amt.exemption.amount 90,100 / 140,200 / 70,100 93,000 / 144,700 / 72,350
AMT 28% threshold, §55(b)(1) (3.11, p. 11) gov.irs.income.amt.brackets 244,500 252,500
AMT phase-out start, §55(d)(2) (3.11, p. 12) ...amt.exemption.phase_out.start 500,000 / 1,000,000 515,950 / 1,031,900
AMT separate-filer limit (3.11, p. 12) ...amt.exemption.separate_limit 640,200 660,650
AMT child exemption, §59(j) (3.12, p. 12) ...amt.exemption.child.amount 9,750 10,050
Educator expenses, §62(a)(2)(D) (3.13, p. 12) gov.irs.ald.educator_expense.cap 350 350
Standard deduction, §63(c)(2) (3.15, p. 13) gov.irs.deductions.standard.amount 16,100 / 32,200 / 24,150 16,600 / 33,200 / 24,925
Dependent standard deduction, §63(c)(5) ...standard.dependent.amount, ...additional_earned_income 1,350 / 450 1,400 / 500
Aged or blind, §63(f) ...standard.aged_or_blind.amount single and HoH 2,050; joint, separate and surviving spouse 1,650 single and HoH 2,100; joint, separate and surviving spouse 1,700
Qualifying relative gross income, §152(d)(1)(B) (3.25, p. 16) gov.irs.income.exemption.amount 5,300 5,500
QBI threshold, §199A(e)(2) (3.28, p. 17) gov.irs.deductions.qbi.phase_out.start joint 403,500 / separate 201,775 / all others 201,750 joint 416,600 / separate 208,325 / all others 208,300 (phase-in range unchanged at $75,000 / $150,000)
QBI minimum deduction, §199A(i) (3.28, p. 17) gov.irs.deductions.qbi.deduction_floor.amount $400 at $1,000 $415 at $1,030
Long-term care premiums, §213(d)(10) (3.29, p. 17) ...itemized.medical.long_term_care_premium_limit 500 / 930 / 1,860 / 4,960 / 6,200 500 / 945 / 1,890 / 5,030 / 6,290 (see below)
Student loan interest phase-out, §221(b)(2)(B) (3.31, p. 18) gov.irs.ald.student_loan_interest.reduction.start 85,000 / 175,000 90,000 / 180,000
Excess business loss, §461(l)(3)(A)(ii)(II) (3.33, p. 19) gov.irs.ald.loss.max 256,000 / 512,000 264,000 / 528,000
Estate tax basic exclusion, §2010(c)(3) (3.44, p. 21) gov.irs.credits.estate.base 15,000,000 15,480,000

Order where several values are listed: single / joint / head of household unless the row says otherwise; EITC by 0 / 1 / 2 / 3+ children; AMT exemption single and HoH / joint and surviving spouse / separate; long-term care by age band.

Long-term care premiums for ages 41 to 50

Section 213(d)(10)(B)(i) requires rounding each increase over a base to the nearest $10. Together, the other four 2027 amounts put the medical care cost adjustment at 151.4% to 151.75%:

  • $500 on a $200 base;
  • $1,890 on $750;
  • $5,030 on $2,000;
  • $6,290 on $2,500.

On the $375 base for ages 41 to 50, that gives an increase of $567.75 to $569.06, which rounds to $570, so the limit comes to the $945 that section 3.29 prints.

From 2013 to 2026, the IRS printed a multiple of $10 for this band each year, though adding a multiple of $10 to $375 always gives an amount ending in 5. The parameter keeps those published amounts. From 2028, its uprating rounds each whole amount to the nearest $10, so its projections for this band also end in 0. This PR changes neither.

State amounts that follow the federal ones

  • Arizona standard deduction. A.R.S. 43-1041(H) indexes the Arizona amounts in the same manner as the federal basic standard deduction, and the Arizona and federal 2025 bases are equal, so 2027 equals the federal 16,600 / 33,200 / 24,925 (single and separate / joint / HoH), as the file already does for 2026.
  • Maine aged or blind addition. 36 M.R.S. 5124-C(1-B)(B) and (1-C)(B) tie Maine's additional standard deduction to the IRC 63(c)(3) amount for tax years 2025 and 2026 only. From 2027, 5124-C(1-D) makes Maine's standard deduction the federal standard deduction, and me_standard_deduction returns the federal standard_deduction once follows_federal turns true on 2027-01-01. The 2027 rows (1,700 for joint, separate and surviving-spouse filers; 2,100 for single and head-of-household filers) reach no baseline result. They apply only to a reform that sets follows_federal to false, where they carry the 2025-2026 tie to the federal amount forward; without them the file's uprating would give 1,650 for joint, separate and surviving-spouse filers.

Massachusetts' excess business loss threshold isn't changed: Massachusetts doesn't adopt the OBBBA reset (TIR 26-4), so its amount follows its own computation, not the Rev. Proc.

Forecast rows

  • Where a CBO forecast covered 2027 (EITC phase-out start and joint bonus, the AMT 28% threshold, the AMT separate-filer limit, the dependent floor, the refundable CTC), the 2027 row now holds the IRS amount and the CBO rows for 2028 on stay, as the 2026 update did.
  • Three bracket thresholds carried an "Internal forecast" for 2027-2035: separate filers' 32% and 35% thresholds and heads of household's 35% threshold. The separate filers' 2028 forecast ($207,950) sits below the 2027 IRS amount ($208,325), so I removed those rows. Like every other bracket threshold, these now uprate from 2027 with gov.irs.uprating.
  • parameters/uprating_extensions.py computes the dependent standard deduction's earned income addition and the educator cap from their statutory bases starting the year after the last YAML value, so those projections now start in 2028. The dependent floor keeps CBO rows through 2036, so its statutory projection still starts in 2037. No constant there needed changing.

Not changed

The Rev. Proc. also adjusts items PolicyEngine-US doesn't model: the adoption credit and adoption assistance, health FSA, educational assistance, transportation fringe benefits, savings bond interest, section 179, MSAs, ABLE, the foreign earned income exclusion, section 1202, gift and other estate items, excise taxes and penalties.

Health savings account and retirement plan limits come from separate IRS guidance.

Tests

New 2027 cases in the variable-named files:

  • basic_standard_deduction.yaml: single 16,600; head of household 24,925; joint 33,200. The existing 2027 single case expected the uprated $16,550 and now expects $16,600. The 2027 dependent case keeps $3,500, now citing sec. 3.15(2).
  • additional_standard_deduction.yaml: aged single 2,100; joint, both aged, 3,400.
  • eitc_maximum.yaml: childless 685; three children 8,496.
  • income_tax_main_rates.yaml, from Tables 1-4:
    • single, taxable income 60,000: 5,987 + 22% × 7,975 = 7,741.50;
    • head of household, 300,000: 58,480 + 35% × 35,450 = 70,887.50;
    • joint, 900,000: 213,290.50 + 37% × 106,350 = 252,640;
    • separate, 400,000: 106,645.25 + 37% × 3,175 = 107,820.
  • amt_exemption.yaml: single, AMTI 200,000: 93,000; joint, AMTI 1,131,900: 144,700 − 0.5 × 100,000 = 94,700.

Locally (Windows, one process at a time): the five edited files pass (108 cases), and so do the code-health parameter checks (123 tests) and these existing files with 2027 periods: savers_credit_person, savers_credit_qualified_contributions, alimony_expense_ald, nyc_income_tax_before_credits, ny_yonkers_income_tax, or_multnomah_pfa_tax, the ACA PTC and additional-bracket contrib reforms, and the ACA and Medicaid files I reached. I didn't run the full suites locally; CI covers the remaining 2027 cases, including the state income tax files that read federal amounts.

Tests that pinned 2027 values built from forecasts, updated in the second and third commits:

  • Washington WFTC. The maximum qualifying income for a childless joint filer is the federal childless EITC limit, now 18,730 + 685 / 0.0765 = $27,684.25; Rev. Proc. 2026-35 prints $27,684.
  • Arizona standard deduction. The test's projection check now starts from the published 2027 amount instead of 2026.
  • Long-term care premium property test. Adds the 2027 row.
  • Colorado progressive income tax reform, Case 11. 2027 Colorado taxable income is 30,000 − 16,600 = 13,400, so the tax is 495.80, or 452.80 after the sales tax refund.
  • Montana newborn credit reform, Cases 1 and 2. 2027 Montana income tax moves with the published federal amounts: −324.53 and 2,139.60.
  • Social Security means-test unit test. Main's 2027 literals for this household drop by $7 of income tax: 2,708, and household net income 49,449.60.
  • Social Security differential (test_social_security_current_law.py). This test compares legacy ingress routes with the pinned pre-feature main (8986e05), which has the forecast 2027 amounts. Six routes differed only in income_tax@2027 ($7 and $24.50 less) and in household_net_income@2027, by exactly the same amounts.
    • The test now requires income_tax@2027 to fall by those amounts on those six routes and household_net_income@2027 to rise by the same amounts, each within a cent. Every other route and output must still equal main.

#9621 (draft, IRS indexing to the August chained CPI-U) edits some of the same forecast rows. Whichever lands second will need to resolve them.

Microsimulation impact

We estimate that the published amounts lower 2027 federal income tax by $4.22bn (0.16%) against the forecast amounts main used, on the default dataset. We compared main at 383b3c925e with this branch at 5f11cf6535. The commit after 5f11cf6535 changes only a test file.

Income tax falls for 64,409 sampled tax units (133.2m weighted) and rises for 43 (78,732 weighted), and no tax unit's income tax moves by more than $541. The standard deduction rises for every tax unit, by $11.39bn in total and at most $250. The EITC rises by $972.1m across 6,941 sampled tax units (17.7m weighted). State income taxes fall by a net $105.4m: 10,864 sampled tax units pay less and 1,891 pay more. Household net income rises by $4.33bn. The child tax credit and household benefits don't change.

Output Main total Change Records changed (weighted)
income_tax $2,698.7bn −$4.22bn 64,452 (133,297,638)
income_tax_main_rates $2,551.6bn −$3.07bn 63,356 (127,557,030)
capital_gains_tax $283.0bn −$206.2m 1,238 (3,289,946)
alternative_minimum_tax $9.55bn −$10.5m 131 (543,989)
eitc $71.3bn +$972.1m 6,941 (17,716,661)
ctc $166.0bn $0 0 (0)
standard_deduction $4,394.1bn +$11.39bn 79,729 (166,319,967)
qualified_business_income_deduction $249.2bn +$371.0m 6,254 (14,709,362)
state_income_tax $599.1bn −$105.4m 12,755 (19,490,379)
household_net_income $17,799.4bn +$4.33bn 49,859 (104,187,057)
household_benefits $2,174.8bn $0 0 (0)

impact: federal income tax −$4.22bn (−0.16%) in 2027 against the forecast amounts on main; household net income +$4.33bn; EITC +$972.1m; state income taxes −$105.4m net
axiom: TheAxiomFoundation/rulespec-us#2060 queued (Rev. Proc. 2026-35 is not yet ingested in axiom-corpus; the issue records the blocker and the companion cases)

🤖 Generated with Claude Code

Adds the IRS's tax year 2027 inflation-adjusted amounts: income tax
brackets, capital gains thresholds, standard deductions (basic, dependent,
aged or blind), the EITC table and investment income limit, the CTC
refundable amount, AMT exemptions, phase-outs and the 28% threshold, QBI
thresholds and minimum deduction, long-term care premium limits, student
loan interest phase-out, educator expenses, the 152(d) gross income limit,
the excess business loss threshold and the estate tax basic exclusion.
Arizona's standard deduction and Maine's aged or blind addition follow
the federal amounts. 2027 CBO forecast rows give way to the IRS values;
stale internal-forecast rows for three bracket thresholds are removed so
they uprate from 2027 like the others.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LqCGPgxDukji8Bhs57c5rH
DTrim99 and others added 2 commits November 6, 2026 19:02
- Long-term care premium limit, ages 41-50: Rev. Proc. 2026-35 prints
  $945, but 213(d)(10)(B)(ii) rounds to the nearest $10, and the factor
  the other four 2027 amounts imply gives $942.75-$944.06, so $940.
  Recorded as candidate us:long-term-care-premium-limit-2027-rounding;
  the property test gets the 2027 row.
- Arizona standard deduction test: 2027 is now the published federal
  amount, so the projection check starts from 2027.
- Washington WFTC: the federal childless joint EITC limit for 2027 is
  18,730 + 685 / 0.0765 = 27,684.25.
- Social Security means-test unit test: main's 2027 income tax literal
  falls by $7 under the published amounts (2,708; net income 49,449.60).
- Social Security differential: 2027 income tax may differ from the
  pinned pre-feature main; household net income must differ by exactly
  the same amount, so every other component still matches main.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LqCGPgxDukji8Bhs57c5rH
- Colorado progressive income tax, Case 11: 2027 Colorado taxable income
  is 30,000 - 16,600 = 13,400 under the published standard deduction, so
  tax 495.80 and 452.80 after the sales tax refund.
- Montana newborn credit, Cases 1 and 2: 2027 Montana income tax moves
  with the published federal amounts (-324.53 and 2,139.60).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LqCGPgxDukji8Bhs57c5rH
…in 2027

Section 213(d)(10)(B)(i) rounds each increase to the nearest $10, not the
adjusted amount. The other four 2027 amounts put the increase over the $375
base at $567.75 to $569.06, which rounds to $570, so the statute gives $945,
the amount section 3.29 prints. The statute and the Rev. Proc. agree, so this
drops the candidate us:long-term-care-premium-limit-2027-rounding, and the
property test's 2027 row uses $945.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@MaxGhenis

Copy link
Copy Markdown
Contributor

I pushed 58e9fc0, which sets the 2027 long-term care premium limit for ages 41 to 50 to $945, the amount Rev. Proc. 2026-35 prints in section 3.29. Section 213(d)(10)(B)(i) requires rounding the increase over each base to the nearest $10. On the $375 base, the other four 2027 amounts imply an increase of $567.75 to $569.06, which rounds to $570.

The statute and the Rev. Proc. agree, so the commit drops the candidate us:long-term-care-premium-limit-2027-rounding and moves the property test's 2027 row to $945. I updated the body's table and its long-term care note to match.

@PavelMakarchuk PavelMakarchuk left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Program Review

Scope: head 58e9fc0160cb3eb9616baa95f3afd889a50fef9e (4 commits). I checked every changed 2027 value against Rev. Proc. 2026-35 and looked for 2027 amounts in it that PolicyEngine already models. I also checked the uprating after 2027, the references, the tests and CI.

Value check

All 2027 values match the Rev. Proc., and all use 2027-01-01 (sec. 4.01, p. 31):

  • Brackets: Tables 1-4, sec. 3.01, pp. 4-6. MFS 37% = half of joint (396,825); QBI MFS threshold 208,325.
  • Capital gains: 3.03, p. 7.
  • CTC 2,300 / 1,800: 3.05, p. 8.
  • EITC max, phase-out start, joint bonus (18,730 − 11,210; 32,170 − 24,660) and investment income: 3.06, p. 10.
  • AMT exemption, 28% threshold (MFS 126,250 through amt.multiplier), phase-out, MFS limit 660,650 = 515,950 + 2 × 72,350, and child amount: 3.11-3.12, pp. 11-12.
  • Educator cap: 3.13, p. 12.
  • Standard, dependent and aged/blind amounts: 3.15, p. 13.
  • Qualifying relative: 3.25, p. 16.
  • QBI threshold and floor: 3.28, p. 17.
  • LTC premiums: 3.29, p. 17. The $945 agrees with the §213(d)(10)(B)(i) $10 rounding on the $375 base.
  • Student loan: 3.31, p. 18.
  • Excess business loss: 3.33, p. 19.
  • Estate: 3.44, p. 21.
  • AZ and ME: they follow the federal amounts in 3.15.

I found no missed item. Kiddie tax, adoption, FSA, transportation fringe, savings bonds, §179, MSA, FEIE, §1202 and gift have no PolicyEngine dollar parameters. The phase-in range ($75,000 / $150,000) is not indexed. SALT cap amounts come from the statute and are already in the tree.

Every new #page= anchor points at the page that holds the amount.

Findings

CRITICAL: none.

SHOULD ADDRESS: none.

SUGGESTIONS

  • G1 – 2028+ CBO rows after the new 2027 base. No 2028 value is below 2027. But from 2027 to 2028 the EITC phase-out start (11,210 → 11,290) and the AMT 28% threshold (252,500 → 254,200) now grow by about 0.7%, while the uprated amounts next to them grow by about 2.2% (EITC max 685 → 700, AMT exemption 93,000 → 95,100). The 2028 AMT MFS limit (676,350) also differs from 527,600 + 2 × 74,000 = 675,600. This is the same practice as the 2026 update, and #9621 changes these rows, so a follow-up is fine.
  • G2 – Uprating gaps that the new base makes visible (pre-existing). Some 2028 projections are not rounded: investment income limit 12,885.01, AMT child amount 10,277.33, qualifying-relative amount 5,624.41. The QBI floor (1,030 / 415) has no uprating. The 2028 joint standard deduction projects to 33,950, but §63(c)(2)(A) makes it 2 × 16,950 = 33,900. A follow-up issue is enough.
  • G3 – References. In educator_expense/cap.yaml and long_term_care_premium_limit.yaml, the 2027 entry sits between the 2025 and 2026 entries. Most new titles do not give the section number.
  • G4 – Tests. Consider 2027 cases for capital gains thresholds, the QBI threshold and floor, and the EITC phase-out start.
  • G5 – Source. The IRS PDF still says "[Release Date, 2026]" in section 1. If the IRS reissues it, check the page anchors again.

Tests run

  • The changed YAML files (federal and WA baseline, CO and MT contrib): 216 passed.
  • The changed Python tests (LTC property, state uprating rounding, SS means test): 88 passed.
  • All 30 contrib YAML files with 2027 periods (they cover the pending contrib shards): 312 cases ran and none failed.
  • Tests that main added since the branch point and that use 2027 periods, run on a local merge of this head into current main (merge is clean): 202 passed.
  • I checked the hand calculations in the new tests against Tables 1-4 and sec. 3.11.
  • CI at this head: 33 pass and 2 contrib shards pending (other-shard-1, other-shard-3), with no failures. Household API Partners passes. The changelog fragment and the axiom: line (rulespec-us#2060 queued) are in order.

Verdict

APPROVE. I found no CRITICAL or SHOULD ADDRESS issues. Please let the pending contrib shards finish green before merge.

@hua7450 hua7450 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, David. Every 2027 value in the 26 federal files matches Rev. Proc. 2026-35 at the cited pages, including the surviving-spouse mapping, the OBBBA items (CTC $2,300 / $1,800, the AMT phase-out start, the QBI $415 / $1,030 floor) and the $945 long-term care amount for ages 41 to 50 that section 3.29 prints. The IRS announced the Rev. Proc. in IR-2026-133 on November 5, so the "[Release Date, 2026]" text in the PDF is just a leftover placeholder. The Arizona 2027 standard deduction is right, the expected values in the federal, Washington and Colorado tests recompute by hand, and main hasn't touched any of these files since you branched. Approving, with one test fix to make before merge.

Before merge

Montana newborn credit test margins. In tests/policy/contrib/states/mt/newborn_credit/mt_newborn_credit.yaml, cases 1 and 2 now expect cent amounts (mt_income_tax -324.53 and 2,139.60) under absolute_error_margin: 1, and the comments don't show where the change comes from. Case 1 moves by $15.53, while the $50 standard deduction change at Montana's 4.7% rate explains only about $2.35; the rest presumably comes through the federal EITC feeding Montana's. Please set the margin to 0.01 and either write out the steps or assert the intermediates (taxable_income, eitc, mt_eitc), as the Colorado case 11 edit does.

Optional

  • Maine 2027 aged or blind rows. Subsection 1-C of 36 M.R.S. 5124-C covers only tax years before January 1, 2027. From 2027, subsection 1-D makes the Maine standard deduction equal the federal one, and me_standard_deduction switches to the federal amount through follows_federal, so the new 2027 rows in aged_or_blind.yaml are never read. They match the federal amounts anyway. Either drop them or note that 1-D governs from 2027.
  • CBO rows from 2028. The 2028 CBO rows for the EITC phase-out start, the EITC joint bonus and the AMT 28% threshold now grow only about 0.7% from the 2027 IRS amounts, against about 3.2% from 2026 to 2027, while their neighbours uprate from 2027 with gov.irs.uprating. You could drop them as you did for the bracket "Internal forecast" rows, here or in a follow-up. The AMT separate-filer limit is derivable (515,950 + 2 × 72,350 = 660,650 for 2027), so its CBO row need not match the derived amount either.
  • 2027 coverage. The capital gains thresholds, QBI threshold and minimum deduction, student loan phase-out, excess business loss, estate exclusion and the qualifying-relative gross income limit have no 2027 case.

…nd correct the Maine changelog line

The Social Security differential test now requires 2027 income tax to fall by $7 on the four same-period-override and extraction-future-reload routes, and by $24.50 on the two extraction-rewrite routes. It requires household net income to rise by the same amounts, and every other route and output to equal main. The earlier check accepted any 2027 income tax on a route as long as household net income moved with it, so a wrong 2027 income tax would have passed.

The changelog now says that Maine's 2027 aged or blind amounts apply only to a reform that stops Maine's standard deduction from following the federal one. From tax year 2027, Maine sets its standard deduction equal to the federal one (36 M.R.S. 5124-C(1-D)), so those amounts reach no baseline result.

Co-Authored-By: Claude <noreply@anthropic.com>
@MaxGhenis

Copy link
Copy Markdown
Contributor

I pushed one commit, 5f11cf6535, and corrected four lines of the description. The commit changes one test and the changelog entry; no parameter or formula changes.

  • Social Security differential test. The test accepted any 2027 income tax on a route, as long as household net income moved by the same amount. It now requires income tax to fall by $7 on four routes and by $24.50 on two, and household net income to rise by the same amounts, each within a cent. Every other route and output must still equal main.
  • Maine. From tax year 2027, Maine sets its standard deduction equal to the federal one (36 M.R.S. 5124-C(1-D)), and me_standard_deduction returns the federal deduction. So Maine's 2027 aged or blind amounts reach no baseline result. The changelog entry and the description's Maine bullet now say that those amounts apply only to a reform that sets follows_federal to false.
  • QBI row. The description now labels each threshold with its filing status. For 2027, the IRS sets $416,600 for joint returns, $208,325 for married filing separately and $208,300 for all others (Rev. Proc. 2026-35, section 3.28).
  • Dependent floor. dependent/amount.yaml keeps CBO rows through 2036, so the floor's statutory projection still starts in 2037. The earned income addition and the educator cap start theirs in 2028, as the description said.

I also removed the session link from the end of the description. Once CI passes at this head, I'll add the microsimulation impact and merge.

@DTrim99

DTrim99 commented Nov 10, 2026

Copy link
Copy Markdown
Collaborator Author

@MaxGhenis I'm making Ziming's before-merge fix to the Montana newborn credit test now (0.01 margins with the intermediate steps asserted). Could you hold the merge until it's pushed? It only touches that test file.

Cases 1 and 2 now use a 0.01 margin and assert federal taxable income, the
federal EITC, the Montana EITC and Montana tax before refundable credits.
Case 1: 40,000 - 16,600 = 23,400 taxable; EITC 4,573 - 15.98% x (40,000 -
24,660) = 2,121.67; Montana EITC 20% = 424.33; Montana tax 23,400 x 4.7% =
1,099.80, less 424.33 and the 1,000 newborn credit = -324.53. Case 2:
100,000 - 33,200 = 66,800; no EITC; 66,800 x 4.7% = 3,139.60, less 1,000 =
2,139.60.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LqCGPgxDukji8Bhs57c5rH
@DTrim99

DTrim99 commented Nov 10, 2026 •

Copy link
Copy Markdown
Collaborator Author

@hua7450 I pushed your before-merge fix in 7976ea8. Montana newborn credit cases 1 and 2 now use absolute_error_margin: 0.01 and assert the intermediates, with the arithmetic in the comments:

  • Case 1:
    • Taxable income: 40,000 − 16,600 = 23,400.
    • Federal EITC: 4,573 − 15.98% × (40,000 − 24,660) = 2,121.67.
    • Montana EITC: 20% of that = 424.33.
    • Montana tax: 23,400 × 4.7% = 1,099.80, less 424.33 and the 1,000 newborn credit = −324.53.
  • Case 2:
    • Taxable income: 100,000 − 33,200 = 66,800.
    • No EITC.
    • Montana tax: 66,800 × 4.7% = 3,139.60, less 1,000 = 2,139.60.

As you guessed, most of case 1's move from main comes through the federal EITC, which flows into Montana's 20% match. The 2027 phase-out start rises from CBO's $24,340 to $24,660, adding about $51 of EITC; the higher maximum credit adds about $13 more. The $50 standard deduction change adds about $2.35.

@MaxGhenis That's the only change. It's ready to merge once CI passes at this head.

@MaxGhenis

Copy link
Copy Markdown
Contributor

Held. I'll merge once CI passes at 7976ea8f1e.

The description now carries the 2027 impact: we estimate that the published amounts lower federal income tax by $4.22bn (0.16%) against the forecast amounts main used. I measured it at 5f11cf6535, and 7976ea8f1e changes only a test file. I also labelled the filing statuses on two aged or blind amounts in the description.

@MaxGhenis
MaxGhenis merged commit 3cc31c8 into PolicyEngine:main Nov 10, 2026
36 checks passed
@MaxGhenis

Copy link
Copy Markdown
Contributor

US + core hub merge audit, us#10683 at 7976ea8f1e196a29b931a6c3019b3754fed20e07 (squash): Update federal tax parameters to the 2027 amounts in Rev. Proc. 2026-35.

  • Reviews:
    • PavelMakarchuk and hua7450 approved 58e9fc0160.
    • An independent review approved 58e9fc0160. It matched every 2027 amount in the PR to Rev. Proc. 2026-35 for each filing status, child count and age band. It asked for two changes: pin the 2027 income tax changes in the Social Security differential test, and correct the Maine line in the changelog and the description.
    • 5f11cf6535 makes both changes, and a review of that commit agreed at 5f11cf6535. It found each edited description line true against the code. It asked for filing-status labels on two aged or blind amounts, and the description now carries them.
    • 7976ea8f1e tightens two Montana newborn credit cases to a 0.01 margin and asserts their intermediate steps, at hua7450's request. A review of that commit agreed at 7976ea8f1e and recomputed all 12 values it asserts from the parameter files.
  • Gates checked live at merge:
    • gh pr checks exits 0;
    • the latest Pull request run at the head, 42749331096, passed and tested this head merged into main at 44f92118fe;
    • the semantic-overlap guard: main has changed no area this PR touches since 44f92118fe;
    • MERGEABLE;
    • not a draft;
    • no reviewer's latest review requests changes;
    • the merge pins the head.
  • Impact (default dataset, 2027, 5f11cf6535 against main at 383b3c925e): we estimate that the published amounts lower federal income tax by $4.22bn (0.16%) against the forecast amounts main used, and raise household net income by $4.33bn. The EITC rises by $972.1m, and state income taxes fall by a net $105.4m. The commit after 5f11cf6535 changes only a test file.
  • Next: Project Medicare premiums and IRMAA past the last announced year #10103 edits the same block of test_social_security_current_law.py and keeps both changes when it next merges main.
  • Axiom: TheAxiomFoundation/rulespec-us#2060 queued.

🤖 Generated with Claude Code

MaxGhenis added a commit that referenced this pull request Nov 10, 2026
test_social_security_current_law.py conflicted, and the result keeps both
sides. It keeps this branch's CHANGED_SINCE_REFERENCE skip for the 2027
Part B premium in both loops of the ingress comparison, and main's
INCOME_TAX_CHANGE_2027 pins from Rev. Proc. 2026-35 (#10683), which the
second loop checks after that skip. The two cover different requests, so
each check runs as before.

uprating_extensions.py merged without a conflict. It keeps this branch's
Medicare projection functions and calls and main's 2027 ACA benchmark
extension (#10682), each once.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.

4 participants