Repository navigation
Update federal tax parameters to the 2027 amounts in Rev. Proc. 2026-35 - #10683
Conversation
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
- 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>
|
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 |
PavelMakarchuk
left a comment
There was a problem hiding this comment.
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.yamlandlong_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
left a comment
There was a problem hiding this comment.
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_deductionswitches to the federal amount throughfollows_federal, so the new 2027 rows inaged_or_blind.yamlare 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>
|
I pushed one commit,
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. |
|
@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
|
@hua7450 I pushed your before-merge fix in 7976ea8. Montana newborn credit cases 1 and 2 now use
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. |
|
Held. I'll merge once CI passes at 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 |
|
US + core hub merge audit, us#10683 at
🤖 Generated with Claude Code |
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>
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
gov.irs.income.bracket.thresholdsgov.irs.capital_gains.thresholdsgov.irs.credits.ctc.amount.base,...refundable.individual_maxgov.irs.credits.eitc.max...eitc.phase_out.start...eitc.phase_out.joint_bonus...eitc.phase_out.max_investment_incomegov.irs.income.amt.exemption.amountgov.irs.income.amt.brackets...amt.exemption.phase_out.start...amt.exemption.separate_limit...amt.exemption.child.amountgov.irs.ald.educator_expense.capgov.irs.deductions.standard.amount...standard.dependent.amount,...additional_earned_income...standard.aged_or_blind.amountgov.irs.income.exemption.amountgov.irs.deductions.qbi.phase_out.startgov.irs.deductions.qbi.deduction_floor.amount...itemized.medical.long_term_care_premium_limitgov.irs.ald.student_loan_interest.reduction.startgov.irs.ald.loss.maxgov.irs.credits.estate.baseOrder 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%:
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
me_standard_deductionreturns the federalstandard_deductiononcefollows_federalturns 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 setsfollows_federalto 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
gov.irs.uprating.parameters/uprating_extensions.pycomputes 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: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:
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 inincome_tax@2027($7 and $24.50 less) and inhousehold_net_income@2027, by exactly the same amounts.income_tax@2027to fall by those amounts on those six routes andhousehold_net_income@2027to 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
mainused, on the default dataset. We comparedmainat383b3c925ewith this branch at5f11cf6535. The commit after5f11cf6535changes 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.
income_taxincome_tax_main_ratescapital_gains_taxalternative_minimum_taxeitcctcstandard_deductionqualified_business_income_deductionstate_income_taxhousehold_net_incomehousehold_benefitsimpact: 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