The Labour Force Survey now gets fewer than a quarter of its households to respond. The HMRC payroll flash gets revised by more than the monthly change it reports. And the two disagree on direction almost half the time. This page measures each problem, then builds a demand-side cross-check from Indeed, Textkernel, ONS vacancies, the claimant count, the BoE Decision Maker Panel and public-sector job boards.
Every chart: ⧉ copy the image to paste · png 2× raster for slides · svg vector, editable · csv the numbers actually plotted · ⧉ data the same numbers as TSV for a spreadsheet. Exports carry title, units and source.
Graded on four tests: sample health, revisions, coherence with the other sources, and sensitivity to seasonal adjustment. Red: don't use it alone for month-to-month calls. Amber: usable with a band around it. Green: fit for purpose.
| Series | Main problem | Key measure | Grade | Use it for |
|---|
The response rate counts the households that complete the interview out of all those approached. Wave 1 is the first interview; later waves interview the same households again.
ONS LFS performance and quality monitoring reports. "Incl. partial" counts households with some proxy or partial responses.
Individuals interviewed per quarter (left, thousands). Standard error relative to 2019 Q4 assumes simple random sampling, √(n2019Q4/n).
The same months, as published in successive Labour Market releases. Re-weightings shift the whole history at once.
| Series | Mean |rev| 2016–19 | Mean |rev| 2022–26 | Mean rev 2022–26 | Jun 2024: first → rev |
|---|
Revision = latest estimate of the 3-month-on-3-month change minus the first published one. Levels in thousands; rates in percentage points.
The RTI flash for month t comes out about three weeks after the month ends. It is filled in for late filers and revised for a year or more.
Bars: revision (latest − flash). Lines: the flash and the current vintage.
| Window | n | Mean rev, 2nd | Mean rev, latest | MAE, latest | Revised up | SD of change |
|---|
000s. "SD of change" is the standard deviation of the latest monthly changes in that window: the signal the flash is trying to measure.
| Month | Flash | Latest | Miss |
|---|
Every published release of the industry tables, back to the first that carried them: . To keep seasonality from looking like dispersion, each source is measured on its natural change. RTI: monthly change, seasonally adjusted. Workforce Jobs: quarterly change, seasonally adjusted. LFS EMP13: annual change, because the table is not seasonally adjusted. A revision is the latest estimate minus the first published one.
| Sector | Mean rev | Mean |rev| | SD of change | |rev| ÷ |change| | Share of total revision | Revised up |
|---|
Interquartile range of the sector changes in each period, 000s. If the first-print line sits above the latest, early sector numbers are more scattered than the truth they converge to.
| Sector | Latest | Flash | Revised | Revision | History median | History middle half | Latest vs history |
|---|
Thousands of jobs. "Latest vs history" flags a latest value beyond the whiskers, i.e. unusual for that sector over the chosen history.
LFS employees (household survey), PAYE RTI payrolled employees (tax records), Workforce Jobs employee jobs (employer survey, quarterly).
12-month log growth.
Two separate questions. Does the published seasonally adjusted series still contain seasonality? (Tested with the QS and F-tests on 2022–26.) And how much would the answer change under a different, equally defensible method: X-13 re-run on today's data, STL, or 2019's factors held fixed?
The same unadjusted data run through each method.
Spread between methods vs the size of a typical monthly move.
Change in each calendar month's factor, converted to employees at today's level. Only January to August: 2026 factors exist only for months already published.
| Series | 2010–19 | 2022–26 |
|---|
Advert counts measure demand for labour, not employment, and they lead it. Textkernel is the advert feed the ONS itself publishes. It had a known scraping break from Nov 2023 to Jul 2024, which X-13 treats as outliers.
Indeed postings (monthly mean of daily index), Textkernel adverts (X-13 SA), ONS Vacancy Survey (AP2Y).
Indeed Hiring Lab aggregate postings index, seasonally adjusted.
ONS vacancies and Textkernel adverts (thousands) per claimant (thousands, SA). The claimant count is affected by Universal Credit rules, so read it for direction, not level.
One dynamic factor is estimated over the annual growth of Indeed, Textkernel, ONS vacancies, the inverted claimant count and DMP realised employment growth. The factor is then mapped onto RTI annual growth, with 2020-03 to 2021-09 left out of the fit. The shaded band is ±1.96 × the regression standard error.
The employee pay bill is employees × hours × hourly pay. It is built two independent ways: from the survey side (LFS employees × LFS average weekly hours × AWE pay per hour) and from HMRC's own PAYE aggregate pay. Both are deflated by CPI (or CPIH), fetched through bzhmacro econdata. Annual growth is split exactly, in logs: jobs + hours + hourly pay − CPI = real growth.
Survey-side pay bill. Bars: contributions to annual log growth from jobs (LFS employees), average weekly hours, hourly pay (AWE ÷ hours) and prices (minus CPI). They add up exactly to the line, the real pay bill's growth. Dotted: the same real growth on HMRC aggregate pay. From 2022: the furlough years' swings in jobs and hours (±20pp) would swamp the scale.
| Cohort | Share of pay bill | £bn / month | Jobs | Mean pay | Nominal pay bill | CPI | Real pay bill |
|---|
Log changes, %. HMRC PAYE RTI aggregate pay and payrolled employees by cohort; mean pay = pay bill ÷ employees. RTI has no hours by cohort, so jobs and mean pay are the split here. Under-18s are a tiny, volatile group.
Deflated by CPI. Pick up to four cohorts.
RTI by industry: public administration, education, health & social work vs everything else. These industries include private providers, so read this as an upper bound on the public sector.
Equal-weight geometric mean of Indeed's sector indices. Indeed doesn't publish weights.
Groups of SOC 4-digit codes. A month is left blank where the ONS suppressed any component cell.
| Board · facet | Live adverts |
|---|
Latest daily snapshot.
Pipeline. pipeline/fetch.py downloads every raw file and records it in raw/manifest.json with its URL, hash and timestamp. vintages.py rebuilds the LFS first-print history from archived Labour Market releases. diagnostics.py runs the quality tests (sections 02–05). alternatives.py builds the demand indicators, factor model and nowcast (06–08). public_sector.py appends a daily snapshot of the job boards. Seasonal adjustment uses X-13ARIMA-SEATS (US Census binary) through statsmodels, plus STL.
Not yet included. Adzuna (needs an API key; the next source to add, for vacancies by region and salary). REC/KPMG Report on Jobs and the PMI employment indices are paywalled. DWP Find a Job returned 503 to automated requests.