WeatherBlend

Multi-model forecast blending for Bonehill Rocks, Dartmoor

Dry window — P(∃ N-hour dry block in target UTC day)

Per-station, per-window blender. Bellever + Princetown × {3, 4, 6}h × leads 24/48/72h. Truth from EA Hydrology gauges with a 4-of-4 hourly gate. Three phases run side-by-side via the per-composite Active manifest list — Phase 3b (lean, 53 features) as the production champion, Phase 3d-shape (60 features) adding 7 within-day shape features derived from the ensemble-mean hourly precip vector, and Phase 3d-calibrated wrapping 3b's saved model in a per-lead pool-adjacent-violators isotonic remapping. Tables below are grouped by phase so feature-richness vs post-hoc calibration deltas are visible at a glance.

Bellever Dartmoor

3-hour dry window

Phase 3b — lean (53 features)

Day-aggregate per-model precip totals, wet-hour counts, run-length stats, EA persistence, climatology, calendar encodings. Production champion.

Target date (UTC) +24h +48h +72h Climatology Model agreement
1.00 0.98 1.00
1.000.99 0.98 1.00
0.990.99 0.98 1.00
0.99 0.98 1.00
Phase 3d-shape — lean + 7 within-day shape features (60 features)

3b features plus first/last wet hour, longest forecast dry/wet run, n rain events, and morning/afternoon precip sums — derived from the ensemble-mean hourly precip vector. Lets the model condition on whether a wet day is 'wet morning, dry afternoon' vs constant drizzle.

Target date (UTC) +24h +48h +72h Climatology Model agreement
1.00 0.98 1.00
0.98 0.98 1.00
0.99 0.98 1.00
Phase 3d-calibrated — 3b + post-hoc PAV calibration

Phase 3b's model unchanged; its probabilities are re-mapped through a per-lead pool-adjacent-violators isotonic regression fit on the validation slice. Same model file, same features, same feature hash — only the mapping changes. Tests whether calibration alone moves the needle once 3b is already well-calibrated.

Target date (UTC) +24h +48h +72h Climatology Model agreement
1.00 0.98 1.00
1.00 0.98 1.00
1.00 0.98 1.00

4-hour dry window

Phase 3b — lean (53 features)

Day-aggregate per-model precip totals, wet-hour counts, run-length stats, EA persistence, climatology, calendar encodings. Production champion.

Target date (UTC) +24h +48h +72h Climatology Model agreement
1.00 0.95 1.00
1.000.98 0.95 1.00
0.980.98 0.95 1.00
0.98 0.95 1.00
Phase 3d-shape — lean + 7 within-day shape features (60 features)

3b features plus first/last wet hour, longest forecast dry/wet run, n rain events, and morning/afternoon precip sums — derived from the ensemble-mean hourly precip vector. Lets the model condition on whether a wet day is 'wet morning, dry afternoon' vs constant drizzle.

Target date (UTC) +24h +48h +72h Climatology Model agreement
1.00 0.95 1.00
0.98 0.95 1.00
0.98 0.95 1.00
Phase 3d-calibrated — 3b + post-hoc PAV calibration

Phase 3b's model unchanged; its probabilities are re-mapped through a per-lead pool-adjacent-violators isotonic regression fit on the validation slice. Same model file, same features, same feature hash — only the mapping changes. Tests whether calibration alone moves the needle once 3b is already well-calibrated.

Target date (UTC) +24h +48h +72h Climatology Model agreement
1.00 0.95 1.00
1.00 0.95 1.00
1.00 0.95 1.00

6-hour dry window

Phase 3b — lean (53 features)

Day-aggregate per-model precip totals, wet-hour counts, run-length stats, EA persistence, climatology, calendar encodings. Production champion.

Target date (UTC) +24h +48h +72h Climatology Model agreement
0.95 0.85 1.00
0.950.97 0.85 1.00
0.970.97 0.85 1.00
0.97 0.85 1.00
Phase 3d-shape — lean + 7 within-day shape features (60 features)

3b features plus first/last wet hour, longest forecast dry/wet run, n rain events, and morning/afternoon precip sums — derived from the ensemble-mean hourly precip vector. Lets the model condition on whether a wet day is 'wet morning, dry afternoon' vs constant drizzle.

Target date (UTC) +24h +48h +72h Climatology Model agreement
0.96 0.85 1.00
0.95 0.85 1.00
0.97 0.85 1.00
Phase 3d-calibrated — 3b + post-hoc PAV calibration

Phase 3b's model unchanged; its probabilities are re-mapped through a per-lead pool-adjacent-violators isotonic regression fit on the validation slice. Same model file, same features, same feature hash — only the mapping changes. Tests whether calibration alone moves the needle once 3b is already well-calibrated.

Target date (UTC) +24h +48h +72h Climatology Model agreement
1.00 0.85 1.00
1.00 0.85 1.00
1.00 0.85 1.00

Princetown

3-hour dry window

Phase 3b — lean (53 features)

Day-aggregate per-model precip totals, wet-hour counts, run-length stats, EA persistence, climatology, calendar encodings. Production champion.

Target date (UTC) +24h +48h +72h Climatology Model agreement
0.99 0.97 1.00
0.990.98 0.97 1.00
0.980.99 0.97 1.00
0.99 0.97 1.00
Phase 3d-shape — lean + 7 within-day shape features (60 features)

3b features plus first/last wet hour, longest forecast dry/wet run, n rain events, and morning/afternoon precip sums — derived from the ensemble-mean hourly precip vector. Lets the model condition on whether a wet day is 'wet morning, dry afternoon' vs constant drizzle.

Target date (UTC) +24h +48h +72h Climatology Model agreement
0.99 0.97 1.00
0.98 0.97 1.00
0.99 0.97 1.00
Phase 3d-calibrated — 3b + post-hoc PAV calibration

Phase 3b's model unchanged; its probabilities are re-mapped through a per-lead pool-adjacent-violators isotonic regression fit on the validation slice. Same model file, same features, same feature hash — only the mapping changes. Tests whether calibration alone moves the needle once 3b is already well-calibrated.

Target date (UTC) +24h +48h +72h Climatology Model agreement
1.00 0.97 1.00
1.00 0.97 1.00
1.00 0.97 1.00

4-hour dry window

Phase 3b — lean (53 features)

Day-aggregate per-model precip totals, wet-hour counts, run-length stats, EA persistence, climatology, calendar encodings. Production champion.

Target date (UTC) +24h +48h +72h Climatology Model agreement
0.99 0.97 1.00
0.990.98 0.97 1.00
0.980.98 0.97 1.00
0.98 0.97 1.00
Phase 3d-shape — lean + 7 within-day shape features (60 features)

3b features plus first/last wet hour, longest forecast dry/wet run, n rain events, and morning/afternoon precip sums — derived from the ensemble-mean hourly precip vector. Lets the model condition on whether a wet day is 'wet morning, dry afternoon' vs constant drizzle.

Target date (UTC) +24h +48h +72h Climatology Model agreement
0.99 0.97 1.00
0.99 0.97 1.00
0.98 0.97 1.00
Phase 3d-calibrated — 3b + post-hoc PAV calibration

Phase 3b's model unchanged; its probabilities are re-mapped through a per-lead pool-adjacent-violators isotonic regression fit on the validation slice. Same model file, same features, same feature hash — only the mapping changes. Tests whether calibration alone moves the needle once 3b is already well-calibrated.

Target date (UTC) +24h +48h +72h Climatology Model agreement
1.00 0.97 1.00
1.00 0.97 1.00
1.00 0.97 1.00

6-hour dry window

Phase 3b — lean (53 features)

Day-aggregate per-model precip totals, wet-hour counts, run-length stats, EA persistence, climatology, calendar encodings. Production champion.

Target date (UTC) +24h +48h +72h Climatology Model agreement
0.96 0.90 1.00
0.960.96 0.90 1.00
0.980.96 0.90 1.00
0.96 0.90 1.00
Phase 3d-shape — lean + 7 within-day shape features (60 features)

3b features plus first/last wet hour, longest forecast dry/wet run, n rain events, and morning/afternoon precip sums — derived from the ensemble-mean hourly precip vector. Lets the model condition on whether a wet day is 'wet morning, dry afternoon' vs constant drizzle.

Target date (UTC) +24h +48h +72h Climatology Model agreement
0.98 0.90 1.00
0.97 0.90 1.00
0.98 0.90 1.00
Phase 3d-calibrated — 3b + post-hoc PAV calibration

Phase 3b's model unchanged; its probabilities are re-mapped through a per-lead pool-adjacent-violators isotonic regression fit on the validation slice. Same model file, same features, same feature hash — only the mapping changes. Tests whether calibration alone moves the needle once 3b is already well-calibrated.

Target date (UTC) +24h +48h +72h Climatology Model agreement
1.00 0.90 1.00
1.00 0.90 1.00
1.00 0.90 1.00

A dry "hour" requires all four 15-min EA gauge readings to be ≤ 0.1 mm. Cross-midnight dry stretches are not credited (UTC-day boundary). Daylight filtering is deferred to the application layer.