# MacroVision: disjoint-window SHED extension (v90)

## Finding and decision

The extended primary sample contains **2,562 unique respondents**, each contributing one adjacent-year window, including **168 reporting own job loss**. The adjusted interaction is **+7.71 percentage points**, with a model-HC3 normal 95% interval **[-1.67, +17.10] pp**. Its half-width is **9.39 pp**, above the fixed 5 pp target.

The point estimate is in the hypothesized positive direction, but the interval includes zero. The prespecified latest-window assignment sensitivity gives **+1.79 pp**, interval **[-9.64, +13.21] pp**. Including valid imputed core responses under earliest assignment is also reported. **None of the three intervals excludes zero or reaches the precision target.** The magnitude changes with window assignment, although a formal difference between these overlapping analyses has not been tested.

The result does not establish causal protection by liquidity or validate a calibration parameter. This extension reuses earlier SHED respondents and measurements and is not independent confirmation. SIPP and SHED observations and coefficients remain separate. No model calibration changes are made.

## Harmonization and fixed checkpoints

The inspected 2022 official CSV lacks FD3 and FD3_iflag, so it cannot provide a comparable food baseline. The extension therefore uses **2023→2024 and 2024→2025 only**. Selected 2023 codebook response meanings and CSV labels match the frozen v89 decoder. No older food outcome or missing baseline is fabricated.

- [Specification, source and code checkpoint](https://github.com/idop1/macrovision/commit/a9623cd7ca1d720000a38a915a2bb3a5d3d60281): allocation, model, weighting, sensitivity analyses and availability gates fixed before extension sample counts or contrasts.
- [Membership and overlap checkpoint](https://github.com/idop1/macrovision/commit/0cad64baac18f2774b314d2c90b12ef7b93c8f19): counts and weight support recorded before estimation.

Questionnaire definitions, public marginal tabulations, v89 results and prior SIPP results were already known. This is a repository analysis sequence, not external preregistration or a fresh holdout. The audit checks outcome-code validity and reporting status but does not emit food rates or outcome contrasts.

## One window per respondent

All exact adjacent-year shedid links with positive finite **endpoint panel_weight** are constructed first. The primary rule reserves the earliest available window for each respondent **before** age, work, prior job loss, resource/food validity, covariate and reporting restrictions. If that reserved window later fails, the person is excluded; no later replacement is selected. The latest-window sensitivity reverses only the priority. Both analyses retain at most one window per respondent.

| Raw linked-pair audit | Pairs/respondents |
|---|---:|
| 2023→2024: linked pairs | 4,018 |
| Same window with positive endpoint pair weight | 4,015 |
| 2024→2025: linked pairs | 4,420 |
| Same window with positive endpoint pair weight | 4,419 |
| Respondents in both positive-weight windows | **2,002** |
| Unique positive-weight respondents before analytic restrictions | **6,432** |

The two window samples contain 8,434 positive-weight pairs but only 6,432 distinct respondents. Naively stacking them would double-count 2,002 people. Allocation removes those repeated windows before any analytic-domain selection. These are linkage and eligibility counts, not a survey response or attrition rate.

| Analytic assignment | N | Own job loss | Baseline 2023 N / loss | Baseline 2024 N / loss | Duplicate people |
|---|---:|---:|---:|---:|---:|
| Primary: earliest / reported core | 2,562 | 168 | 1,629 / 96 | 933 / 72 | 0 |
| Sensitivity: earliest / all valid edited | 2,601 | 169 | 1,656 / 97 | 945 / 72 | 0 |
| Sensitivity: latest / reported core | 2,553 | 177 | 746 / 45 | 1,807 / 132 | 0 |

The primary extension reuses **1,641 respondents from the v89 primary analysis** and includes **921 not in that prior analytic sample**. Respondents reused can contribute a different window. The previous 1,807-person sample is not wholly nested in the primary extension: assignment occurs before eligibility, so some previously analyzed people are no longer eligible in their reserved earlier window. The larger N is not a count of wholly new independent observations.

## Domain, measures and model

The v89 baseline domain remains age 25–60, paid/profit work and no own job loss in the preceding year. Exposure is own subsequent-wave layoff/job loss; controls have neither own job loss nor voluntary quit. Temporary layoffs are included; self-employment can be included by the work question. Other household members’ job losses are not fully observed.

Low buffer remains no designated emergency fund sufficient for three months of expenses (baseline EF1=0). The outcome remains the change in past-month food insufficiency, I(FD3≥3), between waves. Required core-item reporting flags follow v89, including voluntary-quit reporting for controls only. Profile covariates are not certified unimputed. This is not bank deposits below one month of income, annual six-item food insecurity, actual consumption spending, net wealth or debt service.

The model uses the v89 17 terms plus three period terms, for **20 parameters**:

`change_food_insufficiency ~ intercept + job_loss + low_buffer + job_loss:low_buffer + baseline_food_insufficiency + baseline_age + baseline_household_size + baseline_female + baseline_income_dummies + baseline_education_dummies + period + period:job_loss + period:low_buffer`

Age is centered/scaled as in v89. All profile adjustments are baseline values. A common job-loss-by-low-buffer coefficient is estimated while period intercepts and main job-loss/resource slopes may differ. Other adjustment slopes are shared. This is a prespecified common-interaction projection; homogeneous moderation across periods has not been established. No post-event income, resources, employment or household-size adjustment is introduced.

## Weighting and inference

For each analysis, use the correct endpoint pair weight, then normalize its sum within **each period to 0.5** after domain selection. This gives equal-period contributions to the weighted regression loss. It is **not** an equal arithmetic mean of separately fitted interaction coefficients, a nationally calibrated combined longitudinal weight or a national household-prevalence estimator. Original pair weights do not correct the extra allocation and complete-response selection.

HC3 variance uses one respondent-pair row per person under an independent-respondent working model. It is not full complex-survey design variance and does not establish absence of cross-period household/PSU dependence. Normal intervals are model-based approximations. Actual coefficients and HC3 standard errors were independently checked with statsmodels for all three analyses.

Availability requires both periods, at least 30 observations and Kish N≥20 in each pooled exposure/resource cell, at least five observations and Kish N≥5 in each period-specific cell, full rank and finite HC3 variance. These computational/sparsity gates do not demonstrate adequate power or control of confounding. No threshold is reduced after results are observed.

## All prespecified estimates

Positive interaction means a larger job-loss-associated change in food insufficiency among low-buffer respondents. Units are percentage points.

| Analysis | Interaction (pp) | Model-HC3 normal 95% interval (pp) | Half-width (pp) | 5 pp target |
|---|---:|---|---:|---|
| Primary: earliest / reported core | +7.71 | [-1.67, +17.10] | 9.39 | Not met |
| Sensitivity: earliest / all valid edited | +7.84 | [-1.50, +17.17] | 9.34 | Not met |
| Sensitivity: latest / reported core | +1.79 | [-9.64, +13.21] | 11.43 | Not met |

The earlier v89 single-window estimate was +3.83 pp with model interval [-6.87, +14.53] pp. It is not an independent benchmark for a significance test against this extension: respondents and measurements overlap, allocation changes and the current model adds period-specific terms. A narrower displayed interval in the primary extension is not proof of a controlled gain in identification or comparability. The favorable primary point estimate is not promoted over the much smaller latest-allocation estimate.

## Implication and next research decision

The expanded sample has not reached the prespecified precision target. Common positive point estimates across these related analyses are insufficient to validate the liquidity-protection claim; all intervals allow zero. The different assignment magnitudes are a reason to retain selection uncertainty, not evidence of a statistically established allocation effect.

Earliest allocation depends on prior participation; latest allocation can depend on future recontact. Annual pair weights cannot automatically remove either selection process. Exact job-loss dates are unavailable, and retrospective event windows can overlap baseline fieldwork near their boundary. Food reports may refer to changing households. Unmeasured differences and observational exposure remain. No missing-at-random, parallel-trends or causal identification claim is made.

With the comparable public food baseline beginning in the inspected 2023 file, this expansion exhausts the two currently harmonized adjacent-year windows in this audit. A further independent confirmation requires genuinely new information. The priority is a direct-consumption/detailed-event-timing data design or a prospectively specified new wave, with a power and variance plan fixed in advance. Further adjusting this model to obtain a positive or significant result would not supply that evidence. Calibration remains closed.

## Reproduction and provenance

```bash
python scripts/shed_expansion_v90.py --stage audit --data-dir /outside/shed --output /outside/audit.json
python scripts/shed_expansion_v90.py --stage estimate --data-dir /outside/shed --audit /outside/audit.json --output /outside/result.json
python -m unittest discover -s calibration -p "test_shed_expansion_v90.py" -v
```

The source metadata records hashes/URLs for four official archives and four codebooks, with 2022 marked screen-only. Analysis uses 2023–2025 archives and the unchanged v89 decoder/model-variance helper, whose hash is recorded. Estimation recomputes the full audit and requires exact agreement in code, spec, source and membership provenance. No participant IDs, responses or row-level extracts are published.

Six synthetic tests verify value-independent window assignment, the fixed latest alternative, duplicate-window rejection, missing-period rejection, within-period weight-scale invariance and recovery of a known common interaction despite different period main slopes. Actual data checks confirm unique respondents and weight sums of 0.5 per period and reproduce all three fits with an independent statsmodels implementation.

- [Fixed specification](data/metadata/shed_expansion_spec_v90.json)
- [Source and harmonization metadata](data/metadata/shed_expansion_source_v90.json)
- [Pre-estimation membership/overlap audit](data/metadata/shed_expansion_audit_v90.json)
- [Aggregate results](data/processed/shed_expansion_v90.json)
- [Preceding external-source check](SHED_EXTERNAL_CHECK_V89.md)

Board of Governors of the Federal Reserve System, Survey of Household Economics and Decisionmaking [dataset], https://doi.org/10.17016/datasets.002.

## Official references

- [Current public SHED files](https://www.federalreserve.gov/consumerscommunities/shed_data.htm)
- [2023 codebook](https://www.federalreserve.gov/consumerscommunities/files/SHED_2023codebook.pdf)
- [2024 codebook](https://www.federalreserve.gov/consumerscommunities/files/SHED_2024codebook.pdf)
- [2025 codebook](https://www.federalreserve.gov/consumerscommunities/files/SHED_2025codebook.pdf)
- [FAQs: persistent IDs, pair weights and imputation](https://www.federalreserve.gov/consumerscommunities/shed-faqs.htm)
