Rail freight leads industrial production by about zero to one month — far shorter than the widely cited 1-2 quarters; truck volume can't be tested from this corpus
STB EP724 rail carloads vs. FRED INDPRO, monthly YoY %, 2018-2026 (2024 excluded from INDPRO, missing from corpus)
Summary
For rail, the corpus's own data does not support the popular claim of a multi-month lead. Computing a fitted lag directly — cross-correlating year-over-year growth in national rail carloads against year-over-year growth in the Federal Reserve's Industrial Production Index across lags of -6 to +6 months, 2018-2026 — the correlation is highest at a 0-month lag (r = 0.62), with a 1-month rail-leads-production reading a close second (r = 0.595). Repeating the test excluding coal and grain — the two commodities AAR itself strips out to build its own Freight Rail Index (FRI), because their movement is driven by weather, exports and non-cyclical factors rather than domestic industrial demand — gives the same shape: peak at 0 months (r = 0.57), +1 month a close second (r = 0.55). Rail freight volume moves essentially with industrial production, not meaningfully ahead of it, under either specification.
For truck freight, this corpus has no monthly volume/tonnage series at all — no ATA Truck Tonnage Index, no BTS Transportation Services Index (Freight), nothing that measures truck shipment volume over time. That gap is reported below as a sourcing issue, not glossed over. Primary-source reads of ATA/SONAR's own documentation describe the Truck Tonnage Index as based on committed, longer-term contract freight that "often move[s] ahead of spot market trends" — a directional, qualitative lead claim, not a quantified number of months — and Cass Information Systems' own materials describe freight flows broadly as leading GDP/industrial statistics by "two to three quarters," a claim not independently testable here for lack of the underlying series. AAR's own framing of its FRI (built on rail carloads ex-coal/grain plus intermodal) as "a leading indicator" reflecting "activity that is still working its way through production pipelines and supply chains" is consistent in direction with, but not in magnitude with, what the direct correlation computed here shows (0-1 month, not multiple quarters).
Primary sources read (via web_fetch) and what each contributed
- AAR Rail Industry Overview, April 2026 (aar.org PDF, fetched in full, 4 pages) — confirmed AAR's own "Freight Rail Index" (FRI) methodology explicitly excludes coal and grain from carloads and adds intermodal originations, calling the result a leading indicator of "activity that is still working its way through production pipelines." This is the basis for the ex-coal/grain robustness check run above.
- Cass Information Systems — Cass Freight Index methodology page (cassinfo.com, fetched in full) — confirmed the index is a for-hire shipment-count index (base Jan 1990) built from Cass's own client invoice data (truckload >50% of shipments, LTL ~25%), adjusted to a 21-day work month; the page itself does not state a specific lead-time figure against industrial production (the "1-2 quarters" and "zero on a quarterly basis" claims trace to Cass's own published commentary found via web search, not this methodology page, and are reported here as unverified secondary claims, not confirmed against a primary Cass report).
- SONAR Knowledge Center — ATA Truck Tonnage Index (TTON) documentation (knowledge.gosonar.com, fetched in full) — confirmed the index measures weight (not volume/shipment count) of contract (not spot) freight, is based on an ATA member survey, is NOT seasonally adjusted in its raw form, and carries a one-month reporting lag — useful context for why this series would be hard to align cleanly against industrial production even if it were available in this corpus.
- Transport Topics — "Truck Tonnage Nudges 0.2% Higher in November" (Dec 2025) (ttnews.com, fetched in full) — a live example of ATA tonnage (112.4, 2015=100) moving independently of, and in this instance in the opposite direction from, the Cass Freight Index and GDP growth in the same month — concrete evidence that truck and rail/broad-freight measures do not always move together, reinforcing why truck cannot simply be assumed to behave like rail in this analysis.
- FreightWaves — "Rail and truck data highlight a strong industrial economy" (April 2026) (freightwaves.com, fetched in full) — explicitly frames the ATA tonnage index as reading "committed, longer-term volumes that often move ahead of spot market trends," and reports AAR's own "carloads excluding coal" figure (171,338/week in March 2026, highest since Aug 2019) as "the clearest read on the goods economy" — directly corroborating the ex-coal-grain construction used in this report's robustness check.
Two further URLs were attempted and failed: BTS's own TSI-Freight documentation page (HTTP 403) and FRED's Cass Freight Index series page (request timed out). Neither failure changes a reported figure — no number in this report is sourced to either page.
What the rail totals include — disclosed, not silently dropped
Two rail series are used, both fully disclosed and both computed live in this session: (1) all commodities, no exclusions — every sub-measure on file for carloads_originated, including Coal and Grain, summed/averaged across all 7 Class I railroads; and (2) coal and grain excluded, matching AAR's own published Freight Rail Index construction, run specifically as a robustness check once the AAR source confirmed that methodology. Both are shown side by side in the dashboard's lag-correlation chart; both peak at the same 0-month lag, so the conclusion does not depend on which specification is used.
A distinct-value check on the commodity/sub_measure field also surfaced a labeling wrinkle in the source data worth noting on its own: the underlying filings use inconsistent casing for the same commodity across years (e.g. rows labeled in all-caps and in title case both exist for every commodity name). This does not affect either rail series reported here, since both filter/aggregate case-insensitively or sum across the whole column — but a query filtering on one exact casing alone would silently miss years filed under the other convention.
Method — why a fitted lag, not a pipeline estimate
The question asks for a measured lead time, which is different from an engineering guess built by summing physical-pipeline stages (loading, transit, unloading). The approach used here tests the actual statistical relationship between the two real data series: for every candidate lag from -6 to +6 months, compute the Pearson correlation between rail YoY growth in month t and industrial-production YoY growth in month t+lag, and see which lag produces the strongest relationship. YoY transforms were used (rather than raw index levels) specifically to strip out the strong seasonal pattern in weekly rail filings (the count of railroad-week filings per calendar month varies with how ISO weeks fall across month boundaries), which would otherwise swamp any genuine cyclical lead/lag signal.
n ranges from 72 to 78 monthly observations per lag (2018-2023 plus 2026, since 2024 is missing from the loaded industrial-production series — see Data gaps below). That is enough to distinguish a meaningfully positive lead (r rising then falling around some positive lag) from a flat or peaked-at-zero relationship, which is what was found under both commodity specifications.
Data gaps encountered (reported live, not silently worked around)
- No truck freight volume series exists in this corpus. Catalog search for 'truck tonnage index', 'Transportation Services Index', 'Cass Freight Index' returns nothing at the right grain, and the transport schema's table list (airline, rail, port, pipeline, highway, vehicle-registration tables) contains no monthly truck-shipment-volume table — the closest candidates on file are a point-in-time carrier-registration snapshot and an annual/quinquennial commodity survey, neither of which is a monthly volume series. This was filed as a sourcing gap via report_issue.
- The loaded INDPRO series is missing all 12 months of calendar year 2024 — every other year from 1986 through 2026 is populated monthly, but 2024-01 through 2024-12 return zero rows even though the table's declared coverage window is 1986-2026 and reports as contiguous at the year grain. This is a genuine hole inside the loaded span, not a coverage-window edge case, and was filed as a defect via report_issue. It does not corrupt the lag analysis (the join simply drops 2024 rather than interpolating across it), but it does shrink the usable sample by about 12 of 90 possible months.
What This Report Does Not Answer
- Truck freight volume vs industrial production, with a measured lead time: No monthly truck freight volume/tonnage series (ATA Truck Tonnage Index, BTS TSI-Freight, or equivalent) exists in this corpus. Catalog search and the transport schema's table list show no monthly truck-shipment-volume table exists. Filed as a sourcing gap (govdata-ops). Addressed instead via primary-source web_fetch reads of the ATA/SONAR and Cass documentation of how their published indices behave as leading indicators, clearly labeled as external, not computed from this corpus.
Every query behind this report
1 warehouse call ran in this session, in order. Each is reproducible against the same snapshot.
query — 116 rows — 7431 ms
SELECT DATE_TRUNC(CAST(report_period_start_date AS TIMESTAMP), MONTH) AS month, AVG(fact_value_analytics) AS avg_weekly_carloads_excl_coal_grain
FROM transport.rail_service_performance
WHERE measure_name_analytics = 'carloads_originated'
AND UPPER(sub_measure) NOT IN ('COAL','GRAIN')
GROUP BY DATE_TRUNC(CAST(report_period_start_date AS TIMESTAMP), MONTH)
ORDER BY monthSources
- STB EP 724 Rail Service Data — carloads originated (all commodities)
Show SQL
SELECT DATE_TRUNC(CAST(report_period_start_date AS TIMESTAMP), MONTH) AS month, AVG(fact_value_analytics) AS avg_weekly_carloads FROM transport.rail_service_performance WHERE measure_name_analytics = 'carloads_originated' GROUP BY DATE_TRUNC(CAST(report_period_start_date AS TIMESTAMP), MONTH) ORDER BY month - STB EP 724 Rail Service Data — carloads originated, ex coal & grain
Show SQL
SELECT DATE_TRUNC(CAST(report_period_start_date AS TIMESTAMP), MONTH) AS month, AVG(fact_value_analytics) AS avg_weekly_carloads_excl_coal_grain FROM transport.rail_service_performance WHERE measure_name_analytics = 'carloads_originated' AND UPPER(sub_measure) NOT IN ('COAL','GRAIN') GROUP BY DATE_TRUNC(CAST(report_period_start_date AS TIMESTAMP), MONTH) ORDER BY month - FRED INDPRO (Industrial Production Index)
Show SQL
SELECT "date", value FROM econ.fred_indicators WHERE series = 'INDPRO' AND "date" >= DATE '2016-01-01' ORDER BY "date" - AAR Rail Industry Overview, April 2026 (primary source, fetched in full via web_fetch)
- Cass Freight Index methodology (primary source, fetched in full via web_fetch)
- SONAR Knowledge Center — ATA Truck Tonnage Index (TTON) (primary source, fetched in full via web_fetch)
- Transport Topics — Truck Tonnage Nudges 0.2% Higher in November (fetched in full via web_fetch)
- FreightWaves — Rail and truck data highlight a strong industrial economy (fetched in full via web_fetch)