WeatherBlend
Multi-model forecast blending for Bonehill Rocks, Dartmoor
Dry-window forecast
Per-station, per-window blender. The label asks "is there a contiguous N-hour dry block somewhere within 09:00–18:00 local time?" — the realistic outdoor-walking window at Bonehill year-round (DST handled per target day). Phase 3b (53-feature LightGBM) ships as champion; Phase 3g (parameter-free MC over Phase 3a hourly P(wet)) ships alongside as challenger and guarantees cross-window monotonicity by construction. Cards show today and the next 4 forecast days.
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 | Model agreement | MC longest dry run (3g only) | Conformal (90% set) | Best start (UTC, calibrated %) |
|---|---|---|---|---|---|---|---|
| 99% | 91% | 81% | 71% | — | confident dry day | 08:00Z (16%) | |
| 99% | 100% | 70% | 71% | — | confident dry day | 14:00Z (15%) | |
| — | 100% | 33% | 71% | — | confident dry day | 10:00Z (17%) | |
| — | — | 100% | 57% | — | confident dry day | 08:00Z (10%) |
Phase 3g — Monte Carlo over Phase 3a hourly P(wet) marginals
Parameter-free. For each daytime hour, sample 10,000 Bernoullis using Phase 3a's hourly P(wet); count the fraction of samples whose longest dry run reaches the target window length. No LightGBM, no learned weights — the prediction is purely 3a's per-hour view + the structural rule that longer windows are rarer. Cross-window monotonicity P(N=3) ≥ P(N=4) ≥ P(N=6) holds by construction (single MC pass, three indicators read off the same Bernoulli sequence).
| Target date (UTC) | +24h | +48h | +72h | Model agreement | MC longest dry run (3g only) | Conformal (90% set) | Best start (UTC, calibrated %) |
|---|---|---|---|---|---|---|---|
| 100% | — | — | — | med 9h (80%: 4-9h) | confident dry day | 08:00Z (16%) | |
| 100% | 99% | — | — | med 9h (80%: 4-9h) | confident dry day | 14:00Z (15%) | |
| — | 98% | 64% | — | med 6h (80%: 4-9h) | confident dry day | 10:00Z (17%) | |
| — | — | 99% | — | med 7h (80%: 4-9h) | confident dry day | 08:00Z (10%) |
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 | Model agreement | MC longest dry run (3g only) | Conformal (90% set) | Best start (UTC, calibrated %) |
|---|---|---|---|---|---|---|---|
| 100% | 59% | 75% | 71% | — | confident dry day | 08:00Z (18%) | |
| 100% | 96% | 60% | 71% | — | confident dry day | 13:00Z (18%) | |
| — | 63% | 31% | 71% | — | confident dry day | 09:00Z (19%) | |
| — | — | 100% | 57% | — | confident dry day | 08:00Z (12%) |
Phase 3g — Monte Carlo over Phase 3a hourly P(wet) marginals
Parameter-free. For each daytime hour, sample 10,000 Bernoullis using Phase 3a's hourly P(wet); count the fraction of samples whose longest dry run reaches the target window length. No LightGBM, no learned weights — the prediction is purely 3a's per-hour view + the structural rule that longer windows are rarer. Cross-window monotonicity P(N=3) ≥ P(N=4) ≥ P(N=6) holds by construction (single MC pass, three indicators read off the same Bernoulli sequence).
| Target date (UTC) | +24h | +48h | +72h | Model agreement | MC longest dry run (3g only) | Conformal (90% set) | Best start (UTC, calibrated %) |
|---|---|---|---|---|---|---|---|
| 97% | — | — | — | med 9h (80%: 4-9h) | confident dry day | 08:00Z (18%) | |
| 98% | 92% | — | — | med 9h (80%: 4-9h) | confident dry day | 13:00Z (18%) | |
| — | 91% | 34% | — | med 6h (80%: 4-9h) | confident dry day | 09:00Z (19%) | |
| — | — | 92% | — | med 7h (80%: 4-9h) | confident dry day | 08:00Z (12%) |
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 | Model agreement | MC longest dry run (3g only) | Conformal (90% set) | Best start (UTC, calibrated %) |
|---|---|---|---|---|---|---|---|
| 88% | 38% | 36% | 57% | — | confident dry day | 08:00Z (10%) | |
| 77% | 55% | 79% | 43% | — | confident dry day | 11:00Z (20%) | |
| — | 29% | 29% | 29% | — | confident wet day | 08:00Z (23%) | |
| — | — | 89% | 43% | — | confident dry day | 08:00Z (11%) |
Phase 3g — Monte Carlo over Phase 3a hourly P(wet) marginals
Parameter-free. For each daytime hour, sample 10,000 Bernoullis using Phase 3a's hourly P(wet); count the fraction of samples whose longest dry run reaches the target window length. No LightGBM, no learned weights — the prediction is purely 3a's per-hour view + the structural rule that longer windows are rarer. Cross-window monotonicity P(N=3) ≥ P(N=4) ≥ P(N=6) holds by construction (single MC pass, three indicators read off the same Bernoulli sequence).
| Target date (UTC) | +24h | +48h | +72h | Model agreement | MC longest dry run (3g only) | Conformal (90% set) | Best start (UTC, calibrated %) |
|---|---|---|---|---|---|---|---|
| 78% | — | — | — | med 9h (80%: 4-9h) | confident dry day | 08:00Z (10%) | |
| 78% | 62% | — | — | med 9h (80%: 4-9h) | confident dry day | 11:00Z (20%) | |
| — | 65% | 10% | — | med 6h (80%: 4-9h) | confident dry day | 08:00Z (23%) | |
| — | — | 67% | — | med 7h (80%: 4-9h) | confident dry day | 08:00Z (11%) |
A dry "hour" requires all four 15-min EA gauge readings to be ≤ 0.1 mm. Search is bounded to 09:00–18:00 local time (Europe/London, DST-aware) — overnight dry stretches don't count, and a dry block that bridges 18:00 into the evening isn't credited. Cross-midnight dry stretches are not credited (UTC-day boundary).