v1.0 industry review edition. Coverage, methodology and entity pages open for correction through March 2027. Release cadence.
Email [email protected].

Path utilisation: activation rate of scheduled freight paths

Last updated 11 May 2026

How Gauge Intelligence computes the per-operator activation rate of freight paths in the Working Timetable, what the "ghost path" count measures, and what it does not.

Path utilisation is the proportion of an operator’s freight paths in the Working Timetable that activate as a train movement on the scheduled day. A scheduled path that records no activation is a “ghost path” for that day. This page documents what the metric measures, the data sources it draws on, and — critically — the interpretation it does not support.

The metric

For a given operator and reporting period, we compute three counts and one rate.

The scheduled count is the number of distinct (train_uid, run_date) pairs for which a non-cancelled schedule applies on that date. Each pair is a single path-day: the same train_uid scheduled across five weekdays contributes five pair-days, not one.

The activated count is the number of those pairs for which a non-cancelled TRUST activation produced a Journey row in our database. Activation is recorded when Network Rail’s TRUST feed signals that a schedule has been called into service for a specific day.

The ghost count is scheduled − activated: scheduled path-days that did not produce an activation.

The activation rate is activated / scheduled, with a 90% Wilson confidence interval on the resulting proportion. Wilson is used because the denominator can be small in narrow date ranges or thin operator footprints; the interval is asymmetric and stays within [0, 100].

The period headline frames the rate as a gap in percentage points against the national mean for all known freight operating companies in the same window. This is a comparator, not a benchmark — it normalises out the period (weather, possessions, traffic pattern) without endorsing the national mean as the right target rate.

STP precedence

The CIF schedule data carries four short-term-planning (STP) variants: permanent (P), new STP (N), overlay (O), and cancellation (C). Priority runs C > O > N > P — a cancellation supersedes an overlay, which supersedes a new STP, which supersedes a permanent schedule.

For each (train_uid, run_date) pair we apply that precedence. When a C schedule applies on that date, the pair is STP-cancelled and excluded from both the scheduled denominator and the ghost count. The operator has formally cancelled that path-day; treating it as a ghost would inflate the apparent unused-capacity signal.

The STP-cancelled count is reported separately on the panel for transparency.

VSTP exclusions

VSTP activations — short-notice contingency moves added to the operational schedule inside the 24-72 hours before running — are TRUST activations for which no Schedule row exists in our database. We exclude them from both numerator and denominator: a VSTP move was never scheduled in the WTT, so it cannot be a ghost; it also does not contribute to the activation count, which measures scheduled-and-realised paths.

VSTP volumes vary by operator and period. The exclusion is principled but it does mean the activation rate is not a count of “trains the operator ran” — it is specifically “scheduled paths that activated.”

Operator linkage

Schedule rows carry an atoc_code field but it is unusable for FOC identification: all freight operating companies share the value ZZ in the CIF data. We link a schedule to an operator through the freight_services.train_uid universe — the set of UIDs that the operator has activated at any point.

This captures the operator’s known WTT footprint at the cost of missing UIDs newly introduced within the reporting period and never activated. That class is small and slow to update; period reports are stable against it.

What the metric measures, and what it does not

The activation rate is a defensible count of WTT-resident path-days realised as journeys. It is not a measure of operator delivery performance against intent.

CIF data routinely includes capacity-reservation paths: schedules an operator holds to preserve optionality, and paths reserved against demand that may or may not materialise on a given day. It also includes paths that exist under permanent schedules but are operationally skipped on days the operator does not have traffic.

A 60% activation rate in this sense does not imply the operator failed to run 40% of its intended traffic. It implies that 40% of the path-days resident in the WTT did not materialise as activations — for whatever combination of reasons: demand pattern, planned contingency, customer-side cancellation, short-notice operational decision.

This is why the panel reports the count rather than narrating “performance.” A more nuanced “intended-to-run rate” would require isolating the operator’s true day-of-operation intent from capacity-reservation patterns, and that intent is not in our schema. We publish the activation rate as a transparency datum: this is the WTT footprint, this is what activated, this is the gap. The reader can form their own interpretation.

Reproducibility

The engine is Periodic::PathUtilisation at app/models/periodic/path_utilisation.rb. Pairs are produced by iterating each calendar date in the window and querying Schedule.runs_on(date) against the operator’s UID universe, filtered by stp_indicator. Set operations on (uid, date) tuples produce the final counts. The Wilson interval reuses the same helper that scores A2F proportions elsewhere in the application — Annual::WilsonInterval — so confidence intervals on activation rate and A2F use the same arithmetic.

Periodic::PathUtilisationAssessment (app/models/periodic/path_utilisation_assessment.rb) is the assessment wrapper called from period reports. It invokes the engine, classifies severity (#compute_severity), and builds the rendered headline (#build_headline). Every “activation rate X%” panel in a period report resolves through this assessment class.

Per-corridor breakdowns and per-path scheduling-pattern analysis are not derived here. They are computed for the commercial-licensed products from the same (uid, date) substrate, joined to the corridor segments through JourneySegment and to BPLAN’s per-link geography for capacity analysis.