Dataset, scoring, and data linkages
This document specifies the data sources, derivation rules, and known limitations of every number presented in the 5500 Analyzer. All scoring criteria below are evaluated from the public DOL EFAST2 release; no proprietary or licensed data enters at the row level.
§1Dataset
All data derive from the U.S. Department of Labor EFAST2 public release of Form 5500 and Form 5500-SF for plan years 2022, 2023, and 2024. The corpus is loaded from Parquet files published by the DOL and queried locally with DuckDB.
- Plan year coverage
- 2022, 2023, 2024. Filings with PLAN_YEAR < 2022 are not present in the loaded corpus and are surfaced as “Pre-2022” if encountered.
- Filings (form_5500.parquet, form_5500_sf.parquet)
- One row per filing. The unique identifier is ACK_ID. The same plan (sponsor EIN + plan number) appears once per plan year.
- Service providers (sch_c_item1, sch_c_item2, sch_c_item3, sch_c_part2)
- Schedule C disclosure of compensated service providers. Schedule C is required only for Form 5500 filers (not 5500-SF) with at least one provider receiving $5,000 or more in a plan year.
- Schedule H (sch_h.parquet)
- Audited financial statements for large plans (generally ≥100 participants). Contains assets, liabilities, and the Line 4i schedule-of-assets summary.
- Schedule D (sch_d.parquet)
- List of Direct Filing Entities (DFEs) — master trusts, common/collective trusts, pooled separate accounts — in which the filer holds an interest.
- Schedule of Assets (Line 4i, parsed offline)
- Line-item investment holdings. Filed as a free-form PDF attachment on EFAST2; we extract these offline. Coverage is partial and prioritized toward the largest plans and master trusts.
§2Data linkages
A retirement plan is rarely described by a single filing. The information needed to evaluate a plan is distributed across the Form 5500 itself, its attached schedules, and — when assets are pooled — the filings of separate Direct Filing Entities. The diagram below specifies the relationships.
Plan sponsor (SPONSOR_EIN)
└─ files one Form 5500 or 5500-SF per plan, per plan year
│ (uniquely identified by ACK_ID)
│
├─ Schedule C ··················· compensated service providers
│ └─ Part 2 ················· providers who failed to disclose
│
├─ Schedule H ··················· audited financial statements
│ │ (large plans only, generally ≥100 participants)
│ │
│ └─ Line 4i ················ Schedule of Assets (line items)
│ ↳ filed as a PDF attachment on EFAST2
│ ↳ parsed offline; coverage is partial
│
└─ Schedule D ··················· interests in pooled investment
│ vehicles (Direct Filing Entities)
│
▼
┌─────────────────────────────────────────────┐
│ Direct Filing Entity (master trust / CCT) │
│ • Has its own EIN + plan number │
│ • Files its OWN Form 5500 │
│ • Its Schedule H reports the FULL pooled │
│ balance, not the per-plan allocation │
│ • Its Line 4i lists the underlying │
│ securities (CUSIPs, share classes, etc.) │
└─────────────────────────────────────────────┘Practical consequences for what you see on a plan page
- Small filers (Form 5500-SF). No Schedule H, no Schedule of Assets, no Schedule C. Holdings cannot be shown for these plans because they were never disclosed in the first place.
- Large filers with no DFE interests.Holdings exist as a PDF attachment to the filing. The 5500 Analyzer shows them when our offline parser has unlocked that filing’s template; otherwise the plan page links to the original PDF on EFAST2.
- Large filers with Schedule D interests.The plan’s own Schedule H reports each pooled vehicle as a single allocated-interest balance (e.g. “Vanguard Fiduciary Trust Company Master Trust — $X”). The line-item securities sit on the master trust’s own Form 5500. The plan page surfaces this with a Schedule D table and links the participant to the trust’s filing.
- The filing is itself a DFE. Its Schedule H reports the full pooled balance for the trust. Participating plans each report their allocated interest separately. The plan page replaces the Plan Health Score with a DFE summary in this case because the health-score formula does not apply to a pooled investment vehicle (no benefit design, no participants in the usual sense, no IQPA requirement).
A filing’s reported “total plan assets” on its own row in the search results is always the value the plan itself reported on Schedule H. No allocation, deduplication, or inference is applied at the row level.
§3DFE double-counting in aggregate totals
When totals are computed across the corpus — for example, the homepage hero numbers — the structure described in §2 produces a known double-count: a master trust’s assets appear once on the trust’s own Form 5500 and again on each participating plan’s Schedule H.
How we handle it
- Candidate DFE filings are found by joining each filing’s (SPONSOR_EIN, PLAN_NUM) against the (DFE_EIN, DFE_PN) columns of
raw_sch_dacross the corpus. This citation alone is notsufficient: a real employer plan’s EIN and plan number occasionally collide with a DFE reference. A filing is therefore treated as a pooled vehicle only when it is cited as a DFE andhas the vehicle shape — no pension benefit code, no welfare benefit code, and zero active participants. This keeps real plans (e.g. large 401(k) and defined-benefit plans that happen to be referenced) classified as plans rather than trusts. - The “Plans” / “Trusts” filing-type filter uses the same vehicle shape: any filing with no benefit codes and no active participants is excluded from the default Plans view, and shown under Trusts.
- The homepage total assetsaggregate sums only filings for the latest plan year and excludes the double-counted pooled vehicles defined above. The number reported elsewhere (e.g. on a plan’s detail page) is always the single filing’s own Schedule H value and is not adjusted.
- The homepage active participants aggregate sums the latest plan year only, with no DFE adjustment. A genuine pooled vehicle reports zero participants by construction. Filtered views sum active participants across whatever filings match, and a caveat notes that the figure counts plan memberships, not unique individuals.
The Investment Company Institute estimates U.S. private retirement assets at approximately $15 trillion (year-end 2024). The Form 5500 universe is a superset because it also covers welfare benefit plans (health, life, severance).
§4Plan Health Score
4.1 Scoring philosophy
The Plan Health Score is a 0–100 directional indicator derived entirely from the public Form 5500. Three principles govern its construction:
- Affirmative evidence only.A plan is penalized only for a problem the filer affirmatively reported in a structured field — a checked Schedule H red-flag box, a disclosed late contribution, a missing IQPA, a late filing. The score never deducts for data we could not extract or that DOL ships blank.
- Exact peer percentiles. Relative pillars (cost, plan health) are scored against same-size peers using an exact percentile, not an approximation — see §4.4.
- Missing data never penalizes; the score reports its own confidence.A pillar we cannot measure for a given filing is dropped and the remaining pillar weights are re-normalized. The card shows what fraction of the scoring inputs were available, and when coverage falls below 50% the plan is shown as “limited data — not graded” rather than a misleading letter grade.
4.2 Grade bands
| Score range | Grade | Interpretation |
|---|---|---|
| 85–100 | A | No material flags; top-tier cost & health vs peers |
| 70–84 | B | Above-average; minor flags or single moderate flag |
| 55–69 | C | Average; moderate flags across one or more pillars |
| 40–54 | D | Below-average; multiple material flags |
| 0–39 | F | Serious compliance and/or cost flags |
4.3 Pillar weights
Weights are nominal; only measured pillars contribute, and their weights are re-normalized to sum to 1.0 for each filing.
| Pillar | Weight | Basis |
|---|---|---|
| Compliance & integrity | 35% | Penalty-based (affirmative flags) |
| Total plan cost | 30% | Exact peer percentile |
| Plan health | 20% | Exact peer percentile |
| Vendor & structure | 15% | Penalty-based |
4.4 How peer percentiles are computed
Each plan is placed in a cohortdefined by its filing year, form type (5500 vs 5500-SF), and asset band (<$1M, $1–10M, $10–50M, $50–100M, $100–500M, $500M–1B, $1B+). Within that cohort, each metric’s percentile is computed with DuckDB’s cume_dist() over the non-null rows of the metric:
- It is exact — the fraction of cohort peers a plan is at-or-better-than — not a sampled or bucketed approximation.
1.0= best in cohort,0.5= median. - Direction is baked into the ordering: cost orders so that lower expense is better; participation, contributions and balance order so that higher is better.
- A metric is used only when its cohort has at least 20 plans with that metric present; otherwise the metric is treated as not measured.
The percentile is then rendered on a 0–100 scale through a mild concave calibration curve (percentile0.7 × 100) so the grade bands line up with percentile intuition: the medianpeer (50th percentile) maps to ~62 — a “C”, i.e. average — rather than to 50, which a raw linear mapping would put in the “D” band. The top quartile maps to ~82 (B) and the top ~15% to ~89 (A). The raw percentile is always shown verbatim in the pillar detail, so nothing is hidden — only the 0–100 rendering is curved.
4.5 Compliance & integrity (pillar starts at 100)
| Criterion | Adjustment | Note |
|---|---|---|
| FAIL_TRANSMIT_CONTRIB_IND = Yes (Schedule H 4a) | −4 to −18 | Delinquent participant contributions — the #1 DOL enforcement flag and a fiduciary breach. Scaled by the late amount as a share of total contributions (floor −4 for any breach, −12 when contributions are unavailable to gauge materiality). |
| PARTY_IN_INT_NOT_RPTD_IND = Yes (Schedule G) | −25 | Non-exempt prohibited transaction reported. |
| LOSS_DISCV_DUR_YEAR_IND = Yes | −25 | Loss due to fraud or dishonesty reported. |
| LOANS_IN_DEFAULT_IND = Yes | −10 | Participant loans in default (deemed distributions). |
| TOT_CORRECTIVE_DISTRIB_AMT > 0 | −8 | Corrective distributions issued — typically a failed ADP/ACP nondiscrimination test. |
| ASSET_UNDETERM_VAL_IND = Yes | −6 | Holds assets with an undetermined value. |
| Blackout period without compliant notice | −8 | PLAN_BLACKOUT_PERIOD_IND = Yes and COMPLY_BLACKOUT_NOTICE_IND ≠ Yes. |
| ACCTNT_OPINION_TYPE_CD ∈ {2,3,4} AND active ≥ 120 | −15 | Qualified, disclaimer, or adverse IQPA opinion. |
| PLAN_INS_FDLTY_BOND_IND = No | −10 | No ERISA §412 fidelity bond reported. |
| Fidelity bond < min(10%·assets, $500K / $1M) | −8 | Bond below the 10%-of-assets bonding rule ($1M cap when employer securities are held). |
| Employer securities ≥ 50% / ≥ 20% of assets | −20 / −10 | Structured employer-stock concentration (EMPLR_SEC_EOY_AMT). |
| active ≥ 120 AND ACCOUNTANT_FIRM_NAME is null | −30 | Audit-required plan named no IQPA. |
| sch_c_part2 contains ≥1 row for the filing | −10 to −35 | min(35, 10 + 5·count) — providers that failed to disclose compensation. |
| DATE_RECEIVED > FORM_TAX_PRD + 10.5 months | up to −25 | 4 points per month past the 10.5-month grace window. |
4.6 Total plan cost (exact peer percentile)
Cost is the plan’s total administrative expense (TOT_ADMIN_EXPENSES_AMT, Schedule H) divided by end-of-year assets, expressed in basis points, then converted to its exact peer percentile per §4.4 (lower expense ranks higher). The pillar is not scored when the plan has no comparable Schedule H expense data or sits in a cohort below the 20-plan floor.
| Criterion | Adjustment | Note |
|---|---|---|
| Total admin expense in bottom quartile of peers (< 25th pct) | flagged as an issue | |
| Total admin expense in top 15% of peers (≥ 85th pct) | positive | noted as positive |
4.7 Plan health (exact peer percentiles)
The average of whichever of the following metrics are available, each as an exact peer percentile (per §4.4):
- Account-holder ratio
- PARTCP_ACCOUNT_BAL_CNT ÷ TOT_ACTIVE_PARTCP_CNT — accounts with a balance per active participant. NOT the deferral participation rate (% of eligible employees contributing), which the 5500 does not carry; it is a directional account-coverage / maturity proxy and can exceed 1 when former employees retain balances.
- Employer contributions / participant
- EMPLR_CONTRIB_INCOME_AMT ÷ active participants.
- Participant contributions / participant
- PARTICIPANT_CONTRIB_AMT ÷ active participants.
- Average account balance
- Assets ÷ accounts with a balance.
A bottom-quartile account-holder ratio and bottom-decile employer contributions are flagged as issues; a top-15% balance or account-holder ratio is noted as a positive.
4.8 Vendor & structure (pillar starts at 100)
| Criterion | Adjustment | Note |
|---|---|---|
| TYPE_PENSION_BNFT_CODE contains 1I (frozen plan, no new accrual) | −25 | |
| ≥8 disclosed Schedule C providers across ≥5 service categories | −12 |
“No recordkeeper disclosed” is nota penalty. Because DOL ships the structured service-code field blank for essentially every Schedule C Item 2 row, we identify the recordkeeper from a curated name/EIN dictionary and from any recordkeeping fee on Schedule H; when none is identifiable it is surfaced only as an informational note.
§5What the score does not measure
- Investment menu quality. Per-fund expense ratio, share class selection, and risk-adjusted performance are not on Form 5500 and are not evaluated.
- Match generosity and eligibility design. Match formulas (e.g. 100% on first 3%, 50% on next 2%), vesting schedules, and eligibility waiting periods are not reported on Form 5500.
- True deferral rates. Active-participant salary deferral percentages live in recordkeeper data, not the 5500. The participation pillar uses balance-coverage as a directional proxy only.
- Fiduciary process. Whether the plan committee meets quarterly, maintains a written investment policy statement, or documents fee benchmarking is not observable from filings.
- Master trust filings.A pooled DFE filing does not receive a Plan Health Score; it is shown a DFE-specific summary instead because the score’s pillars (compliance, cost, plan health, vendor stack) do not apply to a pooled investment vehicle.
§6Lead report definitions
Each count on the Lead Reports page is the result of a deterministic SQL predicate against the loaded views. The predicates are:
| Report | Predicate |
|---|---|
| Failed Schedule C disclosures | EXISTS (SELECT 1 FROM sch_c_part2 WHERE ACK_ID = plans.ACK_ID) |
| Large plans missing auditor | source_form = ‘form_5500’ AND TOT_ACTIVE_PARTCP_CNT ≥ 100 AND (ACCOUNTANT_FIRM_NAME IS NULL OR trim(ACCOUNTANT_FIRM_NAME) = ‘’) |
| ≥20% party-in-interest exposure | SUM(CURRENT_VALUE) FILTER (WHERE PARTY_IN_INTEREST) / SUM(CURRENT_VALUE) ≥ 0.20 |
| >10% employer-stock exposure | Issuer regex matches COMMON STOCK|EMPLOYER STOCK|SPONSOR STOCK|COMPANY STOCK AND value ratio ≥ 0.10. |
| Total direct comp ≥ $1M | SUM(DIRECT_COMP_AMT) ≥ 1,000,000 across Schedule C providers. |
| 8+ disclosed providers | COUNT(*) ≥ 8 on Schedule C providers. |
| Self-directed brokerage detected | Any holding row matches a brokerage-window regex on IDENTITY_OF_ISSUE. |
| Late filings | DATE_RECEIVED > date_of_extended_deadline (10.5 months past PYE). |
| YoY: auditor / recordkeeper change, asset drop, first-time filer | Self-join of plans_canonical on (SPONSOR_EIN, PLAN_NUM) between the latest plan year and the prior plan year. |

