Repository navigation
Bus fares: outside London the yield removes all concessionary journeys, but bus_pass_eligible makes only older-person eligibility and under-5s free #2640
Description
Summary
Outside London, the yield and the free-travel flag use two different definitions of concessionary travel.
yield_per_boarding.ENGLAND_OUTSIDE_LONDONis passenger receipts over fare-paying boardings,y = R / (B − C). C is DfT's BUS01c total concessionary journeys: 519.1m in 2024-25. Of these, 402.8m are older and disabled (ENCTS) journeys and 116.3m are other concessions.- The formula charges y for every boarding of a person who is not flagged
bus_pass_eligible. Outside London, Microcosm flags people eligible for the older-person concession and children under 5. On the certified UK build that is 420m boardings. - So about 99m boardings that the yield already removes as concessionary are priced as fare-paying.
Effect on the certified build (microcosm-uk-2024-25-national-20261019T083323Z-6cba5d71, model year 2024, current law). The 2024 figures are the same on 2.132.6 and 2.152.7:
- Fare-paying boardings outside London are 1,417m, against 1,331m published (+6.5%).
- Other-local-bus fares of residents outside London are £2,210m, against BUS05ai £2,070m (+6.8%).
- London, Scotland and Northern Ireland are within 2.0% of their published receipts.
Proposal: make C match the flag the dataset supplies. In the near term (A), C becomes the BUS01c older-and-disabled count. Later (D), the formula accepts a supplied concessionary share per person.
Existing issues. None covers this. Searches for concessionary, bus_pass_eligible, yield_per_boarding and bus fare return #1871, #1869, #1779 and #2542 (all closed), and two unrelated matches (#2307, #2162). The docs say "the dataset owns that eligibility flag", but they do not say which concessionary count the yield must remove for it.
All figures below are published DfT figures, engine parameters, or weighted totals and shares at nation or region level.
Mechanism today
Line references are to main at 3bcacaaa2 (2.152.7).
parameters/gov/dft/bus/yield_per_boarding.yaml:21-22: England outside London is £1.5547, which is £2,069.95m / (1,850.51m − 519.11m). The derivation is atdocs/engineering/bus-fares.md:47-56.variables/gov/dft/person_bus_fare_spending.py:72-80starts other-local-bus boardings from that yield, moved by the area's fares index since Bus fares: follow published fares by area and year, and price cap changes from a fitted fare table #2546.:117-118prices a person's boardings at zero only whenbus_pass_eligibleis true.scripts/fit_bus_cap_savings.py:17-19uses the same fare-paying boardings (BUS01a less BUS01c total concessionary) for 2023-24 and 2024-25, when it fits the cap-savings table to the fare-cap grants.
Evidence
BUS01c, England outside London, millions of journeys:
| Year | Total concessionary | Older and disabled | Other |
|---|---|---|---|
| 2022-23 | 470.7 | 368.8 | 101.9 |
| 2023-24 | 499.7 | 391.0 | 108.7 |
| 2024-25 | 519.1 | 402.8 | 116.3 |
Who rides on these concessions. National Travel Survey (SN 5340), 2022 to 2024, residents of England outside London, other-local-bus boardings weighted by W5 × JJXSC × NumBoardings, classed by the ticket table as Microcosm's stage classes them:
- People outside the flag ride on a concession for 12.0% of all boardings:
- scholar's passes, 6.9% (mostly ages 5 to 20);
- disabled person's passes, 2.8%;
- other concessionary tickets, 1.7%;
- older-person passes held before eligibility, 0.6%.
- People outside the flag ride free with no ticket for a further 1.9% of boardings.
- People inside the flag pay a fare or use a season ticket for 1.2% of boardings.
Each share rests on at least 10 unweighted boardings and 10 people.
London uses C = total concessionary, with a flag of 60 and over or under 18. Its eligible boardings are 504m against 498m, so London is consistent. Scotland and Northern Ireland use their own counts.
Proposal
(A) Near term: C = BUS01c elderly_disabled_concessionary for England outside London.
- y becomes £2,069.95m / (1,850.51m − 402.85m) = £1.430, which is 8.0% lower.
- The other concessions are then absorbed by the yield, as Microcosm's stage declaration already assumes. These are mostly young people's passes, which pay reduced fares or are funded by councils.
- On the certified build, other-local-bus fares outside London move from +6.8% to about −1.8% against BUS05ai. The residual is disabled pass holders, who are inside C but still charged, set against under-5s, who ride free in the model.
- Re-run
scripts/fit_bus_cap_savings.pywith the new fare-paying boardings (BUS01a less BUS01c older and disabled, for 2023-24 and 2024-25). Update the fitted table, the docs table and the tests that pin the yield. - London, Scotland and Northern Ireland keep their definitions.
(D) Later: a supplied concessionary share per person.
- Accept a person-level share of boardings that are concessionary, for example
local_bus_concessionary_share. Price(1 − share)of a person's boardings, in place of the~bus_pass_eligibleswitch. - C can then stay at the total, and a dataset can impute scholar's and disabled passes from the NTS ticket types.
- Keep
bus_pass_eligibleas the fallback when no share is supplied.
Coordination
Microcosm's stage computes the same yield from vendored facts, and bus_engine_parity checks it against this parameter at 0.1%. So the change lands in both repositories, in this order: a release here, then the Microcosm selectors and lock (PolicyEngine/microcosm#1385).
Since PolicyEngine/microcosm#1324, the national calibration measures the England fare rows through this formula. Until both changes land, the next build will absorb the gap into the weights.
Not in this issue
- The cap-savings table and the fares index, which Bus fares: follow published fares by area and year, and price cap changes from a fitted fare table #2546 changed.
- Wales, which stays unpriced.
- The lowest frequency band in Microcosm's trip imputation (UK bus travel: the lowest frequency band gives about half the population trips, so incidence counts are about double microcosm#1386).
Related
#1871, #2542, #2546. PolicyEngine/microcosm#930, PolicyEngine/microcosm#954, PolicyEngine/microcosm#1324, PolicyEngine/microcosm#1331, and the companion issue PolicyEngine/microcosm#1385. Found while checking PolicyEngine/bus-fare-cap#12.
Activity