Skip to content

Add published 2026 amounts for KY, MI, MN, MO, NE, OR and WI income taxes - #9927

Merged
PavelMakarchuk merged 3 commits into
mainfrom
state-2026-published-amounts
Oct 8, 2026
Merged

PavelMakarchuk merged 3 commits into
mainfrom
state-2026-published-amounts

Conversation

@PavelMakarchuk

@PavelMakarchuk PavelMakarchuk commented Oct 6, 2026 •

Copy link
Copy Markdown
Collaborator

Partly fixes #9872: KY, MI, MN, MO, NE, OR (brackets and federal tax subtraction cap) and WI (standard deduction). Maine and Louisiana need no change, and the Oregon standard deduction waits for the 2026 OR-40 instructions (see "Not changed" below).

For 2026, several state parameters had no dated value, so the model projected them with gov.irs.uprating. This PR adds the amounts the states published for 2026, with references. Later years now project from the published 2026 value with each file's existing rounding rule.

Change

State Parameter Main (projected) Published 2026
KY deductions/standard 3,344.11 3,360
MI exemptions/personal 5,950 5,900
MN deductions/standard/base (single, separate / joint, surviving spouse / head of household) 15,250 / 30,550 / 23,000 15,300 / 30,600 / 23,000
MN deductions/standard/extra (married / unmarried) 1,550 / 2,000 1,600 / 2,000
MN exemptions/amount 5,300 5,300
MN rates/single 33,310 / 109,410 / 203,130 33,310 / 109,430 / 203,150
MN rates/joint, rates/surviving_spouse 48,700 / 193,470 / 337,900 48,700 / 193,480 / 337,930
MN rates/separate 24,350 / 96,730 / 168,950 24,350 / 96,740 / 168,965
MN rates/head_of_household 41,010 / 164,780 / 270,030 41,010 / 164,800 / 270,060
MO rates (7 thresholds) 1,342.76 … 9,399.29 1,348 / 2,696 / 4,044 / 5,392 / 6,740 / 8,088 / 9,436
NE deductions/standard/base_amount (single, separate / joint, surviving spouse / head of household) 8,750 / 17,550 / 12,850 8,850 / 17,700 / 12,950
NE deductions/standard/additional_amount (unmarried / married, surviving spouse) 2,000 / 1,650 2,050 / 1,700
NE exemptions/amount (personal exemption credit) 174.88 176
OR rates/single, rates/separate 4,450 / 11,350 4,550 / 11,400
OR rates/joint, rates/head_of_household, rates/surviving_spouse 8,900 / 22,700 9,100 / 22,800
OR subtractions/federal_tax_liability/cap (all but separate) 8,650 / 6,950 / 5,200 / 3,450 / 1,700 8,750 / 7,000 / 5,250 / 3,500 / 1,750
OR subtractions/federal_tax_liability/cap/separate 4,325 / 3,475 / 2,600 / 1,725 / 850 4,375 / 3,500 / 2,625 / 1,750 / 875
WI deductions/standard/max (single / joint, surviving spouse / separate / head of household) 13,870 / 25,680 / 12,200 / 17,920 13,960 / 25,840 / 12,280 / 18,030
WI deductions/standard/phase_out starts (single, head of household / joint / separate) 19,990 / 28,850 / 13,690 20,120 / 29,040 / 13,780
WI head of household 12% segment start 58,506.55 58,827

All parameter paths are under policyengine_us/parameters/gov/states/<st>/tax/income/.

Two small fixes in files this PR already edits (added after review):

  • mi/tax/income/exemptions/personal.yaml: the projection now rounds to the nearest $100, as MCL 206.30(2) says ("rounded to the nearest $100.00 increment"); it rounded to $50. 2027: 6,100 (was 6,050).
  • mo/tax/income/rates.yaml: a dated 2026-01-01: 0.047 top rate, with the comment updated; the 2026 MO-1040ES rate chart and withholding formula keep 4.7%, so 2026 is no longer an unconfirmed reduction year.

Three existing tests pinned projected 2026 values. They now use the published amounts:

  • tests/core/test_state_uprating_rounding.py: the Wisconsin phase-out test pinned the projected 2026 starts (19,990 / 28,850 / 13,690). It now checks the published 2026 starts, and the 2027 projection from them rounded to the nearest $10.
  • mi/tax/income/integration.yaml, 2026 senior case: personal exemption 5,950 → 5,900, tier 3 deduction 20,000 − 5,950 = 14,050 → 20,000 − 5,900 = 14,100. Taxable income ($10,000) and tax ($425) do not change.
  • contrib/states/mn/hf4890/mn_hf4890.yaml, reform-disabled case: the 2026 baseline single tax at $700,000 moves from 63,255.60 to 63,254.99, from the published single thresholds.

Evidence

  • KY. Kentucky DOR, "Kentucky DOR Announces 2026 Standard Deduction" (September 4, 2025): "the standard deduction for 2026 is $3,360".

  • MI. 2026 Form 446, Michigan Income Tax Withholding Guide, page 1: "Personal Exemption Amount: $5,900". Treasury's calendar-year page gives the same 2026 amount. The withholding personal exemption is the MCL 206.30(2) exemption.

  • MN. Tax Year 2026 Inflation-Adjusted Amounts, page 1: "290.0121, Subd. 1 Dependent Exemption … $5,300"; "290.0123, Subd. 1 Standard Deduction: Married Joint or Surviving Spouse $30,600; Head of Household $23,000; Single, Married Separate $15,300"; "Additional Standard Deduction for Aged or Blind: Married or Surviving Spouse $1,600; Single, Head of Household $2,000". Pages 2–3 give the 290.06 Subd. 2c bracket thresholds in the table above. The DOR release of December 16, 2025 gives the same brackets, for example "Single: up to $33,310 | $33,311 - $109,430 | $109,431 - $203,150 | $203,151 and over".

  • MO. 2026 Form MO-1040ES, page 2, Tax Rate Chart: "Over $1,348 but not over $2,696: 2.0% of excess over $1,348" through "Over $9,436: $263 plus 4.7% of excess over $9,436"; Example 2: "$263 + $134.61 (4.7% of $2,864) = $397.61". The 2026 Missouri Withholding Tax Formula annual table uses the same thresholds ($1,348.00 … $9,436.01 and over, 4.70%). The top rate stays 4.7% in 2026.

  • NE. 2026 Form 1040N-ES, page 4, worksheet line 5: "Single $8,850; Married, Filing Jointly $17,700; Head of Household $12,950; Married, Filing Separately $8,850". Page 5: additional amount "$2,050" for an unmarried individual 65 or older or blind, "$1,700" for a qualifying surviving spouse or a married individual. Page 6: "Include $176 for each Nebraska personal exemption". The worksheet lists no separate qualifying surviving spouse amount. The parameter keeps it equal to the joint amount, as on the 2025 booklet's line 6 table ($17,200 for both).

  • OR brackets and federal tax subtraction. Two DOR documents agree:

    • 2026 Publication OR-ESTIMATE (150-101-026, Rev. 10-07-25), page 3: "Federal tax subtraction: $0 to $8,750". Chart S (single or married filing separately): "Not over $4,550 … Over $4,550 but not over $11,400: $216 plus 6.75% … Over $11,400 but not over $125,000: $678 plus 8.75%". Chart J (joint, head of household, qualifying surviving spouse): "Not over $9,100 … $22,800 … $1,357 plus 8.75% of excess over $22,800".
    • 2026 Withholding Tax Formulas (150-206-436, Rev. 12-31-25), page 6: single "4,550 – 11,400" and "11,400 – 50,000", married "9,100 – 22,800", "federal tax withheld (not to exceed $8,750)". Page 7: the phase-out "$8,750 / $7,000 / $5,250 / $3,500 / $1,750 / $0" at $125,000 / $130,000 / $135,000 / $140,000 / $145,000 (single) and $250,000 … $290,000 (married).
    • ORS 316.680(3)(d) limits a married filing separately return to "50 percent of the amount provided for individual taxpayers", so the separate 2026 caps are half of the amounts above.
  • WI. 2026 Form 1-ES instructions, page 2, "2026 Standard Deduction":

    • Single: "$13,960", then "13,960 less 12% of the amount over $20,120".
    • Married filing jointly: "$25,840", then "25,840 less 19.778% … $29,040".
    • Head of household: "$18,030", then "18,030 less 22.515% … $20,120" to $58,827, then "13,960 less 12% … 20,120".
    • Married filing separately: "$12,280", then "12,280 less 19.778% … $13,780".

    The surviving spouse row of max.yaml keeps the joint amount, as in earlier years.

Not changed

Tests

New 2026 cases, each with the arithmetic from the source:

  • ky_standard_deduction_indiv: head and spouse each get $3,360.
  • mi_personal_exemptions: 4 × $5,900.
  • mn_standard_deduction: single $15,300, and joint aged 30,600 + 2 × 1,600.
  • mn_basic_tax_2026.yaml (a new file; it was kept separate from mn_basic_tax.yaml to avoid a conflict with Correct two 2024 Minnesota bracket thresholds #9851, now merged): four cases, one per schedule.
  • mn_exemptions: 2 × $5,300.
  • wi_standard_deduction: one case for each schedule and phase-out segment.
  • mo_income_tax_before_credits: the two MO-1040ES examples, without the chart's whole-dollar rounding of the base.
  • or_income_tax_before_credits: Charts S and J.
  • or_federal_tax_liability_subtraction: $8,750 single, $7,000 joint in the first phase-out step, and $4,375 separate.
  • ne_standard_deduction: single, head of household aged, and joint both aged.
  • ne_exemptions: 4 × $176.

Results:

  • Against main parameters, 25 of the 26 new cases fail. The MN dependent exemption case passes because the projection already gives $5,300.

  • All 26 pass with this change.

  • policyengine-core test on tests/policy/baseline/gov/states/<st> and tests/policy/contrib/states/<st>:

    • KY 613 passed
    • MI 637 passed
    • MN 503 passed
    • MO 837 passed
    • NE 398 passed
    • OR 419 passed
    • WI 333 passed

    The MI and MN totals include the two updated cases above. In the full run, each case failed before its update. After the update, a rerun of its file passed: mi/tax/income/integration.yaml 6 passed, mn_hf4890.yaml 11 passed.

  • 75 other YAML files that have a 2026-or-later household in one of these states (SNAP, ACA, Medicaid, gov/states/tax/income, Multnomah County, reform/mo_refundable_eitc): 1,154 passed.

  • pytest tests/core/test_state_uprating_rounding.py tests/core/test_state_indexed_frozen_parameters.py: 58 passed. The code_health reference-URL and uprating-placement tests also pass.

  • ruff format --check: clean.

  • The branch merges cleanly with current main, which now includes Correct two 2024 Minnesota bracket thresholds #9851 (2024 MN thresholds) and Use the 2025 Wisconsin 4.4% bracket tops from the Form 1 instructions #9803 (2025 WI brackets).

Minnesota: the rest of the 2026 inflation-adjusted amounts (added after review)

Change

Commit 2c3bc8b goes through the Minnesota Department of Revenue's Tax Year 2026 Inflation-Adjusted Amounts line by line. Where PolicyEngine's projected 2026 value differed from the published amount, it adds a dated 2026 value with a reference to the page:

Statute Amount Parameter Before Published
290.0121 Subd. 2 Disallowed exemption threshold (MFJ/QSS, HOH, single, MFS) exemptions.agi_threshold 366,650 / 305,550 / 244,450 / 183,300 366,700 / 305,600 / 244,500 / 183,350
290.0122 Subd. 2 Itemized limitation, 1st and 2nd thresholds deductions.itemized.reduction.agi_threshold.low/high 244,350 (122,150) / 337,750 (168,850) 244,400 (122,200) / 337,800 (168,900)
290.0123 Subd. 5 Standard deduction limitation, 1st and 2nd thresholds deductions.standard.reduction.agi_threshold.low/high same as above same as above
290.0132 Subd. 26(c) Social Security simplified subtraction phase-out subtractions.social_security.reduction.start 110,770 / 86,400 110,780 / 86,410
290.0132 Subd. 26(f)-(h) Alternate subtraction maximum (Not Indexed) subtractions.social_security.alternative_amount 5,970 / 4,660 / 2,990 5,840 / 4,560 / 2,920
290.0132 Subd. 26(f)-(h) Alternate subtraction phase-out (Not Indexed) subtractions.social_security.income_amount 90,640 / 70,820 / 45,320 88,630 / 69,250 / 44,315
290.0132 Subd. 34 Public pension subtraction phase-out subtractions.pension_income.reduction.start 110,770 / 86,400 110,780 / 86,410
290.067 Subd. 1 Dependent care credit phase-out credits.cdcc.phaseout_threshold 65,600 65,610
290.0661 Subd. 4 Child and WFC phase-out, all other filers credits.cwfc.phase_out.threshold.other 32,670 32,680
290.0671 Subd. 1 WFC additional credit, two qualifying older children credits.cwfc.wfc.additional.amount[2] 2,320 2,330
290.0674 Subd. 2 K-12 credit phase-out threshold credits.k12_education.income_threshold 75,820 77,550
290.0674 Subd. 2(a) K-12 income limit, one or two children (threshold + $6,000) credits.k12_education.income_limit.base 81,820 83,550
290.091 Subd. 3 AMT exemption (MFJ/QSS, single/HOH, MFS) amt.fractional_income_threshold 97,550 / 73,160 / 48,780 97,470 / 73,100 / 48,740
290.0693 Subd. 3 Renter's credit income bands credits.renters.{percent_of_income,claimant_share,max_credit} 22,660, 24,910, 31,730, 33,990, 40,790, 67,990, 70,270, 72,520, 74,800, 77,060, 79,320 22,670, 24,920, 31,740, 34,000, 40,800, 68,000, 70,280, 72,530, 74,810, 77,070, 79,330

The alternate Social Security subtraction amounts are no longer uprated. Minn. Stat. 290.0132, subd. 26(j) says "The commissioner shall adjust the phaseout threshold amounts in paragraph (c), clauses (1) and (2)". That covers only the simplified subtraction, and the Department of Revenue lists the alternate amounts as "Not Indexed". A dated 2026 value equal to 2025 would have fixed 2026 but still let 2027 and later drift upward, so the uprating block is removed.

The K-12 income limit for one or two children has no separate published line. It is the published phase-out threshold plus the $6,000 over which subd. 2(a) reduces $1,500 by $1 per $4 (one child) or $3,000 by $2 per $4 (two children). The 2025 Schedule M1ED shows the same relationship: $75,820 threshold and $81,820 limit.

Evidence

Tests

  • New: 4 Social Security subtraction cases (2026 alternate maximum, 2027 maximum stays $5,840, alternate phase-out worked example of $566, simplified threshold at exactly $86,410), 2 K-12 cases ($887.50 and $275), 2 renter's credit band cases ($1,005 and $270), and a new mn_child_and_working_families_credits_2026.yaml with 2 cases ($2,058.80 and $1,909.20). All 10 fail without the parameter changes and pass with them.
  • policyengine-core test policyengine_us/tests/policy/baseline/gov/states/mn: 490 passed.
  • policyengine-core test policyengine_us/tests/policy/contrib/states/mn: 23 passed.
  • Cross-state YAML files with Minnesota households (taxsim state CTC/EITC, state AGI, SALT refund, DC PTC): 80 passed.
  • pytest tests/core/test_state_uprating_rounding.py tests/code_health: 185 passed. test_state_indexed_frozen_parameters.py, test_uprating_series.py, test_per_capita_uprating.py, test_build_metadata.py: 176 passed, 1 skipped.

🤖 Generated with Claude Code

Follow-ups found in review (not in this PR)

  • Minnesota, other years: the 2025 AMT exemption (PE 95,390 / 71,540 / 47,700; 2025 Schedule M1MT line 21: 95,300 / 71,470 / 47,660); the K-12 credit threshold for 2023 (PE 36,980; subd. 2 as amended in 2023: 70,000), the 2024 limit (79,760 vs threshold + 6,000 = 79,890) and its missing uprating after 2026 (subd. 6); the renter's credit 2025 bands are projections; the downward-$50 rounding of the exemption and limitation thresholds came out $50 low for 2026.
  • Oregon personal exemption credit (2026): PE projects 261.80; OR-ESTIMATE says $260 and the withholding formulas $263. Like the standard deduction, it waits for the 2026 OR-40 instructions.
  • Wisconsin qualifying surviving spouse: the WI instructions let a federal qualifying surviving spouse file as head of household; PE uses the joint amounts.

🤖 Generated with Claude Code

Add dated 2026 values, with references, where the states have published
their 2026 amounts, instead of projecting them with gov.irs.uprating:

- KY standard deduction ($3,360, DOR release of September 4, 2025)
- MI personal exemption ($5,900, 2026 Form 446)
- MN standard deduction, aged/blind additional amount, dependent
  exemption and all bracket thresholds (Tax Year 2026 Inflation-Adjusted
  Amounts)
- MO bracket thresholds (2026 Form MO-1040ES tax rate chart)
- NE standard deduction, additional amount and personal exemption credit
  (2026 Form 1040N-ES)
- OR bracket thresholds and federal tax subtraction caps (2026
  Publication OR-ESTIMATE and 2026 withholding formulas)
- WI standard deduction maximums and phase-out starts (2026 Form 1-ES
  instructions)

Three existing tests pinned projected 2026 values and now use the
published ones: the Wisconsin phase-out uprating test (which now also
checks the rounded 2027 projection), the 2026 Michigan senior
integration case, and the Minnesota HF4890 reform-disabled case.

Fixes #9872.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… top rate

MCL 206.30(2) rounds the indexed personal exemption to the nearest $100; the
file rounded projections to $50 (2027: 6,100, not 6,050). The 2026 Form
MO-1040ES and withholding formula keep Missouri's top rate at 4.7%, so the
comment no longer treats 2026 as unconfirmed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@PavelMakarchuk
PavelMakarchuk requested a review from hua7450 October 6, 2026 23:55
Go through the Minnesota Department of Revenue's Tax Year 2026
Inflation-Adjusted Amounts line by line and add a dated 2026 value, with a
reference to the page, wherever PolicyEngine's 2026 projection differed:

- Disallowed exemption thresholds (290.0121 Subd. 2): 366,700 / 305,600 /
  244,500 / 183,350
- Itemized and standard deduction limitation thresholds (290.0122 Subd. 2,
  290.0123 Subd. 5): 244,400 (122,200 separate) and 337,800 (168,900)
- Social Security simplified subtraction and public pension subtraction
  phase-out thresholds (290.0132 Subds. 26 and 34): 110,780 / 86,410 / 55,390
- Dependent care credit phase-out threshold (290.067 Subd. 1): 65,610
- Child and working family credit phase-out for other filers (290.0661
  Subd. 4): 32,680; working family credit for two qualifying older
  children (290.0671 Subd. 1): 2,330
- K-12 education credit phase-out threshold (290.0674 Subd. 2): 77,550,
  and the matching income limit for one or two children, 83,550
- AMT exemption (290.091 Subd. 3): 97,470 / 73,100 / 48,740
- Renter's credit income bands (290.0693 Subd. 3) where the published
  lower bounds differ from the projection, including the 79,330 cutoff

Stop uprating the alternate Social Security subtraction maximum and its
phase-out threshold. Minn. Stat. 290.0132, subd. 26(j) indexes only the
simplified subtraction phase-out thresholds in paragraph (c), and the
Department of Revenue lists these amounts as "Not Indexed", so they stay
at 5,840 / 4,560 / 2,920 and 88,630 / 69,250 / 44,315.

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

@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.

Approving. Read all 49 parameter files and the 19 test files at 2c3bc8b, plus tests/core/test_state_uprating_rounding.py, and checked every 2026 value against the official publication for its state:

  • MN: every amount equals the Department of Revenue's Tax Year 2026 Inflation-Adjusted Amounts (December 1, 2025) and the December 16, 2025 bracket release, with the statutory rounding (nearest $10 under 270C.22 and 290.06 subd. 2d; down to $50 under 290.0121 subd. 3, 290.0122 subd. 2(e) and 290.0123 subd. 6). Removing uprating from the two alternate Social Security subtraction files is right: 290.0132 subd. 26(j) indexes only the phase-out thresholds and the DOR table labels those amounts "Not Indexed"; no 2021 to 2025 value changed. The amounts you left on projection (renter's bands, CWFC joint threshold, child credit, WFC amounts, pension caps, 1,107,750) all reproduce the published figures with the current C-CPI-U factor.
  • KY $3,360 (DOR release, KRS 141.081); MI $5,900 (Form 446 page 1 and the Treasury calendar-year page, MCL 206.30: 5,800 x 1.0227 = 5,931 rounded to $100, so it is the published amount, not a projection); MO 4.7% schedule with the 1,348 to 9,436 thresholds (MO-1040ES page 2 and the 2026 withholding formula); NE standard deduction and exemption credit (1040N-ES pages 4 to 6); OR brackets and federal tax subtraction caps (OR-ESTIMATE page 3 and the 2026 withholding formulas); WI standard deduction maximums and phase-out starts (Form 1-ES page 2, Wis. Stat. 71.05(22)(dt)).

All 36 new or changed test expectations recompute by hand (for example MN basic tax, HF4890 baseline 63,254.99, OR 1,431 / 1,987 / 830.50, WI 21,694.53 / 11,049.81 / 15,805.52, MO 59.56 / 397.47), and the Wisconsin assertions in the uprating test now pin the published 2026 starts and derive 2027 the way core's uprating does.

Nits, not blocking:

  1. mn_basic_tax_2026.yaml and mn_child_and_working_families_credits_2026.yaml duplicate existing per-variable files; the 9851 conflict that motivated them is gone now that it merged, so the cases belong at the bottom of the existing files.
  2. cwfc/wfc/additional/amount.yaml now has one dated 2026 bracket and two projected ones; dating all three (and the other MN amounts that happen to match today) would pin the published schedule against future CPI revisions.
  3. The k12_education/income_limit/base.yaml reference title names the phase-out threshold line, but the file holds the derived limit (threshold + 6,000); say so in the title.
  4. The two not-indexed MN files still cite 270C.22.
  5. MI: the "nearest $100" sentence is MCL 206.30(7), not (2), in the comment and description.
  6. OR: Form OR-ESTIMATE labels its figures estimates and its 2025 estimate differed from the final 2025 instructions by $50; the 2026 withholding formulas agree with it and the final 2026 OR-40 instructions are not online yet, so a short comment that these await the OR-40 instructions would be fair.

Pre-existing, for follow-ups: core projects the round-down-$50 MN amounts from the rounded prior-year anchor, which is why those projections landed $50 low and will again for 2027; the MN itemized-threshold reference titles cite 290.0122 but link to 290.0123; the WI reference titles say 71.07(9)(b)(5) but link to 71.05(22).

@PavelMakarchuk
PavelMakarchuk merged commit 9f16362 into main Oct 8, 2026
35 checks passed
@PavelMakarchuk
PavelMakarchuk deleted the state-2026-published-amounts branch October 8, 2026 13:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants