What we measure
Each food's crisis exposure score is the percentage of its retail price attributable to supply chain inputs that pass through β or are priced with reference to β the Strait of Hormuz. It is not an absolute price prediction. It measures the fraction of a food's cost structure that is sensitive to the current disruption.
Step-by-step calculation
- Identify cost drivers per food. Each food has 2β5 supply chain drivers (e.g. diesel for transport, urea for fertilizer, natural gas for processing) sourced from USDA and FAO cost-of-production breakdowns.
- Assign each driver a commodity category β one of: fuel, gas, fertilizer, petrochemical, shipping β and look up its current price change vs the pre-crisis baseline (28 Feb 2026).
- Compute the weighted input change. Unlike a simple average, we apply specific cost weights (e.g., 40% for fertilizer in grain) to each driver based on its intensity in that food's production cycle.
- Apply a sensitivity factor (calibrated per food) to convert the weighted commodity input change into a retail price exposure percentage.
- Run Monte Carlo simulations. We run 500 iterations with Β±15% noise on driver weights to generate an 80% confidence interval (the uncertainty band shown in the UI).
- Multiply by the country's impact coefficient to reflect how dependent that country is on Hormuz-linked commodity flows.
The formula
The Local Cost Floor
Every food has a local_cost_floor_pct β the share of its retail price made up of costs that are immune to the crisis: local labour, land rent, retail margin, packaging overheads, and domestic distribution. These do not change because of a distant chokepoint.
The floor is subtracted from 100% to define the model's maximum possible exposure:
This is the most important guard in the model. Without it, a Β£1 loaf of bread with 10p of imported wheat could naively be shown at 90%+ exposure β which is absurd. In practice, floors range from 40% (bulk commodities like cooking oil) to 85%+ (processed staples like milk, eggs, and bread) for the Hormuz crisis, where input costs are the transmission mechanism. For the Red Sea crisis, floors are even higher (82β99%) because only the distribution cost fraction is affected.
The floor is set per-food based on FAO agri-food cost-of-production data and Eurostat retail price decomposition studies. It does not vary by country β only the impact_multiplier scales country-level exposure.
Tipping Points (Non-Linearity)
The model includes two non-linear risk triggers that are not captured by the smooth cost-pass-through formula above:
- Urea scarcity (>$600/ton): Above this threshold, farmers in price-sensitive markets stop applying inputs entirely, risking a "yield cliff" in the next harvest cycle. Flagged for fertilizer-intensive categories (grains, meat, dairy).
- Brent bunker surcharge (>$110/bbl): Above this level, shipping carriers historically activate non-linear bunker adjustment factor (BAF) surcharges β roughly $200 per container per additional $10/bbl β compounding the underlying fuel cost increase. Flagged for foods with oil or fuel drivers.
Worked example β Chicken in Japan
Tracing the calculation
Commodity baselines
All percentage changes are calculated against prices recorded on 28 February 2026 β the day the crisis began.
| Commodity | Category | Pre-crisis baseline | Source |
|---|---|---|---|
| Brent crude oil | oil / fuel / shipping | $72/bbl | World Bank |
| European natural gas | gas | β¬34/MWh | IEA |
| Urea (E. Europe) | fertilizer | $320/t | World Bank |
| Methanol (US Gulf) | petrochemical | $400/t | World Bank |
| Retail diesel (EU) | fuel | β¬1.42/litre | Eurostat |
Commodity prices are updated weekly from the World Bank Indicators REST API, with the Pink Sheet Excel as fallback. Exchange rates are updated weekly from Frankfurter (ECB).
Country impact multipliers
The EU (Italy) is used as the baseline reference (multiplier = 1.0). Each other country's multiplier is derived from three dependency dimensions weighted by their contribution to food supply chain costs: oil (highest weight, affects transport + heating + packaging), natural gas (processing + fertilizer feedstock), and fertilizer (direct crop input). Source: UN Comtrade, EIA, IFA.
| Country | Oil via Hormuz | LNG via Hormuz | Fertilizer via Hormuz | Multiplier | Confidence |
|---|---|---|---|---|---|
| Italy (EU ref) | 14% | 12% | 30% | 1.0Γ | High |
| Germany | 10% | 15% | 28% | 1.0Γ | High |
| United Kingdom | 12% | 14% | 28% | 0.90Γ | High |
| United States | 5% | 2% | 15% | 0.65Γ | High |
| Japan | 87% | 20% | 28% | 2.3Γ | High |
| India | 52% | 22% | 40% | 1.9Γ | Medium |
| Australia | 15% | 5% | 20% | 0.7Γ | Medium |
| Brazil | 5% | 3% | 22% | 0.85Γ | Medium |
| Philippines | 52% | 8% | 38% | 1.9Γ | Medium |
| Sri Lanka | 25% | 12% | 38% | 1.8Γ | Low |
| China | 38% | 16% | 8% | 1.5Γ | High |
| South Korea | 72% | 32% | 28% | 2.2Γ | High |
| France | 9% | 6% | 18% | 0.75Γ | High |
| Singapore | 88% | 38% | 15% | 2.3Γ | High |
| Taiwan | 82% | 22% | 22% | 2.2Γ | Medium |
| Thailand | 45% | 15% | 35% | 1.8Γ | Medium |
| Lebanon | 55% | 5% | 40% | 1.5Γ | Low |
Data confidence reflects how well local market conditions are captured by the EU-derived cost-of-production model. High = calibrated from local sources; Medium = EU model with import-dependency adjustment; Low = extrapolated, treat as indicative only. Low-confidence countries are rounded to the nearest 10% to avoid false precision.
What the model doesn't capture
- Inventory buffers. Many commodities are bought 3β9 months in advance. Spot price changes take time to flow through to retail. The model reflects current spot exposure, not current shelf prices.
- Labor costs. Wage inflation and transport strikes driven by the cost-of-living crisis are not included.
- Subsidies and price controls. Several countries have active food price interventions that suppress the retail transmission of commodity shocks.
- Local substitution. Farmers and processors adapt. If urea prices spike, some switch to alternative fertilizers; if diesel costs rise, some supply chains shorten. The model treats supply chains as static.
- Western-centric cost structure. USDA and FAO cost-of-production data skews toward mechanised, energy-intensive agriculture. Labor-intensive smallholder farming (dominant in South and Southeast Asia) has a different input structure. The country multiplier partially corrects for this but does not fully replace local data.
Update cadence
Data refreshes daily at 06:00 UTC via a GitHub Actions workflow. If any data source is unavailable, the previous value is retained and the stale_sources field in data/foods.json is populated. The live badge on the main dashboard turns amber if data has not been refreshed in more than 10 days.
Frequently asked questions
Why don't you use retail prices directly?
Retail prices are "noisy." They include local taxes, temporary store promotions, and branding premiums. By modeling "Exposure" via supply chain inputs, we isolate the specific impact of the Hormuz crisis from general inflation or local market quirks. We show the pressure on the price, not just the sticker on the shelf.
Why not use custom/import data for real-time tracking?
While customs data (like UN Comtrade) is extremely accurate, it typically suffers from a 2β4 month reporting lag. During a fast-moving crisis, we need high-velocity data. We use commodity benchmarks (World Bank API) as "leading indicators" to estimate todayβs impact, using customs data primarily for back-testing and calibrating our country-level dependency scores.
Does 40% exposure mean the price has risen by 40%?
No. It means 40% of that foodβs cost structure is tied to inputs (like fuel and fertilizer) currently disrupted by the crisis. The actual price increase depends on the Pass-Through Rateβhow much of that cost increase the retailer decides to pass on to you versus absorbing it into their own profit margins.
What are "cost weights" and how are they determined?
Each food reacts differently to commodity shocks. For bread, fertilizer is a massive indirect cost (growing the wheat), while for fresh produce, shipping and fuel are the primary drivers. We use USDA and FAO Cost of Production tables to determine these weights (e.g., assigning a 40% weight to fertilizer for grains). This ensures the model accurately reflects the "Economic DNA" of each food item.
How do you account for countries that produce their own oil?
Even energy-independent nations are affected. Oil is a global commodity; if the price spikes in London (Brent), it usually spikes everywhere. However, our Country Multiplier accounts for the physical risk of the Strait. A country that relies on physical tankers passing through Hormuz gets a higher risk score than a country that produces its own energy locally.
Why is there a gap between a commodity spike and my grocery bill?
This is the Inventory Lag. Most of the grain in your bread today was grown with fertilizer bought months ago. Our model tracks "Current Exposure," which reflects the pressure on the next harvest or the current processing cycle. We use a temporal decay function to estimate when these "upstream" shocks will actually hit the retail shelf.
Can export bans or price controls affect your scores?
Yes, and this is a known limitation. When governments impose export restrictions β as India did with rice and wheat in 2022β23, or Russia did with fertilizers β global supply tightens faster than commodity indices reflect. Our exposure scores do not adjust for active export bans in real time. Separately, domestic price controls (active in several Gulf, Southeast Asian, and South Asian countries) can suppress retail transmission even when wholesale costs are rising sharply. The scores should be read as market-exposure estimates under free-trade conditions, not post-intervention retail predictions. When known export restrictions are in place, actual consumer prices in importing countries may be higher than indicated.
Do bilateral deals or alternate supply routes reduce exposure?
Sometimes significantly. The UAE's Fujairah pipeline (capacity ~1.5 mb/d) allows Abu Dhabi crude to bypass the Strait of Hormuz entirely β one reason Gulf producers are partially insulated from their own chokepoint risk. India has sourced heavily discounted Russian crude since 2022, cutting its effective oil import cost well below Brent spot. Countries with long-term bilateral supply contracts, direct pipeline access to production regions, or active diversification programs face a lower real-world shock than our market-rate multipliers suggest. Our country impact multipliers reflect physical Strait dependency at world-market prices; they do not model bilateral discount arrangements or strategic pipeline bypass routes. These are material limitations specifically for India, China, Gulf states, and countries with active alternative sourcing strategies.
Open source
The full calculation pipeline β including all driver weights, baseline values, and country coefficients β is in the open-source repository at github.com/prismatic-labs/tare. The data file at data/foods.json is the single source of truth that drives the dashboard.
Corrections and data contributions welcome via GitHub Issues.