Q2 2026 Oil Market Brief
HORMUZ CRISIS EDITION — IEA April OMR Released Today
EnergyScope MCP v2.9.3
Apr 14, 2026
Classification: URGENT
⚠ Market Regime: HORMUZ CRISIS
Strait of Hormuz de facto closed since Feb 28. Global supply crashed 10.1 mb/d to 97 mb/d. 13+ mb/d of exports severed. The largest supply disruption since the 1973 oil embargo.
Every signal the platform identified over the past week — freight extreme (z=7.92), supply shock signature, regime curve destruction, forced storage builds, arb shutdown — was downstream of this single event. The cause is now confirmed by the IEA April OMR, released to subscribers today. Physical crude traded near $150/bbl. Singapore distillate hit all-time highs above $290/bbl. Global inventories fell 85 mb in March alone. 100 mb of crude now trapped as floating storage behind the strait.
IEA April 2026 OMR — Key Figures
97 mb/d
Global Supply (Mar)
-13+
Hormuz Export Loss (mb/d)
-85 mb
March Inventory Draw
-80 kb/d
2026 Demand Growth (was +850)
$290+
Singapore Distillate ATH
OPEC-IEA Demand Disagreement — Widened to 2.53 mb/d
OPEC: 106.53 mb/d → IEA: 104.0 mb/d → Spread: +2.53 mb/d [↑ from +1.73]
The spread intensified by +0.8 mb/d in one month (score 0.153 → 0.687, severity mild → extreme). IEA slashed demand by 730 kb/d due to the Hormuz disruption — demand now CONTRACTING for the first time since Covid. OPEC's April MOMR (released yesterday) still shows +1.4 mb/d growth. One of them is dramatically wrong.
Causal Reads — What Hormuz Explains
CausalFreight extreme (z=7.92) = tankers can't transit Hormuz. The BWET signal we tracked all week wasn't generic "shipping cost inflation" — it was a chokepoint closure. 20+ mb/d of Hormuz loadings collapsed to 3.8 mb/d.
CausalOPEC -7.7 mb/d "cut" (MOMR Table 5-7) was involuntary. Saudi 10,112 → 7,799, UAE 3,419 → 1,892, Kuwait 2,582 → 1,213. These producers CAN'T EXPORT through the closed strait.
CausalDiesel at z=5.0 / Singapore $290 = global distillate shortage. Middle East refineries that supplied Asian distillate are cut off. Our diesel_clean_long signal (score 1.0, dominant_lens) reflects the tightest product market globally.
Causal100 mb floating storage behind the strait = future supply overhang. When Hormuz reopens, 100 mb of crude hits the market simultaneously. Short-dated puts on the Brent curve are the hedge.
CausalUS is the island of relative stability. WTI at $104 vs physical Brent near $130-150. US production at record seasonal highs, Cushing building. The US is self-sufficient while the world scrambles.
Contradictions (9/15) — Server-Canonical, Scored
1.000extremediesel_clean_long [refined_products]Diesel crack extreme without inventory overhang. Singapore $290/bbl confirms global shortage.
0.965extremeforced_storage_build [crude_supply × market_structure]Cushing building despite -77% roll yield. US crude trapped; exports shut.
0.922extremesupply_shock_signature [macro × market_structure]VIX-oil +0.92. Textbook Hormuz-closure macro pattern.
0.920extremeregime_curve_destruction [market_structure]M1-M12 -$22.61, roll -77%. Curve screaming for barrels behind the strait.
0.797extremerefiner_margin_trap [refined_products]Cracks extreme but gasoline oversupplied. Overhang resolves via demand destruction at $150.
0.725extremefreight_locked_arb [market_structure]Arb shut by military closure, not economics.
0.725extremefundamental_rally [market_structure × positioning]Positioning at median = rally is physical, not speculative.
0.522elevatedgasoline_overhang [refined_products]Gasoline stocks at 100th pctl. May resolve via pump price pass-through.
0.263mildopec_revision_vs_price [market_structure × opec_compliance]OPEC still sees +1.4 mb/d growth while IEA sees contraction. At $150, OPEC is the outlier.
Supporting Data
Brent Spot
$121.88
physical ~$150
Appendix: How This Report Was Generated
MCP Tools Used (30 calls)
| Tool | Calls | Purpose |
| latest | 2 | Daily prices + weekly EIA data |
| term_structure | 1 | ICE Brent M1-M12 curve shape |
| crack_spread | 3 | 3-2-1, gasoline, diesel cracks |
| arb_signal | 1 | Transatlantic arb composite score |
| spread | 1 | Brent-WTI spread + z-score + HL |
| upcoming_events | 1 | 30-day catalyst calendar |
| previous_report | 1 | Prior snapshot for diff |
| derived_signals | 1 | v2: scored, themed, transition-aware |
| compare_runs | 9 | Metric + signal diff (all 9 reports) |
| save_report_run | 9 | Persist + publish to web |
| get_data | 1 | IEA OMR headline verification |
Contradictions Firing (9/15)
| Contradiction | Score | Theme(s) |
| diesel_clean_long | 1.000 | refined_products |
| forced_storage_build | 0.965 | crude_supply × market_structure |
| supply_shock_signature | 0.922 | macro × market_structure |
| regime_curve_destruction | 0.920 | market_structure |
| refiner_margin_trap | 0.797 | refined_products |
| freight_locked_arb | 0.725 | market_structure |
| fundamental_rally | 0.725 | market_structure × positioning |
| gasoline_overhang | 0.522 | refined_products |
| opec_revision_vs_price | 0.263 | market_structure × opec_compliance |
Data Sources (11 datasets)
| Dataset | Series Used | Coverage |
| PET (EIA) | 10+ | Spot prices, stocks, production, cracks |
| ICE (Brent) | 12 | M1-M12 term structure |
| SHIP (Freight) | 1 | BWET tanker proxy |
| CFTC | 2 | WTI + Brent MM positioning |
| MACRO | 8+ | NYMEX futures + VIX/S&P/DXY |
| NG (Gas) | 2 | Henry Hub + storage |
| GAS (TTF) | 1 | European gas benchmark |
| ECB | 1 | EUR/USD |
| OPEC MOMR | 385 | S&D balance + country production |
| IEA OMR | 168 | Table 1/1a + headline scraper |
| Baker Hughes | 3 | US rig count (weekly) |
Snapshot Keys (42 metrics)
wti brent brent_wti_spread brent_wti_zscore ice_m1 ice_m12 m1_m12 roll_yield_pct bwet_z arb_score crude_seasonal_pctl cushing_z cushing_7d_pct gasoline_seasonal_pctl distillate_seasonal_pctl production_seasonal_pctl refinery_util crack_321_z crack_diesel_z crack_gasoline_z wti_mm_pctl brent_mm_pctl vix_corr wti_price_pctl opec_world_demand_revision opec_call_production_gap opec_world_demand_2026 iea_world_demand_2026 iea_demand_revision_mbd iea_global_supply_mbd iea_hormuz_loss_mbd iea_floating_storage_mb nymex_wti nymex_ho_gal nymex_rbob_gal ttf_eur_mwh henry_hub bh_us_rigs regime primary_dislocation dominant_lens opec_iea_spread_2026
Signal Layer
| Signals evaluated | 45 (across 7 themes) |
| Signals active | 19 |
| Contradictions evaluated | 15 |
| Contradictions active | 9 |
| Dominant lens | diesel_clean_long (score 1.0) |
| Meta-signal | 6/7 themes engaged |
| Virtual metric | OPEC-IEA spread +2.53 (auto-computed) |
| Aliases used | 56 canonical key mappings |
Narrative Approach
Regime-first hierarchy: regime → primary dislocation → contradictions → supporting data.
Contradictions are server-canonical: scored (0-1), severity-ranked, themed, with TRIGGER + NARRATIVE per entry.
"Changes Since Last Brief" generated from compare_runs signal diff (signals added/removed + contradiction score shifts).
Replication: any MCP client calling the same 30 tools with the same watchlist produces identical analysis. The narrative layer is in the platform, not in the prompt.