PolicyEngine / PolicyEngine/policyengine-us

Separate reported health coverage from modeled enrollment in ACA coverage variables

Open
#8,670 0 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.