How We Score Safety

The FRED Score is a forward-looking model that predicts a carrier's expected severity-weighted crash burden over the next 12 months, then grades it against similarly-sized peers. It is fit on one year of history to predict the following year — out-of-time validated, not scored on the same data it learned from.

Scoring Pipeline at a Glance

1. Collect FMCSA Data Crashes, inspections, violations, census records
2. Set the Exposure Base Power-unit-years (crash) & inspection counts (violations) as the exposure base
3. Credibility-Weight Each Signal Each safety signal is shrunk toward its size-cohort average by how much real data backs it (Empirical Bayes)
4. Apply Credibility & Confidence Shrink thin-data carriers toward their size-band prior; assign a confidence tier
5. Calibrate Per Size Band Tune each fleet-size band so observed/expected ≈ 1.0
6. Assign Grade & Relativity Excellent through Critical from the credibility-weighted burden relativity vs. the carrier's size cohort, on fixed risk thresholds
7. Rolling Refit Coefficients refit weekly on the latest year-pair; each carrier scored on its latest 12 months
FRED Score & Grade
0–100 (100 = safest) + Excellent→Critical band
Expected Crash Burden
Expected crashes & severity-weighted burden, next 12 months
Risk Relativity & Confidence
1.00× = typical for size; High→Prior-only confidence tier

Data Sources

Seven FMCSA datasets feed the scoring pipeline

Every score starts with public data from the Federal Motor Carrier Safety Administration. We pull seven distinct datasets, join them on DOT number, and filter to the population of active for-hire property carriers.

Dataset What It Contains Updates
Census Carrier registration, fleet size, address, authority type, officer names Daily
Inspections Roadside inspections with driver and vehicle out-of-service (OOS) counts Daily
Crashes Reportable crash events with fatality, injury, and tow-away details Monthly
Violations Individual violation records with category, severity weight, and inspection date Monthly
BASIC Scores SMS safety measure scores — SMS AB (interstate + intrastate hazmat) and SMS C (intrastate non-hazmat) merged by DOT number Monthly
SMS Census Authority classification fields: for-hire, exempt, private property, government, etc. Monthly
History Operating authority orders, revocations, and docket status changes Daily
The raw census file contains ~9 million rows. After joining with SMS Census authority fields and applying exclusion filters, roughly 1.1 million active for-hire property carriers with power units are graded — including thin-data carriers, which are shrunk toward their size-band prior rather than dropped.

Carrier Eligibility

Who gets scored — and who doesn't

Not every FMCSA-registered entity is a for-hire trucking carrier. We apply hard exclusions that remove non-carriers entirely — but beyond those, nearly every carrier with power units and usable exposure is graded. Thin-data carriers are not dropped to N/A; their estimate is shrunk toward their size-band prior and tagged with a confidence tier. This is why the FRED Score covers about 1.1 million carriers, versus roughly 475k under the prior approach that excluded thin carriers outright.

Pre-Scoring Exclusions

Carriers matching any of these criteria are removed before scoring begins:

Inactive Status — carrier's FMCSA status is not "Active"
Passenger Operations — operates buses, coaches, school buses, vans, or limos (Fleetidy covers freight/property only)
No Truck Power Units — zero trucks or tractors across all ownership types (owned, leased, trip-leased)
No For-Hire Authority — private-property-only carriers without authorized or exempt for-hire classification

Confidence Tiers, Not Exclusion

Rather than dropping carriers with thin data, the model shrinks their estimate toward their size-band prior and labels how much real track record backs the score:

High / Moderate — enough of an inspection and event record that the carrier's own history carries most of the weight.
Low / Prior-only — thin exposure, so the size-cohort prior dominates and the grade is shown as Provisional (limited confidence). We no longer hard-cap these at a grade: the per-signal credibility shrinkage already pulls a thin record toward its cohort average, so reaching “Excellent” takes real exposure the data has to support. The genuine cap is on the very thinnest carriers — a single power unit is capped at “Strong”, and a carrier with no inspections and no crashes at all is “Not Rated” rather than ranked on noise. Each gets a plain-English reason.
N/A is reserved for carriers with no usable, trustworthy data — no active operating authority, defunct interstate operation, or a self-reported fleet that is internally impossible (e.g. far more power units than drivers) — not for being small.
Carriers with no operating authority or implausible reported mileage still appear in search results with their census data, but won’t receive a FRED Score or grade.

Data & Exposure Normalization

Why raw counts are misleading

Public FMCSA records — crashes, inspections, and violations — are aggregated for each carrier over its most recent observation window. But comparing a 3-truck fleet to a 500-truck fleet by raw event counts is inherently unfair — a larger fleet naturally encounters more events. Exposure is how the model accounts for that: crash burden is measured per power-unit-year and each violation signal per inspection, so a carrier is compared on a rate, not a raw count. We use power-unit-years rather than self-reported mileage on purpose — MCS-150 mileage is frequently blank, stale, or implausible, so it is never the exposure base for the grade.

3 trucks
2 crashes
Looks dangerous?
500 trucks
30 crashes
Actually much safer per mile

Exposure is the carrier's mileage over the scoring window, in 100k-mile units. It enters the model as log(E) — an offset that puts every metric on a per-100k-mile footing so small and large fleets are predicted on the same scale:

$$E_i = \text{window\_miles}_i / 100{,}000$$
Exposure is floored at 0.5 (50k miles) to prevent extreme, meaningless rates for carriers reporting very low mileage, and capped at the top end (3B miles/yr) to contain corrupt census records. Carriers whose reported fleet size is impossible (power units far beyond any real-world carrier) are treated as having no usable exposure and left ungraded rather than handed a fabricated baseline.

Credibility & Confidence

How much to trust a carrier’s own history

Even on a per-mile basis, a tiny fleet with 1 crash in 50k miles looks far worse than a large fleet with 10 crashes in 5 million miles — even though the small fleet's rate is mostly just noise. One lucky or unlucky year can swing it wildly. Rather than throwing thin carriers away, the model blends each carrier's own signal with its size-band prior using Bühlmann-Straub credibility.

How Credibility Shrinkage Works
Low rate
High rate
Band Prior
Raw (3 trucks)
Stabilized
Large fleet (stays)

Each carrier gets a credibility weight $Z = n/(n+K_{\text{band}})$, where $n$ is the carrier's accumulated evidence — the count of real safety observations (roadside inspections and observed crashes / out-of-service results, plus a small fleet-size-and-tenure floor). Credibility comes from how much of a carrier we have actually seen, not from the mileage it self-reports: a one-truck fleet that merely claims 100k miles has almost no evidence and is shrunk to its size-band prior, while a fleet with a heavy inspection record (or real adverse events) is governed mostly by its own history. Carriers with lots of evidence ($n \gg K$) ride their own record; thin-record carriers ($n \ll K$) are pulled ("shrunk") toward the band prior — so a strong grade has to be earned with observations, never granted for the mere absence of data. Because adverse events add to the evidence count, a genuinely bad record still has the credibility to grade a carrier down.

$$n_i = \text{inspections}_i + \text{adverse events}_i + \text{fleet-size floor}_i, \quad Z_i = \frac{n_i}{n_i + K_{\text{band}}}, \quad \hat{\lambda}_i = Z_i\,\lambda^{\text{own}}_i + (1-Z_i)\,\lambda^{\text{prior}}_{\text{band}}$$

That same credibility weight drives each carrier's confidence tier:

High / Moderate — the carrier's own history carries most of the weight.
Low / Prior-only — the cohort prior dominates; shown as Provisional (limited confidence). Single-power-unit carriers cap at “Strong”; no-record carriers are “Not Rated.”
When a carrier's evidence $n_i$ is large relative to $K_{\text{band}}$, $Z_i \to 1$ and the estimate is its own rate. When $n_i$ is small, $Z_i \to 0$ and the size-band prior dominates. More real observations → more credibility, higher confidence tier. Note this is the carrier's observed record (inspections and events), not its self-reported mileage — mileage still sets the exposure base for the burden rate, but it no longer buys credibility.

Frequency × Severity Model

Predicting next year’s crash burden

The FRED Score targets a carrier's severity-weighted crash burden — not just how many crashes, but how bad. Each crash is weighted by its outcome, so a fatal collision counts far more than a minor tow-away:

$$w_{\text{crash}} = 1 + 12\cdot\min(\text{fatalities},3) + 4\cdot\min(\text{injuries},5) + 3\,(\text{hazmat released})$$

Fatality and injury terms count casualties (capped) and stack — a two-fatality crash weighs more than a one-fatality crash. The carrier's own severity-weighted crash burden, and its vehicle out-of-service, severe-violation, hours-of-service / fatigue, unsafe-driving, and speeding rates, are each turned into a cohort-relative Empirical-Bayes relativity (1.0× = typical for its size cohort), shrunk toward the cohort average by how much real exposure backs that signal — crash burden by power-unit-years, violation rates by inspection count. These combine into one transparent, credibility-weighted risk relativity; a carrier's observed crashes set a floor on that relativity, so a real crash record can never be averaged away.

$$R_i \;=\; \max\!\Big(\textstyle\prod_s r_{s,i}^{\,w_s},\; \text{observed-crash floor}\Big)$$

The grade comes from a transparent geometric blend of the per-signal relativities $r_{s}$ (no black box) — each raised to a weight $w_s$ learned out-of-time from how strongly that signal predicts the following year's crash burden. In order of learned weight, the signals are:

Crash burden
w 0.20
Vehicle out-of-service
0.19
Severe violations
0.11
HOS / fatigue
0.09
Unsafe driving
0.08
Speeding
0.04

Weights are log-relativity exponents learned out-of-time by a non-negative Poisson fit; refit each cycle. Signals that don't predict forward crashes (e.g. generic equipment / maintenance write-ups) are dropped rather than given face-value weight.

Violations as Fitted Predictors

Roadside violations enter as vehicle out-of-service, severe-violation, hours-of-service / fatigue, unsafe-driving, and speeding rates — each weighted by how strongly it predicts the following year's crash burden. The relativities below are illustrative of the ordering the fit recovers, not pre-set multipliers baked into the score:

Tier Violation Type Forward-crash RR
Critical — Immediate danger behaviors
Reckless Driving 1.49
Dangerous Driving 1.37
Jumping OOS / Driving Fatigued 1.36
High — Serious behavioral risks
Speeding (high & excessive) 1.30
Drugs / Alcohol 1.29
Alcohol Possession 1.27
Moderate Speeding 1.20
Phone Call / Texting 1.16–1.18
Moderate — Concerning behaviors
False Log 1.12
Seat Belt 1.11
Equipment — Vehicle condition
Lighting 1.17
Tires 1.16
Brakes (all types) 1.13

Each figure is the empirical relative risk — the ratio of next-year crash burden for carriers with that violation type versus those without. The model learns how much weight to give each behavioral and equipment feature directly from the year-over-year data, so its influence on the score reflects measured forward risk rather than a fixed assumption.

Per-Band Calibration

Unbiased predictions across every fleet size

A model can rank carriers well yet still systematically over- or under-predict for a given fleet size. To prevent that, each fleet-size band is calibrated so its total predicted crashes (and burden) match that band's own recent observed totals — the observed-over-expected ratio lands at ≈ 1.0:

$$\text{O/E}_{\text{band}} = \frac{\sum_{i \in \text{band}} \text{observed burden}_i}{\sum_{i \in \text{band}} \mathbb{E}[\text{burden}_i]} \approx 1.0$$

The forward expectation is then surfaced for underwriting as two figures per carrier — expected crashes and expected severity-weighted burden over the next 12 months:

$$\mathbb{E}[\text{crashes}_i] = \hat{\lambda}^{\text{freq}}_i \times E_i, \qquad \mathbb{E}[\text{burden}_i] = \hat{\lambda}^{\text{burden}}_i \times E_i$$

A parallel Poisson model is fit the same way on fatal crashes (crashes involving a fatality) to estimate each carrier’s forward fatal-crash rate, surfaced for underwriting as the probability of at least one fatal crash in the next 12 months. Fatal crashes are rare, so this estimate leans heavily on exposure, fleet-size band, and behavioral / speeding signals, and is calibrated band-by-band like the burden model:

$$P(\ge 1\ \text{fatal crash}_i) = 1 - e^{-\hat{\lambda}^{\text{fatal}}_i E_i}$$
Because calibration is enforced band-by-band, predictions are unbiased for everyone from single-truck owner-operators to large fleets — a small carrier’s expected burden is just as trustworthy in aggregate as a large carrier’s. Per-band O/E is re-checked on every refresh.

Grades & Risk Relativity

Where a carrier sits among same-size peers

Each carrier's predicted burden is first expressed as a risk relativity — its predicted burden divided by the level that is typical for its size band. 1.00× means typical for its size; below 1 is safer than peers, above 1 is riskier.

$$\text{RiskRelativity}_i = \frac{\mathbb{E}[\text{burden}_i]}{\text{burden typical for size band}}$$

Grades are then assigned from this credibility-weighted risk relativity on fixed thresholds calibrated to realized forward crash burden — below 0.52× the carrier's size cohort earns “Excellent,” 0.52–0.60× “Strong,” 0.60–0.90× “Satisfactory,” 0.90–1.20× (at/just above the cohort average) “Marginal,” 1.20–1.60× “Poor,” and above 1.60× “Critical.” The thresholds sit on the actual forward-burden gradient, so each grade realizes materially higher next-year crash burden than the one above it. Because the relativity is measured within the carrier's size cohort — the in-scope book is banded 10–19, 20–49, 50–99, 100–199, 200–499, 500+ power units, with 1, 2–5 and 6–9 held as advisory — a fleet is judged against genuinely comparable peers, never against carriers many times its size. The bands are set finely wherever the population supports a stable per-cohort estimate. A single-power-unit carrier is capped at “Strong” — one power-unit-year of crash exposure is too thin to credibly earn the top grade (see grading owner-operators). A carrier with no inspections and no crashes on record has no observed safety record to rank, so it is marked “Not Rated” rather than assigned a fabricated grade.

Safety Grade Scale — safest to riskiest within size band
Excellent Strong Satisfactory Marginal Poor Critical

The thresholds are absolute — tied to a carrier's measured risk relativity, not a fixed quota — so a size cohort can have many strong carriers or few, exactly as the data warrants, and the grade is stable rather than shifting as peers move. A carrier whose credibility-weighted burden is below half its cohort earns “Excellent” whether it runs 3 trucks or 3,000. The 0–100 FRED Score (100 = safest) expresses the same relativity on a friendlier scale.

Confidence gates the upside of the grade, never the downside. Only the top grade is gated: a carrier below Moderate confidence (exposure credibility Zexp < 0.20) is capped at “Strong” — it cannot display “Excellent” on a thinly-observed record, because the top grade should reflect a real track record, not the mere absence of adverse events. A clean small fleet can still earn “Strong” on its own merits; only a carrier with enough credible exposure (Zexp ≥ 0.20) reaches “Excellent.” The downside always shows through — a real crash record can still grade a thin carrier “Poor” or “Critical.” Upside-capped carriers are shown as Provisional, each with a plain-English reason explaining why.

Rolling Refit

Out-of-time, refreshed weekly

The model is refit on the most recent complete year→year pair — coefficients are learned from one year of carrier history paired with the crash burden that actually followed. Every carrier is then scored on its latest 12 months of history to predict the forward 12 months. Because the model is never scored on the same data it learned from, the FRED Score is genuinely out-of-time.

The data pipeline refreshes the score weekly, so each carrier's grade reflects their current safety posture. A carrier that improves will see it as older events age out; one that deteriorates feels the impact within months, not years.

The most recent ~45 days are held out for crash-reporting lag — crashes take time to appear in FMCSA's feed, so the very latest weeks aren't yet mature enough to score against. This keeps the forward target honest rather than artificially low for recent activity.

Automatic Rules & Flags

Hard overrides, eligibility gates, and informational flags

Beyond the statistical model, a set of deterministic rules handle edge cases where the math alone isn't sufficient. These fall into three categories: score overrides, data-quality adjustments, and informational flags.

Score Overrides

These rules supersede the calculated score entirely:

1
FMCSA Adverse Safety Rating — current vs. historical

An FMCSA Unsatisfactory (U) or Conditional (C) rating only counts against a carrier when it is current. A rating is treated as historical — shown for context but not penalized — when it is stale or superseded. The key cross-check: a for-hire carrier cannot legally operate under a current Unsatisfactory rating (FMCSA revokes its operating authority), so an Unsatisfactory sitting next to an active operating-authority docket is proof the rating was superseded, regardless of its age. A rating older than the recency window is likewise historical. We derive this from bulk FMCSA fields (SAFETY_RATING, SAFETY_RATING_DATE, REVIEW_DATE, docket status, and revocation history) and, on the carrier page, confirm it against a real-time FMCSA lookup. Only a genuinely current adverse rating drives the grade down; a historical one does not. When an Unsatisfactory or Conditional rating is genuinely current, the carrier is flagged for referral and its displayed grade is capped at “Marginal” for binding — even if its credibility-weighted burden would place it higher — while a worse observed record still shows through.

2
Defunct / No Operating Authority

If a carrier has interstate-only scope, no active operating authority, and is not exempt — the FRED Score is set to N/A (no score produced). N/A is reserved for defunct or no-authority carriers, never for being small.

Eligibility Gates

A thin carrier is shrunk toward its size-band prior, not blocked. These gates only apply when there is no usable exposure at all or the reported data is implausible:

3
No Usable Exposure

No reported mileage and zero inspections — nothing to anchor even a prior-based estimate. A carrier with any usable exposure is still scored as Provisional on its size-band prior.

4
Mileage Outlier

Reported mileage is implausible: >300k miles per truck, <1k miles per truck for fleets ≥10, or >500M total miles. Scoring is blocked to prevent extreme rates.

5
Unverifiable High Mileage

Reports >300k miles per truck and has fewer than 2 inspections — high mileage can't be corroborated by inspection activity.

6
Implausible or Inconsistent Fleet Size

Reported power units far exceed any real-world carrier (the census occasionally carries values in the hundreds of thousands to millions), a very large fleet is claimed with no usable mileage to corroborate it, or the fleet is internally inconsistent — far more power units than drivers (e.g. 4,150 trucks against 4 drivers), which can’t be operated. Such records have no trustworthy exposure — they are left ungraded rather than handed a fabricated baseline, and excluded from the band calibration.

Data Quality Adjustments

Modifications to component scores when data quality is degraded:

6
Unreliable Mileage

When mileage is missing or implausible but the carrier has observed activity (inspections, crashes, or violations), the model falls back to inspection-based exposure rather than trusting the bad odometer figure.

7
Exposure Floor

Calculated exposure is floored at 50k miles (0.5 units) to prevent extremely volatile rates from tiny denominators.

Informational Flags

These flags are attached to carrier records for context but do not directly alter the score:

NO_OPERATING_AUTHORITY — docket revoked or inactive
LOW_RELIABILITY — fewer than 5 inspections
INSPECTION_PER_PU_OUTLIER — inspection rate outside 1st–99th percentile
GOVERNMENT_ENTITY — federal, state, or local government carrier
HHG_ONLY — exclusively hauls household goods
MEXICAN_CARRIER — domiciled in Mexico
CANADIAN_CARRIER — domiciled in Canada
CHAMELEON_SUSPECT_HIGH — FMCSA links this DOT to a prior revoked DOT
CHAMELEON_SUSPECT_MEDIUM — shares address + officer with a revoked DOT (within 36 months)
CHAMELEON_SUSPECT_LOW — shares DUNS, or address + phone, with a revoked DOT

Chameleon detection cross-references every revoked DOT (any historical REVOCATION order) against active carriers using normalized address, officer name, phone, and DUNS. Matches are tiered by signal strength. The flag is informational and does not affect the FRED score — the underwriter decides what to do with the linkage.

Validation Standards

How we know it works

Every refit is validated out-of-time: the model is fit on one year, then judged on whether it ranks and calibrates the following year's crash burden on a carrier-disjoint holdout (every fifth DOT number is held out of fitting). One hard gate blocks publication — grade monotonicity (below) — and the refit aborts before any score is written if it fails. Discrimination and calibration metrics are recorded for every refit and reviewed; the figures below are from the latest validated run (outcome year ending 2026‑03‑08).

Grade Monotonicity hard gate

In every fleet-size band, realized forward-year burden must rise across all six grades (Excellent → Critical). A statistically significant inversion — a worse grade genuinely safer than a better one, beyond the sampling error of the holdout buckets — rejects the refit and leaves the live scores untouched. A near-tie within sampling noise (adjacent grades in the smallest holdout cells, where a few dozen carriers can't resolve a fraction-of-a-percent burden gap) is not counted as a failure.

Out-of-Time Gini

Normalized Gini of ≈ 0.20 overall on the forward year among rated carriers, rising with exposure from ≈ 0.11 on single-power-unit carriers to ≈ 0.64 on 100+ unit fleets — the model discriminates most where the data is richest. (Single-unit ranking is intentionally weak; see grading owner-operators.)

Per-Band O/E

Observed-over-Expected burden lands within 0.97 – 1.06 of 1.0 in every fleet-size band on the holdout — predictions stay calibrated across sizes, not biased by fleet size.

Top-decile lift, per-cohort Gini, and a grade-monotonicity gate — realized forward burden must rise from Excellent to Critical, or the run aborts rather than ship a contradictory score — are computed and logged to a per-run metrics artifact for review. All scoring, calibration, and out-of-time validation is performed by the reproducible pipeline fred_score_v6.py.