This post is by Lizzie, on behalf of my colleague Will Pearse in the UK about a cool forecasting competition. It’s different in some ways than the cherry competition, but the same in other ways, predict blooms, predict beds… Only predict! (Only connect!)
Every four hours of delay in admitting patients from an emergency department adds up to roughly 25 potentially avoidable deaths per month (Howlett et al. 2026). We’re running a contest where you can forecast those risks 1–10 days ahead so UK hospitals can take action.
The data in the contest are all real healthcare data. The data come from the Bristol NHS system, with 220 variables ranging from daily counts to 15-minute feeds (e.g., bed occupancy, ambulance waiting times). You build a model in R or Python, submit by June 5, and forecasts are judged by mean squared error over short- and medium-term horizons.
The winning model(s) will be implemented in Bristol’s live system to flag emerging system pressure and so this is, literally, a chance for you to save lives with your stats know-how.
If you like this sort of thing (…and of course you do, you’re reading this blog…) then please sign up for the SPHERE-PPL mailing list. We (SPHERE-PPL) are organising a series of forecasting challenges just like this one, and we can tell you more about them.
GitHub repo to enter: https://github.com/SPHERE-PPL/NHS-EAD-forecast

Is there a problem with the data set? I’m getting the following…
unzip turingAI_forecasting_challenge_dataset.csv.zip
Archive: turingAI_forecasting_challenge_dataset.csv.zip
End-of-central-directory signature not found. Either this file is not
a zipfile, or it constitutes one disk of a multi-part archive. In the
latter case the central directory and zipfile comment will be found on
the last disk(s) of this archive.
unzip: cannot find zipfile directory in one of turingAI_forecasting_challenge_dataset.csv.zip or
turingAI_forecasting_challenge_dataset.csv.zip.zip, and cannot find turingAI_forecasting_challenge_dataset.csv.zip.ZIP, period.
You need to install Git LFS first. On macOS:
brew install git-lfs
git lfs install
git lfs pull
Nice that there’s a contest for this instead of nothing. But if it’s truly a matter of life and death, you’d think the best thing would be to bring on a team of professionals, instead of asking volunteers for their ideas like designing a new band’s tshirts.
Yeah, there is a tie-in with Lizzie’s previous post, which mentions the “lameness of volunteer culture.” I don’t entirely agree — I think more people should do more stuff for free, as opposed to fewer people doing less stuff for free — but I don’t entirely disagree either.
I partially agree – it would be better if there were an incentive/prize for this to get a broader range of competitors. But I think competitions can be good or better than just hiring a team that you don’t know will actually perform/that their solution is the best you can get. With a well-incentivised competition I think you can get very good results for these sorts of problems – but with a prize it is not exactly volunteers.
+1
I’m giving this a look: seems socially valuable, and I have some time in May for which I don’t currently have any consulting clients.
For others who are considering getting involved, here’s some information:
The input data are about 16.7M rows in raw long format; after filtering to the development period (Mar 2023–Sep 2025), this represents 930 daily time steps across 221 metrics (220 features + 1 outcome).
The outcome variable, ‘daily estimated avoidable deaths’, is “pre-calculated from ED admission delays and patient attributes across the Bristol NHS healthcare system, with no missing data.” Oddly (to me), I don’t think the variables required to calculate daily estimated avoidable deaths are included in the dataset! We know somebody has them, so why not provide them?
The mean daily value of preventable deaths is about 0.7. That’s a lot! 5 people a week!
The range is from 0.15 to 2.2.
The project comes with an R file, “NHS_example_forecast.R”
157 of the 220 potential explanatory variables are reported at 15-minute intervals; 2 are reported at 30-minute intervals. Since the outcome variable is only provided daily, this seems like overkill. I’ll probably work with daily averages, or maybe 6-hourly-averages or something like that.
8 of the variables seem to be provided at 5-hour intervals, I wonder what the story is there.
Overall, about 20% of the data are missing.
It looks like all of the variables are related to National Health Service operations one way or another, which seems like a big gap: surely weather matters, and holidays/weekends matter.
There are quite a few variables whose meaning I didn’t know, Here’s a little glossary:
Boarding — when a patient in the Emergency Department has been assessed and a doctor has decided they need to be admitted to a hospital ward, but no inpatient bed is available yet. The patient stays (“boards”) in the ED, occupying an ED cubicle while waiting. This is the central problem the contest is about — the longer a patient boards, the higher their mortality risk.
Breach — a patient who has waited longer than the NHS target time in the ED. The main target is the 4-hour standard: patients should be admitted, transferred, or discharged within 4 hours of arrival. A “breach” is any patient who exceeds this. 4hr Breach Performance is the % of patients who were not breached (higher = better). Total Breaches Since Midnight is a raw count of breaches that day.
Handover time — when an ambulance brings a patient to ED, the crew must formally hand over the patient to ED staff (verbally, clinically, physically). Until that handover is complete, the ambulance crew is stuck at the hospital and the ambulance is off the road. The metrics like Handover to Clear 15mins count how many handovers completed within 15 minutes. Handover Time Lost Since Midnight is the total crew-hours wasted waiting. This seems really important when it comes to preventing deaths, but it’s not clear to me that it factors into the “estimated avoidable deaths” statistic, which seems to be based only on what is happening to patients once they get to the hospital: if the ambulance is delayed in getting to the next patient because they are stuck at the hospital dong a handoff, and that delay leads to the death of that next patient, that death won’t be counted. So the “avoidable deaths” stat seems like an undercount!
—
BRI — Bristol Royal Infirmary. The city-centre teaching hospital.
NBT — North Bristol Trust, based at Southmead Hospital in north Bristol. The largest of the three.
WGH — Weston General Hospital. The smaller district general hospital in Weston-super-Mare, ~30 miles south.
OPEL — Operational Pressures Escalation Level. A 1–4 composite score used by NHS hospitals to signal how under pressure they are: 1 = normal, 2 = pressured, 3 = severe pressure, 4 = critical. It triggers escalation responses from
managers. Aggregated NHSE OPEL Score is the system-wide version across all three hospitals.
NHSE — NHS England. The national body that oversees the NHS. Some metrics are reported up to NHSE in a standardised format.
Escalation — “Escalation beds” are extra beds opened (often in corridors, day rooms, or repurposed areas) beyond the normal funded capacity when the hospital is full. They’re lower quality care environments and a sign of severe pressure.
The git repository includes an R program for forecasting the parameter of interest (daily estimated avoidable deaths) based on the other explanatory variables. It calculates 7-day rolling mean and standard deviation for all 220 potential explanatory variables; does a transformation to try to make them more Normal (if {skewness} > 1 it takes the the log, square root, or square, based on some rules); then uses “elastic net regression” (a mix lasso and ridge regression) to eliminate a bunch of variables and and to handle others that are highly correlated; and fits this separately for each 90-day period and uses it to predict the following ten days.
There ya go, that’s all I’ve got for you at the moment.