From c35b6bcb8cdc7dbb92a907bf6c084d83aa294634 Mon Sep 17 00:00:00 2001 From: "baogorek@gmail.com" Date: Thu, 5 Feb 2026 17:22:19 -0500 Subject: [PATCH 1/6] Move all stochastic randomness to data package for deterministic country package Remove all random() calls and seed variables from the country package. Takeup variables (ACA, SNAP, Medicaid) are now formula-less with default True. WIC uses draw variables instead of random(). SSI resource test uses only policy logic. Add state-specific Medicaid rates, Section 1931 deprivation rules, Head Start/Early Head Start takeup variables. Supersedes #6635, #7317. Fixes #7316. Co-Authored-By: Claude Opus 4.6 --- changelog_entry.yaml | 17 +++ .../parent/requires_deprivation.yaml | 122 ++++++++++++++++++ .../gov/hhs/medicaid/takeup_rate.yaml | 110 +++++++++++++++- .../gov/aca/ptc/takes_up_aca_if_eligible.yaml | 13 -- .../takes_up_medicaid_if_eligible.yaml | 13 -- .../usda/snap/takes_up_snap_if_eligible.yaml | 13 -- .../usda/wic/is_wic_at_nutritional_risk.yaml | 13 +- .../policy/baseline/gov/usda/wic/wic.yaml | 9 +- .../variables/gov/aca/aca_take_up_seed.py | 8 -- .../gov/aca/takes_up_aca_if_eligible.py | 8 +- .../gov/hhs/head_start/early_head_start.py | 3 +- .../gov/hhs/head_start/head_start.py | 3 +- .../takes_up_early_head_start_if_eligible.py | 9 ++ .../takes_up_head_start_if_eligible.py | 9 ++ .../parent/is_parent_for_medicaid_nfc.py | 13 +- .../parent/is_single_parent_household.py | 23 ++++ .../gov/hhs/medicaid/medicaid_take_up_seed.py | 8 -- .../medicaid/takes_up_medicaid_if_eligible.py | 8 +- .../resources/meets_ssi_resource_test.py | 5 - .../gov/usda/snap/snap_take_up_seed.py | 8 -- .../usda/snap/takes_up_snap_if_eligible.py | 8 +- .../usda/wic/is_wic_at_nutritional_risk.py | 17 +-- .../gov/usda/wic/wic_nutritional_risk_draw.py | 9 ++ .../variables/gov/usda/wic/wic_takeup_draw.py | 9 ++ .../variables/gov/usda/wic/would_claim_wic.py | 12 +- 25 files changed, 349 insertions(+), 121 deletions(-) create mode 100644 policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/parent/requires_deprivation.yaml delete mode 100644 policyengine_us/tests/policy/baseline/gov/aca/ptc/takes_up_aca_if_eligible.yaml delete mode 100644 policyengine_us/tests/policy/baseline/gov/hhs/medicaid/takes_up_medicaid_if_eligible.yaml delete mode 100644 policyengine_us/tests/policy/baseline/gov/usda/snap/takes_up_snap_if_eligible.yaml delete mode 100644 policyengine_us/variables/gov/aca/aca_take_up_seed.py create mode 100644 policyengine_us/variables/gov/hhs/head_start/takes_up_early_head_start_if_eligible.py create mode 100644 policyengine_us/variables/gov/hhs/head_start/takes_up_head_start_if_eligible.py create mode 100644 policyengine_us/variables/gov/hhs/medicaid/eligibility/categories/parent/is_single_parent_household.py delete mode 100644 policyengine_us/variables/gov/hhs/medicaid/medicaid_take_up_seed.py delete mode 100644 policyengine_us/variables/gov/usda/snap/snap_take_up_seed.py create mode 100644 policyengine_us/variables/gov/usda/wic/wic_nutritional_risk_draw.py create mode 100644 policyengine_us/variables/gov/usda/wic/wic_takeup_draw.py diff --git a/changelog_entry.yaml b/changelog_entry.yaml index e69de29bb2d..cd2c6a9321d 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -0,0 +1,17 @@ +- bump: minor + changes: + added: + - State-specific Medicaid takeup rates (53%-99% range, calibrated vs uniform 93%) + - Section 1931 deprivation requirement parameter for non-expansion states + - is_single_parent_household variable for Medicaid deprivation rules + - Head Start and Early Head Start takeup variables + - WIC takeup and nutritional risk draw variables (for deterministic microsim) + - SSI resource test now uses actual policy logic in individual sim + changed: + - Moved all stochastic randomness to data package for deterministic country package + - is_parent_for_medicaid_nfc now checks Section 1931 deprivation requirements + - Head Start and Early Head Start benefits now multiply by takeup + - WIC would_claim_wic and is_wic_at_nutritional_risk use draw variables instead of random() + removed: + - aca_take_up_seed, snap_take_up_seed, medicaid_take_up_seed variables + - random() calls from all variable formulas diff --git a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/parent/requires_deprivation.yaml b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/parent/requires_deprivation.yaml new file mode 100644 index 00000000000..003c3f985f6 --- /dev/null +++ b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/parent/requires_deprivation.yaml @@ -0,0 +1,122 @@ +description: > + Whether the state requires a child to be "deprived of parental support" + for parent Medicaid eligibility. This is based on Section 1931 criteria + which applies to non-expansion states using pre-ACA AFDC rules. + In practice, this means two-parent households generally do not qualify + unless one parent is incapacitated or unemployed. +metadata: + label: Medicaid parent eligibility requires deprivation + unit: bool + period: year + breakdown: + - state_code + reference: + - title: Section 1931 Medicaid Eligibility + href: https://www.law.cornell.edu/uscode/text/42/1396u-1 + - title: KFF - Medicaid Eligibility for Parents + href: https://www.kff.org/medicaid/state-indicator/medicaid-income-eligibility-limits-for-parents/ +# Non-expansion states that use Section 1931 deprivation rules +AL: + 2018-01-01: true +FL: + 2018-01-01: true +GA: + 2018-01-01: true +KS: + 2018-01-01: true +MS: + 2018-01-01: true +NC: + 2018-01-01: true + 2023-12-01: false # NC expanded Medicaid +SC: + 2018-01-01: true +SD: + 2018-01-01: true +TN: + 2018-01-01: true +TX: + 2018-01-01: true +WI: + 2018-01-01: true +WY: + 2018-01-01: true +# Expansion states - no deprivation requirement +AK: + 2018-01-01: false +AR: + 2018-01-01: false +AZ: + 2018-01-01: false +CA: + 2018-01-01: false +CO: + 2018-01-01: false +CT: + 2018-01-01: false +DC: + 2018-01-01: false +DE: + 2018-01-01: false +HI: + 2018-01-01: false +IA: + 2018-01-01: false +ID: + 2018-01-01: false +IL: + 2018-01-01: false +IN: + 2018-01-01: false +KY: + 2018-01-01: false +LA: + 2018-01-01: false +MA: + 2018-01-01: false +MD: + 2018-01-01: false +ME: + 2018-01-01: false +MI: + 2018-01-01: false +MN: + 2018-01-01: false +MO: + 2018-01-01: false +MT: + 2018-01-01: false +ND: + 2018-01-01: false +NE: + 2018-01-01: false +NH: + 2018-01-01: false +NJ: + 2018-01-01: false +NM: + 2018-01-01: false +NV: + 2018-01-01: false +NY: + 2018-01-01: false +OH: + 2018-01-01: false +OK: + 2018-01-01: false +OR: + 2018-01-01: false +PA: + 2018-01-01: false +RI: + 2018-01-01: false +UT: + 2018-01-01: false +VA: + 2018-01-01: false +VT: + 2018-01-01: false +WA: + 2018-01-01: false +WV: + 2018-01-01: false diff --git a/policyengine_us/parameters/gov/hhs/medicaid/takeup_rate.yaml b/policyengine_us/parameters/gov/hhs/medicaid/takeup_rate.yaml index 1a3a6db93a2..1c38156ad8d 100644 --- a/policyengine_us/parameters/gov/hhs/medicaid/takeup_rate.yaml +++ b/policyengine_us/parameters/gov/hhs/medicaid/takeup_rate.yaml @@ -1,12 +1,116 @@ description: Percentage of people who do enroll in Medicaid, if eligible. -values: - 2018-01-01: 0.93 metadata: label: Medicaid takeup rate unit: /1 period: year economy: false household: false + breakdown: + - state_code reference: - title: KFF "A Closer Look at the Remaining Uninsured Population Eligible for Medicaid and CHIP" - href: https://www.kff.org/uninsured/issue-brief/a-closer-look-at-the-remaining-uninsured-population-eligible-for-medicaid-and-chip/#:~:text=the%20uninsured%20rate%20dropped%20to,States%20began%20the + href: https://www.kff.org/uninsured/issue-brief/a-closer-look-at-the-remaining-uninsured-population-eligible-for-medicaid-and-chip/ + - title: State-specific rates derived from MACPAC enrollment targets vs modeled eligibility + href: https://www.medicaid.gov/medicaid/program-information/medicaid-and-chip-enrollment-data/report-highlights/index.html +AK: + 2018-01-01: 0.88 +AL: + 2018-01-01: 0.92 +AR: + 2018-01-01: 0.79 +AZ: + 2018-01-01: 0.95 +CA: + 2018-01-01: 0.78 +CO: + 2018-01-01: 0.99 +CT: + 2018-01-01: 0.89 +DC: + 2018-01-01: 0.99 +DE: + 2018-01-01: 0.86 +FL: + 2018-01-01: 0.98 +GA: + 2018-01-01: 0.73 +HI: + 2018-01-01: 0.88 +IA: + 2018-01-01: 0.84 +ID: + 2018-01-01: 0.78 +IL: + 2018-01-01: 0.85 +IN: + 2018-01-01: 0.99 +KS: + 2018-01-01: 0.92 +KY: + 2018-01-01: 0.87 +LA: + 2018-01-01: 0.79 +MA: + 2018-01-01: 0.94 +MD: + 2018-01-01: 0.95 +ME: + 2018-01-01: 0.92 +MI: + 2018-01-01: 0.91 +MN: + 2018-01-01: 0.89 +MO: + 2018-01-01: 0.89 +MS: + 2018-01-01: 0.75 +MT: + 2018-01-01: 0.83 +NC: + 2018-01-01: 0.94 +ND: + 2018-01-01: 0.91 +NE: + 2018-01-01: 0.79 +NH: + 2018-01-01: 0.84 +NJ: + 2018-01-01: 0.74 +NM: + 2018-01-01: 0.84 +NV: + 2018-01-01: 0.93 +NY: + 2018-01-01: 0.86 +OH: + 2018-01-01: 0.82 +OK: + 2018-01-01: 0.77 +OR: + 2018-01-01: 0.92 +PA: + 2018-01-01: 0.64 +RI: + 2018-01-01: 0.94 +SC: + 2018-01-01: 0.93 +SD: + 2018-01-01: 0.88 +TN: + 2018-01-01: 0.92 +TX: + 2018-01-01: 0.76 +UT: + 2018-01-01: 0.53 +VA: + 2018-01-01: 0.82 +VT: + 2018-01-01: 0.93 +WA: + 2018-01-01: 0.98 +WI: + 2018-01-01: 0.91 +WV: + 2018-01-01: 0.83 +WY: + 2018-01-01: 0.70 diff --git a/policyengine_us/tests/policy/baseline/gov/aca/ptc/takes_up_aca_if_eligible.yaml b/policyengine_us/tests/policy/baseline/gov/aca/ptc/takes_up_aca_if_eligible.yaml deleted file mode 100644 index 0f401e1b11c..00000000000 --- a/policyengine_us/tests/policy/baseline/gov/aca/ptc/takes_up_aca_if_eligible.yaml +++ /dev/null @@ -1,13 +0,0 @@ -- name: Seed above takeup rate - period: 2025 - input: - aca_take_up_seed: 0.7 - output: - takes_up_aca_if_eligible: false - -- name: Seed below takeup rate - period: 2025 - input: - aca_take_up_seed: 0.6 - output: - takes_up_aca_if_eligible: true diff --git a/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/takes_up_medicaid_if_eligible.yaml b/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/takes_up_medicaid_if_eligible.yaml deleted file mode 100644 index 0ec73681c48..00000000000 --- a/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/takes_up_medicaid_if_eligible.yaml +++ /dev/null @@ -1,13 +0,0 @@ -- name: Seed above takeup rate - period: 2025 - input: - medicaid_take_up_seed: 1 - output: - takes_up_medicaid_if_eligible: false - -- name: Seed below takeup rate - period: 2025 - input: - medicaid_take_up_seed: 0.9 - output: - takes_up_medicaid_if_eligible: true diff --git a/policyengine_us/tests/policy/baseline/gov/usda/snap/takes_up_snap_if_eligible.yaml b/policyengine_us/tests/policy/baseline/gov/usda/snap/takes_up_snap_if_eligible.yaml deleted file mode 100644 index b8bdfdc7fed..00000000000 --- a/policyengine_us/tests/policy/baseline/gov/usda/snap/takes_up_snap_if_eligible.yaml +++ /dev/null @@ -1,13 +0,0 @@ -- name: Seed above takeup rate - period: 2022 - input: - snap_take_up_seed: 0.9 - output: - takes_up_snap_if_eligible: false - -- name: Seed below takeup rate - period: 2022 - input: - snap_take_up_seed: 0.8 - output: - takes_up_snap_if_eligible: true diff --git a/policyengine_us/tests/policy/baseline/gov/usda/wic/is_wic_at_nutritional_risk.yaml b/policyengine_us/tests/policy/baseline/gov/usda/wic/is_wic_at_nutritional_risk.yaml index 9e66a0db60e..20bccc66c2a 100644 --- a/policyengine_us/tests/policy/baseline/gov/usda/wic/is_wic_at_nutritional_risk.yaml +++ b/policyengine_us/tests/policy/baseline/gov/usda/wic/is_wic_at_nutritional_risk.yaml @@ -1,29 +1,28 @@ # Nutritional risk is a health assessment per 42 U.S.C. § 1786(b)(8). -# In individual simulation, all persons are assumed at nutritional risk. +# In individual simulation, draw defaults to 0, so all persons in a +# WIC-eligible category are assessed at nutritional risk (0 < rate). # In microsimulation, risk is assigned probabilistically by category. -- name: Case 1, infant assumed at nutritional risk in individual simulation. +- name: Case 1, infant at nutritional risk (draw=0, INFANT rate=0.95). period: 2024-01 input: age: 0 output: is_wic_at_nutritional_risk: true -- name: Case 2, child assumed at nutritional risk in individual simulation. +- name: Case 2, child at nutritional risk (draw=0, CHILD rate=0.752). period: 2024-01 input: age: 3 output: is_wic_at_nutritional_risk: true -- name: Case 3, adult assumed at nutritional risk in individual simulation. +- name: Case 3, non-WIC adult not at nutritional risk (NONE rate=0). period: 2024-01 input: age: 35 output: - # Even adults are assumed at nutritional risk in individual simulation. - # Demographic eligibility is checked separately in is_wic_eligible. - is_wic_at_nutritional_risk: true + is_wic_at_nutritional_risk: false - name: Case 4, person receiving WIC is at nutritional risk. period: 2024-01 diff --git a/policyengine_us/tests/policy/baseline/gov/usda/wic/wic.yaml b/policyengine_us/tests/policy/baseline/gov/usda/wic/wic.yaml index 9ff3c15e4ad..9cdb62e13b4 100644 --- a/policyengine_us/tests/policy/baseline/gov/usda/wic/wic.yaml +++ b/policyengine_us/tests/policy/baseline/gov/usda/wic/wic.yaml @@ -3,6 +3,7 @@ input: wic_category_str: PREGNANT is_wic_eligible: true + would_claim_wic: true output: wic: 37.33 @@ -12,15 +13,16 @@ wic_category_str: INFANT is_wic_eligible: false output: - wic: 0 + wic: 0 - name: Households that are in postpartum category are eligible. period: 2018-01 input: wic_category_str: POSTPARTUM is_wic_eligible: true + would_claim_wic: true output: - wic: 30.72 + wic: 30.72 - name: Meets eligible test but not one of the WIC demographic categories. period: 2022-01 @@ -28,13 +30,14 @@ wic_category_str: NONE is_wic_eligible: true output: - wic: 0 + wic: 0 - name: Eligible breastfeeding individuals. Verifies uprating. period: 2022-01 input: wic_category_str: BREASTFEEDING is_wic_eligible: true + would_claim_wic: true output: # Multiply by ratio of 2022-01 to 2018-01 CPI-U. wic: 37.76 * 281.148 / 247.867 diff --git a/policyengine_us/variables/gov/aca/aca_take_up_seed.py b/policyengine_us/variables/gov/aca/aca_take_up_seed.py deleted file mode 100644 index 911ab0217c2..00000000000 --- a/policyengine_us/variables/gov/aca/aca_take_up_seed.py +++ /dev/null @@ -1,8 +0,0 @@ -from policyengine_us.model_api import * - - -class aca_take_up_seed(Variable): - value_type = float - entity = TaxUnit - label = "Randomly assigned seed for ACA take-up" - definition_period = YEAR diff --git a/policyengine_us/variables/gov/aca/takes_up_aca_if_eligible.py b/policyengine_us/variables/gov/aca/takes_up_aca_if_eligible.py index b354bc2a5fd..47ab37afd65 100644 --- a/policyengine_us/variables/gov/aca/takes_up_aca_if_eligible.py +++ b/policyengine_us/variables/gov/aca/takes_up_aca_if_eligible.py @@ -4,10 +4,6 @@ class takes_up_aca_if_eligible(Variable): value_type = bool entity = TaxUnit - label = "Whether a random eligible SPM unit does not claim ACA Premium Tax Credit" + label = "Whether an eligible tax unit takes up ACA" definition_period = YEAR - - def formula(tax_unit, period, parameters): - seed = tax_unit("aca_take_up_seed", period) - takeup_rate = parameters(period).gov.aca.takeup_rate - return seed < takeup_rate + default_value = True diff --git a/policyengine_us/variables/gov/hhs/head_start/early_head_start.py b/policyengine_us/variables/gov/hhs/head_start/early_head_start.py index 6d6fdcb3244..8a010bcd0b7 100644 --- a/policyengine_us/variables/gov/hhs/head_start/early_head_start.py +++ b/policyengine_us/variables/gov/hhs/head_start/early_head_start.py @@ -18,4 +18,5 @@ def formula(person, period, parameters): mask = enrollment > 0 result = np.zeros_like(p.spending[state]) result[mask] = spending[mask] / enrollment[mask] - return result + takes_up = person("takes_up_early_head_start_if_eligible", period) + return result * takes_up diff --git a/policyengine_us/variables/gov/hhs/head_start/head_start.py b/policyengine_us/variables/gov/hhs/head_start/head_start.py index 0269d782caa..9fbcb9705b9 100644 --- a/policyengine_us/variables/gov/hhs/head_start/head_start.py +++ b/policyengine_us/variables/gov/hhs/head_start/head_start.py @@ -18,4 +18,5 @@ def formula(person, period, parameters): mask = enrollment > 0 result = np.zeros_like(p.spending[state]) result[mask] = spending[mask] / enrollment[mask] - return result + takes_up = person("takes_up_head_start_if_eligible", period) + return result * takes_up diff --git a/policyengine_us/variables/gov/hhs/head_start/takes_up_early_head_start_if_eligible.py b/policyengine_us/variables/gov/hhs/head_start/takes_up_early_head_start_if_eligible.py new file mode 100644 index 00000000000..3e2fe74576f --- /dev/null +++ b/policyengine_us/variables/gov/hhs/head_start/takes_up_early_head_start_if_eligible.py @@ -0,0 +1,9 @@ +from policyengine_us.model_api import * + + +class takes_up_early_head_start_if_eligible(Variable): + value_type = bool + entity = Person + label = "Whether an eligible person takes up Early Head Start" + definition_period = YEAR + default_value = True diff --git a/policyengine_us/variables/gov/hhs/head_start/takes_up_head_start_if_eligible.py b/policyengine_us/variables/gov/hhs/head_start/takes_up_head_start_if_eligible.py new file mode 100644 index 00000000000..2986c937590 --- /dev/null +++ b/policyengine_us/variables/gov/hhs/head_start/takes_up_head_start_if_eligible.py @@ -0,0 +1,9 @@ +from policyengine_us.model_api import * + + +class takes_up_head_start_if_eligible(Variable): + value_type = bool + entity = Person + label = "Whether an eligible person takes up Head Start" + definition_period = YEAR + default_value = True diff --git a/policyengine_us/variables/gov/hhs/medicaid/eligibility/categories/parent/is_parent_for_medicaid_nfc.py b/policyengine_us/variables/gov/hhs/medicaid/eligibility/categories/parent/is_parent_for_medicaid_nfc.py index 31348017c29..78d931456d8 100644 --- a/policyengine_us/variables/gov/hhs/medicaid/eligibility/categories/parent/is_parent_for_medicaid_nfc.py +++ b/policyengine_us/variables/gov/hhs/medicaid/eligibility/categories/parent/is_parent_for_medicaid_nfc.py @@ -12,4 +12,15 @@ def formula(person, period, parameters): has_dependent_in_tax_unit = ( person.tax_unit("tax_unit_count_dependents", period) > 0 ) - return ~is_dependent & has_dependent_in_tax_unit + + meets_basic_criteria = ~is_dependent & has_dependent_in_tax_unit + + state = person.household("state_code_str", period) + p = parameters(period).gov.hhs.medicaid.eligibility.categories.parent + requires_deprivation = p.requires_deprivation[state] + + is_single_parent = person("is_single_parent_household", period) + requires_deprivation_bool = requires_deprivation.astype(bool) + meets_deprivation = ~requires_deprivation_bool | is_single_parent + + return meets_basic_criteria & meets_deprivation diff --git a/policyengine_us/variables/gov/hhs/medicaid/eligibility/categories/parent/is_single_parent_household.py b/policyengine_us/variables/gov/hhs/medicaid/eligibility/categories/parent/is_single_parent_household.py new file mode 100644 index 00000000000..f397b3470dc --- /dev/null +++ b/policyengine_us/variables/gov/hhs/medicaid/eligibility/categories/parent/is_single_parent_household.py @@ -0,0 +1,23 @@ +from policyengine_us.model_api import * + + +class is_single_parent_household(Variable): + value_type = bool + entity = Person + label = ( + "Person is in a single-parent household" " (for Medicaid deprivation)" + ) + definition_period = YEAR + + def formula(person, period, parameters): + filing_status = person.tax_unit("filing_status", period) + is_head = person("is_tax_unit_head", period) + has_dependents = ( + person.tax_unit("tax_unit_count_dependents", period) > 0 + ) + + is_joint = filing_status == filing_status.possible_values.JOINT + is_separate = filing_status == filing_status.possible_values.SEPARATE + is_married_filing = is_joint | is_separate + + return ~is_married_filing & has_dependents & is_head diff --git a/policyengine_us/variables/gov/hhs/medicaid/medicaid_take_up_seed.py b/policyengine_us/variables/gov/hhs/medicaid/medicaid_take_up_seed.py deleted file mode 100644 index e81d43af0d2..00000000000 --- a/policyengine_us/variables/gov/hhs/medicaid/medicaid_take_up_seed.py +++ /dev/null @@ -1,8 +0,0 @@ -from policyengine_us.model_api import * - - -class medicaid_take_up_seed(Variable): - value_type = float - entity = Person - label = "Randomly assigned seed for Medicaid take-up" - definition_period = YEAR diff --git a/policyengine_us/variables/gov/hhs/medicaid/takes_up_medicaid_if_eligible.py b/policyengine_us/variables/gov/hhs/medicaid/takes_up_medicaid_if_eligible.py index c1497f24557..2d9be4112dc 100644 --- a/policyengine_us/variables/gov/hhs/medicaid/takes_up_medicaid_if_eligible.py +++ b/policyengine_us/variables/gov/hhs/medicaid/takes_up_medicaid_if_eligible.py @@ -4,10 +4,6 @@ class takes_up_medicaid_if_eligible(Variable): value_type = bool entity = Person - label = "Whether a random eligible person unit does not enroll in Medicaid" + label = "Whether an eligible person takes up Medicaid" definition_period = YEAR - - def formula(person, period, parameters): - seed = person("medicaid_take_up_seed", period) - takeup_rate = parameters(period).gov.hhs.medicaid.takeup_rate - return seed < takeup_rate + default_value = True diff --git a/policyengine_us/variables/gov/ssa/ssi/eligibility/resources/meets_ssi_resource_test.py b/policyengine_us/variables/gov/ssa/ssi/eligibility/resources/meets_ssi_resource_test.py index 3d25cfee08e..06839203514 100644 --- a/policyengine_us/variables/gov/ssa/ssi/eligibility/resources/meets_ssi_resource_test.py +++ b/policyengine_us/variables/gov/ssa/ssi/eligibility/resources/meets_ssi_resource_test.py @@ -1,5 +1,4 @@ from policyengine_us.model_api import * -from policyengine_core.simulations import Simulation class meets_ssi_resource_test(Variable): @@ -10,11 +9,7 @@ class meets_ssi_resource_test(Variable): definition_period = YEAR def formula(person, period, parameters): - # Assign individuals SSI pass rate probabilistically in microsimulation. - # Apply policy logic in individual simulation. p = parameters(period).gov.ssa.ssi - if person.simulation.dataset is not None: - return random(person) < p.eligibility.resources.pass_rate joint_claim = person("ssi_claim_is_joint", period) personal_resources = person("ssi_countable_resources", period) countable_resources = where( diff --git a/policyengine_us/variables/gov/usda/snap/snap_take_up_seed.py b/policyengine_us/variables/gov/usda/snap/snap_take_up_seed.py deleted file mode 100644 index 32ed1cc93d8..00000000000 --- a/policyengine_us/variables/gov/usda/snap/snap_take_up_seed.py +++ /dev/null @@ -1,8 +0,0 @@ -from policyengine_us.model_api import * - - -class snap_take_up_seed(Variable): - value_type = float - entity = SPMUnit - label = "Randomly assigned seed for SNAP take-up" - definition_period = YEAR diff --git a/policyengine_us/variables/gov/usda/snap/takes_up_snap_if_eligible.py b/policyengine_us/variables/gov/usda/snap/takes_up_snap_if_eligible.py index 96a1179c69c..5f9067dca46 100644 --- a/policyengine_us/variables/gov/usda/snap/takes_up_snap_if_eligible.py +++ b/policyengine_us/variables/gov/usda/snap/takes_up_snap_if_eligible.py @@ -4,10 +4,6 @@ class takes_up_snap_if_eligible(Variable): value_type = bool entity = SPMUnit - label = "Whether a random eligible SPM unit does not claim SNAP" + label = "Whether an eligible SPM unit takes up SNAP" definition_period = YEAR - - def formula(spm_unit, period, parameters): - seed = spm_unit("snap_take_up_seed", period) - takeup_rate = parameters(period).gov.usda.snap.takeup_rate - return seed < takeup_rate + default_value = True diff --git a/policyengine_us/variables/gov/usda/wic/is_wic_at_nutritional_risk.py b/policyengine_us/variables/gov/usda/wic/is_wic_at_nutritional_risk.py index 13c810b0948..cf37612bbf8 100644 --- a/policyengine_us/variables/gov/usda/wic/is_wic_at_nutritional_risk.py +++ b/policyengine_us/variables/gov/usda/wic/is_wic_at_nutritional_risk.py @@ -10,14 +10,9 @@ class is_wic_at_nutritional_risk(Variable): reference = "https://www.law.cornell.edu/uscode/text/42/1786#b_8" def formula(person, period, parameters): - # Assign nutritional risk status probabilistically in microsimulation. - # Nutritional risk is a health assessment independent of income per § 1786(b)(8). - # Assume all meet qualification in individual simulation. - if person.simulation.dataset is not None: - wic_reported = person("receives_wic", period) - category = person("wic_category", period) - risk = parameters(period).gov.usda.wic.nutritional_risk - imputed_risk = random(person) < risk[category] - return wic_reported | imputed_risk - else: - return True + draw = person("wic_nutritional_risk_draw", period) + wic_reported = person("receives_wic", period) + category = person("wic_category", period) + risk = parameters(period).gov.usda.wic.nutritional_risk + imputed_risk = draw < risk[category] + return wic_reported | imputed_risk diff --git a/policyengine_us/variables/gov/usda/wic/wic_nutritional_risk_draw.py b/policyengine_us/variables/gov/usda/wic/wic_nutritional_risk_draw.py new file mode 100644 index 00000000000..33b54aa864a --- /dev/null +++ b/policyengine_us/variables/gov/usda/wic/wic_nutritional_risk_draw.py @@ -0,0 +1,9 @@ +from policyengine_us.model_api import * + + +class wic_nutritional_risk_draw(Variable): + value_type = float + entity = Person + label = "Random draw for WIC nutritional risk assessment" + definition_period = MONTH + default_value = 0 diff --git a/policyengine_us/variables/gov/usda/wic/wic_takeup_draw.py b/policyengine_us/variables/gov/usda/wic/wic_takeup_draw.py new file mode 100644 index 00000000000..f0755aed1d1 --- /dev/null +++ b/policyengine_us/variables/gov/usda/wic/wic_takeup_draw.py @@ -0,0 +1,9 @@ +from policyengine_us.model_api import * + + +class wic_takeup_draw(Variable): + value_type = float + entity = Person + label = "Random draw for WIC takeup decision" + definition_period = MONTH + default_value = 0 diff --git a/policyengine_us/variables/gov/usda/wic/would_claim_wic.py b/policyengine_us/variables/gov/usda/wic/would_claim_wic.py index 5e2f56377bd..0615d41909b 100644 --- a/policyengine_us/variables/gov/usda/wic/would_claim_wic.py +++ b/policyengine_us/variables/gov/usda/wic/would_claim_wic.py @@ -8,11 +8,7 @@ class would_claim_wic(Variable): definition_period = MONTH def formula(person, period, parameters): - # Assign households WIC takeup probabilistically in microsimulation. - # Assume all take up in individual simulation. - if person.simulation.dataset is not None: - category = person("wic_category", period) - takeup = parameters(period).gov.usda.wic.takeup - return random(person) < takeup[category] - else: - return True + draw = person("wic_takeup_draw", period) + category = person("wic_category", period) + takeup = parameters(period).gov.usda.wic.takeup + return draw < takeup[category] From acba1686f4b23c4f893518be1b1cd02b49e733c9 Mon Sep 17 00:00:00 2001 From: "baogorek@gmail.com" Date: Fri, 6 Feb 2026 10:44:16 -0500 Subject: [PATCH 2/6] Add takeup tests for head_start and early_head_start Co-Authored-By: Claude Opus 4.6 --- .../baseline/gov/hhs/head_start/early_head_start.yaml | 10 ++++++++++ .../policy/baseline/gov/hhs/head_start/head_start.yaml | 10 ++++++++++ 2 files changed, 20 insertions(+) diff --git a/policyengine_us/tests/policy/baseline/gov/hhs/head_start/early_head_start.yaml b/policyengine_us/tests/policy/baseline/gov/hhs/head_start/early_head_start.yaml index 854e60d7583..819596f09ed 100644 --- a/policyengine_us/tests/policy/baseline/gov/hhs/head_start/early_head_start.yaml +++ b/policyengine_us/tests/policy/baseline/gov/hhs/head_start/early_head_start.yaml @@ -15,3 +15,13 @@ is_early_head_start_eligible: false output: early_head_start: 0 + +- name: Case 3, eligible but does not take up early head start. + period: 2022 + absolute_error_margin: 0.5 + input: + state_code: CA + is_early_head_start_eligible: true + takes_up_early_head_start_if_eligible: false + output: + early_head_start: 0 diff --git a/policyengine_us/tests/policy/baseline/gov/hhs/head_start/head_start.yaml b/policyengine_us/tests/policy/baseline/gov/hhs/head_start/head_start.yaml index 626a67bab27..5ab1f37d3b3 100644 --- a/policyengine_us/tests/policy/baseline/gov/hhs/head_start/head_start.yaml +++ b/policyengine_us/tests/policy/baseline/gov/hhs/head_start/head_start.yaml @@ -15,3 +15,13 @@ is_head_start_eligible: false output: head_start: 0 + +- name: Case 3, eligible but does not take up head start. + period: 2022 + absolute_error_margin: 0.5 + input: + state_code: CA + is_head_start_eligible: true + takes_up_head_start_if_eligible: false + output: + head_start: 0 From 76e403942de851771febbf03846f6a27fbf7c907 Mon Sep 17 00:00:00 2001 From: "baogorek@gmail.com" Date: Fri, 6 Feb 2026 14:02:46 -0500 Subject: [PATCH 3/6] Convert WIC float draws to bools to match other takeup variables Remove draw variables; would_claim_wic and wic_nutritional_risk_imputed are now simple data-read bools. is_wic_at_nutritional_risk gates imputed risk on having a valid WIC category. Co-Authored-By: Claude Opus 4.6 --- .../variables/gov/usda/wic/is_wic_at_nutritional_risk.py | 7 +++---- .../variables/gov/usda/wic/wic_nutritional_risk_draw.py | 9 --------- .../gov/usda/wic/wic_nutritional_risk_imputed.py | 9 +++++++++ .../variables/gov/usda/wic/wic_takeup_draw.py | 9 --------- .../variables/gov/usda/wic/would_claim_wic.py | 7 +------ 5 files changed, 13 insertions(+), 28 deletions(-) delete mode 100644 policyengine_us/variables/gov/usda/wic/wic_nutritional_risk_draw.py create mode 100644 policyengine_us/variables/gov/usda/wic/wic_nutritional_risk_imputed.py delete mode 100644 policyengine_us/variables/gov/usda/wic/wic_takeup_draw.py diff --git a/policyengine_us/variables/gov/usda/wic/is_wic_at_nutritional_risk.py b/policyengine_us/variables/gov/usda/wic/is_wic_at_nutritional_risk.py index cf37612bbf8..dee56ce2f55 100644 --- a/policyengine_us/variables/gov/usda/wic/is_wic_at_nutritional_risk.py +++ b/policyengine_us/variables/gov/usda/wic/is_wic_at_nutritional_risk.py @@ -10,9 +10,8 @@ class is_wic_at_nutritional_risk(Variable): reference = "https://www.law.cornell.edu/uscode/text/42/1786#b_8" def formula(person, period, parameters): - draw = person("wic_nutritional_risk_draw", period) wic_reported = person("receives_wic", period) + imputed_risk = person("wic_nutritional_risk_imputed", period) category = person("wic_category", period) - risk = parameters(period).gov.usda.wic.nutritional_risk - imputed_risk = draw < risk[category] - return wic_reported | imputed_risk + has_wic_category = category != category.possible_values.NONE + return wic_reported | (imputed_risk & has_wic_category) diff --git a/policyengine_us/variables/gov/usda/wic/wic_nutritional_risk_draw.py b/policyengine_us/variables/gov/usda/wic/wic_nutritional_risk_draw.py deleted file mode 100644 index 33b54aa864a..00000000000 --- a/policyengine_us/variables/gov/usda/wic/wic_nutritional_risk_draw.py +++ /dev/null @@ -1,9 +0,0 @@ -from policyengine_us.model_api import * - - -class wic_nutritional_risk_draw(Variable): - value_type = float - entity = Person - label = "Random draw for WIC nutritional risk assessment" - definition_period = MONTH - default_value = 0 diff --git a/policyengine_us/variables/gov/usda/wic/wic_nutritional_risk_imputed.py b/policyengine_us/variables/gov/usda/wic/wic_nutritional_risk_imputed.py new file mode 100644 index 00000000000..7fe8a09383c --- /dev/null +++ b/policyengine_us/variables/gov/usda/wic/wic_nutritional_risk_imputed.py @@ -0,0 +1,9 @@ +from policyengine_us.model_api import * + + +class wic_nutritional_risk_imputed(Variable): + value_type = bool + entity = Person + label = "Imputed WIC nutritional risk" + definition_period = MONTH + default_value = True diff --git a/policyengine_us/variables/gov/usda/wic/wic_takeup_draw.py b/policyengine_us/variables/gov/usda/wic/wic_takeup_draw.py deleted file mode 100644 index f0755aed1d1..00000000000 --- a/policyengine_us/variables/gov/usda/wic/wic_takeup_draw.py +++ /dev/null @@ -1,9 +0,0 @@ -from policyengine_us.model_api import * - - -class wic_takeup_draw(Variable): - value_type = float - entity = Person - label = "Random draw for WIC takeup decision" - definition_period = MONTH - default_value = 0 diff --git a/policyengine_us/variables/gov/usda/wic/would_claim_wic.py b/policyengine_us/variables/gov/usda/wic/would_claim_wic.py index 0615d41909b..f03780e25e8 100644 --- a/policyengine_us/variables/gov/usda/wic/would_claim_wic.py +++ b/policyengine_us/variables/gov/usda/wic/would_claim_wic.py @@ -6,9 +6,4 @@ class would_claim_wic(Variable): entity = Person label = "Would claim WIC" definition_period = MONTH - - def formula(person, period, parameters): - draw = person("wic_takeup_draw", period) - category = person("wic_category", period) - takeup = parameters(period).gov.usda.wic.takeup - return draw < takeup[category] + default_value = True From 3014e9ca3f701c934feef1869854b0e989ba9056 Mon Sep 17 00:00:00 2001 From: "baogorek@gmail.com" Date: Fri, 6 Feb 2026 16:46:17 -0500 Subject: [PATCH 4/6] Remove wic_nutritional_risk_imputed, make is_wic_at_nutritional_risk data-read Co-Authored-By: Claude Opus 4.6 --- .../gov/usda/wic/is_wic_at_nutritional_risk.yaml | 16 ++++++++-------- .../gov/usda/wic/is_wic_at_nutritional_risk.py | 8 +------- .../gov/usda/wic/wic_nutritional_risk_imputed.py | 9 --------- 3 files changed, 9 insertions(+), 24 deletions(-) delete mode 100644 policyengine_us/variables/gov/usda/wic/wic_nutritional_risk_imputed.py diff --git a/policyengine_us/tests/policy/baseline/gov/usda/wic/is_wic_at_nutritional_risk.yaml b/policyengine_us/tests/policy/baseline/gov/usda/wic/is_wic_at_nutritional_risk.yaml index 20bccc66c2a..fe342301109 100644 --- a/policyengine_us/tests/policy/baseline/gov/usda/wic/is_wic_at_nutritional_risk.yaml +++ b/policyengine_us/tests/policy/baseline/gov/usda/wic/is_wic_at_nutritional_risk.yaml @@ -1,28 +1,28 @@ -# Nutritional risk is a health assessment per 42 U.S.C. § 1786(b)(8). -# In individual simulation, draw defaults to 0, so all persons in a -# WIC-eligible category are assessed at nutritional risk (0 < rate). -# In microsimulation, risk is assigned probabilistically by category. +# Nutritional risk is resolved in the data package for microsimulation. +# In individual simulation, default_value = True so all persons are assumed +# at nutritional risk. NONE-category adults still get True, but is_wic_eligible +# gates on demographic eligibility (category != NONE), so it's benign. -- name: Case 1, infant at nutritional risk (draw=0, INFANT rate=0.95). +- name: Case 1, infant at nutritional risk (default True). period: 2024-01 input: age: 0 output: is_wic_at_nutritional_risk: true -- name: Case 2, child at nutritional risk (draw=0, CHILD rate=0.752). +- name: Case 2, child at nutritional risk (default True). period: 2024-01 input: age: 3 output: is_wic_at_nutritional_risk: true -- name: Case 3, non-WIC adult not at nutritional risk (NONE rate=0). +- name: Case 3, non-WIC adult (default True, benign — gated by is_wic_eligible). period: 2024-01 input: age: 35 output: - is_wic_at_nutritional_risk: false + is_wic_at_nutritional_risk: true - name: Case 4, person receiving WIC is at nutritional risk. period: 2024-01 diff --git a/policyengine_us/variables/gov/usda/wic/is_wic_at_nutritional_risk.py b/policyengine_us/variables/gov/usda/wic/is_wic_at_nutritional_risk.py index dee56ce2f55..475c7be1438 100644 --- a/policyengine_us/variables/gov/usda/wic/is_wic_at_nutritional_risk.py +++ b/policyengine_us/variables/gov/usda/wic/is_wic_at_nutritional_risk.py @@ -8,10 +8,4 @@ class is_wic_at_nutritional_risk(Variable): documentation = "Assessed as being at nutritional risk for the Special Supplemental Nutrition Program for Women, Infants and Children (WIC)" label = "At nutritional risk for WIC" reference = "https://www.law.cornell.edu/uscode/text/42/1786#b_8" - - def formula(person, period, parameters): - wic_reported = person("receives_wic", period) - imputed_risk = person("wic_nutritional_risk_imputed", period) - category = person("wic_category", period) - has_wic_category = category != category.possible_values.NONE - return wic_reported | (imputed_risk & has_wic_category) + default_value = True diff --git a/policyengine_us/variables/gov/usda/wic/wic_nutritional_risk_imputed.py b/policyengine_us/variables/gov/usda/wic/wic_nutritional_risk_imputed.py deleted file mode 100644 index 7fe8a09383c..00000000000 --- a/policyengine_us/variables/gov/usda/wic/wic_nutritional_risk_imputed.py +++ /dev/null @@ -1,9 +0,0 @@ -from policyengine_us.model_api import * - - -class wic_nutritional_risk_imputed(Variable): - value_type = bool - entity = Person - label = "Imputed WIC nutritional risk" - definition_period = MONTH - default_value = True From 4a357d2c80a20274cbd04f3d8ba9a46ed1648b90 Mon Sep 17 00:00:00 2001 From: "baogorek@gmail.com" Date: Fri, 6 Feb 2026 17:09:42 -0500 Subject: [PATCH 5/6] Remove dead WIC parameter files (rates now only in data package) Co-Authored-By: Claude Opus 4.6 --- .../gov/usda/wic/nutritional_risk.yaml | 21 -------- .../parameters/gov/usda/wic/takeup.yaml | 52 ------------------- 2 files changed, 73 deletions(-) delete mode 100644 policyengine_us/parameters/gov/usda/wic/nutritional_risk.yaml delete mode 100644 policyengine_us/parameters/gov/usda/wic/takeup.yaml diff --git a/policyengine_us/parameters/gov/usda/wic/nutritional_risk.yaml b/policyengine_us/parameters/gov/usda/wic/nutritional_risk.yaml deleted file mode 100644 index f22e45e798d..00000000000 --- a/policyengine_us/parameters/gov/usda/wic/nutritional_risk.yaml +++ /dev/null @@ -1,21 +0,0 @@ -description: Percentage of otherwise-eligible children in WIC applicant families who are simulated to be found at nutritional risk. -metadata: - unit: /1 - label: WIC nutritional risk - breakdown: - - wic_category - reference: - - title: "Estimating Eligibility and Participation for the WIC Program: Phase I Report" - href: https://www.ncbi.nlm.nih.gov/books/NBK223565/pdf/Bookshelf_NBK223565.pdf#page=59 -PREGNANT: - 1980-01-01: 0.913 -POSTPARTUM: - 1980-01-01: 0.933 -BREASTFEEDING: - 1980-01-01: 0.889 -INFANT: - 1980-01-01: 0.95 -CHILD: - 1980-01-01: 0.752 -NONE: - 1980-01-01: 0 diff --git a/policyengine_us/parameters/gov/usda/wic/takeup.yaml b/policyengine_us/parameters/gov/usda/wic/takeup.yaml deleted file mode 100644 index 60a0073f553..00000000000 --- a/policyengine_us/parameters/gov/usda/wic/takeup.yaml +++ /dev/null @@ -1,52 +0,0 @@ -description: Percentage of WIC-eligible individuals that participate. -metadata: - unit: /1 - breakdown: - - wic_category - label: WIC takeup rate - economy: false - household: false - reference: - - title: WIC Eligibility and Coverage Rates - 2018 - href: https://fns-prod.azureedge.us/sites/default/files/resource-files/WICEligibles2018-Summary.pdf#page=2 - - title: WIC Eligibility and Coverage Rates - 2019 - href: https://fns-prod.azureedge.us/sites/default/files/resource-files/WICEligibles2019-Summary.pdf#page=2 - - title: WIC Eligibility and Coverage Rates - 2020 - href: https://fns-prod.azureedge.us/sites/default/files/resource-files/2020-wic-eligibility-report-summary.pdf#page=2 - - title: WIC Eligibility and Coverage Rates - 2021 - href: https://fns-prod.azureedge.us/sites/default/files/resource-files/wic-eligibility-report-summary-2021.pdf#page=2 - - title: WIC Eligibility and Coverage Rates - 2022 - href: https://fns-prod.azureedge.us/sites/default/files/resource-files/wic-eer-2022-summary.pdf#page=2 - -PREGNANT: - 2018-01-01: 0.533 - 2019-01-01: 0.523 - 2020-01-01: 0.456 - 2021-01-01: 0.437 - 2022-01-01: 0.456 -POSTPARTUM: - 2018-01-01: 0.844 - 2019-01-01: 0.847 - 2020-01-01: 0.685 - 2021-01-01: 0.672 - 2022-01-01: 0.689 -BREASTFEEDING: - 2018-01-01: 0.687 - 2019-01-01: 0.684 - 2020-01-01: 0.604 - 2021-01-01: 0.608 - 2022-01-01: 0.663 -INFANT: - 2018-01-01: 0.978 - 2019-01-01: 0.984 - 2020-01-01: 0.817 - 2021-01-01: 0.78 - 2022-01-01: 0.784 -CHILD: - 2018-01-01: 0.442 # Mean of ages 1-4 - 2019-01-01: 0.448 - 2020-01-01: 0.406 - 2021-01-01: 0.432 - 2022-01-01: 0.46 -NONE: - 2018-01-01: 0 From a46b5a8c1ad15801b0b955382585ef6077e1a02a Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Fri, 6 Feb 2026 19:20:42 -0500 Subject: [PATCH 6/6] Remove orphaned takeup rate parameters from country package These parameters are now exclusively in policyengine-us-data. No formula in the country package references them anymore since all takeup variables use default_value=True. Co-Authored-By: Claude Opus 4.6 --- changelog_entry.yaml | 5 +- .../parameters/gov/aca/takeup_rate.yaml | 12 -- .../gov/hhs/medicaid/takeup_rate.yaml | 116 ------------------ .../gov/irs/credits/eitc/takeup.yaml | 24 ---- .../dc/tax/income/credits/ptc/takeup.yaml | 13 -- .../parameters/gov/usda/snap/takeup_rate.yaml | 11 -- 6 files changed, 2 insertions(+), 179 deletions(-) delete mode 100644 policyengine_us/parameters/gov/aca/takeup_rate.yaml delete mode 100644 policyengine_us/parameters/gov/hhs/medicaid/takeup_rate.yaml delete mode 100644 policyengine_us/parameters/gov/irs/credits/eitc/takeup.yaml delete mode 100644 policyengine_us/parameters/gov/states/dc/tax/income/credits/ptc/takeup.yaml delete mode 100644 policyengine_us/parameters/gov/usda/snap/takeup_rate.yaml diff --git a/changelog_entry.yaml b/changelog_entry.yaml index cd2c6a9321d..8cf6d763190 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -1,17 +1,16 @@ - bump: minor changes: added: - - State-specific Medicaid takeup rates (53%-99% range, calibrated vs uniform 93%) - Section 1931 deprivation requirement parameter for non-expansion states - is_single_parent_household variable for Medicaid deprivation rules - Head Start and Early Head Start takeup variables - - WIC takeup and nutritional risk draw variables (for deterministic microsim) - SSI resource test now uses actual policy logic in individual sim changed: - Moved all stochastic randomness to data package for deterministic country package - is_parent_for_medicaid_nfc now checks Section 1931 deprivation requirements - Head Start and Early Head Start benefits now multiply by takeup - - WIC would_claim_wic and is_wic_at_nutritional_risk use draw variables instead of random() + - WIC would_claim_wic and is_wic_at_nutritional_risk default to True (resolved in data package) removed: - aca_take_up_seed, snap_take_up_seed, medicaid_take_up_seed variables - random() calls from all variable formulas + - Takeup rate parameters (now in policyengine-us-data) diff --git a/policyengine_us/parameters/gov/aca/takeup_rate.yaml b/policyengine_us/parameters/gov/aca/takeup_rate.yaml deleted file mode 100644 index d3d6fddede1..00000000000 --- a/policyengine_us/parameters/gov/aca/takeup_rate.yaml +++ /dev/null @@ -1,12 +0,0 @@ -description: Percentage of eligible people who do enroll in Affordable Care Act coverage, if eligible. -values: - 2018-01-01: 0.672 -metadata: - label: ACA takeup rate - unit: /1 - period: year - economy: false - household: false - reference: - - title: KFF "A Closer Look at the Remaining Uninsured Population Eligible for Medicaid and CHIP" - href: https://www.kff.org/uninsured/issue-brief/a-closer-look-at-the-remaining-uninsured-population-eligible-for-medicaid-and-chip/#:~:text=the%20uninsured%20rate%20dropped%20to,States%20began%20the diff --git a/policyengine_us/parameters/gov/hhs/medicaid/takeup_rate.yaml b/policyengine_us/parameters/gov/hhs/medicaid/takeup_rate.yaml deleted file mode 100644 index 1c38156ad8d..00000000000 --- a/policyengine_us/parameters/gov/hhs/medicaid/takeup_rate.yaml +++ /dev/null @@ -1,116 +0,0 @@ -description: Percentage of people who do enroll in Medicaid, if eligible. -metadata: - label: Medicaid takeup rate - unit: /1 - period: year - economy: false - household: false - breakdown: - - state_code - reference: - - title: KFF "A Closer Look at the Remaining Uninsured Population Eligible for Medicaid and CHIP" - href: https://www.kff.org/uninsured/issue-brief/a-closer-look-at-the-remaining-uninsured-population-eligible-for-medicaid-and-chip/ - - title: State-specific rates derived from MACPAC enrollment targets vs modeled eligibility - href: https://www.medicaid.gov/medicaid/program-information/medicaid-and-chip-enrollment-data/report-highlights/index.html -AK: - 2018-01-01: 0.88 -AL: - 2018-01-01: 0.92 -AR: - 2018-01-01: 0.79 -AZ: - 2018-01-01: 0.95 -CA: - 2018-01-01: 0.78 -CO: - 2018-01-01: 0.99 -CT: - 2018-01-01: 0.89 -DC: - 2018-01-01: 0.99 -DE: - 2018-01-01: 0.86 -FL: - 2018-01-01: 0.98 -GA: - 2018-01-01: 0.73 -HI: - 2018-01-01: 0.88 -IA: - 2018-01-01: 0.84 -ID: - 2018-01-01: 0.78 -IL: - 2018-01-01: 0.85 -IN: - 2018-01-01: 0.99 -KS: - 2018-01-01: 0.92 -KY: - 2018-01-01: 0.87 -LA: - 2018-01-01: 0.79 -MA: - 2018-01-01: 0.94 -MD: - 2018-01-01: 0.95 -ME: - 2018-01-01: 0.92 -MI: - 2018-01-01: 0.91 -MN: - 2018-01-01: 0.89 -MO: - 2018-01-01: 0.89 -MS: - 2018-01-01: 0.75 -MT: - 2018-01-01: 0.83 -NC: - 2018-01-01: 0.94 -ND: - 2018-01-01: 0.91 -NE: - 2018-01-01: 0.79 -NH: - 2018-01-01: 0.84 -NJ: - 2018-01-01: 0.74 -NM: - 2018-01-01: 0.84 -NV: - 2018-01-01: 0.93 -NY: - 2018-01-01: 0.86 -OH: - 2018-01-01: 0.82 -OK: - 2018-01-01: 0.77 -OR: - 2018-01-01: 0.92 -PA: - 2018-01-01: 0.64 -RI: - 2018-01-01: 0.94 -SC: - 2018-01-01: 0.93 -SD: - 2018-01-01: 0.88 -TN: - 2018-01-01: 0.92 -TX: - 2018-01-01: 0.76 -UT: - 2018-01-01: 0.53 -VA: - 2018-01-01: 0.82 -VT: - 2018-01-01: 0.93 -WA: - 2018-01-01: 0.98 -WI: - 2018-01-01: 0.91 -WV: - 2018-01-01: 0.83 -WY: - 2018-01-01: 0.70 diff --git a/policyengine_us/parameters/gov/irs/credits/eitc/takeup.yaml b/policyengine_us/parameters/gov/irs/credits/eitc/takeup.yaml deleted file mode 100644 index ea667a99bfa..00000000000 --- a/policyengine_us/parameters/gov/irs/credits/eitc/takeup.yaml +++ /dev/null @@ -1,24 +0,0 @@ -description: The share of eligible individuals who claim the EITC. -brackets: - - threshold: - 2000-01-01: 0 - amount: - 2000-01-01: 0.65 - - threshold: - 2000-01-01: 1 - amount: - 2000-01-01: 0.86 - - threshold: - 2000-01-01: 2 - amount: - 2000-01-01: 0.85 -metadata: - label: EITC take-up rate by number of children - amount_unit: /1 - type: single_amount - threshold_unit: child - economy: false - household: false - reference: - - title: National Taxpayer Advocate Special Report to Congress 2020 | IRS - href: https://www.taxpayeradvocate.irs.gov/wp-content/uploads/2020/08/JRC20_Volume3.pdf#page=62 diff --git a/policyengine_us/parameters/gov/states/dc/tax/income/credits/ptc/takeup.yaml b/policyengine_us/parameters/gov/states/dc/tax/income/credits/ptc/takeup.yaml deleted file mode 100644 index e60e300f8c3..00000000000 --- a/policyengine_us/parameters/gov/states/dc/tax/income/credits/ptc/takeup.yaml +++ /dev/null @@ -1,13 +0,0 @@ -description: The share of eligible individuals who claim the DC property tax credit. -metadata: - unit: /1 - label: DC property tax credit takeup rate - period: year - economy: false - household: false - reference: - - title: District of Columbia Tax Expenditure Report, 2024 - href: https://ora-cfo.dc.gov/sites/default/files/dc/sites/ora-cfo/publication/attachments/2024%20Tax%20Expenditure%20Report.pdf#page=234 -values: - # 37,133 (Values derived from the 2024 Tax Expenditure Report) / 131,791,388 (PolicyEngine DC PTC value estimate) - 2021-01-01: 0.32 diff --git a/policyengine_us/parameters/gov/usda/snap/takeup_rate.yaml b/policyengine_us/parameters/gov/usda/snap/takeup_rate.yaml deleted file mode 100644 index aab033862d3..00000000000 --- a/policyengine_us/parameters/gov/usda/snap/takeup_rate.yaml +++ /dev/null @@ -1,11 +0,0 @@ -description: Percentage of eligible SNAP recipients who do not claim SNAP. -values: - 2018-01-01: 0.82 -metadata: - label: SNAP takeup rate - unit: /1 - economy: false - household: false - reference: - - title: USDA - href: https://www.fns.usda.gov/usamap