# MacroVision: external-source SHED panel mechanism check (v89)

Follow-up: [the disjoint-window SHED extension (v90)](SHED_DISJOINT_EXTENSION_V90.md) adds the compatible 2023→2024 window, reserves one window per respondent and reports both chronological assignment priorities. It reuses observations and is not an independent confirmation of this earlier result.

## Finding and decision

A separately fielded Federal Reserve SHED panel provides a new, **proxy-based** check of the liquidity-buffer mechanism. The primary reported-core sample contains **1,807 respondents, including 132 reporting their own job loss**. The adjusted interaction is **+3.83 percentage points**, with a model-robust normal 95% interval **[-6.87, +14.53] pp**. Its half-width is **10.70 pp**, exceeding the fixed 5 pp target.

The point estimate is in the hypothesized positive direction: job loss is associated with a larger change in food insufficiency among those without a prior-wave emergency fund. **The interval includes zero and a reversed association. This is not clear confirmation of the mechanism.** Including valid imputed core responses gives a similar estimate but does not resolve uncertainty.

This is an external **data source**, not an exact replication of the SIPP estimand, proof of a causal liquidity effect, or demonstrated improvement to a common precision standard. No individual-level non-overlap with SIPP has been established. Neither records nor coefficients are pooled with SIPP. Model calibration remains unchanged.

## New-source feasibility and why this source was used

The current Federal Reserve release supplies 2024 and 2025 public CSVs, a persistent respondent identifier and a dedicated pair weight. That permits a prior-wave resource measure and a later-wave job-loss report rather than measuring both resources and hardship at one survey date. It does **not** guarantee that resources precede every job-loss event: the retrospective job-loss window can overlap the earlier interview near its boundary.

PSID remains excluded under the previously recorded AI-use restriction. Existing SIPP observations are not relabeled as an independent sample. SHED was selected on documented variables and public access before inspecting its new interaction estimates; its different measures make this a complementary mechanism check, not a replacement for a better-powered direct replication.

## Fixed sequence

- [Model and source checkpoint](https://github.com/idop1/macrovision/commit/2f0082e3d8db5a04e23af8b91f9f4b203c68e105): years, resource/outcome proxies, baseline domain, model, uncertainty method and availability gates fixed before linked-sample and outcome contrasts.
- [CSV decoding checkpoint](https://github.com/idop1/macrovision/commit/ae40b749d64b525d4103d5a7eba0f8c28b9607f5): the official CSV contains value labels; these are mapped to codebook codes, with unknown labels rejected. This corrects ingestion, without changing the sample criteria or model, before new outcome contrasts.
- [Membership and weight audit checkpoint](https://github.com/idop1/macrovision/commit/473728f4c6792fa88180304119e16e785e4e4a6c): sample flow, cell sizes and weights recorded before estimation.

Questionnaires, official marginal tabulations and earlier SIPP results were already known. This repository sequence is not external preregistration or a blinded confirmatory trial. The stage-audit reads outcome codes only for validity/reporting checks; it emits no outcome rate or contrast.

## Sample and measurement

Respondents are linked one-to-one by `shedid`. Only a positive **2025 `panel_weight`** is used; cross-sectional weights are never substituted. The baseline domain is age 25–60, paid/profit work and no own job loss in the preceding year. Paid/profit work can include self-employment.

The resource proxy is **2024 `EF1=0`**, meaning no designated fund sufficient for three months of expenses. The event is **2025 `D44_f=1`**, the respondent’s own reported layoff/job loss over the preceding 12 months, including temporary layoff. Controls require no such job loss and no voluntary quit (`D44_e=0`). Exposed respondents may also have quit a different job. A partner’s or other member’s job loss is not fully observed for the exposure definition; “control” does not certify an unshocked household.

The outcome is the change in **past-month food insufficiency**, `I(FD3_2025>=3) - I(FD3_2024>=3)`, with valid codes 1–4 in both waves. It is not the six-item annual food-security scale. Exact event dates and event duration are not modeled; the one-year retrospective event window may briefly overlap baseline fieldwork. No household-roster stability filter is applied, so food reports can refer to changed households.

The primary domain requires the necessary SHED core-item imputation flags to equal zero. Those core items are baseline work/job loss/emergency fund/food and follow-up job loss/food, plus voluntary-quit reporting for controls. The edited sensitivity accepts valid imputed core responses under the same rules. Core reporting does **not** certify that demographic profile covariates are unimputed or that response selection is ignorable.

| Stage | Respondent pairs/records |
|---|---:|
| 2024 records | 12,295 |
| 2025 records | 12,934 |
| Exact linked pairs | 4,420 |
| Linked pairs with positive 2025 panel weight | 4,419 |
| Baseline age/work/no-prior-job-loss domain | 1,972 |
| Valid core answers | 1,972 |
| Job loss or no observed own exit | 1,841 |
| Valid prespecified baseline covariates | 1,841 |
| Primary: reported required core responses | 1,807 |

One linked pair lacks a positive panel weight and is excluded. The link fraction among annual records is not an attrition/nonresponse rate: recontact invitations and sampling eligibility are not reconstructed here.

| Primary group | No three-month emergency fund | Has three-month emergency fund |
|---|---:|---:|
| No own layoff/job loss or voluntary quit | 630 | 1,045 |
| Own layoff/job loss | 66 | 66 |

The two exposed-cell Kish effective sample sizes are **58.34** and **57.54**. They meet the predeclared raw N≥30/Kish N≥20 gates. These gates only permit the exploratory fit; they do not establish high power or adequate confounding control.

## Model and uncertainty

The model is 2025-pair-weighted least squares with 17 parameters:

`change_food_insufficiency ~ intercept + job_loss + low_buffer + job_loss:low_buffer + baseline_food_insufficiency + (baseline_age-40)/10 + baseline_household_size + baseline_female + baseline_income_category_dummies + baseline_education_category_dummies`

All adjustments come from the 2024 file. Income is represented by six dummies for the seven categories and education by three dummies for four categories; neither is treated as an interval scale. No follow-up resources, income, employment or household-size controls are used. The interaction’s positive direction was specified before fitting. No specification search, model-selection correction, propensity adjustment or causal identification is claimed.

| Prespecified domain | N | Own job loss | Interaction (pp) | Model HC3 normal 95% interval (pp) | Half-width (pp) |
|---|---:|---:|---:|---|---:|
| Primary: reported required core | 1,807 | 132 | +3.83 | [-6.87, +14.53] | 10.70 |
| Sensitivity: all valid edited core | 1,841 | 135 | +3.84 | [-6.47, +14.15] | 10.31 |

The HC3 sandwich treats respondent pairs as independent units in a weighted regression working model. It was checked against an independent statsmodels WLS/HC3 implementation on synthetic and actual analytic data. No replicate-weight, PSU or stratum fields were identified in the inspected CSV headers. **These intervals are model-robust normal approximations, not full complex-survey design confidence intervals.** They cannot be directly ranked against the cross-cohort SE-envelope intervals in v88 as if both used the same estimand and variance method.

## What this says about the thesis

The new point estimate has a different direction from the earlier SIPP estimate, but both uncertainty intervals span zero and the measures, population domain, timing and variance methods differ. This does not establish either a replicated benefit or a statistically demonstrated disagreement between surveys. It leaves the liquidity-protection claim unresolved.

This test addresses respondent-reported resource buffers and food insufficiency around own job loss. It does not test actual consumption spending, net-wealth preservation, debt-service H2, automation-related unemployment or a fiscal mechanism. Resources and exposure are observational; unmeasured differences, job-loss reporting, imputation and panel selection can affect the association. A nominal positive coefficient is not an empirical calibration parameter.

The next priority is a **precision and identification decision**, rather than further tuning of this coefficient: design a larger harmonized panel with one prespecified window per respondent and a defensible variance method, or obtain a direct-consumption sample with demonstrably prior resource measurement and dated job loss. Existing SHED waves cannot simply be appended as independent people because respondents repeat. Any extension requires codebook harmonization, a respondent-overlap audit and a new fixed analysis plan before outcomes are contrasted. The 5 pp target has not yet been achieved here.

## Reproduction and artifacts

Board of Governors of the Federal Reserve System, *Survey of Household Economics and Decisionmaking* [dataset], https://doi.org/10.17016/datasets.002. The downloaded current public ZIPs and both codebooks are SHA256-bound in the source manifest. Microdata stay outside the checkout and deployment; only aggregate results, audit, metadata and analysis code are published.

```bash
python scripts/shed_independent_v89.py --stage audit --data-dir /outside/shed --output /outside/audit.json
# Compare with the committed audit before estimation.
python scripts/shed_independent_v89.py --stage estimate --data-dir /outside/shed --audit /outside/audit.json --output /outside/result.json
python -m unittest discover -s calibration -p 'test_shed_independent_v89.py' -v
```

Estimation recomputes the audit and requires exact equality of membership, spec, source-manifest and analysis-code hashes. Seven synthetic tests cover one-to-one linkage, panel-weight requirements, label decoding, unknown-label failure, rank deficiency, weight-scale invariance and HC3 agreement with statsmodels.

- [Fixed specification](data/metadata/shed_independent_spec_v89.json)
- [Source URLs, file hashes and field crosswalk](data/metadata/shed_source_v89.json)
- [Pre-estimation membership audit](data/metadata/shed_blind_audit_v89.json)
- [Aggregate result](data/processed/shed_independent_v89.json)
- [Preceding SIPP household association](HOUSEHOLD_ASSOCIATION_V88.md)

## Official sources

- [Federal Reserve data releases](https://www.federalreserve.gov/consumerscommunities/shed_data.htm): current public files and revisions.
- [2024 codebook](https://www.federalreserve.gov/consumerscommunities/files/SHED_2024codebook.pdf): baseline fields, response categories and profiles.
- [2025 codebook](https://www.federalreserve.gov/consumerscommunities/files/SHED_2025codebook.pdf): follow-up event/food measures and pair weights.
- [Federal Reserve FAQs](https://www.federalreserve.gov/consumerscommunities/shed-faqs.htm): persistent identifier, panel weights, imputation flags, adult analysis unit and changing questionnaires.
