Skip to content

Keep a filer who can be claimed as a dependent out of the premium tax credit family, and apply each state premium program's rule - #10041

Draft
MaxGhenis wants to merge 8 commits into
claimable-filer-federalfrom
claimable-filer-ptc
Draft

MaxGhenis wants to merge 8 commits into
claimable-filer-federalfrom
claimable-filer-ptc

Conversation

@MaxGhenis

@MaxGhenis MaxGhenis commented Oct 10, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Someone another taxpayer can claim as a dependent gets no premium tax credit, and a joint return where one spouse can be claimed computes the credit for the other spouse alone. The model applied neither rule: is_aca_ptc_eligible ignored whether a filer could be claimed, and aca_ptc, the benchmark premium, the poverty line, household income and the premium cap all counted the whole tax unit.

Input. The PR reads claimable_as_dependent_on_another_return (from #10024: a deduction for the person is allowable to another taxpayer, whether or not claimed). Form 1040 (2025) instructions, line 12a, p.33 has the box checked "If you or your spouse ... can be claimed as a dependent on someone else's return", with no refund-only carve-out, and Form 8962 line 1 keys on that box. The return still claims its dependents when the would-be claimant meets the refund-only filing exception (dependent_claimant_filing_exception; Form 1040 dependents worksheet, p.18; Publication 501's Dependent Taxpayer Test).

  • IRC 36B(c)(1)(D), "Denial of credit to dependents": "No credit shall be allowed under this section to any individual with respect to whom a deduction under section 151 is allowable to another taxpayer". 26 CFR 1.36B-2(b)(3) makes such an individual not an applicable taxpayer.
  • 26 CFR 1.36B-1(d)(2) (taxable years ending on or after 2020-12-31) defines the family as "the taxpayer, including both spouses in the case of a joint return, except for individuals who qualify as a dependent of another taxpayer under section 152", plus the dependents the taxpayer properly claims. IRC 152(b)(1) and Publication 501, p.11: "If you are filing a joint return and your spouse can be claimed as a dependent by another taxpayer, you and your spouse can't claim any dependents on your joint return."
  • Form 8962 instructions (2025), line 1, p.8: "if you are filing jointly and you checked the 'Someone can claim your spouse as a dependent' box on your tax return, you or your spouse is not included in the tax family size calculation". The 2021-2024 editions say the same (p.6 to p.7).
  • 26 CFR 1.36B-3(b)(2), (f)(1): the benchmark is the second-lowest-cost silver plan "offered to the taxpayer's coverage family", the family members enrolled that month.

Stacked on the federal claimable-filer branch (claimable-filer-federal, itself on #10024, whose helpers head_or_spouse_is_dependent_elsewhere and head_spouse_count_not_dependent_elsewhere this uses). Base this PR on claimable-filer-federal until both merge.

Federal change

Variable Rule now
is_aca_tax_family_member (new, person) A head or spouse who cannot be claimed elsewhere; a dependent on the return when it has an applicable taxpayer (a head or spouse who cannot be claimed) and no head or spouse is claimable outside the refund-only exception. A return whose every head and spouse can be claimed has no family: no credit is allowed to its filers (36B(c)(1)(D)). In a tax unit with neither a head nor a spouse (a lone minor filer, for whom role inference assigns no head), each member's own claimability decides. A dependent another taxpayer could also claim stays in the family of the return that claims them.
aca_tax_family_size (new) Form 8962 line 1: the number of members. tax_unit_size is unchanged.
aca_fpg (new) Form 8962 line 4: the prior-year guideline for aca_tax_family_size. A return where every filer can be claimed has no tax family; it keeps the tax unit's guideline (a numerical convention, not a legal rule: the credit is $0 there, and readers that are not about the credit see the old value).
aca_magi_fraction Household income over aca_fpg (was tax_unit_fpg for the prior year, which also took the household size from the prior year; the size now comes from the tax year, as line 1 requires, which differs only when a prior-year size is supplied).
aca_magi Household income (1.36B-1(e)(1)) counts other individuals only if they are in the family, so it is medicaid_magi without the tax-exempt interest and Social Security of the return's dependents who are outside the family. Joint MAGI still counts both spouses. Unchanged for every return without a claimable filer.
is_aca_ptc_eligible Adds is_aca_tax_family_member.
aca_ptc_below_fpl_immigration_exception The lawfully present person must be in the tax family: "the taxpayer or a member of the taxpayer's family" (1.36B-2(b)(5)).
is_aca_coverage_family_member (new) pays_aca_premium and a tax family member (1.36B-3(b)(2)).
aca_ptc_slcsp (new), with aca_ptc_slcsp_family_tier_category and _multiplier The coverage family's benchmark: age-curve premiums of its members or, in New York and Vermont, the family tier for them. It is slcsp itself whenever every enrollee is in the family, so every existing case and any supplied slcsp carry through unchanged. slcsp keeps every enrollee, since a claimable spouse still buys a plan at full price (marketplace_net_premium).
aca_ptc Uses aca_ptc_slcsp.
aca_ptc_coverage_family_premium (new), used_aca_ptc The credit cannot exceed the coverage family's enrollment premiums (1.36B-3(d)(1)(i)). For a policy covering more than one family, 1.36B-3(h)(1) allocates the premium "in proportion to the premiums for each taxpayer's applicable benchmark plan", so the cap is the selected plan's premium times aca_ptc_slcsp / slcsp (silver or bronze). The share is 1 whenever every enrollee is in the family.
marketplace_csr_eligible The model prices one policy per tax unit. 45 CFR 155.305(g)(3) gives a policy only the category "for which all the individuals covered by the policy would be eligible", so a policy that also covers an enrollee without credit eligibility gets no cost-sharing reductions. Unchanged for returns without a claimable filer, where credit eligibility differs only at tax-unit level.
slcsp_family_tier_category, slcsp_family_tier_multiplier Refactored into shared functions that take the enrolled members; same results.
aca_ptc_700_fpl_cliff, aca_ptc_additional_bracket, aca_ptc_simplified_bracket reforms Each overrides is_aca_ptc_eligible and none changes 36B(c)(1)(D), so each keeps the gate. Without it the reforms would pay claimable filers.

Cost-sharing eligibility per person requires APTC eligibility (45 CFR 155.305(g)(1)), and 155.305(f)(1)(ii) requires "a member of the tax filer's family within the meaning of 26 CFR 1.36B-1(d)".

Worked cases (aca_ptc.yaml), $500 a month benchmark per enrollee, contiguous US, both spouses aged 30:

Household 2025 (MAGI $22,590) 2026 (MAGI $23,475)
Single, can be claimed $0 $0
Joint, one spouse can be claimed (either labelling) family 1, 150% FPL, 0%: $6,000 family 1, 150% FPL, 4.19%: $5,016.40
Joint, both can be claimed $0 $0
Joint, neither (control) family 2, 110% FPL: $12,000 family 2, 110% FPL, 2.1%: $11,507.03
Joint, one claimable, MAGI $18,000 119% FPL for one: $6,000 (control at 88%: $0)
Joint, one claimable whose claimant meets the refund-only exception, child ($250 a month), MAGI $30,000 family 2 (spouse and child), 146%: $9,000
Joint, one claimable, AGI $20,000, child with $20,000 tax-exempt interest household income $20,000 (was $40,000): $6,000
Lone 17-year-old filer, can be claimed (no head inferred) $0 (was $6,000)
Joint, one claimable, silver plan at 0.75 of benchmark ($9,000) credit used $4,500 (was $6,000), net premium $4,500; no CSR

The joint fixtures with a positive credit test the rule given the flag; see the note under the readings.

Before this PR, the joint one-claimable couple got the control's credit, and the single claimable filer got $6,000 (2025).

State premium programs, each checked against its own law

Program Its rule for an enrollee outside the federal tax family Change
Massachusetts ConnectorCare Requires APTC eligibility: 956 CMR 12.04(3)(a)2 to 12.04(2)(b) to 45 CFR 155.305(f); "Household" is "the tax filer and the individuals for whom a tax filer properly expects to claim a personal exemption" (12.03, p.4) Gate flows; wrap uses aca_ptc_slcsp
Connecticut Covered Connecticut Enrollees must be "eligible for premium and cost-sharing subsidies for a qualified health plan" (PA 21-2 (JSS) §16(b)(1), p.22) Gate flows; wrap uses aca_ptc_slcsp
Colorado Premium Assistance Payments "for Coloradans who receive the premium tax credit" (C.R.S. 10-16-1205(1)(b)(II), the payment authority Regulation 4-2-78 cites) Gate flows; residual cap uses aca_ptc_slcsp. See reading 2
Maryland premium assistance and Young Adult Subsidy Enrollee must be "a member of a tax filer's tax household" and the filer must meet the APTC requirements (COMAR 14.35.21.03A(1)) Gate flows (including the young-adult reduction); wrap uses aca_ptc_slcsp
California Premium Subsidy (c)(2) "Meets all eligibility requirements of the federal advance premium tax credit"; (d)(7)(B) "No state premium assistance shall be allowed ... to any individual who is claimed as a dependent of another return filer"; (d)(5) benchmark and (d)(10) family size have their 36B meanings (2026 Program Design, pp.2-3) Gate flows; subsidy uses aca_ptc_slcsp; eligibility comment updated
New Mexico Premium Assistance, base "qualify for the federal Premium Tax Credit" (2026 MAP manual, p.4) Gate flows; benchmark uses aca_ptc_slcsp
New Mexico Middle Income Household (above 400% FPL) "Meet all eligibility criteria for the federal PTC except for household income requirements" (Addendum, p.2) nm_premium_assistance_mih_eligible now needs a coverage family member
Vermont Premium Assistance "An individual or family eligible for federal premium tax credits under 26 U.S.C. § 36B" (33 V.S.A. 1812(a)(1)) Gate flows; cap uses aca_ptc_slcsp
New Jersey Health Plan Savings Treasury's 1332 addendum describes the program as for enrollees "otherwise eligible for the Advanced Premium Tax Credit" (p.8), written for its first plan year; Get Covered NJ: "Tax households with annual incomes up to 600%". No current NJ rule found addresses someone another taxpayer can claim, so this is an interpretation (reading 4) nj_njhps_member_eligible now needs a tax family member (it does not read is_aca_ptc_eligible, to keep the 400-600% band); cap uses aca_ptc_slcsp. #9515 also edits these two files (citations only); land it first
Washington Cascade Care Savings Policy §4(1) needs QHP eligibility, not APTC eligibility, and §4(2)'s exclusions do not include being claimable (2026 policy, p.11); Group 2 is "QHP-eligible residents ... not eligible for APTC Federal subsidies but eligible for CCS" at $250 PMPM (2026 methodology, pp.1, 5) A QHP-eligible enrollee outside the tax family moves from Group 1 ($55) to Group 2 ($250); the cap keeps slcsp, since their premium is in the household's net premium. See reading 1

Not changed: Colorado OmniSalud (undocumented enrollees; reads neither the credit nor its eligibility). The Basic Health Program payment proxy reads aca_magi_fraction and so now uses the tax family's poverty line, as its documentation says it mirrors aca_ptc; its enrollee premiums are unchanged (follow-up 3).

All modeled state programs start in 2026, so the state changes affect 2026 on.

2026 state cases (joint couple aged 30, one spouse claimable, MAGI $23,475, $500 a month benchmark each; federal credit $5,016.40), each under both labellings, with the nobody-claimable control and the both-claimable case: MA $983.60 (control $492.97), CT $983.60 ($492.97), CO $960 ($492.97), MD $983.60 ($492.97), NM $1,583.60 ($1,692.97), VT $352.13 ($352.13), NJ $240 ($0: control is below 138% FPL), WA $3,660 ($492.97); CA at MAGI $22,000: $785.92 ($462). Before this PR the model treated this couple as the control in every program.

Readings for Max (queued as d1228)

  1. Washington, Group 2 poverty line. This PR measures the household's income against the tax family's poverty line for every Cascade Care member. The policy defines income as 36B(d)(2) household income and the FPL by 36B(d)(3)(B), but no retrieved WA source says which family size applies to a Group 2 member. Alternative: the tax unit's size for Washington only. The two readings differ only near the 250% ceiling.
  2. Colorado. This PR follows the statute (payments for "Coloradans who receive the premium tax credit"). Regulation 4-2-78 §4C defines an eligible enrollee as any QHP enrollee at or below 400% FPL, which would keep the claimable spouse in the count and cap: at the 2026 example above, $960 (this PR) against $1,308.
  3. Exchange "tax filer". 45 CFR 155.300 defines a tax filer as one expecting "that no other taxpayer will be able to claim him, her or them as a tax dependent". Read as "either spouse", an Exchange would deny advance payments to the whole couple, and the state wraps keyed to APTC eligibility with them. This PR follows the annual credit's per-member rule (1.36B-1(d)(2), Form 8962 line 1) for both.
  4. New Jersey. The NJHPS exclusion above is an interpretation of the program's federal alignment, not a rule found in current New Jersey authority.

Note on the input: a married person can be claimed only if the joint return is filed "only to claim a refund of income tax withheld or estimated tax paid", and Publication 501 Example 3 (p.11) holds that claiming a refundable credit defeats that. Applying that example to the premium tax credit is an inference. So a joint return that claims a positive credit while one spouse is claimable may not arise in practice; the model takes the flag as given and applies the line 1 rule, as the federal branch does for recovery rebates.

Invariants

These hold for every input, and policyengine_us/tests/core/test_claimable_filer_ptc_invariants.py checks them with Hypothesis in each year 2021-2026 (spouses claimable, actually claimed or neither, with and without the refund-only exception) and on a seeded population in 2025 and 2026, in Texas, New York, Vermont and the nine wrap states, reusing #10024's household builders:

  1. Swap invariance. Exchanging the two adults' head and spouse labels leaves the tax family size, aca_fpg, aca_magi, aca_magi_fraction, slcsp, aca_ptc_slcsp, aca_ptc, the coverage-family premium, the used credit, CSR eligibility, the number of eligible members and all nine state amounts unchanged.
  2. Identities. aca_tax_family_size = filers who cannot be claimed + (dependents if one filer is an applicable taxpayer and none is claimable outside the exception); no eligible person is outside the tax family; 0 <= aca_ptc_slcsp <= slcsp; aca_magi <= medicaid_magi; used credit <= coverage-family premium <= selected premium; cost-sharing reductions only when every enrollee is eligible for the credit; no family member means no credit; and where no filer can be claimed, aca_ptc_slcsp = slcsp, aca_magi = medicaid_magi, aca_tax_family_size = tax_unit_size and aca_fpg = tax_unit_fpg for the prior year. That last one holds because these simulations supply no prior-year size. A supplied prior-year size is the one documented difference (aca_fpg.yaml tests it).
  3. Monotonicity. Marking another filer as claimed never raises the tax family size, never raises the benchmark while the same people are enrolled (checked person by person), and never raises the credit, with two intended exceptions, each tested in YAML: income crosses the 100% floor (below it for two, above it for one), or out-of-family dependents' income leaves household income. The test exempts exactly those two.

The seeded test also asserts it reaches the rule: returns with exactly one claimable filer and a positive credit, and in 2026 a positive state wrap.

Tests

Running at head 44bfb6d merged with current main: the targeted YAML set (all of gov/aca, contrib/aca, the BHP, Medicaid income, the nine state programs, the household health aggregates and the partner contract files that read these outputs) under heavy_run.sh, then the property, swap-invariance and code-health tests. Results replace this line.

Review

  • r1 (GPT-6.1 Sol, head 948f6be): REQUEST CHANGES, three blocking and four should-fix findings, all addressed in dc66236 and 44bfb6d. The blocking ones: the premium cap counted the whole policy, household income kept out-of-family dependents' income, and a lone claimable minor bypassed the gate. The should-fix ones: CSR on a shared policy, the invariant test's exemptions, the unchanged-when-nobody-claimed claim, and NJ evidence. The nit (duplicate reference) is fixed too.
  • r2 (GPT-6.1 Sol) at 44bfb6d: running.

Microsimulation impact

Pending: real microsimulations on the default dataset, 2025 and 2026, base (claimable-filer-federal merged with main) against this branch merged with main.

Follow-ups (separate work)

  1. Alaska and Hawaii households given a single year get the contiguous-US ACA poverty line, because the guideline lookup reads the prior year's state (pre-existing in tax_unit_fpg(period.last_year); this PR keeps that read so it changes nothing else). Offered as a separate task.
  2. California's applicable percentage at exactly 150% FPL is 3.19% where the program design's table gives 0% ("100% up to 150%"), from searchsorted(side="right"). Offered as a separate task.
  3. Basic Health Program: the payment proxy's reference premium should cover only the hypothetical PTC coverage family: the payment is "95 percent of the premium tax credit for which the eligible individual would have qualified" (42 CFR 600.605(a)(1)), and BHP eligibility reads medicaid_income_level where 42 CFR 600.305 uses household income for "the applicable family size".
  4. The default dataset sets the dependency inputs for nobody, so none of the claimable-filer rules move a microsimulation. Offered as a separate task (microcosm).
  5. On ordinary returns, aca_magi (through medicaid_magi) adds dependents' tax-exempt interest and all their Social Security, but 1.36B-1(e)(1)(ii) counts another family member's income only if they "are required to file a return". Pre-existing and unchanged here (this PR removes only out-of-family dependents' amounts).

axiom: us:statutes/26/36B/c/1/D queued (TheAxiomFoundation/rulespec-us#1627)

🤖 Generated with Claude Code

MaxGhenis and others added 4 commits October 10, 2026 05:43
…it family

IRC 36B(c)(1)(D) excludes anyone another taxpayer can claim from being an
applicable taxpayer, and 26 CFR 1.36B-1(d)(2) leaves such a spouse out of a
joint return's family. Add is_aca_tax_family_member and aca_tax_family_size,
measure household income against the poverty line for that family (aca_fpg,
aca_magi_fraction), gate is_aca_ptc_eligible and the below-FPL immigration
exception on it, and price the credit on the coverage family's benchmark
(aca_ptc_slcsp, which equals slcsp whenever every enrollee is in the family).
The NY/VT family-tier logic becomes shared functions so the benchmark can
apply it to the coverage family. The three ACA reforms that override
is_aca_ptc_eligible keep the gate.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…e tax family

Massachusetts, Connecticut, Colorado, Maryland, California, New Mexico and
Vermont require each enrollee to be eligible for the federal credit, so the
gate flows through is_aca_ptc_eligible and their wraps use the coverage
family's benchmark. New Mexico's Middle Income Household component and New
Jersey Health Plan Savings require every federal criterion except income, so
they now read the tax family too. Washington's Cascade Care Savings pays its
non-federally-subsidized amount (Group 2) to a QHP-eligible enrollee without
a federal subsidy, so a claimable enrollee moves from Group 1 to Group 2.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis and others added 3 commits October 11, 2026 12:04
…role-less units

- is_aca_tax_family_member reads claimable_as_dependent_on_another_return
  (#10024's split input: 36B(c)(1)(D) and 1.36B-1(d)(2) turn on being
  claimable, and Form 1040 line 12a, which Form 8962 line 1 keys on, has no
  refund-only carve-out). The return keeps its dependents when the would-be
  claimant meets the refund-only filing exception (Pub 501, Dependent
  Taxpayer Test), a return with no applicable taxpayer has no family, and a
  tax unit with neither a head nor a spouse uses each member's own
  claimability (a lone claimable minor no longer gets the credit).
- aca_magi leaves out the tax-exempt interest and Social Security of the
  return's dependents who are outside the tax family (26 CFR 1.36B-1(e)(1)).
- used_aca_ptc is capped at the coverage family's share of the selected plan
  premium (new aca_ptc_coverage_family_premium; 26 CFR 1.36B-3(d)(1)(i),
  (h)(1)), not the whole policy's premium.
- marketplace_csr_eligible applies 45 CFR 155.305(g)(3): the model prices one
  policy per tax unit, and a policy that also covers an enrollee without
  credit eligibility gets no cost-sharing reductions.
- aca_fpg documents that it sizes the family for the tax year; the NJHPS
  exclusion is labelled an interpretation; one reference per source in
  is_aca_coverage_family_member.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
YAML: refund-only exception (family keeps the child), single claimable filer
with the exception (no family), claimable but not claimed, lone claimable
and unclaimed 17-year-old filers, household income without an out-of-family
child's tax-exempt interest, the coverage-family premium cap (silver and
bronze), CSR under the family-policy rule, Colorado's binding residual
($420), and the tax year's family size against a supplied prior-year size.
Test inputs now use claimable_as_dependent_on_another_return.

Property test: Hypothesis runs every year 2021-2026 and draws claimable-but-
unclaimed spouses and the filing exception; the credit's monotonicity
exemption is limited to crossing the 100% floor or dependents' income leaving
household income; the benchmark check compares enrolled people, not counts;
new identities for household income, the premium cap and CSR.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…cation, MAGI floor

- A tax unit with neither a head nor a spouse is filed by its oldest member.
  When that member can be claimed elsewhere, nobody is in the tax family.
  Before, a claimable 17-year-old filing with an infant got $12,000.
- The coverage family is priced on its own. Its children are ranked for the
  three-oldest-children rule (45 CFR 147.102(c)(1)), and its family tier is
  built from its own members.
- A shared premium is allocated by each family's benchmark (26 CFR
  1.36B-3(h)(1)). The denominator is the coverage family's benchmark plus the
  benchmark of the enrollees outside it, not the whole policy's tier. An empty
  coverage family gets no share of the premium.
- Out-of-family dependents' tax-exempt interest and Social Security are
  removed before the single zero floor. A negative benefit no longer cuts
  household income.
- is_aca_marketplace_enrollee (enrolled) is split from pays_aca_premium
  (charged an age-rated premium). The family-tier child tests no longer
  depend on payment.
- Tests: YAML for each case under both head/spouse labellings. The property
  test now gives dependents tax-exempt interest and Social Security. It checks
  aca_magi against an expectation built from the inputs, and it exempts only
  that removal from monotonicity. Monotonicity runs under Hypothesis in every
  year 2021-2026. The "unchanged" identities apply only to returns with a
  head or spouse.

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

This branch has not been deployed

No deployments
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.

1 participant