diff --git a/changelog.d/cbo-2026-projections-2036.changed.md b/changelog.d/cbo-2026-projections-2036.changed.md new file mode 100644 index 00000000000..e46b07d2803 --- /dev/null +++ b/changelog.d/cbo-2026-projections-2036.changed.md @@ -0,0 +1 @@ +Load CBO's February 2026 projections through 2036 into the SSA, SNAP and HHS upraters, the CPI-W series, the national average wage index and the Social Security payroll cap, growing each from its latest actual (the HHS index from its 2026 value); keep CBO's 2035 CPI-U and chained CPI-U points instead of extrapolating over them and add their 2036 points; and extend the payroll cap after 2036 with the 42 U.S.C. 430(b) fixed-base formula. diff --git a/policyengine_us/parameters/gov/bls/cpi/c_cpi_u.yaml b/policyengine_us/parameters/gov/bls/cpi/c_cpi_u.yaml index f9f7cc3021e..851b5f35b38 100644 --- a/policyengine_us/parameters/gov/bls/cpi/c_cpi_u.yaml +++ b/policyengine_us/parameters/gov/bls/cpi/c_cpi_u.yaml @@ -332,7 +332,8 @@ values: 2033-02-01: 210.8 # 2034 value. 2034-02-01: 214.9 # 2035 value. 2035-02-01: 219.2 # 2036 value. - # Values for 2036-2100 are set programmatically in uprating_extensions.py + 2036-02-01: 223.5 # 2037 value. + # Values for 2037-2100 are set programmatically in uprating_extensions.py metadata: economy: false unit: currency-USD diff --git a/policyengine_us/parameters/gov/bls/cpi/cpi_u.yaml b/policyengine_us/parameters/gov/bls/cpi/cpi_u.yaml index 2a76d76e7ec..94d670cb424 100644 --- a/policyengine_us/parameters/gov/bls/cpi/cpi_u.yaml +++ b/policyengine_us/parameters/gov/bls/cpi/cpi_u.yaml @@ -1373,7 +1373,8 @@ values: 2033-02-01: 389.6 # 2034 value. 2034-02-01: 398.4 # 2035 value. 2035-02-01: 407.3 # 2036 value. - # Values for 2036-2100 are set programmatically in uprating_extensions.py + 2036-02-01: 416.5 # 2037 value. + # Values for 2037-2100 are set programmatically in uprating_extensions.py metadata: unit: currency-USD label: CPI-U diff --git a/policyengine_us/parameters/gov/bls/cpi/cpi_w.yaml b/policyengine_us/parameters/gov/bls/cpi/cpi_w.yaml index 70da83e8ba9..b3254cfe304 100644 --- a/policyengine_us/parameters/gov/bls/cpi/cpi_w.yaml +++ b/policyengine_us/parameters/gov/bls/cpi/cpi_w.yaml @@ -1402,7 +1402,14 @@ values: 2034-08-01: 391.234 # 2034Q3: 399.460 * 327.075 / 333.952 2034-11-01: 393.423 # 2034Q4: 401.695 * 327.075 / 333.952 2035-02-01: 395.625 # 2035Q1: 403.943 * 327.075 / 333.952 - # Values for 2036-2100 are set programmatically in uprating_extensions.py + 2035-05-01: 397.838 # 2035Q2: 406.203 * 327.075 / 333.952 + 2035-08-01: 400.064 # 2035Q3: 408.476 * 327.075 / 333.952 + 2035-11-01: 402.303 # 2035Q4: 410.762 * 327.075 / 333.952 + 2036-02-01: 404.555 # 2036Q1: 413.061 * 327.075 / 333.952 + 2036-05-01: 406.819 # 2036Q2: 415.373 * 327.075 / 333.952 + 2036-08-01: 409.096 # 2036Q3: 417.698 * 327.075 / 333.952 + 2036-11-01: 411.386 # 2036Q4: 420.036 * 327.075 / 333.952 + # Values for 2037-2100 are set programmatically in uprating_extensions.py metadata: unit: currency-USD label: CPI-W diff --git a/policyengine_us/parameters/gov/hhs/uprating.yaml b/policyengine_us/parameters/gov/hhs/uprating.yaml index 7b226f6572e..b7daa2e9dcc 100644 --- a/policyengine_us/parameters/gov/hhs/uprating.yaml +++ b/policyengine_us/parameters/gov/hhs/uprating.yaml @@ -1,22 +1,30 @@ description: The US indexes the federal poverty guidelines according to this schedule, annually updating based on CPI-U in the calendar year. values: # Actuals: calendar-year average CPI-U for the labeled year. + # NOTE: 42 U.S.C. 9902(2) and the HHS notices update guideline year Y by CPI-U + # CY(Y-1)/CY(Y-2). gov/hhs/fpg.yaml uprates guideline year Y with this index by + # CY(Y)/CY(Y-1), one year ahead of the statute. Aligning them changes this + # shared index, so it is left for a separate PR. 2022-01-01: 292.6 2023-01-01: 304.7 2024-01-01: 313.6 2025-01-01: 321.9 - # CBO forecasts. + # CBO forecasts. 2026 keeps CBO's January 2025 projection, which the 2026 + # amounts derived from this index already use (the separate PR on the + # statutory lag above would revisit it). Later years grow it at CBO's + # February 2026 calendar-year CPI-U growth: 2026 * CBO CPI-U (year) / CBO CPI-U (2026). 2026-01-01: 328.4 - 2027-01-01: 336.1 - 2028-01-01: 343.6 - 2029-01-01: 351.3 - 2030-01-01: 359.2 - 2031-01-01: 367.2 - 2032-01-01: 375.5 - 2033-01-01: 383.9 - 2034-01-01: 392.5 - 2035-01-01: 401.3 - # Values for 2036-2100 are set programmatically in uprating_extensions.py + 2027-01-01: 336.766 # 328.4 * 340.260 / 331.807 + 2028-01-01: 344.719 # 328.4 * 348.295 / 331.807 + 2029-01-01: 352.606 # 328.4 * 356.264 / 331.807 + 2030-01-01: 360.587 # 328.4 * 364.328 / 331.807 + 2031-01-01: 368.732 # 328.4 * 372.557 / 331.807 + 2032-01-01: 377.055 # 328.4 * 380.967 / 331.807 + 2033-01-01: 385.564 # 328.4 * 389.564 / 331.807 + 2034-01-01: 394.265 # 328.4 * 398.355 / 331.807 + 2035-01-01: 403.163 # 328.4 * 407.346 / 331.807 + 2036-01-01: 412.265 # 328.4 * 416.542 / 331.807 + # Values for 2037-2100 are set programmatically in uprating_extensions.py metadata: economy: false unit: currency-USD @@ -28,6 +36,17 @@ metadata: href: https://www.govinfo.gov/app/details/FR-2025-01-17/2025-01377 - title: 2024 Annual Update of the HHS Poverty Guidelines href: https://www.federalregister.gov/documents/2024/01/17/2024-00796/annual-update-of-the-hhs-poverty-guidelines - - title: CBO Budget and Economic Outlook | 2024 to 2034 - # Jan 2025 Economic Projections | 2. Calendar Year | Row 51 - href: https://www.cbo.gov/data/budget-economic-data#4 + - title: 42 U.S. Code § 9902(2) + href: https://www.law.cornell.edu/uscode/text/42/9902#2 + - title: 2026 Annual Update of the HHS Poverty Guidelines + href: https://www.federalregister.gov/documents/2026/01/15/2026-00755/annual-update-of-the-hhs-poverty-guidelines + - title: CBO | Economic Projections | January 2025 + # 2026: Sheet 2. Calendar Year, Row 53, CPI-U 328.446 (Row 51 in the original January 2025 release, before CBO's April 30, 2025 update) + href: https://www.cbo.gov/system/files/2025-01/51135-2025-01-Economic-Projections.xlsx + - title: CBO | Economic Projections | January 2025, calendar-year CSV (variable cpiu) + href: https://github.com/US-CBO/cbo-data/blob/284a95665f9f2f74ed1f482feb629b43fce323da/data/economic/economic_projections/calendar_2025-01.csv + - title: CBO | Economic Projections | February 2026 + # Sheet: 2. Calendar Year, Row 53: CPI-U + href: https://www.cbo.gov/system/files/2026-02/51135-2026-02-Economic-Projections.xlsx + - title: CBO | Economic Projections | February 2026, calendar-year CSV (variable cpiu) + href: https://github.com/US-CBO/cbo-data/blob/284a95665f9f2f74ed1f482feb629b43fce323da/data/economic/economic_projections/calendar_2026-02.csv diff --git a/policyengine_us/parameters/gov/irs/payroll/social_security/cap.yaml b/policyengine_us/parameters/gov/irs/payroll/social_security/cap.yaml index 28db185a1c4..61deb3ed7d6 100644 --- a/policyengine_us/parameters/gov/irs/payroll/social_security/cap.yaml +++ b/policyengine_us/parameters/gov/irs/payroll/social_security/cap.yaml @@ -61,15 +61,22 @@ values: # Official SSA determinations. 2026-01-01: 184_500 2027-01-01: 192_300 - # CBO forecast. - 2028-01-01: 198_600 - 2029-01-01: 206_400 - 2030-01-01: 214_200 - 2031-01-01: 222_300 - 2032-01-01: 230_100 - 2033-01-01: 237_900 - 2034-01-01: 246_000 - 2035-01-01: 254_400 + # Forecasts apply 42 U.S.C. 430(b) to the projected NAWI in + # parameters/gov/ssa/nawi.yaml, which follows CBO's February 2026 CBB + # growth from the published 2025 NAWI: + # CBB(Y) = 60_600 * NAWI(Y-2) / 22_935.42, rounded to the nearest $300. + # The levels sit above CBO's tp_ss_max_earnings (2036: 260_400 against + # 258_600), because NAWI grows from SSA's published 2025 value; only CBO's + # growth is used. + 2028-01-01: 199_200 # 60_600 * 75_428.91 / 22_935.42 = 199_298.38 + 2029-01-01: 206_700 # 60_600 * 78_286.07 / 22_935.42 = 206_847.57 + 2030-01-01: 214_200 # 60_600 * 81_028.94 / 22_935.42 = 214_094.78 + 2031-01-01: 221_400 # 60_600 * 83_771.81 / 22_935.42 = 221_342.00 + 2032-01-01: 228_600 # 60_600 * 86_514.68 / 22_935.42 = 228_589.21 + 2033-01-01: 236_400 # 60_600 * 89_486.12 / 22_935.42 = 236_440.36 + 2034-01-01: 243_900 # 60_600 * 92_343.28 / 22_935.42 = 243_989.55 + 2035-01-01: 252_000 # 60_600 * 95_429.00 / 22_935.42 = 252_142.64 + 2036-01-01: 260_400 # 60_600 * 98_514.73 / 22_935.42 = 260_295.76 metadata: unit: currency-USD period: year @@ -87,6 +94,8 @@ metadata: href: https://www.ssa.gov/oact/cola/cbb.html - title: 2027 Cost-of-Living Adjustment (COLA) Fact Sheet href: https://www.ssa.gov/news/en/cola/factsheets/2027.html - - title: CBO Tax Parameters and Effective Marginal Tax Rates | Jan 2025 - # 1. Tax Parameters. Row 161. - href: https://www.cbo.gov/system/files/2025-01/53724-2025-01-Tax-Parameters.xlsx + - title: CBO | Tax Parameters and Effective Marginal Tax Rates | February 2026 + # Sheet: 1. Tax Parameters, Row 155: Maximum taxable earnings for the Social Security payroll tax + href: https://www.cbo.gov/system/files/2026-02/53724-2026-02-Tax-Parameters.xlsx + - title: CBO | Tax Parameters | February 2026, CSV (variable tp_ss_max_earnings) + href: https://github.com/US-CBO/cbo-data/blob/284a95665f9f2f74ed1f482feb629b43fce323da/data/budget/tax_parameters/annual_cy_2026-02.csv diff --git a/policyengine_us/parameters/gov/ssa/nawi.yaml b/policyengine_us/parameters/gov/ssa/nawi.yaml index dd71e24f276..5012c080da5 100644 --- a/policyengine_us/parameters/gov/ssa/nawi.yaml +++ b/policyengine_us/parameters/gov/ssa/nawi.yaml @@ -75,37 +75,25 @@ values: 2023-01-01: 66_621.80 # NAWI(Y-2) for CBB(2025) 2024-01-01: 69_846.57 # NAWI(Y-2) for CBB(2026) 2025-01-01: 72_800.33 # NAWI(Y-2) for CBB(2027); published 2026-10-14 - # Back out NAWI from CBO's forecast of the payroll tax cap, in - # parameters/gov/irs/payroll/social_security/cap.yaml - # The formula to derive NAWI(Y-2) from CBB(Y) is: - # NAWI(Y-2) approx = CBB(Y) * (NAWI_1992 / CBB_1994) - # where NAWI_1992 = 22_935.42 and CBB_1994 = 60_600. - # CBB(Y) is the Contribution and Benefit Base (payroll tax cap) for year Y. - # NAWI(Y-2) is the National Average Wage Index for year Y-2. + # The contribution and benefit base (CBB, the payroll tax cap) for year Y is + # CBB(Y) = CBB_1994 * NAWI(Y-2) / NAWI_1992, rounded to the nearest $300, + # where NAWI_1992 = 22_935.42 and CBB_1994 = 60_600. So CBB growth tracks + # NAWI growth two years earlier. - # For 2026 NAWI, derived from CBO CBB(2028) = 198_600: 198_600 * (22_935.42 / 60_600) - 2026-01-01: 75_168.61 - # For 2027 NAWI, derived from CBO CBB(2029) = 206_400: 206_400 * (22_935.42 / 60_600) - 2027-01-01: 78_124.71 - # For 2028 NAWI, derived from CBO CBB(2030) = 214_200: 214_200 * (22_935.42 / 60_600) - 2028-01-01: 81_080.80 - # For 2029 NAWI, derived from CBO CBB(2031) = 222_300: 222_300 * (22_935.42 / 60_600) - 2029-01-01: 84_149.34 - # For 2030 NAWI, derived from CBO CBB(2032) = 230_100: 230_100 * (22_935.42 / 60_600) - 2030-01-01: 87_090.55 - # For 2031 NAWI, derived from CBO CBB(2033) = 237_900: 237_900 * (22_935.42 / 60_600) - 2031-01-01: 90_031.76 - # For 2032 NAWI, derived from CBO CBB(2034) = 246_000: 246_000 * (22_935.42 / 60_600) - 2032-01-01: 93_088.94 - # For 2033 NAWI, derived from CBO CBB(2035) = 254_400: 254_400 * (22_935.42 / 60_600) - 2033-01-01: 96_258.56 - # For 2034 NAWI, projected using the growth rate from NAWI(2032) to NAWI(2033). - # Growth Multiplier = NAWI(2033) / NAWI(2032) = 96_258.56 / 93_088.94. - # NAWI(2034) = NAWI(2033) * Growth Multiplier. - 2034-01-01: 99_536.06 - # For 2035 NAWI, projected using the growth rate from NAWI(2032) to NAWI(2033). - # NAWI(2035) = NAWI(2034) * Growth Multiplier. - 2035-01-01: 102_920.73 + # Later years carry the published NAWI(2025) forward at the wage growth + # implied by CBO's February 2026 CBB projections (tax parameter + # tp_ss_max_earnings): NAWI(Y-2) = NAWI(2025) * CBO CBB(Y) / CBO CBB(2027), + # where CBO CBB(2027) = 191_100. + 2026-01-01: 75_428.91 # CBO CBB(2028) = 198_000: 72_800.33 * 198_000 / 191_100 + 2027-01-01: 78_286.07 # CBO CBB(2029) = 205_500 + 2028-01-01: 81_028.94 # CBO CBB(2030) = 212_700 + 2029-01-01: 83_771.81 # CBO CBB(2031) = 219_900 + 2030-01-01: 86_514.68 # CBO CBB(2032) = 227_100 + 2031-01-01: 89_486.12 # CBO CBB(2033) = 234_900 + 2032-01-01: 92_343.28 # CBO CBB(2034) = 242_400 + 2033-01-01: 95_429.00 # CBO CBB(2035) = 250_500 + 2034-01-01: 98_514.73 # CBO CBB(2036) = 258_600 + # Values for 2035-2100 are set programmatically in uprating_extensions.py metadata: unit: currency-USD period: year @@ -114,5 +102,8 @@ metadata: reference: - title: Social Security National Average Wage Index href: https://www.ssa.gov/oact/cola/AWI.html#Series - - title: 2027 Cost-of-Living Adjustment (COLA) Fact Sheet - href: https://www.ssa.gov/news/en/cola/factsheets/2027.html + - title: CBO | Tax Parameters and Effective Marginal Tax Rates | February 2026 + # Sheet: 1. Tax Parameters, Row 155: Maximum taxable earnings for the Social Security payroll tax + href: https://www.cbo.gov/system/files/2026-02/53724-2026-02-Tax-Parameters.xlsx + - title: CBO | Tax Parameters | February 2026, CSV (variable tp_ss_max_earnings) + href: https://github.com/US-CBO/cbo-data/blob/284a95665f9f2f74ed1f482feb629b43fce323da/data/budget/tax_parameters/annual_cy_2026-02.csv diff --git a/policyengine_us/parameters/gov/ssa/uprating.yaml b/policyengine_us/parameters/gov/ssa/uprating.yaml index 1f20e9256d6..e348ffe7e79 100644 --- a/policyengine_us/parameters/gov/ssa/uprating.yaml +++ b/policyengine_us/parameters/gov/ssa/uprating.yaml @@ -7,26 +7,39 @@ values: 2025-01-01: 308.729 # 2024Q3: (308.501 + 308.640 + 309.046) / 3 2026-01-01: 317.265 # 2025Q3: (316.349 + 317.306 + 318.139) / 3 2027-01-01: 328.746 # 2026Q3: (327.104 + 328.481 + 330.654) / 3 - # Forecasts from marrying CPI-W actuals with CBO's CPI-U forecast. - 2028-01-01: 332.241 # 2027Q3: 337.3 * 306.199 / 310.989 - 2029-01-01: 339.431 # 2028Q3: 344.6 * 306.199 / 310.989 - 2030-01-01: 346.917 # 2029Q3: 352.2 * 306.199 / 310.989 - 2031-01-01: 354.6 # 2030Q3: 360.0 * 306.199 / 310.989 - 2032-01-01: 362.579 # 2031Q3: 368.1 * 306.199 / 310.989 - 2033-01-01: 370.656 # 2032Q3: 376.3 * 306.199 / 310.989 - 2034-01-01: 379.028 # 2033Q3: 384.8 * 306.199 / 310.989 - 2035-01-01: 387.598 # 2034Q3: 393.5 * 306.199 / 310.989 - # Values for 2036-2100 are set programmatically in uprating_extensions.py + # Forecasts carry the 2026Q3 CPI-W actual forward at CBO's February 2026 + # quarterly CPI-U growth: 2026Q3 actual * CBO CPI-U (Q3) / CBO CPI-U (2026Q3). + # CBO's Economic Projections publish no CPI-W series, so CBO CPI-U Q3/Q3 + # growth stands in for CPI-W Q3/Q3. CBO's own projected COLAs (2.3% a year + # for 2029-2036) match this growth (2.26% a year) to the tenth of a percent + # that CBO publishes. + 2028-01-01: 336.945 # 2027Q3: 328.746 * 341.281 / 332.976 + 2029-01-01: 344.854 # 2028Q3: 328.746 * 349.291 / 332.976 + 2030-01-01: 352.722 # 2029Q3: 328.746 * 357.260 / 332.976 + 2031-01-01: 360.699 # 2030Q3: 328.746 * 365.340 / 332.976 + 2032-01-01: 368.845 # 2031Q3: 328.746 * 373.591 / 332.976 + 2033-01-01: 377.171 # 2032Q3: 328.746 * 382.024 / 332.976 + 2034-01-01: 385.681 # 2033Q3: 328.746 * 390.644 / 332.976 + 2035-01-01: 394.385 # 2034Q3: 328.746 * 399.460 / 332.976 + 2036-01-01: 403.287 # 2035Q3: 328.746 * 408.476 / 332.976 + # Values for 2037-2100 are set programmatically in uprating_extensions.py metadata: economy: false unit: currency-USD label: SSA uprating reference: - - title: Historical values + - title: SSA | Cost-of-living adjustments, 1975-present href: https://www.ssa.gov/oact/cola/colaseries.html + - title: 42 U.S. Code § 415(i) + href: https://www.law.cornell.edu/uscode/text/42/415#i - title: BLS CPI-W, U.S. city average, all items, not seasonally adjusted (CWUR0000SA0) href: https://data.bls.gov/timeseries/CWUR0000SA0 - title: 2027 Cost-of-Living Adjustment (COLA) Fact Sheet href: https://www.ssa.gov/news/en/cola/factsheets/2027.html - - title: CBO Economic Projections, February 2024. - href: https://www.cbo.gov/publication/59710 + - title: CBO | Economic Projections | February 2026 + # Sheet: 1. Quarterly, Row 53: CPI-U + href: https://www.cbo.gov/system/files/2026-02/51135-2026-02-Economic-Projections.xlsx + - title: CBO | Economic Projections | February 2026, quarterly CSV (variable cpiu) + href: https://github.com/US-CBO/cbo-data/blob/284a95665f9f2f74ed1f482feb629b43fce323da/data/economic/economic_projections/quarterly_2026-02.csv + - title: CBO | The Budget and Economic Outlook, 2026 to 2036 | February 2026, Chapter 3, Social Security (projected COLAs) + href: https://www.cbo.gov/system/files/2026-02/61882-Outlook-2026.pdf#page=74 diff --git a/policyengine_us/parameters/gov/usda/snap/uprating.yaml b/policyengine_us/parameters/gov/usda/snap/uprating.yaml index abe3dbd5815..1f97ac2dcc9 100644 --- a/policyengine_us/parameters/gov/usda/snap/uprating.yaml +++ b/policyengine_us/parameters/gov/usda/snap/uprating.yaml @@ -8,24 +8,34 @@ values: 2024-10-01: 314.175 # 2024-06. 2025-10-01: 322.561 # 2025-06. 2026-10-01: 333.952 # 2026-06. - # Forecasts from CBO's Q2 forecasts. - 2027-10-01: 335.5 # 2027Q2 - 2028-10-01: 342.7 # 2028Q2 - 2029-10-01: 350.3 # 2029Q2 - 2030-10-01: 358.1 # 2030Q2 - 2031-10-01: 366.1 # 2031Q2 - 2032-10-01: 374.3 # 2032Q2 - 2033-10-01: 382.7 # 2033Q2 - 2034-10-01: 391.3 # 2034Q2 - # Values for 2035-2100 are set programmatically in uprating.py + # Forecasts carry the June 2026 actual forward at CBO's February 2026 + # quarterly CPI-U growth: June 2026 actual * CBO CPI-U (Q2) / CBO CPI-U (2026Q2). + 2027-10-01: 342.578 # 2027Q2: 333.952 * 339.250 / 330.708 + 2028-10-01: 350.71 # 2028Q2: 333.952 * 347.303 / 330.708 + 2029-10-01: 358.747 # 2029Q2: 333.952 * 355.262 / 330.708 + 2030-10-01: 366.868 # 2030Q2: 333.952 * 363.304 / 330.708 + 2031-10-01: 375.156 # 2031Q2: 333.952 * 371.512 / 330.708 + 2032-10-01: 383.625 # 2032Q2: 333.952 * 379.898 / 330.708 + 2033-10-01: 392.282 # 2033Q2: 333.952 * 388.471 / 330.708 + 2034-10-01: 401.134 # 2034Q2: 333.952 * 397.237 / 330.708 + 2035-10-01: 410.188 # 2035Q2: 333.952 * 406.203 / 330.708 + 2036-10-01: 419.448 # 2036Q2: 333.952 * 415.373 / 330.708 + # Values for 2037-2100 are set programmatically in uprating_extensions.py metadata: unit: currency-USD label: SNAP uprating economy: false reference: - - title: 7 U.S. Code § 2012(u)(4) - href: https://www.law.cornell.edu/uscode/text/7/2012#u_4 + - title: 7 U.S. Code § 2012(u)(3)(C) + href: https://www.law.cornell.edu/uscode/text/7/2012#u_3_C + - title: 7 U.S. Code § 2012(u)(4) (2023 edition, before Pub. L. 119-21) + href: https://www.govinfo.gov/content/pkg/USCODE-2023-title7/html/USCODE-2023-title7-chap51-sec2012.htm + - title: 7 CFR 273.10(e)(4)(ii) + href: https://www.ecfr.gov/current/title-7/part-273/section-273.10#p-273.10(e)(4)(ii) - title: BLS Consumer Price Index for All Urban Consumers (CPI-U), all items, U.S. city average, not seasonally adjusted (CUUR0000SA0) href: https://data.bls.gov/timeseries/CUUR0000SA0 - - title: CBO Economic Projections, February 2024. - href: https://www.cbo.gov/publication/59710 + - title: CBO | Economic Projections | February 2026 + # Sheet: 1. Quarterly, Row 53: CPI-U + href: https://www.cbo.gov/system/files/2026-02/51135-2026-02-Economic-Projections.xlsx + - title: CBO | Economic Projections | February 2026, quarterly CSV (variable cpiu) + href: https://github.com/US-CBO/cbo-data/blob/284a95665f9f2f74ed1f482feb629b43fce323da/data/economic/economic_projections/quarterly_2026-02.csv diff --git a/policyengine_us/parameters/uprating_extensions.py b/policyengine_us/parameters/uprating_extensions.py index c1c598de334..79d70ccfe58 100644 --- a/policyengine_us/parameters/uprating_extensions.py +++ b/policyengine_us/parameters/uprating_extensions.py @@ -23,7 +23,11 @@ def get_irs_cpi(parameters: ParameterNode, year: int) -> float: - """Calculate IRS CPI based on Chained CPI-U average from Sep to Aug.""" + """Average chained CPI-U from August of ``year - 1`` through July of ``year``. + + 26 U.S.C. 1(f) uses the 12 months ending August; #9105 tracks the + one-month offset. + """ cpi = parameters.gov.bls.cpi.c_cpi_u end = instant(f"{year}-08-01") start = end.offset(-MONTHS_IN_YEAR, MONTH) @@ -779,32 +783,27 @@ def extend_social_security_payroll_cap( """ Extend the Social Security contribution and benefit base through `end_year`. - This follows the statutory formula in 20 CFR 404.1048 using the projected - national average wage index (NAWI), rather than extrapolating the cap - independently. + Follows 42 U.S.C. 430(b) on the projected national average wage index + (NAWI): the base for year Y is the larger of the base in effect for Y - 1 + and the 1994 base ($60,600) times NAWI(Y - 2) / NAWI(1992), rounded to the + nearest $300 (a multiple of $150 rounds up). 20 CFR 404.1048(b)(2)(i) + still states the pre-1995 chained formula, which Pub. L. 103-296, + sec. 321(g)(1), replaced for bases after 1994. """ cap = parameters.gov.irs.payroll.social_security.cap nawi = parameters.gov.ssa.nawi - - last_increase_determination_year = last_projected_year - 1 - if cap(f"{last_projected_year}-01-01") <= cap(f"{last_projected_year - 1}-01-01"): - for year in range(last_projected_year - 1, 1992, -1): - if cap(f"{year}-01-01") > cap(f"{year - 1}-01-01"): - last_increase_determination_year = year - 1 - break + base_1994 = cap("1994-01-01") + nawi_1992 = nawi("1992-01-01") for year in range(last_projected_year + 1, end_year + 1): - determination_year = year - 1 - current_cap = cap(f"{determination_year}-01-01") - numerator = nawi(f"{determination_year - 1}-01-01") - denominator = nawi(f"{last_increase_determination_year - 1}-01-01") + current_cap = cap(f"{year - 1}-01-01") proposed_cap = round_social_security_payroll_cap( - current_cap * numerator / denominator + base_1994 * nawi(f"{year - 2}-01-01") / nawi_1992 + ) + cap.update( + period=f"year:{year}-01-01:1", + value=max(current_cap, proposed_cap), ) - new_cap = max(current_cap, proposed_cap) - cap.update(period=f"year:{year}-01-01:1", value=new_cap) - if new_cap > current_cap: - last_increase_determination_year = determination_year final_value = cap(f"{end_year}-01-01") cap.update(start=instant(f"{end_year}-01-01"), value=final_value) @@ -936,7 +935,9 @@ def set_all_uprating_parameters(parameters: ParameterNode) -> ParameterNode: # IRS uprating - special case that computes from CPI IRS_UPRATING_START_YEAR = 2010 - IRS_LAST_PROJECTED_YEAR = 2035 + # 2036 averages chained CPI-U from August 2034 to July 2035 (see #9105); + # the 2035 instant holds CBO's February 2026 calendar-2035 point. + IRS_LAST_PROJECTED_YEAR = 2036 uprating_index = parameters.gov.irs.uprating @@ -956,31 +957,31 @@ def set_all_uprating_parameters(parameters: ParameterNode) -> ParameterNode: uprating_index.update(period=f"year:{year}-01-01:1", value=irs_cpi) uprating_index.update(start=instant(f"{END_YEAR}-01-01"), value=irs_cpi) - # SNAP uprating (October values, last projection year 2034) + # SNAP uprating (October values, last projection year 2036) extend_parameter_values( parameters.gov.usda.snap.uprating, - last_projected_year=2034, + last_projected_year=2036, end_year=END_YEAR, period_month=10, period_day=1, ) - # SSA uprating (January values, last projection year 2035) + # SSA uprating (January values, last projection year 2036) extend_parameter_values( parameters.gov.ssa.uprating, - last_projected_year=2035, + last_projected_year=2036, end_year=END_YEAR, period_month=1, period_day=1, ) # Social Security National Average Wage Index (January values, last - # projection year 2035). The payroll tax contribution and benefit base is - # indexed to NAWI, so this must remain available through the full long-run - # projection horizon. + # projection year 2034, the NAWI behind CBO's 2036 CBB). The payroll tax + # contribution and benefit base is indexed to NAWI, so this must remain + # available through the full long-run projection horizon. extend_parameter_values( parameters.gov.ssa.nawi, - last_projected_year=2035, + last_projected_year=2034, end_year=END_YEAR, period_month=1, period_day=1, @@ -991,7 +992,7 @@ def set_all_uprating_parameters(parameters: ParameterNode) -> ParameterNode: # independently. extend_social_security_payroll_cap( parameters, - last_projected_year=2035, + last_projected_year=2036, end_year=END_YEAR, ) @@ -1000,37 +1001,41 @@ def set_all_uprating_parameters(parameters: ParameterNode) -> ParameterNode: end_year=END_YEAR, ) - # HHS poverty guideline uprating (January values, last projection year 2035) + # HHS poverty guideline uprating (January values, last projection year 2036) extend_parameter_values( parameters.gov.hhs.uprating, - last_projected_year=2035, + last_projected_year=2036, end_year=END_YEAR, period_month=1, period_day=1, ) - # CPI-U (February values, last projection year 2034) + # CPI-U (February values, last projection year 2036). Each February + # instant holds CBO's February 2026 calendar-year average for that year + # (the "# YYYY value" comments name the tax year it feeds), so CBO's last + # point, calendar 2036, sits at the 2036 instant. extend_parameter_values( parameters.gov.bls.cpi.cpi_u, - last_projected_year=2034, + last_projected_year=2036, end_year=END_YEAR, period_month=2, period_day=1, ) - # Chained CPI-U (February values, last projection year 2034) + # Chained CPI-U (February values, last projection year 2036), as for CPI-U. extend_parameter_values( parameters.gov.bls.cpi.c_cpi_u, - last_projected_year=2034, + last_projected_year=2036, end_year=END_YEAR, period_month=2, period_day=1, ) - # CPI-W (February values, last projection year 2034) + # CPI-W (February values, last projection year 2036; quarterly + # projections run through 2036Q4) extend_parameter_values( parameters.gov.bls.cpi.cpi_w, - last_projected_year=2034, + last_projected_year=2036, end_year=END_YEAR, period_month=2, period_day=1, diff --git a/policyengine_us/tests/microsimulation/data/test_extend_single_year_dataset.py b/policyengine_us/tests/microsimulation/data/test_extend_single_year_dataset.py index b9f367f41f4..8ed4f90782a 100644 --- a/policyengine_us/tests/microsimulation/data/test_extend_single_year_dataset.py +++ b/policyengine_us/tests/microsimulation/data/test_extend_single_year_dataset.py @@ -1191,14 +1191,15 @@ class FakeParam: def test_with_real_cpi_u_parameter(self): """Verify get_parameter_last_year works on the actual CPI-U - parameter YAML, returning 2035 (not 2100 from uprating_extensions).""" + parameter YAML, returning 2036 (not 2100 from uprating_extensions).""" from policyengine_us.system import system cpi_u = _resolve_parameter(system.parameters, "gov.bls.cpi.cpi_u") last_year = get_parameter_last_year(cpi_u) - # CPI-U YAML currently extends to 2035; if the YAML is updated, - # this assertion should be updated to match. - assert last_year == 2035 + # CPI-U YAML currently extends to 2036 (CBO's February 2026 + # projections); if the YAML is updated, this assertion should be + # updated to match. + assert last_year == 2036 # --------------------------------------------------------------------------- diff --git a/policyengine_us/tests/policy/baseline/gov/irs/deductions/standard/basic_standard_deduction.yaml b/policyengine_us/tests/policy/baseline/gov/irs/deductions/standard/basic_standard_deduction.yaml index 55633ed743d..b399f60da0e 100644 --- a/policyengine_us/tests/policy/baseline/gov/irs/deductions/standard/basic_standard_deduction.yaml +++ b/policyengine_us/tests/policy/baseline/gov/irs/deductions/standard/basic_standard_deduction.yaml @@ -165,11 +165,11 @@ # Past CBO's 2036 horizon, 63(c)(4)(B)(i) increases the 63(c)(5)(A) $500 # by the 1(f)(3) adjustment with calendar year 1987 as the base year. # C-CPI-U for the 12 months ending August 2041: uprating_extensions.py - # extends c_cpi_u.yaml past 2034 at its 2033-2034 growth rate, - # 214.9 x (214.9 / 210.8)^7 = 245.922. + # extends c_cpi_u.yaml past 2036 at its 2035-2036 growth rate, + # 223.5 x (223.5 / 219.2)^5 = 246.299. # 1(f)(3)(A)(ii) and (B): CPI-U Sep 1986-Aug 1987 average 111.983 x # 135.993 / 238.649 = 63.813. - # Increase = $500 x (245.922 / 63.813 - 1) = $1,426.89, rounded down to + # Increase = $500 x (246.299 / 63.813 - 1) = $1,429.85, rounded down to # $1,400, so $1,900. period: 2042 input: @@ -188,8 +188,8 @@ basic_standard_deduction: 1_900 - name: 2042 dependent filer with $3,000 of wages gets $650 plus earned income - # Same 2041 C-CPI-U of 245.922 and 1997 denominator of 90.886. - # Increase = $250 x (245.922 / 90.886 - 1) = $426.46, rounded down to + # Same 2041 C-CPI-U of 246.299 and 1997 denominator of 90.886. + # Increase = $250 x (246.299 / 90.886 - 1) = $427.49, rounded down to # $400, so $650. max($1,900, $650 + $3,000) = $3,650. period: 2042 input: diff --git a/policyengine_us/tests/policy/baseline/gov/states/or/delc/erdc/integration.yaml b/policyengine_us/tests/policy/baseline/gov/states/or/delc/erdc/integration.yaml index 6618d6ff153..e1828cc44a4 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/or/delc/erdc/integration.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/or/delc/erdc/integration.yaml @@ -35,6 +35,9 @@ or_erdc_eligible: true or_erdc: 1_490 +# 2027 2-person FPG = (15,960 + 5,680) x 336.766 / 328.4 = 22,191.28. +# Initial limit = ceil(22,191.28 / 12 x 2) = ceil(3,698.55) = 3,699. The rule +# is income < limit, so income of 3,699 is ineligible. - name: Case 2, initial applicant at the strict income limit is ineligible. period: 2027-01 absolute_error_margin: 0.1 @@ -52,13 +55,13 @@ spm_units: spm_unit: members: [parent, child] - or_erdc_countable_income: 3_692 + or_erdc_countable_income: 3_699 households: household: members: [parent, child] state_code: OR output: - or_erdc_countable_income: 3_692 + or_erdc_countable_income: 3_699 or_erdc_income_eligible: false or_erdc_eligible: false or_erdc: 0 diff --git a/policyengine_us/tests/policy/baseline/gov/usda/snap/snap_max_allotment.yaml b/policyengine_us/tests/policy/baseline/gov/usda/snap/snap_max_allotment.yaml index acf9ef722a7..b4ab5de4ba5 100644 --- a/policyengine_us/tests/policy/baseline/gov/usda/snap/snap_max_allotment.yaml +++ b/policyengine_us/tests/policy/baseline/gov/usda/snap/snap_max_allotment.yaml @@ -32,5 +32,5 @@ 2027: CONTIGUOUS_US snap_unit_size: 4 output: - # 1023 * 335.5 / 333.952 - snap_max_allotment: 1027.74 + # 1023 * 342.578 / 333.952 + snap_max_allotment: 1049.42 diff --git a/policyengine_us/tests/policy/baseline/parameters/test_uprating_extensions.py b/policyengine_us/tests/policy/baseline/parameters/test_uprating_extensions.py index 6ff5f115dee..01e350f6715 100644 --- a/policyengine_us/tests/policy/baseline/parameters/test_uprating_extensions.py +++ b/policyengine_us/tests/policy/baseline/parameters/test_uprating_extensions.py @@ -291,7 +291,7 @@ def test_float_dollar_inputs_have_long_run_upraters(): def test_ssa_nawi_and_payroll_cap_extend_to_2100(): - """Test that the SSA NAWI and payroll cap do not flatten after 2035.""" + """Test that the SSA NAWI and payroll cap do not flatten after 2036.""" parameters = PARAMETERS nawi = parameters.gov.ssa.nawi @@ -309,10 +309,15 @@ def test_ssa_nawi_and_payroll_cap_extend_to_2100(): f"Payroll cap should increase from {test_years[i - 1]} to {test_years[i]}" ) - for year in [2036, 2040, 2050, 2100]: - current_cap = payroll_cap(f"{year - 1}-01-01") - expected_cap = round_social_security_payroll_cap( - current_cap * nawi(f"{year - 2}-01-01") / nawi(f"{year - 3}-01-01") + # 42 U.S.C. 430(b): fixed 1994 base, never below the prior year's base. + for year in [2037, 2040, 2050, 2073, 2100]: + expected_cap = max( + payroll_cap(f"{year - 1}-01-01"), + round_social_security_payroll_cap( + payroll_cap("1994-01-01") + * nawi(f"{year - 2}-01-01") + / nawi("1992-01-01") + ), ) assert payroll_cap(f"{year}-01-01") == expected_cap @@ -325,7 +330,7 @@ def test_social_security_payroll_cap_formula_matches_known_values(): nawi = parameters.gov.ssa.nawi expected_2025_cap = round_social_security_payroll_cap( - payroll_cap("2024-01-01") * nawi("2023-01-01") / nawi("2022-01-01") + payroll_cap("1994-01-01") * nawi("2023-01-01") / nawi("1992-01-01") ) assert expected_2025_cap == payroll_cap("2025-01-01") @@ -412,13 +417,234 @@ def test_social_security_parameters_include_latest_official_2027_values(): assert pia.thresholds[2] == 8_077 +# CBO February 2026 projections, from US-CBO/cbo-data at 284a956, whose CSVs +# equal the workbook rows: quarterly_2026-02.csv and calendar_2026-02.csv +# (cpiu and chained_cpiu; Economic Projections sheets "1. Quarterly", row 53, +# and "2. Calendar Year", rows 53 and 57) and annual_cy_2026-02.csv +# (tp_ss_max_earnings; Tax Parameters sheet "1. Tax Parameters", row 155). +CBO_2026_02_QUARTERLY_CPI_U = { + "2026Q2": 330.708, + "2026Q3": 332.976, + "2026Q4": 335.132, + "2027Q1": 337.213, + "2027Q2": 339.250, + "2027Q3": 341.281, + "2027Q4": 343.298, + "2028Q1": 345.305, + "2028Q2": 347.303, + "2028Q3": 349.291, + "2028Q4": 351.280, + "2029Q1": 353.269, + "2029Q2": 355.262, + "2029Q3": 357.260, + "2029Q4": 359.265, + "2030Q1": 361.279, + "2030Q2": 363.304, + "2030Q3": 365.340, + "2030Q4": 367.386, + "2031Q1": 369.444, + "2031Q2": 371.512, + "2031Q3": 373.591, + "2031Q4": 375.682, + "2032Q1": 377.784, + "2032Q2": 379.898, + "2032Q3": 382.024, + "2032Q4": 384.161, + "2033Q1": 386.310, + "2033Q2": 388.471, + "2033Q3": 390.644, + "2033Q4": 392.830, + "2034Q1": 395.027, + "2034Q2": 397.237, + "2034Q3": 399.460, + "2034Q4": 401.695, + "2035Q1": 403.943, + "2035Q2": 406.203, + "2035Q3": 408.476, + "2035Q4": 410.762, + "2036Q1": 413.061, + "2036Q2": 415.373, + "2036Q3": 417.698, + "2036Q4": 420.036, +} +CBO_2026_02_CALENDAR_CPI_U = { + 2026: 331.807, + 2027: 340.260, + 2028: 348.295, + 2029: 356.264, + 2030: 364.328, + 2031: 372.557, + 2032: 380.967, + 2033: 389.564, + 2034: 398.355, + 2035: 407.346, + 2036: 416.542, +} +CBO_2026_02_CALENDAR_C_CPI_U = { + 2027: 187.212, + 2028: 191.088, + 2029: 194.917, + 2030: 198.775, + 2031: 202.695, + 2032: 206.688, + 2033: 210.759, + 2034: 214.912, + 2035: 219.152, + 2036: 223.479, +} +CBO_2026_02_CBB = { + 2027: 191_100, + 2028: 198_000, + 2029: 205_500, + 2030: 212_700, + 2031: 219_900, + 2032: 227_100, + 2033: 234_900, + 2034: 242_400, + 2035: 250_500, + 2036: 258_600, +} + +# The latest actuals that each projection grows from. +SSA_2026Q3_CPI_W = 328.746 # BLS CWUR0000SA0, July-September 2026 mean +JUNE_2026_CPI_W = 327.075 # BLS CWUR0000SA0 +JUNE_2026_CPI_U = 333.952 # BLS CUUR0000SA0 +NAWI_2025 = 72_800.33 # SSA AWI series +HHS_2026 = 328.4 # CBO January 2025 calendar-2026 CPI-U (328.446) + + +def _cbo_2026_02_projection_cases(): + quarterly = CBO_2026_02_QUARTERLY_CPI_U + calendar = CBO_2026_02_CALENDAR_CPI_U + cases = [] + # SSA: 2026Q3 CPI-W x CBO CPI-U Q3(Y - 1) / 2026Q3. + for year in range(2028, 2037): + growth = quarterly[f"{year - 1}Q3"] / quarterly["2026Q3"] + cases.append( + ("gov.ssa.uprating", f"{year}-01-01", SSA_2026Q3_CPI_W * growth, 3) + ) + # SNAP: June 2026 CPI-U x CBO CPI-U Q2(Y) / 2026Q2. + for year in range(2027, 2037): + growth = quarterly[f"{year}Q2"] / quarterly["2026Q2"] + cases.append( + ("gov.usda.snap.uprating", f"{year}-10-01", JUNE_2026_CPI_U * growth, 3) + ) + # HHS: 2026 value x CBO calendar CPI-U(Y) / calendar 2026. + for year in range(2027, 2037): + growth = calendar[year] / calendar[2026] + cases.append(("gov.hhs.uprating", f"{year}-01-01", HHS_2026 * growth, 3)) + # CPI-W: each CBO CPI-U quarter at the June 2026 CPI-W / CPI-U ratio, at + # the quarter's middle month. + for quarter, cpi_u in quarterly.items(): + if quarter < "2026Q3": + continue + year, month = int(quarter[:4]), 3 * int(quarter[-1]) - 1 + cases.append( + ( + "gov.bls.cpi.cpi_w", + f"{year}-{month:02d}-01", + cpi_u * JUNE_2026_CPI_W / JUNE_2026_CPI_U, + 3, + ) + ) + # NAWI: SSA's 2025 AWI x CBO CBB(Y + 2) / CBB 2027. + for year in range(2026, 2035): + growth = CBO_2026_02_CBB[year + 2] / CBO_2026_02_CBB[2027] + cases.append(("gov.ssa.nawi", f"{year}-01-01", NAWI_2025 * growth, 2)) + # CPI-U and chained CPI-U: CBO's calendar-year Y average at the Y-02-01 + # instant, to one decimal. + for year in range(2027, 2037): + cases.append(("gov.bls.cpi.cpi_u", f"{year}-02-01", calendar[year], 1)) + cases.append( + ( + "gov.bls.cpi.c_cpi_u", + f"{year}-02-01", + CBO_2026_02_CALENDAR_C_CPI_U[year], + 1, + ) + ) + return cases + + +CBO_2026_02_PROJECTION_CASES = _cbo_2026_02_projection_cases() + + +@pytest.mark.parametrize( + "path,date,expected,decimals", + CBO_2026_02_PROJECTION_CASES, + ids=[f"{path}@{date}" for path, date, _, _ in CBO_2026_02_PROJECTION_CASES], +) +def test_upraters_encode_cbo_february_2026_projections(path, date, expected, decimals): + """Each projected value applies CBO's February 2026 growth to its anchor. + + extend_parameter_values grows every year after a series' last CBO point at + the ratio of its last two points, so these values, the last two included, + also set the 2037-2100 path. + """ + assert PARAMETERS.get_child(path)(date) == round(expected, decimals) + + +def test_projected_payroll_caps_follow_430b_through_2036(): + """2028-2036 caps apply 42 U.S.C. 430(b) to the CBO-based NAWI.""" + cap = PARAMETERS.gov.irs.payroll.social_security.cap + nawi = PARAMETERS.gov.ssa.nawi + for year in range(2028, 2037): + assert cap(f"{year}-01-01") == round_social_security_payroll_cap( + cap("1994-01-01") * nawi(f"{year - 2}-01-01") / nawi("1992-01-01") + ) + assert cap("2036-01-01") == 260_400 + + +def test_irs_uprating_averages_cbo_chained_cpi_u_points(): + """IRS(Y) averages chained CPI-U from August Y - 2 to July Y - 1 (#9105). + + Six months read the February Y - 2 point and six read February Y - 1. + """ + irs = PARAMETERS.gov.irs.uprating + c_cpi_u = { + year: round(value, 1) for year, value in CBO_2026_02_CALENDAR_C_CPI_U.items() + } + for year in range(2029, 2037): + assert irs(f"{year}-01-01") == pytest.approx( + (6 * c_cpi_u[year - 2] + 6 * c_cpi_u[year - 1]) / 12, rel=1e-12 + ) + + +@pytest.mark.parametrize( + "path,last_projected_year,date_suffix", + [ + ("gov.irs.uprating", 2036, "-01-01"), + ("gov.ssa.uprating", 2036, "-01-01"), + ("gov.usda.snap.uprating", 2036, "-10-01"), + ("gov.hhs.uprating", 2036, "-01-01"), + ("gov.ssa.nawi", 2034, "-01-01"), + ("gov.bls.cpi.cpi_u", 2036, "-02-01"), + ("gov.bls.cpi.c_cpi_u", 2036, "-02-01"), + ("gov.bls.cpi.cpi_w", 2036, "-02-01"), + ], +) +def test_upraters_extrapolate_only_after_cbo_projections( + path, last_projected_year, date_suffix +): + """Each series holds its final projected growth after CBO's last year.""" + parameter = PARAMETERS.get_child(path) + last_growth = parameter(f"{last_projected_year}{date_suffix}") / parameter( + f"{last_projected_year - 1}{date_suffix}" + ) + for year in [last_projected_year + 1, last_projected_year + 2, 2050, 2100]: + growth = parameter(f"{year}{date_suffix}") / parameter( + f"{year - 1}{date_suffix}" + ) + assert growth == pytest.approx(last_growth, rel=1e-12) + + def test_social_security_wage_indexed_parameters_follow_statutory_rounding(): """Wage-indexed benefit parameters should use lagged NAWI and statutory rounding.""" parameters = PARAMETERS nawi = parameters.gov.ssa.nawi social_security = parameters.gov.ssa.social_security - for year in [2027, 2036, 2050, 2100]: + for year in [2027, 2036, 2037, 2050, 2100]: date = f"{year}-01-01" prior_date = f"{year - 1}-01-01" determination_nawi = nawi(f"{year - 2}-01-01") diff --git a/policyengine_us/tests/policy/contrib/states/ca/ab2591/ca_ab2591.yaml b/policyengine_us/tests/policy/contrib/states/ca/ab2591/ca_ab2591.yaml index 760f94e4e75..856516fc3fc 100644 --- a/policyengine_us/tests/policy/contrib/states/ca/ab2591/ca_ab2591.yaml +++ b/policyengine_us/tests/policy/contrib/states/ca/ab2591/ca_ab2591.yaml @@ -2,12 +2,12 @@ # Allows taxpayers to elect a standard deduction equal to the federal # poverty line for their household size. # Effective for taxable years beginning on or after July 1, 2027. -# 2027 federal poverty guidelines (CONTIGUOUS_US): -# first person = $16,334 -# additional person = $5,813 -# 1-person FPL = $16,334 -# 2-person FPL = $22,147 -# 4-person FPL = $33,774 +# 2027 federal poverty guidelines (CONTIGUOUS_US), 2026 values x 336.766 / 328.4: +# first person = $16,366.58 +# additional person = $5,824.70 +# 1-person FPL = $16,367 (rounded) +# 2-person FPL = $22,191 (rounded) +# 4-person FPL = $33,841 (rounded) - name: Single filer uses one-person FPL. period: 2027 @@ -28,7 +28,7 @@ members: [person1] state_code: CA output: - ca_standard_deduction: 16_334 + ca_standard_deduction: 16_367 - name: Head of household with one child uses two-person FPL. period: 2027 @@ -53,7 +53,7 @@ members: [person1, person2] state_code: CA output: - ca_standard_deduction: 22_147 + ca_standard_deduction: 22_191 - name: Head of household with two children still uses two-person FPL. # Bill R&TC 17073.5(b)(2) fixes HoH at the two-person FPL regardless of size. @@ -82,7 +82,7 @@ members: [person1, person2, person3] state_code: CA output: - ca_standard_deduction: 22_147 + ca_standard_deduction: 22_191 - name: Joint filers with no children use two-person FPL. period: 2027 @@ -107,7 +107,7 @@ members: [person1, person2] state_code: CA output: - ca_standard_deduction: 22_147 + ca_standard_deduction: 22_191 - name: Joint filers with two children use four-person FPL. # Bill R&TC 17073.5(b)(3) scales joint FPL with the number of persons in the household. @@ -139,7 +139,7 @@ members: [person1, person2, person3, person4] state_code: CA output: - ca_standard_deduction: 33_774 + ca_standard_deduction: 33_841 - name: Married filing separately uses one-person FPL. period: 2027 @@ -161,7 +161,7 @@ members: [person1] state_code: CA output: - ca_standard_deduction: 16_334 + ca_standard_deduction: 16_367 - name: Reform inactive leaves baseline CA standard deduction unchanged. period: 2027