I run an explainable oil-inventory stress index on top of EIA weekly data (WPSR). Every point of the score is attributable to a specific inventory series — no black box.
Live dashboard → graphatlas.tech/oil/ — the full index, every component decomposed and updated weekly off the EIA release.
The index ran from 41 in mid-April to a peak of 96/100 (CRISIS) the week of Jul 3. The latest print, week ending Jul 10, is the first easing: 93, trend improving.
What the index sees, week ending Jul 10
- Commercial crude ex-SPR: 409.7M bbl — 3rd percentile of the entire 2018+ range, still drawing (−1.7M bbl on the week)
- Cushing, OK: 20.0M bbl — 1st percentile, but back above the 20M line after a small build (+0.4M)
- Distillates: 108.2M bbl — 9th percentile, and here's the turn: a +4.6M bbl build, the biggest weekly move in the set
- Gasoline: 210.5M bbl — 3rd percentile (−1.5M)
- Total commercial petroleum: 1,210.8M bbl — 18th percentile, a big +13.3M bbl build
- Refinery utilization: 96.2% — 96th percentile, refiners running flat-out
The shape of the move is the story. The index climbed almost monotonically for a quarter — 41 → 61 → 86 → 96 — on a sustained crude draw with no refinery slack. Then this week the crude side kept tightening, but the product side loosened hard: distillates and total petroleum both built, and that's enough to pull the composite off its high and flip the trend to improving.
What I'm watching in the next WPSR prints
- Is the distillate build a turn or a blip? One +4.6M week doesn't reverse a season. A second build says the tightest part of the squeeze was late June / early July.
- Crude is still drawing while products build — a classic late-cycle divergence as refiners run flat-out converting crude into product. Watch when refinery utilization finally rolls over into autumn maintenance; that's when crude draws typically stop.
- Cushing right on 20M bbl. It ticked back above the line, but at the 1st percentile any renewed draw keeps WTI term spreads violent.
- Refinery utilization at 96% leaves zero cushion — any unplanned outage flips products straight back to draws.
Base case from the data (not a price call): the stress peak is likely in for now, near 96, with the composite easing as products rebuild — but crude and Cushing stay at the floor, so this is a plateau off the highs, not a reversal.
One honesty note, since the point of this thing is transparency: the Brent futures curve is empty upstream, so the term-structure component now runs on a WTI proxy — flagged low-confidence on the dashboard, not real Brent. It reads backwardation (consistent with tight prompt crude) and adds ~9 points at a lower stress than the inventory legs, which nudges the composite to 93.4 from ~94 on inventory alone. The read above is inventory-driven; I don't lean on the proxy.
Method, in one line: weighted percentile of each EIA inventory series vs its own 2018+ history, plus a drawdown-momentum term and a Brent term-structure term (currently served by a WTI proxy) — fully decomposed on the live dashboard, free and updated weekly off the EIA release.
Data (for verification)
API, week ending 2026-07-10, recomputed 2026-07-21.
| Metric | Level (Mbbl) | w/w | Pct since 2018 | Contribution |
|---|---|---|---|---|
| Crude ex-SPR | 409,665 | −1,692 | 3rd | +24.3 |
| Cushing | 20,044 | +430 | 1st | +14.8 |
| Distillates | 108,175 | +4,556 | 9th | +13.6 |
| Total petroleum | 1,210,845 | +13,259 | 18th | +12.3 |
| Drawdown momentum | — | — | derived, max | +10.0 |
| Gasoline | 210,529 | −1,533 | 3rd | +9.7 |
| Refinery utilization | 96.2% | +0.4 | 96th | (context) |
| Brent 1–6m spread (WTI proxy) | ~+7.2 $/bbl | — | low-conf | +8.6 |
Index 93.4 · CRISIS · trend improving (peak 96.4 week of Jul 3). Score series (14 weeks, to Jul 10): 40.6 → 42.8 → 60.5 → 62.7 → 66.3 → 71.3 → 77.0 → 80.3 → 85.7 → 92.0 → 93.3 → 93.8 → 96.4 → 93.4.
For analytical purposes only. Not investment advice.