PolicyEngine / PolicyEngine/policyengine-us
Childcare subsidy programs should use *_before_lsr income variables to avoid LSR circular dependency
- Dominant language
- Python
- Stars
- 162
- Forks
- 212
- Avg merge
- 3d 3h
- Merged PRs (30d)
- 96
Description
## Summary
Childcare subsidy programs flow into `household_net_income` via `household_state_benefits`. When Labor Supply Response (LSR) is enabled in microsimulation, programs that use LSR-affected income variables (like `employment_income`) can create circular dependencies or incorrect results.
This blocks SNAP from using `childcare_expenses` (the policy-correct net amount after subsidies) instead of `pre_subsidy_childcare_expenses`.
## The Cycle
```
employment_income (includes LSR behavioral response)
│
▼
Childcare subsidy eligibility/calculation
│
▼
Subsidy amount → household_state_benefits → household_net_income
│
▼
relative_income_change (compares baseline vs reform)
│
▼
income_elasticity_lsr → employment_income_behavioral_response
│
▼
employment_income ← CYCLE
```
## Current State Audit
| Program | Income Variable Used | Status |
|---------|---------------------|--------|
| MA CCFA | `employment_income_before_lsr`, `self_employment_income_before_lsr` | ✅ Correct |
| CA CalWORKs Child Care | `earned_income` | ❌ Needs fix |
| CO CCAP | `snap_earned_income` (uses `employment_income`) | ❌ Needs fix |
| NE Child Care Subsidy | `spm_unit_net_income` | ❌ Needs fix |
| NC SCCA | `employment_income`, `self_employment_income` | ❌ Needs fix |
| DC CCSP | `employment_income`, `self_employment_income` | ❌ Needs fix |
| IL CCAP | `employment_income`, `self_employment_income` | ❌ Needs fix |
| TX CCS | `employment_income`, `self_employment_income` | ❌ Needs fix |
## Proposed Fix
### 1. Update parameter files to use `*_before_lsr` versions
For NC, DC, IL, TX - update their income source parameter files:
```yaml
# Change FROM:
- employment_income
- self_employment_income
# Change TO:
- employment_income_before_lsr
- self_employment_income_before_lsr
```
### 2. Create `earned_income_before_lsr` variable
For CA CalWORKs which uses `earned_income`:
```python
class earned_income_before_lsr(Variable):
value_type = float
entity = Person
label = "Earned income (before labor supply response)"
unit = USD
definition_period = YEAR
adds = ["employment_income_before_lsr", "self_employment_income_before_lsr"]
```
### 3. Fix CO CCAP
Either create `snap_earned_income_before_lsr` or change the parameter to use base income sources.
### 4. Fix NE Child Care Subsidy
Replace `spm_unit_net_income` with appropriate income components that don't include benefits.
### 5. Add NC to `childcare_expenses.py`
NC SCCA is in `household_state_benefits` but missing from the childcare subsidy list:
```python
STATES_WITH_CHILD_CARE_SUBSIDIES = ["CA", "CO", "NE", "MA"] # Add "NC"
```
### 6. Update SNAP to use `childcare_expenses`
Once childcare subsidies are fixed, SNAP can use the policy-correct net childcare expenses.
## Broader Context
This same pattern applies to **all benefit programs** in `household_net_income`. Any benefit that:
1. Is included in `household_benefits` or `household_state_benefits`
2. Uses LSR-affected income variables (`employment_income`, `self_employment_income`, `earned_income`, `spm_unit_net_income`)
...should be updated to use `*_before_lsr` versions to ensure correct microsimulation results when LSR is enabled.
## Files Affected
- `policyengine_us/parameters/gov/states/nc/ncdhhs/scca/income/sources.yaml`
- `policyengine_us/parameters/gov/states/dc/dhs/ccsp/income/countable_income/sources.yaml`
- `policyengine_us/parameters/gov/states/il/dhs/ccap/income/countable_income/sources.yaml`
- `policyengine_us/parameters/gov/states/tx/twc/ccs/income/sources.yaml`
- `policyengine_us/variables/gov/states/ca/cdss/tanf/child_care/eligibility/ca_calworks_child_care_meets_work_requirement.py`
- `policyengine_us/variables/gov/states/co/ccap/co_ccap_countable_income.py`
- `policyengine_us/variables/gov/states/ne/dhhs/child_care_subsidy/ne_child_care_subsidy.py`
- `policyengine_us/variables/household/expense/childcare/childcare_expenses.py`
- `policyengine_us/variables/gov/usda/snap/income/deductions/snap_dependent_care_deduction.py`
Contributor guide
Assessment
This issue has not been assessed yet.