Fuel Detective: UK Fuel Market Intelligence
Institutional briefing format for operational decision support, anomaly triage, and postcode-level market review.
Executive Summary
Interpretation: use high-probability rows with narrow intervals as primary action candidates, then route anomaly flags to validation controls. Output rows are constrained to one row per station ID. 50.0% positive over 7.0-day horizon, threshold=0.03 days to next observation.
Decision Queue
Standardized triage policy designed for repeatable operations.
| Lane | Rows | Rule | Operational Guidance |
|---|---|---|---|
| Action Now | 0 | Probability >= 0.70, interval width <= 0.20, no high anomaly. | Prioritize for immediate route or procurement decisions. |
| Validate First | 55 | High anomaly, diesel below petrol, or wide uncertainty interval. | Perform manual checks before any policy or financial action. |
| Monitor | 5,621 | No strong trigger condition. | Retain in routine monitoring and reassess at next refresh. |
- Apply decision lanes consistently to reduce discretionary drift across operators.
- Escalate all severe anomalies into documented verification steps.
- Use postcode-sector context to calibrate local competition assumptions.
Visual Briefing Pack
Brand Positioning (Data-Derived)
Update rate is the station-weighted share of brand rows with staleness below 7 days.
| brand | stations | avg_vs_comp | update_rate_pct | price_position_score |
|---|---|---|---|---|
| COSTCO WHOLESALE | 20 | -9.17 | 100.0 | -43.34 |
| TOTAL ENERGIES | 7 | -6.40 | 28.6 | -30.66 |
| MORRISONS | 337 | -3.29 | 84.0 | -25.79 |
| TESCO | 516 | -2.92 | 18.6 | -21.53 |
| SAINSBURY'S | 316 | -2.93 | 17.1 | -20.42 |
| CENTRAL CO-OP | 18 | -2.26 | 100.0 | -12.86 |
| SOLO | 6 | -1.73 | 33.3 | -11.80 |
| HARVEST ENERGY | 11 | -0.96 | 0.0 | -8.74 |
| ESSAR | 10 | -1.85 | 30.0 | -8.69 |
| NICHOLL | 5 | -0.05 | 0.0 | -5.10 |
| UNKNOWN | 43 | -0.50 | 37.2 | -3.91 |
| GULF | 196 | -1.02 | 29.1 | -3.06 |
| JET | 169 | -1.47 | 66.3 | -2.21 |
| HIGHLAND FUELS | 8 | -1.55 | 0.0 | 3.14 |
| MURCO | 71 | -0.35 | 29.6 | 3.17 |
| APPLEGREEN | 8 | -0.56 | 25.0 | 5.12 |
| VALERO | 38 | -0.00 | 57.9 | 6.57 |
| TEXACO | 335 | -0.03 | 63.0 | 7.18 |
| MAXOL | 47 | 0.46 | 23.4 | 7.84 |
| PACE | 18 | 1.59 | 33.3 | 11.52 |
Postcode Sector Market Structure
| sector | stations | avg_price | price_range | market_type | price_leader |
|---|---|---|---|---|---|
| CR0 | 13 | 132.98 | 10.00 | concentrated | SAINSBURY'S |
| BT71 | 12 | 124.98 | 3.00 | competitive | EUROSPAR MOY |
| BT42 | 10 | 124.60 | 3.00 | competitive | WR KENNEDY AND COMPANY |
| BT23 | 10 | 125.10 | 4.00 | competitive | SOLO |
| BT47 | 10 | 126.80 | 17.00 | competitive | GO |
| SN14 | 10 | 136.00 | 30.00 | competitive | MORRISONS |
| GL2 | 9 | 127.68 | 5.00 | competitive | SAINSBURY'S |
| TQ12 | 9 | 133.41 | 34.00 | competitive | TRAGO MILLS FILLLING STATION |
| RH17 | 9 | 133.74 | 7.20 | concentrated | GULF |
| NG9 | 9 | 134.01 | 33.00 | competitive | SAINSBURY'S |
| ST5 | 9 | 137.57 | 34.00 | competitive | MORRISONS |
| BT51 | 8 | 124.30 | 5.09 | competitive | MORANS CENTRA - GO SERVICE STATION |
| BT62 | 8 | 124.88 | 2.20 | competitive | XPRESS 24HR |
| BT30 | 8 | 125.16 | 5.10 | concentrated | NICHOLL AUTO 365 DOWNPATRICK |
| BT28 | 8 | 125.28 | 5.00 | competitive | TESCO |
| BT34 | 8 | 125.65 | 2.00 | competitive | MAXOL |
| DN4 | 8 | 129.40 | 2.00 | competitive | MORRISONS |
| S60 | 8 | 130.90 | 34.00 | competitive | BP |
| PE12 | 8 | 131.89 | 7.10 | competitive | APPLEGREEN |
| SA14 | 8 | 132.31 | 34.00 | competitive | NISA LOCAL DREFACH |
| PR3 | 8 | 133.40 | 14.00 | competitive | SHELL |
| PE28 | 8 | 133.86 | 11.20 | competitive | PACE |
| GL7 | 8 | 134.40 | 3.00 | competitive | BURFORD ROAD FILLING STATION |
| SE9 | 8 | 135.90 | 4.00 | competitive | JET |
| TA6 | 8 | 137.75 | 29.00 | competitive | TOTAL ENERGIES |
Market Regime Breakdown
| regime | sectors | share_pct |
|---|---|---|
| competitive | 397 | 42.5 |
| mixed | 330 | 35.3 |
| local_monopoly | 85 | 9.1 |
| fragmented | 78 | 8.4 |
| supermarket_dominated | 44 | 4.7 |
Top Anomalies
| station | brand | postcode | e10_ppl | diesel_ppl | change_probability | anomaly_score | anomaly_level | reason |
|---|---|---|---|---|---|---|---|---|
| GATEFORD SERVICES STATION | ESSO | S80 1UE | 169.90 | 140.90 | 0.521 | 100.0 | high | diesel below petrol, large local competitor gap, extreme price quantile, brand diesel spread outlier, brand staleness MAD outlier |
| kingskerswell Services Station | ESSO | TQ12 5HG | 159.90 | 141.90 | 0.514 | 100.0 | high | diesel below petrol, large local competitor gap, extreme price quantile, brand diesel spread outlier, brand staleness MAD outlier |
| CAROLINE SERVICE STATION | VALERO | SK15 1PD | 146.90 | 132.90 | 0.508 | 100.0 | high | diesel below petrol, large local competitor gap, brand diesel spread outlier, brand staleness MAD outlier |
| Fison Way Self Serve | SHELL | IP24 1NB | 152.90 | 143.90 | 0.496 | 100.0 | high | diesel below petrol, large local competitor gap, brand diesel spread outlier, brand staleness MAD outlier |
| NEW NORTH ROAD SERVICE STATION | JET | IG6 3AD | 147.70 | 139.70 | 0.495 | 100.0 | high | diesel below petrol, large local competitor gap, brand diesel spread outlier, brand staleness MAD outlier |
| Taw Garages Service Station | ESSO | EX32 9HQ | 147.90 | 139.90 | 0.486 | 100.0 | high | diesel below petrol, large local competitor gap, brand diesel spread outlier, brand staleness MAD outlier |
| Dyffryn Service Station | ESSO | LL15 1PE | 154.90 | 144.90 | 0.481 | 100.0 | high | diesel below petrol, large local competitor gap, brand diesel spread outlier, brand staleness MAD outlier |
| OLD STREET GARAGE | ESSO | KA26 9HG | 146.90 | 142.90 | 0.465 | 100.0 | high | diesel below petrol, large local competitor gap, brand diesel spread outlier, brand staleness MAD outlier |
| THORPE SERVICE STATION | TEXACO | LS28 7NB | 139.90 | 134.90 | 0.503 | 80.0 | high | diesel below petrol, brand diesel spread outlier, brand staleness MAD outlier |
| CORTON BEACH BLACKPOOL LTD | ESSO | FY1 5HZ | 138.90 | 131.90 | 0.502 | 80.0 | high | diesel below petrol, brand diesel spread outlier, brand staleness MAD outlier |
Highest Predicted Price-Change Probability
| station | brand | postcode | e10_ppl | change_probability | p_up | prob_interval | fill_recommendation | pence_to_fill_alert | expected_days_to_change | staleness_days |
|---|---|---|---|---|---|---|---|---|---|---|
| Beddoes | BEDDOES | WV13 3SJ | 135.70 | 0.541 | 0.091 | 0.429 - 0.628 | monitor | 1.00 | 9.0 | 14.055605 |
| Hockley | HOCKLEY | B19 2XY | 131.90 | 0.535 | 0.092 | 0.458 - 0.570 | monitor | 2.17 | 9.1 | 14.073406 |
| GEM ORMSKIRK | SHELL | L39 1LZ | 128.90 | 0.532 | 0.665 | 0.393 - 0.631 | monitor | 5.58 | 9.2 | 7.066635 |
| Sidcup Filling Station | HARVEST ENERGY | DA14 6PA | 131.90 | 0.532 | 0.458 | 0.473 - 0.548 | monitor | 4.00 | 9.2 | 14.074367 |
| CALLINGTON SUPERSTORE - PETROL FILLING STATION | TESCO | PL17 7RD | 134.90 | 0.531 | 0.360 | 0.410 - 0.613 | monitor | 1.00 | 9.2 | 15.724540 |
| Uig filling station | UIG FILLING STATION | IV51 9XX | 136.90 | 0.531 | 0.480 | 0.377 - 0.609 | monitor | 8.00 | 9.2 | 11.999251 |
| ASCONA BROADWAY SERVICE STATION | JET | PE7 3NR | 128.90 | 0.531 | 0.438 | 0.447 - 0.666 | monitor | 8.00 | 9.2 | 15.836797 |
| Dafen Service Station | DAFEN SERVICE STATION | SA14 8NS | 159.90 | 0.531 | 0.098 | 0.319 - 0.721 | monitor | 1.00 | 9.2 | 11.857700 |
| GEM KNOWSLEY | TEXACO | L33 7XB | 128.90 | 0.530 | 0.192 | 0.400 - 0.658 | monitor | 5.17 | 9.3 | 14.009424 |
| NTS OLDBURY SERVICE STATION | NTS OLDBURY SERVICE STATION | GL9 1DU | 129.90 | 0.529 | 0.810 | 0.439 - 0.583 | fill_soon | 4.17 | 9.3 | 0.790188 |
| UPPER BATLEY SS | BP | WF17 5LW | 129.90 | 0.528 | 0.071 | 0.390 - 0.603 | monitor | 1.00 | 9.3 | 39.785084 |
| Alexandria Service Station | ALEXANDRIA SERVICE STATION | G83 0DX | 133.90 | 0.528 | 0.106 | 0.391 - 0.571 | monitor | 2.15 | 9.3 | 12.811913 |
| Sessia Ltd | SESSIA | BT44 8HS | 127.70 | 0.528 | 0.568 | 0.379 - 0.562 | monitor | 1.00 | 9.3 | 7.856242 |
| TYKE 2000 LTD | GULF | YO179HS | 127.90 | 0.527 | 0.646 | 0.433 - 0.590 | fill_soon | 2.60 | 9.3 | 7.083556 |
| BP MEARNSKIRK | BP MEARNSKIRK | G77 5EU | 131.90 | 0.527 | 0.452 | 0.302 - 0.676 | monitor | 1.00 | 9.4 | 12.006566 |
Preemptive Fill Opportunities
| station | brand | postcode | e10_ppl | fill_alert_price_ppl | pence_to_fill_alert | rise_risk_score | p_up | expected_days_to_change | fill_recommendation |
|---|---|---|---|---|---|---|---|---|---|
| MFG MORRISONS BISHOP AUCKLAND | MORRISONS | DL14 7TL | 121.70 | 123.97 | 2.27 | 0.479 | 0.960 | 10.1 | fill_now |
| MFG COURTFIELDS | ESSO | TA21 8SN | 129.90 | 130.90 | 1.00 | 0.479 | 0.910 | 9.4 | fill_now |
| MFG BRADLEY | ESSO | HD5 0RP | 127.90 | 128.90 | 1.00 | 0.476 | 0.940 | 9.9 | fill_now |
| BICESTER SUPERSTORE - PETROL FILLING STATION | TESCO | OX26 1DE | 124.90 | 127.40 | 2.50 | 0.475 | 0.924 | 9.7 | fill_now |
| GEM KIRKBY STEPHEN | SHELL | CA17 4RP | 131.90 | 134.07 | 2.17 | 0.473 | 0.899 | 9.4 | fill_now |
| YORKGATE CENTRE SUPERSTORE - PETROL FILLING STATION | TESCO | BT15 1WA | 121.90 | 123.98 | 2.08 | 0.472 | 0.942 | 10.1 | fill_now |
| MFG MORRISONS BRADFORD ENTERPRISE 5 | MORRISONS | BD10 8EG | 124.90 | 126.07 | 1.17 | 0.471 | 0.932 | 9.9 | fill_now |
| RONTEC BYKER | BP | NE6 1JN | 126.90 | 129.72 | 2.82 | 0.471 | 0.932 | 9.9 | fill_now |
| NORTHCOTT EXTRA - PETROL FILLING STATION | TESCO | BT36 5HH | 122.90 | 125.61 | 2.71 | 0.471 | 0.933 | 10.0 | fill_now |
| MFG DAVENTRY | SHELL | NN11 4QB | 130.90 | 131.90 | 1.00 | 0.470 | 0.937 | 10.0 | fill_now |
| MFG MORRISONS HARTLEPOOL BELLE VUE | MORRISONS | TS25 1JZ | 123.70 | 124.70 | 1.00 | 0.470 | 0.942 | 10.1 | fill_now |
| MFG WELLINGTON PR | ESSO | TA21 9AD | 129.90 | 130.90 | 1.00 | 0.469 | 0.911 | 9.7 | fill_now |
| MFG SHIRLEY | BP | KT23 4HB | 131.90 | 134.07 | 2.17 | 0.467 | 0.928 | 10.0 | fill_now |
| MFG CROSS LANE | BP | BD4 0SB | 129.90 | 130.90 | 1.00 | 0.467 | 0.915 | 9.8 | fill_now |
| MFG SOMERBY HILL | BP | NG31 7ET | 132.90 | 133.90 | 1.00 | 0.466 | 0.902 | 9.6 | fill_now |
Model Drivers
| feature | importance | importance_std | importance_lower | importance_upper | stability |
|---|---|---|---|---|---|
| nearest_competitor_distance_km | 0.128636 | 0.004359 | 0.121467 | 0.138248 | 29.509354 |
| price_vs_competitor_avg | 0.111839 | 0.003261 | 0.105210 | 0.117369 | 34.296130 |
| diesel_petrol_ratio | 0.087448 | 0.003048 | 0.082771 | 0.094065 | 28.686191 |
| price_vs_competitor_min | 0.079146 | 0.002757 | 0.074635 | 0.084298 | 28.706350 |
| fuel_price_std | 0.079128 | 0.003094 | 0.074510 | 0.085923 | 25.572531 |
| brand_encoded | 0.067723 | 0.002821 | 0.063485 | 0.074312 | 24.005552 |
| diesel | 0.066630 | 0.002376 | 0.061807 | 0.070940 | 28.044052 |
| e10 | 0.063884 | 0.002092 | 0.060465 | 0.068444 | 30.532073 |
| competition_intensity | 0.056871 | 0.002884 | 0.051650 | 0.063169 | 19.717031 |
| e5 | 0.055282 | 0.002175 | 0.051797 | 0.059932 | 25.411294 |
| premium_spread | 0.052301 | 0.002078 | 0.049536 | 0.056527 | 25.164757 |
| diesel_premium | 0.038064 | 0.002145 | 0.034028 | 0.041587 | 17.741731 |
| regime_price_position | 0.026645 | 0.001501 | 0.023689 | 0.029229 | 17.751034 |
| update_regime_code | 0.026516 | 0.001358 | 0.024013 | 0.028977 | 19.522522 |
| customer_toilets | 0.014783 | 0.001220 | 0.012794 | 0.017355 | 12.120320 |
Downloads
Method and Assurance
Transparent uncertainty
Each probability includes lower, median, and upper bounds to support risk-aware decisions.
Deterministic execution
The pipeline uses fixed seeds and consistent transforms for repeatable outputs on the same data snapshot.
Operational safeguards
High-anomaly and diesel-below-petrol rows are separated for validation-first workflows.
Known limitation
Observed forward price changes were unavailable in this dataset snapshot, so probabilities use a fallback next-observation-speed target. Treat signals as cadence risk, not direct price-move risk.
Technical Appendix
Walk-Forward Fold Metrics
fold_1: train_rows=9076 validation_rows=2269 roc_auc=0.0731 brier=0.2811 fold_2: train_rows=9076 validation_rows=2269 roc_auc=0.0780 brier=0.2803 fold_3: train_rows=9076 validation_rows=2269 roc_auc=0.0657 brier=0.2814 fold_4: train_rows=9076 validation_rows=2269 roc_auc=0.0744 brier=0.2787 fold_5: train_rows=9076 validation_rows=2269 roc_auc=0.0701 brier=0.2814
Summary Snapshot
Fuel Detective Summary
================================================================================
Generated UTC: 2026-02-18T13:10:53.313626+00:00
Data source: UK fuel station full-history dataset
Stations analyzed: 5,676
Unique station IDs: 5,676
Duplicate station rows in output: 0
Median E10 (ppl): 131.900
Median diesel (ppl): 141.800
Average staleness (days): 8.496
Median expected days to change: 10.10
High change probability rows (>0.70): 0
High anomaly rows: 15
Diesel cheaper than petrol rows: 55
Stale rows (>60 days): 0
Fill-now opportunities: 35
Fill-soon opportunities: 804
Market intelligence
--------------------------------------------------------------------------------
Brand stats rows: 30
Postcode sector stats rows: 934
Market regime rows: 934
Market regime breakdown:
competitive: 397 (42.5%)
mixed: 330 (35.3%)
local_monopoly: 85 (9.1%)
fragmented: 78 (8.4%)
supermarket_dominated: 44 (4.7%)
Cheapest positioning brand: COSTCO WHOLESALE (score=-43.344)
Most expensive positioning brand: WELCOME BREAK (score=53.965)
Largest postcode sector sample: CR0 (stations=13)
Model diagnostics
--------------------------------------------------------------------------------
Target mode: next_observation_speed
Target horizon (days): 7.0
Target positive rate: 0.5000
Fallback threshold for next-observation target (days): 0.0311
Class balance: class_0=5672, class_1=5673
Training rows: 9,076
Validation rows: 2,269
Validation ROC-AUC (last fold): 0.0701
Walk-forward ROC-AUC mean: 0.0723
Walk-forward ROC-AUC std: 0.0042
Validation Brier score (last fold): 0.2814
Walk-forward Brier mean: 0.2806
Walk-forward Brier std: 0.0010
Walk-forward fold metrics
--------------------------------------------------------------------------------
fold_1: train_rows=9076 validation_rows=2269 roc_auc=0.0731 brier=0.2811
fold_2: train_rows=9076 validation_rows=2269 roc_auc=0.0780 brier=0.2803
fold_3: train_rows=9076 validation_rows=2269 roc_auc=0.0657 brier=0.2814
fold_4: train_rows=9076 validation_rows=2269 roc_auc=0.0744 brier=0.2787
fold_5: train_rows=9076 validation_rows=2269 roc_auc=0.0701 brier=0.2814
Classification report
--------------------------------------------------------------------------------
precision recall f1-score support
stable_state 0.138 0.138 0.138 1134
fast_next_observation 0.139 0.139 0.139 1135
accuracy 0.139 2269
macro avg 0.139 0.139 0.139 2269
weighted avg 0.139 0.139 0.139 2269
Top feature importance
--------------------------------------------------------------------------------
nearest_competitor_distance_km: 0.128636
price_vs_competitor_avg: 0.111839
diesel_petrol_ratio: 0.087448
price_vs_competitor_min: 0.079146
fuel_price_std: 0.079128
brand_encoded: 0.067723
diesel: 0.066630
e10: 0.063884
competition_intensity: 0.056871
e5: 0.055282