# Agricultural Commodities — Long-Run Monthly Price Series

**Primary source:** World Bank Commodity Price Data ("Pink Sheet"), monthly nominal USD, updated 2026-08-04.
Download: `https://thedocs.worldbank.org/en/doc/74e8be41ceb20fa0da750cda2f6b9e4e-0050012026/related/CMO-Historical-Data-Monthly.xlsx`
(raw copy: `data/commodities/raw/CMO-Historical-Data-Monthly.xlsx`; note the URL path contains a monthly-rotating release id — refresh from https://www.worldbank.org/en/research/commodity-markets when it breaks.)

**Cross-check source:** FRED IMF Primary Commodity Prices series (no API key, `https://fred.stlouisfed.org/graph/fredgraph.csv?id=<ID>`). Raw CSVs kept in `data/commodities/raw/fred_*.csv`. FRED monthly IMF series only start 1992-01 (rice 2010-05), so the Pink Sheet (1960+) is the primary source; FRED was used to verify recent-month values.

## Series obtained (all monthly, JSON in `data/commodities/`)

| File | Series | Range | Rows | Unit (WB quote) |
|---|---|---|---|---|
| sugar.json | Sugar, world (raw, ISA No.11 proxy) | 1960-01 .. 2026-07 | 799 | USD/kg |
| coffee_arabica.json | Coffee, Arabica (ICO composite) | 1960-01 .. 2026-07 | 799 | USD/kg |
| coffee_robusta.json | Coffee, Robusta | 1960-01 .. 2026-07 | 799 | USD/kg |
| cocoa.json | Cocoa (ICCO, avg London/NY) | 1960-01 .. 2026-07 | 799 | USD/kg |
| palm_oil.json | Palm oil (Malaysia cif NWE) | 1960-01 .. 2026-07 | 799 | USD/mt |
| rice.json | Rice, Thai 5% broken | 1960-01 .. 2026-07 | 799 | USD/mt |
| wheat.json | Wheat, US HRW (Gulf export) | 1960-01 .. 2026-07 | 799 | USD/mt |
| soybeans.json | Soybeans (US cif Rotterdam) | 1960-01 .. 2026-07 | 799 | USD/mt |
| corn.json | Maize (US No.2 yellow, Gulf) | 1960-01 .. 2026-07 | 799 | USD/mt |
| soybean_meal.json | Soybean meal (cif Rotterdam) | 1960-01 .. 2026-07 | 799 | USD/mt |
| cotton.json | Cotton, Cotlook A Index | 1960-01 .. 2026-07 | 799 | USD/kg |
| fishmeal.json | Fish meal (Peru/Germany 64-65%) | 1979-01 .. 2026-07 | 571 | USD/mt |

**Missing:** none. All 11 requested assets obtained (coffee split into arabica + robusta). Fishmeal starts 1979 (not available pre-1979 in the Pink Sheet), which still meets the "1980 or earlier" bar.

FRED series IDs confirmed (kept as raw cross-checks): PSUGAISAUSDM (sugar), PCOFFOTMUSDM (arabica), PCOFFROBUSDM (robusta), PCOCOUSDM (cocoa), PPOILUSDM (palm oil), PRICENPQUSDM (rice), PWHEAMTUSDM (wheat), PSOYBUSDM (soybeans), PMAIZMTUSDM (corn), PSMEAUSDM (soybean meal), PCOTTINDUSDM (cotton). No FRED series exists for fishmeal.

## Validation

- All 12 JSONs pass `python3 -m json.tool`.
- Cocoa 2024 spike confirmed: 4.21 (2023-12) → 9.74 (2024-04) → peak 10.75 USD/kg (2025-01), ~2.5x in a year.
- Rice 2008 food-crisis spike confirmed: 907 USD/mt (2008-04). Wheat spikes confirmed: 439.7 (2008-03), 522.3 (2022-05). Arabica 2025 rally confirmed: 9.05 USD/kg (2025-02).
- FRED-vs-WB overlap check (414 months): corn, cocoa, coffee, cotton, sugar match within ~0.1–1.6% median (FRED is in cents/lb for softs — converted). Palm oil, wheat, soybeans, soybean meal diverge 8–12% median because WB and IMF quote **different delivery points/grades** (e.g. WB wheat = HRW FOB Gulf, IMF = HRW Kansas City; WB palm oil = cif NWE vs IMF origin quote). Both are real series; the WB quotes were kept as primary. Do not mix the two within a series.

## El Niño sensitivity notes (per asset)

- **Sugar**: El Niño typically brings drought to Indian and Thai cane and disruptive excess rain to Brazil's Center-South harvest; the 2015-16 El Niño helped flip the world balance to deficit and roughly double raw sugar prices from the 2015 low into late 2016.
- **Coffee (arabica/robusta)**: El Niño is associated with drought in Vietnam and Indonesia (robusta) and erratic rains in Brazil's arabica belt; robusta rallied hard in both 1997-98 and 2015-16 on SE Asia drought, and the 2023-24 El Niño coincided with robusta record highs on Vietnam heat/drought.
- **Cocoa**: West Africa (Côte d'Ivoire + Ghana ≈ 60% of world output) tends toward drier conditions and a harsher Harmattan during El Niño, stressing mid-crop pods; the 2023-24 El Niño (stacked on black-pod/swollen-shoot disease) accompanied cocoa's record spike above $10/kg.
- **Palm oil**: Indonesia + Malaysia supply ~85% of world palm oil; El Niño drought there cuts fresh-fruit-bunch yields with a 6–12 month lag — production fell in both 1997-98 and 2015-16, and drought fear underpinned the 2023-24 market.
- **Rice**: El Niño raises drought risk across South/Southeast Asia's monsoon-fed paddies; after El Niño onset in mid-2023 India (≈40% of world exports) imposed export bans, pushing Thai 5% to ~15-year highs (~$620/mt).
- **Wheat**: the clearest teleconnection is Australia — El Niño strongly correlates with eastern-Australian winter-wheat drought (2002, 2006, 2015), while Argentine wheat tends to get beneficial rain; US HRW signal is weak/mixed.
- **Soybeans**: El Niño usually *helps* Argentina and southern Brazil (wetter summers → bigger crops, bearish), while stressing northern/central Brazil; US Midwest yield signal is weak.
- **Corn**: US Midwest response is mixed/weak, but South Africa (a top white-maize exporter) reliably dries out in El Niño summers — 2015-16 and 2023-24 both saw southern-Africa drought and white-maize spikes.
- **Soybean meal**: derivative of soybeans; Argentina is the world's largest meal exporter, so El Niño's Argentine rainfall boost is typically bearish for meal via bigger crush supply.
- **Cotton**: weak/modulating signal — El Niño tends to wet West Texas (mixed for quality) and dry Australia (irrigated output hit in 2015-16); mostly a second-order ENSO trade.
- **Fishmeal**: the canonical El Niño victim — warm surface water off Peru collapses the anchoveta stock (Peru is the largest fishmeal exporter); the 1972-73 and 1997-98 El Niños caused fishery collapses and fishmeal price spikes, which is why the WB series only existing from 1979 still captures the key 1982-83, 1997-98, and 2015-16 episodes.

## Caveats

- All prices are nominal USD; no deflation applied.
- Pink Sheet revises history occasionally — re-download before final use.
- Units differ across files (USD/kg vs USD/mt) — check the `unit` field before charting or computing returns.
