Skip to content

Employer–firm: where we are #392

Description

@vahid-ahmadi

The plan assumed we would have to invent synthetic firms, because it was believed no public firm microdata existed.

It does. So the firm side now uses real firms.

Where the data comes from

Side Source What it gives
Workers SIPP, CPS ASEC, PSID real people and real job records
Firms Form 5500 (DOL/EBSA) 828,330 real employers
Firms OSHA ITA 383,283 real workplaces
Targets SUSB, BDS, QWI / J2J official national totals to match against

All are US federal government works: free, no data-use agreement, no FSRDC, and redistributable.

Form 5500 is the same frame the US Department of Labor's own PENSIM microsimulation has used since 1997.

What we built

Firm side — read the real firm records and reweight them so the totals match official US statistics. No firm is invented. #386 (readers), #390 (frame).

Worker side — give CPS people job details predicted from real SIPP workers, using the same quantile-regression method the Enhanced CPS uses for earnings.

The connection — place workers into firms, respecting how many employees each firm actually has, with a fixed random seed so the result is exactly reproducible.

Cleanup — merged seven stuck PRs (#277, #274, #224, #228, #235, #236, #212), including all of Workstream A's evidence (the person side — SIPP and CPS readers, noise floors, the seam reconciliation) before the branches went stale. #276 is in CI.

The pipeline, and where each piece stands

flowchart LR
  DATA["<b>Public data</b><br/>SIPP · CPS · PSID<br/>Form 5500 · OSHA<br/>SUSB · QWI"]
  PEOPLE["<b>Workers</b><br/>real CPS people,<br/>job details imputed"]
  FIRMS["<b>Firms</b><br/>real employers,<br/>reweighted to official totals"]
  LINK["<b>Match them</b><br/>assign workers to firms"]
  IC3{"<b>Lock IC3</b><br/>freeze the scorecard"}
  SCORE["<b>Score</b><br/>run on real people,<br/>compare against the gates"]

  DATA --> PEOPLE
  DATA --> FIRMS
  PEOPLE --> LINK
  FIRMS --> LINK
  LINK --> IC3
  IC3 -.-> SCORE

  style DATA fill:#2f6f52,color:#fff
  style PEOPLE fill:#b8721a,color:#fff
  style FIRMS fill:#b8721a,color:#fff
  style LINK fill:#b8721a,color:#fff
  style IC3 fill:#8b3a3a,color:#fff
  style SCORE stroke-dasharray:4
Loading
🟩 Done — readers, targets and noise floors are merged
🟧 Built, but unreviewed — all of it sits in #386 and #390
🟥 Blocked — IC3 needs an independent referee
Not started — the pipeline has never run on real people

The critical path runs through the red box: nothing downstream can begin until IC3 locks.

What IC3 is, briefly

IC3 is the pre-registered scorecard: the exact list of tests the model must pass, with thresholds, written down and frozen before anyone fits a model. The point is that nobody can move the goalposts after seeing results.

It is not locked yet, and locking it needs an independent referee — someone who did not build the model. That is the main thing blocking progress.

What is still missing

  1. Nothing is reviewed. About 3,000 lines of new code across Observed firm-microdata readers: Form 5500 and OSHA ITA (#192) #386 and Observed firm frame: real sponsor records calibrated to SUSB (#192) #390, written by one person, with zero independent review.
  2. It has never run on real people. SIPP is not staged on the machine used, so the pipeline has only been exercised on fixtures and test panels.
  3. IC3 cannot lock without an independent referee.
  4. Job-change dynamics (phase 1) are not started.
  5. The plan page and the unmerged IC3 employer gate block: thresholds, partitions, and rulings (draft for referee) #230 still describe synthetic firms and need updating.

One number worth registering before thresholds lock

Two independent official administrative measures of firm size — Form 5500 and OSHA — disagree about which size band a firm belongs to 34% of the time across the 43,001 employers they share.

A firm-size gate set tighter than that is finer than the measuring instruments can resolve. This belongs with the existing noise floors, and it is only useful before IC3 locks.

Related

What has not changed

No public data links a worker to their actual employer. The worker-to-firm assignment is still simulated, and the claims boundary recorded on #282 stands: no identified firm effects, no coworker sorting, no AKM-style decompositions.

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions