Repository navigation
Conversation
…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>
…claimable-filer-ptc
…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>
This was referenced Oct 11, 2026
…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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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_eligibleignored whether a filer could be claimed, andaca_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).Stacked on the federal claimable-filer branch (
claimable-filer-federal, itself on #10024, whose helpershead_or_spouse_is_dependent_elsewhereandhead_spouse_count_not_dependent_elsewherethis uses). Base this PR onclaimable-filer-federaluntil both merge.Federal change
is_aca_tax_family_member(new, person)aca_tax_family_size(new)tax_unit_sizeis unchanged.aca_fpg(new)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_fractionaca_fpg(wastax_unit_fpgfor 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_magimedicaid_magiwithout 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_eligibleis_aca_tax_family_member.aca_ptc_below_fpl_immigration_exceptionis_aca_coverage_family_member(new)pays_aca_premiumand a tax family member (1.36B-3(b)(2)).aca_ptc_slcsp(new), withaca_ptc_slcsp_family_tier_categoryand_multiplierslcspitself whenever every enrollee is in the family, so every existing case and any suppliedslcspcarry through unchanged.slcspkeeps every enrollee, since a claimable spouse still buys a plan at full price (marketplace_net_premium).aca_ptcaca_ptc_slcsp.aca_ptc_coverage_family_premium(new),used_aca_ptcaca_ptc_slcsp / slcsp(silver or bronze). The share is 1 whenever every enrollee is in the family.marketplace_csr_eligibleslcsp_family_tier_category,slcsp_family_tier_multiplieraca_ptc_700_fpl_cliff,aca_ptc_additional_bracket,aca_ptc_simplified_bracketreformsis_aca_ptc_eligibleand 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: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
aca_ptc_slcspaca_ptc_slcspaca_ptc_slcsp. See reading 2aca_ptc_slcspaca_ptc_slcsp; eligibility comment updatedaca_ptc_slcspnm_premium_assistance_mih_eligiblenow needs a coverage family memberaca_ptc_slcspnj_njhps_member_eligiblenow needs a tax family member (it does not readis_aca_ptc_eligible, to keep the 400-600% band); cap usesaca_ptc_slcsp. #9515 also edits these two files (citations only); land it firstslcsp, since their premium is in the household's net premium. See reading 1Not changed: Colorado OmniSalud (undocumented enrollees; reads neither the credit nor its eligibility). The Basic Health Program payment proxy reads
aca_magi_fractionand so now uses the tax family's poverty line, as its documentation says it mirrorsaca_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)
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.pychecks 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: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.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_sizeandaca_fpg=tax_unit_fpgfor 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.yamltests it).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) underheavy_run.sh, then the property, swap-invariance and code-health tests. Results replace this line.Review
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)
tax_unit_fpg(period.last_year); this PR keeps that read so it changes nothing else). Offered as a separate task.searchsorted(side="right"). Offered as a separate task.medicaid_income_levelwhere 42 CFR 600.305 uses household income for "the applicable family size".aca_magi(throughmedicaid_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