PolicyEngine / PolicyEngine/policyengine-us
Separate reported health coverage from modeled enrollment in ACA coverage variables
- Dominant language
- Python
- Stars
- 162
- Forks
- 212
- Avg merge
- 3d 3h
- Merged PRs (30d)
- 97
Description
## Type
Mixed rules and data.
## Context
Populace now needs a clean contract between reported coverage inputs, simulated take-up inputs, and modeled eligibility/enrollment outputs. PE-US mostly has those concepts, but at least one current variable crosses the streams:
`qualifying_non_marketplace_health_coverage_type_count_at_interview` is named as an at-interview/reported coverage concept, but its `adds` list mixes reported/current-coverage variables with modeled outputs:
- `has_esi`
- `medicaid_enrolled`
- `has_medicaid_health_coverage_at_interview`
- `is_chip_eligible`
- `medicare_enrolled`
- other reported non-Marketplace coverage flags
That makes diagnostics such as `coverage_report_model_conflict` hard to interpret because they are not purely comparing survey-reported coverage to survey-reported coverage.
Populace issues/PRs already cover ACA take-up and selected-plan input materialization (`PolicyEngine/populace#70`, `#74`, `#75`, and PR `#95`). This issue is the PE-US model contract side.
## Why this matters
Populace can carry observed health coverage while PE-US computes counterfactual eligibility and enrollment. If a variable is called `at_interview` but depends on modeled Medicaid, CHIP, or Medicare outputs, downstream calibration and diagnostics can accidentally compare observed Marketplace coverage to simulated non-Marketplace coverage.
## Suggested direction
- Split reported/current coverage diagnostics from modeled coverage diagnostics.
- Make `coverage_report_model_conflict` use a purely reported non-Marketplace coverage concept, or rename it if modeled outputs are intentional.
- Audit ACA PTC eligibility and diagnostics to make clear where reported coverage is used only for anchoring/calibration versus where modeled eligibility drives counterfactual results.
- Add tests showing a person with reported Marketplace coverage and modeled Medicaid eligibility is classified consistently.
## Acceptance criteria
- Variables with `at_interview` semantics are based only on observed/reported coverage inputs.
- Modeled enrollment/eligibility variables remain available for counterfactual rules.
- ACA coverage conflict diagnostics distinguish reported-report conflicts from reported-vs-modeled conflicts.
- Populace can preserve reported coverage fields without those fields being mistaken for simulated outputs.
Contributor guide
Assessment
This issue has not been assessed yet.