Open methodology · deterministic pipeline
Energy-flow disruption model
A transparent 0–14 day screening index combining physical flows with independent market, sanctions, and forecast evidence. Not a price or conflict probability.
1. Composite
S = 0.35 C + 0.25 P + 0.20 M + 0.10 O + 0.10 W + B
| Component | Weight | Source |
|---|---|---|
| Chokepoint flow (C) | 35% | IMF PortWatch |
| Energy-port flow (P) | 25% | IMF PortWatch |
| Energy markets (M) | 20% | FRED |
| Regional sanctions (O) | 10% | OFAC |
| Port weather (W) | 10% | MET Norway / ECMWF |
Unavailable components are excluded and remaining weights renormalized. Last validated components may be retained for at most 72 hours and are visibly marked.
2. Physical-flow anomaly
Suez, Bab el-Mandeb, Hormuz, and twelve named MENA energy ports use AIS-derived vessel or port-call series. The recent seven-day mean is compared with the preceding 28 days.
change = (mean₇ / mean₂₈ − 1) × 100
raw = clamp((|change| − 5) / 35 × 100, 0, 100)
reliability = min(1, √(mean₂₈ / 2))
adjusted = raw × reliability
Reliability shrink prevents tiny baselines from creating false extremes. Chokepoints combine all-site mean (60%) and maximum (40%). Ports combine baseline-volume-weighted mean (55%) and the three largest pressures (45%). Both surges and shortfalls can indicate disruption or rerouting.
3. Markets and sanctions
Brent uses a five-observation return; European natural gas uses a one-month return. Each is robust-z standardized against its history.
z = (x − median(history)) / (1.4826 × MAD)
pressure = clamp((|z| − 0.5) / 2.5 × 100, 0, 100)
M = 0.70 × Brent + 0.30 × gas
OFAC releases are deterministically filtered for MENA geographies, energy terms, and action terms. Current 14-day weighted activity is expressed weekly and compared with 12 prior weeks. Density contributes 55%; positive robust-z anomaly contributes 45%. No generative AI scores text.
4. Forward weather
Eight high-activity energy ports are queried from MET Norway Locationforecast. Each port uses the larger of wind and precipitation pressure.
wind = clamp((max m/s − 12) / 14 × 100, 0, 100)
rain = clamp((max daily mm − 30) / 90 × 100, 0, 100)
The component combines the three highest port risks (65%) with the all-port mean (35%).
5. Concurrence and bands
A +5 bonus requires physical flow/weather ≥40 and independent market/sanctions evidence ≥45.
| 0–24.9 | Baseline |
| 25–44.9 | Watch |
| 45–64.9 | Elevated |
| 65–79.9 | High |
| 80–100 | Severe |
6. Reproduce
No key, account, paid API, or generative AI is required.
git clone https://github.com/MonarchCastleTech/mena-energy-flow.git cd mena-energy-flow python -m pip install -r requirements.txt python -m pytest -q python pipeline/mena_energy_flow_pipeline.py python -m http.server 8000
7. Limits
PortWatch calls are not complete vessel tracks; sanctions are administrative and often lagging; commodity prices are globally confounded; forecasts change. The index screens multi-source disruption pressure. It does not infer intent, attribution, price direction, or conflict probability.
