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.00 | 0.99 | — | 0.98 | 1.00 | |
| — | 0.99 | 0.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.00 | 0.98 | — | 0.95 | 1.00 | |
| — | 0.98 | 0.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.95 | 0.97 | — | 0.85 | 1.00 | |
| — | 0.97 | 0.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.99 | 0.98 | — | 0.97 | 1.00 | |
| — | 0.98 | 0.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.99 | 0.98 | — | 0.97 | 1.00 | |
| — | 0.98 | 0.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.96 | 0.96 | — | 0.90 | 1.00 | |
| — | 0.98 | 0.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.