On-Time Performance Trend
% of flights ≤ 15 min late · 2019–2024What it shows: annual OTP versus the 80% IATA target. Finding: the 2020–21 spike reflects collapsed COVID traffic, not improved ops. The 2022 dip is the post-COVID demand surge outrunning resourcing — recovery in 2024 is partial, still well below 80%.
Flights Operated
Annual flight volumeWhat it shows: total flights operated each year. Finding: 2024 is back to pre-COVID volume (367k vs 364k in 2019), confirming the OTP shortfall isn't a "we're flying more than ever" excuse — it's an operational quality issue.
Average Delay Trend
Mean arrival delay in minutesWhat it shows: mean arrival delay, with the 15-minute industry target as reference. Finding: 2022–23 averaged delays well above 20 min — costing roughly £80M/yr each — and recovery is incremental rather than step-change.
Cancellation Rate Trend
% of scheduled flights cancelledWhat it shows: cancellation rate vs the 2% benchmark. Finding: 2024 cancellation rate (0.88%) is well within target — easyJet's reliability is strong; the issue is punctuality on the flights that do operate.
The network spans 18 UK airports and 511 routes. The map below colours airports by on-time performance — green = strong, red = weak — with bubble size scaled to flight volume.
Network Map
How to read it: each bubble is a UK airport in the easyJet network. Bubble size = annual flight volume; colour = OTP (red < 65%, amber 65–80%, green ≥ 80%). Hover any bubble for exact figures. Larger / redder bubbles are the ones consuming the most operational attention.
Top 10 Best Routes
Highest on-time performanceWhat it shows: easyJet's strongest routes by OTP for the selected year. These are existence-proofs that 80%+ OTP is achievable on the network — they are useful benchmarks for replicating operating practice elsewhere.
Bottom 10 Worst Routes
Lowest on-time performanceWhat it shows: easyJet's weakest routes. The Predictions and Case Study pages dig further into these — most cluster around Mediterranean leisure destinations from Gatwick.
All Routes
The delay distribution matters as much as the average. Two airlines with identical mean delays can have very different tail risk — and severe delays (60+ min) are disproportionately expensive due to EC 261/2004 compensation.
Delay Distribution
% of flights by delay bandWhat it shows: the full delay distribution, not just the average. Reading right-to-left: green bars are flights arriving early or on time; amber are mildly late; red bars (60+ min) are the operationally and commercially expensive tail.
Delay Statistics
Distribution shapeWhat it shows: the distribution's central tendency (mean/median), spread (standard deviation), and asymmetry (skewness). Right-skewed delay distributions — typical of airline ops — mean a few flights pull the average up disproportionately.
Airport Delay Heatmap
How to read it: rows are UK airports, columns are years, cell colour is average arrival delay (green = low, red = high). Look for hot rows (consistently bad airports) vs hot columns (bad years across the board, e.g. 2022).
Airport-level performance varies hugely — Liverpool hits 80%+ OTP while Gatwick struggles below 60%. This is partly route mix and partly airport infrastructure (slot pressure, ground handling, ATC sequencing).
Airport OTP Ranking
On-time performance by departure airportWhat it shows: easyJet's OTP at each UK base, sorted ascending. The 80% target line makes the gap visible at a glance.
Volume vs Delay
Larger airports trend toward higher delaysWhat it shows: a scatter of flight volume against average delay, with a fitted regression line. Points above the line are airports underperforming for their size; below are overperforming. Marker colour shows OTP.
Airport League Table
Search and sort all UK airportsHow to use it: click any column header to sort; type in the search box to filter. Useful for ad-hoc lookups during meetings.
Year-over-Year OTP Change
What it shows: the year-over-year shift in OTP at each airport. Green bars are improving airports; red are deteriorating. Magnitude indicates how rapid the change is.
UK short-haul OTP collapsed in 2022 across nearly every carrier — the post-COVID demand surge outran resourcing. Recovery in 2023–24 has been partial and uneven; easyJet's relative position vs Ryanair is the most operationally meaningful comparison.
OTP Trend by Airline
2019–2024 · easyJet vs major UK carriersWhat it shows: annual OTP for each major UK carrier. easyJet's line is bold. Finding: the 2022 collapse was sector-wide; recovery has been incremental. Ryanair recovers fastest, suggesting LCC operating discipline pays off post-shock.
Market Position
Volume vs OTP — quadrant viewHow to read it: dashed lines mark the median volume and median OTP. Top-right quadrant = high volume + high OTP (best position); bottom-right = high volume + low OTP (operational red flag — that's currently easyJet UK).
Performance Radar
Multi-dimensional comparisonWhat it shows: a five-axis comparison: OTP, low-delay, low-cancel, volume, and consistency. A larger filled area = stronger overall operation. Useful for seeing where each carrier wins on which dimension.
Annual Summary
A quantile regression model forecasts next-year OTP per route, with 80% prediction intervals. Validated via rolling-origin backtesting — train on prior years, predict the next, score against actuals. Output is ranked by £-at-risk, not OTP percentile, so Operations sees what to prioritise in the language they budget in.
Backtest results — does the model actually work?
Rolling-origin time-series cross-validation: train ≤Y → predict Y+1, score against actualsHow to read it: each bar is a "train on history → predict next year → score" cycle. Bar height = MAE (lower is better); the line shows what fraction of actuals fell inside the model's 80% prediction interval. Finding: the 2022 fold is bad (no model could predict the post-COVID demand surge); 2023 and 2024 folds settle to ~10 pp MAE with well-calibrated intervals — meaningful for triage despite annual-only data.
Feature Importance
What drives next-year OTP forecastsWhat it shows: the share of decisioning attributable to each input feature. Finding: prior-year OTP and delay dominate (autocorrelation is strong), but the engineered airport pooled OTP, peer best, and 3-year trend slope add real lift over a naive lag-only baseline.
Calibration check
Predicted vs actual on 2024 holdoutHow to read it: dots show binned average actual OTP versus predicted OTP; the dashed 45° line is perfect calibration. Honest finding: the model is well-calibrated above 65% predicted but slightly pessimistic below it — when it predicts ~45% the actual averages 53%. That's regression-to-the-mean the model doesn't fully capture. Operationally fine for ranking, but a known bias worth flagging.
20 Routes — Highest Forecast Delay £
Ranked by predicted next-year delay cost (predicted_delay × volume × £81)How to use it: these are the routes carrying the most predicted £ next year — the priority queue for operational intervention. Tier badges (Critical / High / Watch) translate the OTP forecast into a response level. Prediction intervals show uncertainty as well as the point estimate.
20 Most-Stable Routes
Routes with strongest predicted OTPHow to use it: existence-proofs of strong easyJet operations on which next-year forecasts are also healthy. Investigate what's transferable — turnaround discipline, crew rostering, gate allocation — to the high-risk list.
This is a route-level trajectory forecast — useful for prioritising operational attention and quantifying £ exposure, not for forecasting individual flights. Annual-only CAA data caps the achievable accuracy; with internal data (turnaround timestamps, crew rosters, aircraft pairings, weather) the same architecture would deliver substantially tighter intervals. The model deliberately excludes the 2022 demand-surge fold from the headline metric because no model could have called it; that's transparency, not cherry-picking.
Every minute of arrival delay carries a defensible all-in cost (crew, fuel, ground handling, reactionary cascade, EC261 compensation share). Multiplying that out converts every chart on this dashboard into a £ figure — which is the language Operations and Commercial actually budget in.
Annual delay cost — 6-year trend
Total network delay cost per year, GBP millionsCost concentration by base
Where the delay £ accumulateMethodology — how this £ is computed
All-in tactical delay cost, GBP per arrival-delay minute
Cost-per-minute is set at £81, derived from Eurocontrol's
University of Westminster European-airline tactical delay cost model (2022 update). Components include flight-deck and cabin crew cost, fuel burn during taxi/holding, ground-handling overrun, reactionary cascade onto downstream rotations, and a passenger-compensation share weighted by EC 261/2004 thresholds. Total network cost = Σ (operated_flights × avg_delay_min) × £81. This is a direct cost figure — it does not include lost ticket revenue, brand-trust damage, or load-factor erosion on subsequent bookings.
Two airlines with identical OTP can run very different operations. One genuinely arrives close to schedule; the other inflates OTP by padding schedules so flights routinely arrive 15+ minutes early. Padding is real money — extra block time costs aircraft utilisation, crew hours, and slot inefficiency. The padding score below = "% of on-time arrivals that arrived 15+ min early ÷ total OTP". High score = inflated OTP; low score = lean operation.
Padding score by UK carrier — 2024
Lower = leaner schedule, OTP earned not boughtOTP composition
Stacked breakdown of how each airline reaches their OTPEach bar shows the three "on-time" buckets that sum to OTP. Tall green segments mean a lot of flights arriving 15+ minutes early — schedule padding. Tall amber segments mean flights arriving close to scheduled time — lean operations.
Padding by easyJet base
Within easyJet UK, how each base operateseasyJet UK's padding score (0.075) sits between Ryanair (leaner) and BA / Jet2 (more padded). The gap to Ryanair is ~1pp — meaningful but not decisive. Padding more is not the lever: easyJet is already running close to LCC discipline. The OTP gap to peers must come from operational tightness (turnaround, crew sign-on, stand availability), not schedule slack. The exception is selective padding on chronic cascade-prone routes — see Case Study P1.
For every easyJet route, find the airline operating the same origin → destination at the highest OTP. The gap is the concrete, named, peer-validated improvement opportunity — and it comes with a £ value: gap-pp × flights × cost-per-minute. This is a Day-1 task list.
Top opportunity routes — 2024
Routes ranked by recoverable on-time flights (gap × volume)Each row is an existence proof: a peer airline runs this exact route at materially higher OTP. The "additional on-time flights" column estimates the gain if easyJet matched the peer's OTP at current volume.
The most striking row is MAN → AMS where easyJet UK trails easyJet Europe (a different AOC, same brand) by 16.2pp on the same physical route. Same aircraft type, same airports, different operating model — the cleanest internal benchmark possible. Worth a structured comparison of crew agreements, base practices and turnaround discipline.
Gatwick OTP — 6-year trajectory
COVID years (2020-21) reflect collapsed traffic, not improved opsWhat it shows: Gatwick OTP across the 6-year window with the network average as reference. Finding: 2023 was the worst year (51.8% OTP); recovery to 59% in 2024 is real but still 7 pp below network and 21 pp below the IATA target.
Average delay trend
Recovery underway from 2023 peakWhat it shows: mean arrival delay at Gatwick over 6 years. Finding: 2023 averaged 28.9 min — almost 2× the 15-min industry target. 2024's 23.6 min is improvement but still represents ~£236M of delay cost from this base alone.
easyJet bases ranked by OTP
Gatwick is the worst-performing easyJet UK base in 2024What it shows: easyJet's OTP at each UK base. Gatwick (red) is the worst by a clear margin. Liverpool achieves 80%+ on the same airline, same fleet — proving the network can hit the IATA target in the right operating environment.
Airlines at Gatwick
Most carriers struggle here — this is partly a Gatwick problemWhat it shows: every major airline operating at Gatwick. Finding: almost every carrier is below 70% OTP. This is not an easyJet-only problem — it's a Gatwick problem that everyone shares.
Gatwick's underperformance is partly airport-shared (every Gatwick operator runs in the 50–70% OTP band) and partly route-mix. The next two charts isolate the airport effect from the airline effect.
Pooled OTP by UK airport — all carriers, 2024
Gatwick is the worst UK airport for OTP regardless of who operates thereWhat it shows: volume-weighted OTP across every UK airport, all carriers pooled — isolates the airport from any single airline's mix. Finding: Gatwick (60.2%) is the worst-performing UK airport in 2024 — Belfast City achieves 79% on the same dataset.
The Gatwick penalty — same airline, two locations
Each airline's OTP at Gatwick vs their OTP at every other UK airport. The gap is the airline-controllable residual after the airport effect.How to read it: grey bar = the airline's OTP at non-Gatwick UK airports; coloured bar = same airline's OTP at Gatwick. The gap on each pair is their Gatwick penalty. Every airline gives up ~8–15 pp at Gatwick — Ryanair is the outlier at only 2.5 pp, suggesting operational discipline can soften the airport effect.
Every Gatwick operator gives up OTP relative to their other UK operations — that's the airport effect (slot pressure, ground handling, runway configuration, ATC sequencing). easyJet's penalty is −10.7 pp [95% CI: −13.1, −8.5] — a clearly significant gap, well separated from zero, computed by bootstrapping the underlying 118 Gatwick × 463 non-Gatwick routes (2,000 resamples). TUI (−9.7), BA mainline (−8.1), Wizz UK (−10.5), and Wizz Malta (−14.5) all sit in the same broad band with overlapping intervals.
The honest finding on Ryanair: their headline penalty of −2.5 pp looked like an outlier, but the bootstrap CI is [−4.5, +4.9] — the interval crosses zero. With only 4 Gatwick routes in our pool the estimate is too noisy to claim they perform genuinely differently. We can't rule out "no penalty" but we also can't rule out the typical 8–12 pp gap. Implication: the airport-shared component (~8–12 pp on most operators) is statistically robust; the "Ryanair operational discipline" narrative is not well-supported by this dataset. About ~80% of easyJet's Gatwick gap is airport-shared, but the residual airline-specific component should be framed cautiously — the route-mix chart below isolates that further with a stronger evidence base.
Route-segment split — the airline-specific smoking gun
Mediterranean / leisure routes (23% of volume) drag Gatwick OTP from 61% down to 59%What it shows: easyJet's Gatwick routes split into Mediterranean/leisure (24 destinations) vs everything else. Bars are OTP; diamonds are average delay. Finding (with 95% CI): the leisure segment trails the other segment by 9.7 pp [95% CI: 5.5–15.3] — bootstrapped over 22 Med routes vs 96 Other routes. The interval is comfortably above zero, so this is a statistically robust airline-controllable lever. See Prescription P1 below.
Watch-list — Gatwick's chronic-delay routes
Routes ranked by lowest 2024 OTP (≥200 flights)What it shows: the 10 Gatwick routes with the worst OTP at material flight volumes. Finding: almost every entry is a Mediterranean leisure destination — confirming the segment-level signal at the route level. These routes anchor Prescription P3.
What's working
Top 5 Gatwick routes — most exceed the 80% targetWhat it shows: Gatwick routes that do hit the 80% target. Finding: these are mostly Iberian, alpine and Northern European destinations — same airport, same fleet, much better outcomes. Useful as internal benchmarks.
This case study uses only public CAA data. The next step internally would be to enrich it with operational metrics — turnaround buffers, gate-out-of-service rates, crew-roster pressure, aircraft-pairing tables — to validate the cascade hypothesis on Mediterranean rotations and quantify the OTP recovery achievable from each prescription. I'd target a pilot programme on the six worst routes within one summer schedule and measure against a matched 2024 baseline.
Data Sources
| Source | Description | Frequency | Coverage |
|---|---|---|---|
| UK CAA Punctuality Statistics | Route-level on-time performance, average delay, delay-band distribution and cancellation counts for all UK reporting airports. | Annual | 2019 – 2024 |
| UK CAA Airport Reference | IATA codes, names and coordinates for UK reporting airports. | Static | 26 airports |
| Airline Reference | Operating carrier names, IATA/ICAO codes and country of registration. | Static | 490 carriers |
KPI Definitions
| KPI | Definition | Formula | Target |
|---|---|---|---|
| OTP (A15) | Flights arriving within 15 minutes of scheduled time. | flights ≤15m late ÷ flights operated | ≥ 80% (IATA) |
| Average Delay | Mean arrival delay across all operated flights. | Σ(actual − scheduled) ÷ operated | ≤ 15 min |
| Cancellation Rate | Cancelled flights as % of scheduled. | cancelled ÷ scheduled | ≤ 2% |
| Severe Delay | Flights arriving more than 60 minutes late. | flights >60m late ÷ operated | ≤ 5% |
Database Schema (3NF Star)
These queries run offline, not here. DuckDB is used in the build pipeline to transform the CAA data into the pre-computed JSON this dashboard loads. The published site is static — it holds no database and executes no SQL at runtime. The schema and queries below are included to show how the analysis was actually done.
Fact table holds annual route-airline grain; three dimension tables conform on surrogate keys. All weighted aggregates use flown_flights as the weight.
-- Fact
fact_punctuality (
fact_id PK,
airline_id FK, origin_airport_id FK, dest_airport_id FK, date_id FK,
scheduled_flights, flown_flights, cancelled_flights,
pct_ontime_15, avg_delay_mins,
pct_15_30, pct_31_60, pct_61_120, pct_121_180, pct_181_360, pct_361_plus
)
-- Dimensions
dim_airline (airline_id PK, airline_name, iata, icao, country, type)
dim_airport (airport_id PK, name, iata, icao, lat, lon, country, city)
dim_date (date_id PK, year, quarter, month, period_label)
Example SQL Queries
1 · Rank airlines within each airport (window function)
SELECT
a.airport_name,
al.airline_name,
f.pct_ontime_15,
RANK() OVER (PARTITION BY a.airport_id ORDER BY f.pct_ontime_15 DESC) AS otp_rank,
f.pct_ontime_15 - AVG(f.pct_ontime_15) OVER (PARTITION BY a.airport_id) AS vs_airport_avg
FROM fact_punctuality f
JOIN dim_airline al ON f.airline_id = al.airline_id
JOIN dim_airport a ON f.origin_airport_id = a.airport_id
WHERE f.year = 2024 AND f.flown_flights >= 100
ORDER BY a.airport_name, otp_rank;
2 · Weighted YoY OTP with rolling 3-year average (CTE + window)
WITH annual AS (
SELECT
al.airline_name,
d.year,
SUM(f.flown_flights * f.pct_ontime_15) / NULLIF(SUM(f.flown_flights), 0) AS weighted_otp,
SUM(f.flown_flights) AS flights
FROM fact_punctuality f
JOIN dim_airline al ON f.airline_id = al.airline_id
JOIN dim_date d ON f.date_id = d.date_id
GROUP BY al.airline_name, d.year
)
SELECT
airline_name, year, weighted_otp,
AVG(weighted_otp) OVER (PARTITION BY airline_name ORDER BY year ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) AS rolling_3yr,
weighted_otp - LAG(weighted_otp) OVER (PARTITION BY airline_name ORDER BY year) AS yoy_change
FROM annual WHERE flights >= 500
ORDER BY airline_name, year;
Statistical Methodology
Bootstrap confidence intervals on the Case Study findings
The Case Study page reports several point estimates as differences of volume-weighted means — most notably the Gatwick penalty per airline (carrier's Gatwick OTP minus their non-Gatwick OTP) and the Med-vs-Other segment gap for easyJet at Gatwick. Closed-form confidence intervals for weighted-mean differences are awkward (Welch's t with weights isn't standard), so we use a nonparametric percentile bootstrap:
- The resampling unit is one route — i.e. an (origin, destination, year) row from the fact table, restricted to routes with ≥20 flights to drop noise.
- For each comparison we resample with replacement from both pools independently
B = 2,000times. - Each resample recomputes the volume-weighted OTP for each pool and takes the difference.
- The 95% CI is the 2.5th and 97.5th percentiles of the resulting bootstrap distribution.
- Fixed random seed (
seed=42) so the figures are reproducible across rebuilds.
Honest reading. A CI that excludes zero means the gap is unlikely to be sampling noise. A CI that includes zero (e.g. Ryanair's [−4.5, +4.9] on the Gatwick penalty) tells us the apparent effect could be explained by which routes happen to be in our sample — we shouldn't claim it as a real finding. The bootstrap is the simplest defensible way to publish these gaps without overclaiming.
ML Model Methodology
Predictive Delay Risk Classifier
Objective
Binary classification: predict whether a route will fall below 60% on-time performance in the next reporting period, enabling proactive operational intervention.
Algorithm
Gradient Boosted Decision Trees (sklearn GradientBoostingClassifier). Selected for handling mixed feature types and providing interpretable importance scores.
Features
Historical airport OTP, route-level delay average, cancellation rate, flight volume, year, and route distance proxy. Engineered from fact_punctuality at the airline-route grain.
Validation
Chronological train/test split — train on 2019–2023, hold out 2024. Prevents data leakage from a random split where future periods would inform past predictions.
Performance
AUC-ROC of 0.661 on held-out 2024 data. Modest but informative — feature importance is dominated by historical airport OTP, confirming airport-level systemic effects.
Limitations
CAA data is annual only — no monthly seasonality, weather, or ATC features. COVID-19 (2020-21) skews early training years. New routes have no priors.
Data Quality Notes
Completeness
Mandatory CAA submission for all UK reporting airports. >99.5% completeness on core fields.
Consistency
Delay-band percentages cross-validated to sum to 100 ± 0.1pp. Airline names normalised (e.g. "EASYJET UK LTD").
Known Caveats
2020 reflects ~70% volume drop from COVID-19. Some regional airports suppressed below CAA reporting thresholds. Codeshares may shift between marketing and operating carrier.