| Site | Status | Rain 16d (mm) | Soil water (%) | Heat days | Dry spell (d) | Avg Tmax (°C) | Yield {{ season }} (t/ha) | Vs 23/24 |
|---|---|---|---|---|---|---|---|---|
| {{ r.name }} {{ r.country }} | {{ r.status }} | {{ r.rain16F }} | {{ r.swF }} | {{ r.heat16 }} | {{ r.dryMax }} | {{ r.tmaxF }} | {{ r.yieldF }} | {{ r.deltaShort }} |
| Farm · society | District | Province | Area (ha) | Cocoa age | 22/23 | 23/24 | Forecast 2024/25 | 80% interval | vs 23/24 |
|---|---|---|---|---|---|---|---|---|---|
| {{ f.name }} | {{ f.dist }} | {{ f.prov }} | {{ f.size }} | {{ f.age }} | {{ f.y22 }} | {{ f.y23 }} | {{ f.fc }} | {{ f.band }} | {{ f.dF }} |
| Site | Baseline index | Scenario index | Change | Scenario status (weather) |
|---|---|---|---|---|
| {{ s.name }} {{ s.country }} | {{ s.bIdx }} | {{ s.sIdx }} | {{ s.chgF }} | {{ s.status }} |
Implements the mechanistic layer of the Multiplicative Two-Hurdle Cocoa Yield Forecasting methodology: a continuous ~400-day daily root-zone soil-water balance per farm (shade evaporative buffering c₁=0.30, below-ground shade competition c₂=0.15, K꜀=0.85, saturation-excess runoff, rooting depth min(300+25·age, 800, bedrock) mm), with cumulative soil-moisture-deficit (CSMD) indices over the flowering (Mar–May, Aug–Sep) and dry-season pod-fill (Dec–Feb) phenological windows.
The suitability index blends the forecast-window water-stress coefficient Ks (45%), heat-stress days (30%), and seasonal CSMD carry-over (25%), minus a dry-spell penalty. It describes the 16-day operational window and drives the alerts and trends — not the yield numbers.
Coverage. 749 farms across 19 districts, every one carrying a 2024/25 forecast. Only farms with GPS coordinates are included — 14 farms in the 2023/24 roster have none and are excluded throughout, so every figure shown traces to a located farm. District labels are normalised before grouping (the workbooks spell the same district several ways — NKAWKAW / NKWAKAW / NKWAKWA, 0BUASI A / ABUASI A, AS_054_NEB / NEW EDUBIASE B), which collapses 32 raw labels to 19 real districts. Site coordinates are the mean GPS of the member farms; individual farm positions are not published. Districts need at least 5 farms to appear.
Yield forecasts are fitted on the FFB panel. A gradient-boosted model (LightGBM, 400 trees, 8 leaves) maps season-t features — lagged yield, farm attributes, management intensity per hectare, farm GPS and province — onto season t+1 yield. Continuous FFB variables enter as within-season percentile ranks so the model transfers across seasons. Trained on the only observable transition, 2022/23 → 2023/24 (591 panel farmers), validated by 5-fold cross-validation over farmers. 80% intervals are conformalised quantile regression, measured coverage 0.80.
How accurate. Scored on the same farms and folds, MAE in kg/ha: with the season's district level given, 146 for this model against 165 for persistence and 171 for the district mean; carrying the previous level forward, 178 against 195 and 196. The two settings are not comparable with each other — only within a column. The fitted model is statistically indistinguishable from a zero-parameter baseline (district mean + half the farm's deviation): paired tests give p = 0.62–0.99, with the model ahead on 51% of farms. Use it to rank farms within a district; do not read its absolute level as skill. Year-to-year farm yield correlation is only ρ ≈ 0.46, which caps what any method can do here.
What was kept, and what was dropped. Only methods that beat a baseline on this data are used. Kept: the fitted FFB forecast for yield (tied with shrunken persistence, both ahead of persistence and the district mean), and the weather index for 16-day conditions, alerts and scenarios, where it has no competitor. Dropped: the weather heuristic's yield projection — it was never validated against a baseline, so where the fitted model does not apply the yield cell is left blank rather than filled with a guess; the ENSO / Atlantic-SST / drought season model, which lost a rolling-origin backtest to simply carrying the level forward (MAE 32.7 vs 30.8, 49% directional hit rate); and the Earth-observation covariate blocks (CHIRPS, WaPOR ET, MODIS NDVI), which did not improve MAE and made cross-season transfer worse.
Status badges follow the yield forecast, compared with the district's own observed 2023/24 mean: Favourable ≥ −5%, Watch to −15%, Below trend beyond. Where no fitted forecast applies — a season other than 2024/25, or a farm you added yourself — the badge falls back to the weather suitability index. The "vs 23/24" percentages are largely regression to the mean, not a predicted weather response. The Scenarios tab is the exception: its status column follows the weather index under the rainfall and temperature you set, because the annual forecast does not respond to those sliders.
Limits. The model does not extrapolate to districts it has not seen — at district-scale spatial CV it is worse than the shrinkage baseline, so use it inside the current footprint. The season-wide effect is not identifiable from a two-season panel; a model of it (ENSO, Atlantic SST, cocoa-belt drought on national yield since 1961) was fitted and rejected, having lost to simply carrying the level forward in a rolling-origin backtest. No season multiplier is applied. The first genuine out-of-season test arrives with the 2024/25 outturns. The fitted forecast covers the 2024/25 season only. Selecting any other season in the header falls back to the weather-suitability projection and shows a notice: season-t inputs for later seasons do not exist, and iterating the model forward decays the farm signal by the persistence factor each step: measured against the observed 2023/24 spread it retains about 47% at 2024/25, 22% at 2025/26 and 10% at 2026/27, and never recovers the season level.
Weather series: ~1 year observed (ERA5-based archive) + 16-day forecast per farm from the Open-Meteo API. Soil AWC 0.15 mm/mm and bedrock 1000 mm are fixed defaults pending SoilGrids lookup.