Tradero study · v2.1 · 2026-09-02 — v2.0 (second research round: information layer, sessions and regions, participants, mood, cause→effect chains, toolkit) plus the Codex review of v2.0 (what changed: §12.3); organised as Part I (essentials) and Part II (knowledge base)
| Question | What is the crude-oil price mostly affected by, and what does a trader need to know and check before putting on a long or a short? |
|---|---|
| Method | Two independent studies merged, in two rounds. Claude: round 1 — four parallel web-research passes (physical supply/demand · inventories & market structure · macro/positioning/academic evidence · trader process/contracts/calendar); round 2 — six more (information layer · sessions & regions · participant map · global mood communities · cross-market/policy chains · analytical toolkit); ~1,500 tool calls in total, primary sources preferred (EIA, IEA, OPEC, CME, ICE, CFTC, Fed/ECB/BIS, peer-reviewed papers). Codex (gpt-5.6-sol, xhigh reasoning, web-verified): an independent study on each round's brief, blind to Claude's notes, plus a review pass of the merged text. Agreements and differences are in §12. |
| Raw material | Research notes A–J: research/studies/2026-09-02-oil-fundamentals/ · Codex memos and reviews: research/codex/2026-09-02-*.md |
| Grades | A robust (primary data or peer-reviewed, replicated) · B plausible, mixed or regime-dependent · C folklore, weak or one-episode. Graded on two axes where they differ — mechanism confidence and incremental out-of-sample forecast evidence (written "A mechanism / C signal"); data reproducibility is tracked separately in the rights registry (MASTER-PLAN §5.3). VERIFY = not confirmed against a primary source; consolidated queue in §13. |
| Horizon focus | Tradero S1: 2–20 trading-day holds in NYMEX WTI (CL family). Intraday (S2) and months (S3) are noted where they differ. |
| Boundary | Educational and design material. Not investment advice, not a recommendation to trade. Nothing here is personalised. |
0. How to use this document
The document has two parts. Part I — Essentials (§1–§2) is the human-readable core: the conclusions, the mental model of how the price is formed, the one-page map from the causes of the causes to the price, and the trader's day. Read it first and re-read it when lost. Part II — Knowledge base (§3–§20) is the reference the AI and the engineers use: every driver with mechanism, direction, magnitude, horizon, data series and evidence grade (§3); what the evidence says predicts returns (§4); regimes (§5); the pre-trade checklist (§6); traps (§7); contract mechanics (§8); the calendar (§9); a dated snapshot (§10); the Tradero programme (§11); where the two studies agree and differ (§12); the verification queue (§13); the information layer — how news becomes data (§14); sessions and regions (§15); the participant map (§16); the cause→effect chain catalogue (§17); mood and narrative, including where oil traders talk worldwide (§18); the analytical toolkit and strategy catalogue (§19); and what all of it adds to the programme (§20).
Section numbers are stable across versions so that MASTER-PLAN, memory and code can cite them. Evidence grades (A/B/C) and VERIFY tags are part of the content: a claim without a grade has not been assessed.
Part I — Essentials
1. Executive summary — twenty-three conclusions
- Oil price is a balance residual. Production − consumption = inventory change. Price moves until observed inventories confirm or refute the expected balance. Everything else in this document is a way of forecasting or observing that identity earlier than the consensus.
- Price responds to innovations, not levels. A crude draw that the market expected is not bullish. A quota hike that was pre-leaked moves price <1–2 % on the day. The tradable content of every report is actual − expected, and "expected" must be timestamped.
- The futures curve is the best single public summary of the physical balance. Backwardation = scarcity (low stocks, high convenience yield); contango = surplus. It is an A-grade state variable and a B-grade timing signal: over 20 days the carry is ≈0.4 % against a 10-day return standard deviation of 6–7 %. Use it as a regime filter and conditioning variable, not as a trigger.
- Not all shocks are alike. Supply-loss shocks, aggregate-demand shocks and precautionary (fear) shocks have different persistence. Precautionary premia decay in 1–8 weeks unless barrels are actually lost. Classify the regime before choosing a trend or a mean-reversion prior.
- Announced ≠ realised. Barrels "at risk" are consistently larger than barrels lost (Russia 2022: ~3 mb/d feared, ~0.2–0.3 mb/d realised). The 2026 Hormuz episode is the exception that proves the rule: the premium persisted for six months because a chokepoint defeats re-routing and 8.3 mb/d of Gulf output was genuinely shut in. Track loadings and transits, not headlines.
- The EIA Wednesday report is an event, not a multi-day signal. Price reacts to the surprise within minutes; the one daily-data study that looked (Miao, Ramchander, Wang & Yang 2018) found no drift beyond the announcement day — a single absence result, grade B. For a 2–20 day book it is variance to size for and new state to ingest, not a directional input on its own. It is the right raw material for an intraday overlay (S2).
- Cushing is a non-linear amplifier at both tails. Below ≈20 mb (EIA: stocks may be near tank bottoms — the floor is a hypothesis to estimate, not a published number) prompt spreads and Brent–WTI go violent (June–July 2026: WTI spot above Brent). When uncommitted storage vanishes (April 2020: ≈60 mb in tank against ≈76 mb working capacity, 76–83 % full) the expiring contract can detach from spot (20 April 2020: −$37.63). It is the most WTI-specific variable there is.
- Trend and carry are the benchmarks any new idea must beat. Single-market trend on commodities earns a gross Sharpe of roughly 0.3–0.4 over long samples; commodity carry is robust cross-sectionally and weak in a single time series. The bar is low in absolute Sharpe but high in orthogonality: a new factor must add after controlling for trend sign, front spread and the EIA/roll calendar.
- Macro is state, not signal, at this horizon. The dollar–oil correlation has flipped sign three times since 1990; rates now react to oil supply news rather than lead it; PMI and credit-impulse leads exist only at 1–3 months and are contested. Use macro for regime classification and P&L attribution.
- Positioning does not lead price. Speculators' positions follow prices (no Granger causality). The one well-identified short-horizon effect is that changes in managed-money positions mean-revert over weeks (liquidity demand), while levels reflect trend and hedging. "Extreme percentile → fade" conflates the two and lacks peer-reviewed support in crude.
- Seasonality is real in products and runs, weak in crude returns. Refinery turnarounds (Feb–Mar, Sep–Oct) and product cracks are robust physical cycles. Calendar-month crude returns are statistically significant only at the Feb–Sep vs Oct–Jan level, with monthly SDs of 7–14 %. Weak prior, never a stand-alone edge.
- Tails are in-sample, not hypothetical. Daily moves of ±15–25 % have occurred repeatedly (−25 % 9 Mar 2020; +24.7 % 2 Apr 2020; +14.8 % Abqaiq; ≈+22 % intraday 9 Mar 2026 VERIFY; −16 % 8 Apr 2026), mostly after weekends. Stops do not protect across a gap; only size does. Margins rise after the spike.
- Contract mechanics are part of the thesis. CL is physically delivered; a retail account must be out before the broker's close-out deadline (IBKR: longs two business days before first notice, shorts two before last trade). MCL and the 10-barrel TCL are cash-settled. TCL has not launched — CME's client-systems page marks the production launch "postponed, pending regulatory review", date TBD (updated 27 Aug 2026). Sizing must assume a 5 % day (≈$4,500 per CL, ≈$450 per MCL at $90).
- A view is not a trade. A trade adds four things a view lacks: a dated catalyst inside the holding window, knowledge of who is already positioned, the structure (outright vs spread, which month), and the explicit condition that kills it. Andurand's 2023 drawdown with a correct bullish balance is the canonical reminder.
- For Tradero: the current Oil State v0 is a dashboard, not a forecast model. Both studies converge on the same v1 programme: contract-correct trend and carry as frozen benchmarks; curve-conditioned inventory scarcity as the first real hypothesis; WPSR innovation (not stock level) as the second; everything else context-only until it earns its place out of sample. Details in §11.
Added by the second research round (Part II, §14–§20):
- A headline is a data object, not a fact. Every item is stored as an immutable claim (announced value, expectation and cutoff, source authority) with append-only observations (confirmations, denials, realised measurements). In the one proprietary-data study that tested it, geopolitical sentiment had a strong immediate impact and no return predictability beyond intraday; the objects worth tracking are the repair timeline, the compliance record and the loading count — never the flash.
- The day has overlapping liquidity regimes and two structural events. As working priors: Asian hours are thin and usually follow, with local information on China and the RMB; European hours are Brent-led and extend through the 16:30 London physical assessment; US hours are WTI-led around the 10:30 ET report and the 14:28–14:30 ET settlement. Leadership is time-varying and must be tested per session. Weekends open through a thin Sunday book that Gulf equities price first.
- In the episodes studied, pre-committed flows moved price at the extremes while discretionary money reacted. Published ETF rolls and retail products held into expiry (2020), margin calls on hedgers (2022) and hedge programmes triggered by price levels with vol-targeted CTA cuts (2026) are each documented separately; they are not one established law. There is no stable smart-money group; the CFTC classifies traders, not trades, and every category's net position is an empirical quantity for a specified report, never a structural constant.
- Retail's documented losses came through instrument mechanics in the cases studied. USO, Bank of China's product and MCX holders in April 2020 were broadly right on direction and lost on roll, expiry and settlement mechanics; EU CFD loss rates (74–89 % of accounts) are documented by ESMA without a direction-versus-structure decomposition. Contract mapping, roll and settlement rules therefore outrank crowd direction.
- Mood is a volatility and event diagnostic, never a price score. The evidence with any replication concerns second moments: attention and news volume help forecast volatility. The sampled public venues (§18.1) are lopsided — English X and Substacks for the professional narrative, local retail boards for framing — and access, licensing and personal-data law, not modelling, are the binding constraints.
- Product and refinery supply shocks show up in cracks first; demand shocks hit flat price first. The diesel crack is the first responder to distillate loss; a crude production outage usually hits crude first and can weaken cracks; tariffs and recessions hit flat price first.
- Slow variables set the sensitivity of fast ones. Decline rates, capex, stock cover, refining configuration and effective spare capacity decide whether a hurricane or a sanctions designation moves price 2 % or 20 %.
- The professional toolkit is deliberately redundant. A move confirmed by the front spread, cracks, loadings and physical differentials is a different object from the same move with only crowd attention; the toolkit exists to tell them apart. Published single-market trend and carry results sit near a Sharpe of 0.3–0.7; a higher single-market backtest is a review trigger for the deflated-Sharpe and multiple-testing checks in §19.6, not a result.
2. How the oil price is formed — the mental model
2.1 The identity and its lags
Global supply − global demand = stock change. Because short-run demand and supply elasticities are tiny (Hamilton 2009; Baumeister–Hamilton 2019 put both near 0.1 in absolute value VERIFY), small quantity imbalances require large price moves to clear. Oil therefore overshoots by construction. Supply reacts with long lags: US shale needs ~4 months from price to rigs and ~2 more to production (EIA), and in 2026 producers chose not to respond at all (Dallas Fed Q1: 30 % of E&Ps planned no output change despite WTI $57→$111). Demand reacts through China's price-elastic stockpiling (imports 11.6 mb/d in 2025 at low prices, 8.1 mb/d in 2Q26 at high prices) and through demand destruction, both over 1–3 months.
2.2 Inventories are the truth, the curve is the forecast
Inventories are where the identity is observed. The futures curve is where it is priced: the basis F − S equals financing + storage − convenience yield (Working 1949; Fama–French 1987). Convenience yield is a decreasing, convex function of stocks (Gorton–Hayashi–Rouwenhorst 2013), so low stocks ⇒ backwardation and high stocks ⇒ contango. Goldman's framing (Currie): the timespread is "a direct measure of inventory tightness, not a forecast"; Murti: "the truth is in the shape of the forward curve." Causality runs both ways with a lag — EIA's own study found Cushing stocks a significant function of the lagged M2–M1 spread over 2004–2011 (contango pulls barrels into tanks).
2.3 Three kinds of shock
Kilian (2009) decomposes real oil-price changes into oil-supply shocks, aggregate-demand shocks and oil-specific / precautionary demand shocks. Each has different price persistence and macro effects. Baumeister & Hamilton (2019) argue that with plausible elasticity priors supply shocks matter much more than Kilian found. The practical lesson survives the academic dispute: the same $5 move means different things depending on which shock produced it, and the right prior (continuation vs reversion) depends on the shock type. §5 gives deterministic ways to tell them apart.
2.4 Innovations, expectations, and the reaction function
Price reacts to surprises. This has three operational consequences. (i) Every scheduled release needs a timestamped expectation (consensus survey, the API print, a model) or the "surprise" cannot be computed. (ii) Telegraphed policy (OPEC+'s monthly 188 kb/d steps in 2025–26) is nearly priced by the time it is announced; surprises (2 April 2023: >1 mb/d cut a day before a meeting expected to hold; WTI +8 %) are amplified by positioning. (iii) The persistence of a surprise depends on whether the physical market confirms it within days (spreads, Cushing, loadings) — that confirmation is the tradable part for a 2–20 day book.
2.5 Announced versus realised
Every geopolitical or policy headline names a quantity "at risk". Only a fraction is lost, because re-routing, shadow fleets, discounts, SPR releases and demand destruction fill gaps. The premium = probability × expected loss + precautionary stockbuilding, and it appears first in prompt spreads, Brent–Dubai and freight, then in flat price. The ECB finds geopolitical-shock effects "insignificant after one quarter"; TD Securities finds premia fade within about a month in most post-1981 episodes. Abqaiq (14 Sep 2019, ~5 % of world supply hit): +14.8 % Monday settle, largely reversed within days, fully within weeks. The discriminator is realised flow: realised_net_loss = observed_loss − offsets − releases (Codex's formulation), measured in loadings and transits, never in headline capacity.
2.6 The map of causes — from the cause of the cause to the price
SLOW VARIABLES (years) — set the SENSITIVITY of everything below
capex cycle & decline rates · effective spare capacity · stock cover · refining configuration
EV adoption & efficiency · standing policy (ETS, IMO, quotas, price caps) · pipeline & export capacity
│
▼
TRIGGERS (hours–weeks) — change EXPECTED flows
OPEC+ decisions · outages, attacks, chokepoints · sanctions ENFORCEMENT · weather (hurricanes, freezes, rivers)
SPR releases & refills · China quotas & stockpiling · gas/LNG & product shocks · macro & tariff shocks
│
▼
TRANSMISSION (who carries it)
producers hedge (curve) · merchants store & reroute (spreads, freight) · refiners run or cut (cracks)
funds and CTAs position (flat price, then curve) · dealers hedge (options, deferred) · states release or refill
│
▼
OBSERVABLES (what the code sees, point-in-time — three classes with different latencies)
market observables (price, curve & spreads, cracks, differentials, options, OI, margins) — immediate
leading physical observations (loadings, transits, port line-ups, nominations, freight) — hours to days, often licensed
lagged estimates (WPSR, ARA, JODI, agency balances, positioning reports) — days to months, revised
+ the narrative state (attention, topics, confirmation depth) — diagnostic only
│
▼
PRICE OBJECTS → flat price · front spread · cracks · Brent–WTI
↺ FEEDBACK LOOPS: price → producer hedging → curve · volatility → margin → deleveraging
refinery margins → runs → crude demand · low price → China builds, high price → China draws
price → politics (SPR, OPEC, sanctions) · positioning → price → positioning
How to read it. A trigger only matters through a transmission and an observable, and the three observable classes have different latencies: the market reprices a probability shock within seconds, often before any barrel is lost; leading physical observations confirm or refute it over hours to days; lagged estimates reconcile it weeks later and are revised. A threat without lost barrels, a designation without enforcement or a communiqué without loadings can therefore move price and still be a premium that decays — the physical observation is the falsifier, not the headline. The slow variables are not signals but they scale every signal, which is why the same headline is worth 2 % in one year and 20 % in another. The feedback loops are why a correct view can lose money: hedging caps the curve after a rally, margin calls remove the sellers a spike needs, and stockpiling buffers both tails. The full catalogue, chain by chain, is §17.
2.7 The trader's day in one page (Rome time, normal offset)
00:00 Globex reopens: weekend news, OPEC+ Sunday statements and Gulf-equity prints are priced through a thin book (§15.2). 03:00–09:00 Asia: INE day session, Chinese data (~04:00), the Dubai window at 10:00–10:30 — a follower session that carries local information on China and the RMB. 10:00 IEA OMR on release days; 14:00 OPEC MOMR. 14:25 macro-risk checkpoint before US releases (CPI, payrolls, FOMC days): an open book is sized for the print before it lands, not after. 14:30 US macro releases. 15:30 the operator's window opens: read the machine handover (overnight returns, curve, cracks, confirmed events, data failures), then only Tier 1–2 exceptions and today's event clock (§14.5). 16:15 Thursdays ARA product stocks (Amsterdam local time). 16:30 Wednesdays the EIA report — code computes the surprise, the trader watches the 16:30–17:00 window, nobody types a number by hand; in holiday weeks the report moves to Thursday, usually 18:00 Rome, and in the DST-mismatch weeks every ET time lands an hour earlier — the calendar is read from the source, never assumed. 17:00–17:30 the London physical window: Platts assesses Dated Brent at 17:30 — the daily physical assessment, editorial judgement included. 18:00 STEO on its days. 19:00 Fridays Baker Hughes — read, never traded on its level. 20:15 decide overnight exposure; 20:28–20:30 CL and Brent settle in the same two minutes; TAS volume spikes and carries no direction. 21:30 Fridays COT lands after the window; 22:30 Tuesdays API lands after the window — both are collected automatically and read next session. 23:00 Globex breaks for an hour.
Before any long or short, four questions (§6): what is the thesis in one sentence, in balance terms; what dated catalyst inside the 2–20-day window forces the market to re-price; who is already positioned, and what pre-committed flows (rolls, expiries, margin) sit in the window; what, written down, kills the trade. Then the mechanical gate: data fresh and point-in-time, the contract month and its roll or broker deadline known, every scheduled event in the window mapped to a tested policy, liquidity measured on the traded contract, the one-contract loss under absolute $/bbl shocks inside limits, the kill switch verified. Size to the weekend gap, never to margin.
Part II — Knowledge base
3. The driver map
Column key — Dir.: sign of the flat-price effect for the bullish version of the driver. Magnitude / speed: how fast the effect arrives and, where an episode gives one, its size. No generic $/bbl bands are offered: magnitudes are to be calibrated on Tradero's own point-in-time event set (uncalibrated buckets become unaudited priors — Codex review). Horizon: I intraday · S 2–20 days · M months. Data: the exact series a collector ingests (EIA v2 ids, FRED ids, CFTC codes). Grade: A/B/C as defined above; split as "mechanism / signal" where they differ.
3.1 Physical supply
| Driver | Mechanism → direction | Magnitude / speed | Horizon | Data | Grade |
|---|---|---|---|---|---|
| OPEC+ quotas & compliance | Sets targets, not output. Price reacts to the change in expected supply vs what the curve discounted. Surprise cut → up (Apr 2023: WTI +8 %); telegraphed steps → <1–2 %. Cuts also raise spare capacity, which caps the risk premium. | Minutes; largest when a surprise meets crowded positioning | I / S / M | opec.org press releases (meeting days, usually Sunday → Monday gap); OPEC MOMR secondary-source output; EIA STEO COPR_OPECPLUS | A mechanism / B forecast |
| Spare capacity | Insurance against outages. Price impact of any outage is convex in spare capacity: with <1.5 mb/d effective spare the market "loses confidence" (rule of thumb, C). IEA put effective spare at 1.09 mb/d in July 2026 because Gulf spare is stranded behind Hormuz. | Slow variable that sets the gain on fast shocks | S / M | STEO COPS_OPEC_R02/R05/R06 (vintaged); IEA OMR; EIA definition: reachable in 90 days and sustainable | A definition / B mapping |
| US shale (rigs, DUCs, productivity, breakevens) | Price → rigs (~4 mo) → output (~2 mo). Link weakened: rigs −33 % Dec 2022–Oct 2025 while Permian output +18 %. Breakevens $59–68 (Dallas Fed 1Q26). Producer hedging when the 12–24-month strip clears ~$65–70 caps the back of the curve. | Weeks–quarters; S per week | M (rigs are a sentiment input at S) | Baker Hughes Fri 13:00 ET; EIA WCRFPUS2 (modelled weekly, re-benchmarked by PSM/EIA-914); DPR DUCs; Dallas Fed survey quarterly | B; rigs alone C for S1 |
| Non-OPEC growth (Brazil, Guyana, Canada, Norway, Argentina) | Offshore projects sanctioned years ago, price-inelastic at S. Matter only through revisions to monthly balances. | Revision day only | M | STEO Table 3b / PAPR_NONOPECPLUS_XUS; IEA OMR | B |
| Outages & sanctions | Realised loss tightens prompt supply; restoration loosens it. Announced ≫ realised except at chokepoints. Vessel sanctions raise freight and discounts first; volumes fall only under physical enforcement. | Minutes (headline) → weeks (flows) | I / S / M | EIA unplanned-outages file; OFAC/EU releases; loadings via Kpler/Vortexa/Windward (paid); JODI | A mechanism / B measurement |
| SPR & coordinated stocks | Release adds supply, refill adds demand. 2022: 180 mb over 6 months; event-study reaction −0.32 % on release announcements VERIFY. 2026: 400 mb IEA collective action (11 Mar), US 172 mb as exchanges; SPR 308 mb on 24 Jul, lowest since 1983 VERIFY. | Minutes then weeks | I / S | EIA WCSSTUS1; DOE solicitations; IEA statements | B |
| Russia (2026 overlay) | Ukrainian strikes on refineries push crude exports up (storage full) while cutting products → bearish crude vs products, bullish diesel cracks. June 2026 output 0.91 mb/d below quota. | Weeks | S / M | IEA OMR; MOMR; loadings | B |
3.2 Demand
| Driver | Mechanism → direction | Magnitude / speed | Horizon | Data | Grade |
|---|---|---|---|---|---|
| China (swing importer) | Price-elastic buffer: stocks when cheap, destocks when dear, damping global moves over 1–3 months. 2Q26 imports 8.1 mb/d (−32 % q/q); restocking is a large latent bid when Hormuz normalises. Teapot import quotas and sanctions on teapots alter the reading. | Release hours | S / M | GACC customs HS 27090000 (~7th–10th); NBS runs (15th, 10:00 Beijing); JODI | B |
| India / non-OECD | Structural growth; ~5 mb/d imports; lagged monthly data. | Days–months | M | PPAC monthly; JODI | B |
| OECD / global activity | Strong activity lifts demand and oil–equity co-movement; recession reverses. Only 1–3-month leads with evidence (non-oil industrial commodity prices: ≤22 % MSPE gain, Baumeister–Kilian). | Surprise hours; cycle months | S / M | IEA OMR; STEO Table 3e; Kilian global activity index (Dallas Fed IGREA); ISM/PMI | A mechanism / B signal |
| Seasonal products (driving, heating, jet, petchem) | Alter cracks, refinery pull and product stocks. Robust physical cycle; weak return cycle. | Days–weeks | S / M | EIA 4-week WGFUPUS2, WDIUPUS2, WKJUPUS2; product stocks; degree days | B |
| EV substitution | ~1.3 mb/d displaced in 2024, >5 mb/d by 2030 (IEA); raises long-run demand elasticity. Irrelevant at S. | Decade | — | IEA GEVO | A structural / irrelevant at S |
| Demand data lags & revisions | Official demand lags 2–3 months and is revised for years (IEA moved 2026 by 510 kb/d in one month). Proxies: EIA products supplied (4-wk avg), cargo tracking, refinery margins. | — | — | see above | — |
3.3 Inventories and storage
| Driver | Mechanism → direction | Magnitude / speed | Horizon | Data | Grade |
|---|---|---|---|---|---|
| EIA WPSR headline crude (commercial, ex-SPR) | Draw vs expectation → up, build → down, within minutes. No persistence beyond the announcement day in the one daily-data study (Miao, Ramchander, Wang & Yang, JFM 2018; 2003–11 sample); no asymmetry; one-day anticipation. OLS understates the impact (Halova–Kurov–Kucher 2014). Effect weaker in strong trends, disappears in steep declines (Bu 2014). | Minutes | I (S only as new state) | WCESTUS1; release Wed 10:30 ET (Thu 12:00 ET holiday weeks); weekly change SD ≈4.5–5.4 mb — the unit for "surprise" | A speed / B no-drift (single absence result) / B as S1 input |
| Cushing | Delivery hub for CL. Below ≈20 mb (2026 low 18.6 mb; EIA says stocks may be near tank bottoms — the floor is estimated, not published) prompt spreads and Brent–WTI spike (Brent–WTI negative 18–24 Jun and 2–8 Jul 2026). When uncommitted space vanishes (Apr 2020: ≈60 mb stored vs ≈76 mb working capacity) the expiring contract detaches (−$37.63). Weekly Cushing stock is a lagged residual of pipeline inflows and outflows (§3.9). | Days; several $/bbl in spreads and differentials | I / S | W_EPC0_SAX_YCUOK_MBBL; weekly change SD ≈1.2–1.3 mb; EIA capacity report discontinued after Mar 2024 | A delivery relevance / C fixed level thresholds |
| Product stocks & days-cover | Low gasoline/distillate stocks strengthen cracks and refinery pull; high product stocks can negate a crude draw. Days-cover = stock / 4-week demand. | Minutes–weeks | I / S | WGTSTUS1, WDISTUS1, WKJSTUS1 + products supplied | A mechanism / B return |
| The "adjustment" | Balancing residual (>2 mb/d at times). A headline draw with a large positive adjustment is weaker evidence than the same draw with a small one. | — | — | WPSR Table 1 | B |
| API report | Same survey forms; API states ~90 % coverage and attributes differences vs EIA to noise. Coverage, level agreement and price discovery are three different claims, and no public vintage archive exists to measure how much of the EIA surprise Tuesday absorbs. Whipsaw is a liquidity event, not a signal. | Minutes | I | Paid (Refinitiv/ICE) | C until a timestamped vintage archive and event study exist |
| Global / floating stocks | Broad draws confirm tightness; floating storage mixes storage with transit. July 2026: observed stocks −69 mb, −410 mb since February; OECD 66.5 mb below 5-yr avg, 58.7 days cover. | Weeks–months | M | IEA OMR (summary free, tables licensed); OPEC MOMR; STEO OECD days-supply; Kpler/Vortexa (paid) | B |
| Theory of storage | Basis = financing + storage − convenience yield; convenience yield convex in stocks. Three-regime structure (contango / backwardation / extreme backwardation) with regime persistence. | Continuous | S / M | Same-time CL F1…F12 + stocks + rates | A |
3.4 Market structure
| Driver | Mechanism → direction | Magnitude / speed | Horizon | Data | Grade |
|---|---|---|---|---|---|
| Prompt curve / carry (F1–F2, F1–F4) | Backwardation ⇒ scarcity, positive roll for longs; contango ⇒ surplus, negative roll. Over 20 days carry ≈0.4 % (own calc, B note) — second-order for P&L, first-order as information. GSCI backwardated 11.2 %/yr vs contangoed −5.0 % (Erb–Harvey, monthly). | Continuous | S / M | Contract-level CL settlements; annualised slope; z-score vs trailing 250 d; explicit roll rule | A state / B timing |
| Curvature (F1–F2 vs F6–F12) | Separates prompt scarcity from year-ahead balance; producer hedging flattens the back in rallies. | Days–months | S / M | CL F1…F24; simple spreads before PCA/Nelson–Siegel | B |
| Brent–WTI | A location spread: US long/short barrels vs the world, set by Midland–Cushing differential + USGC→Rotterdam freight since WTI Midland entered Dated Brent (June 2023). Normal discount a few dollars; $25 on 31 Mar 2026; negative with Cushing at the floor. Ambiguous for outright WTI. | Hours–weeks | I / S | ICE B vs CME CL delivery-matched; Argus WTI Houston | B |
| Dated Brent vs futures | Physical BFOET cargoes can validate or contradict futures tightness ("physical trading much higher than futures", Energy Aspects Apr 2026). | Intraday–weeks | I / S | Licensed Platts/Argus | A physical / B signal |
| Crack spreads (3-2-1, gasoline vs distillate) | Wide cracks pay refiners to run harder → crude demand up, crude stocks draw; collapsing cracks → run cuts → crude builds while products draw. Gasoline crack = consumer, distillate crack = industrial/freight. | Minutes–weeks | I / S | CME RB, HO, CL (unit-correct); EIA runs WCRRIUS2, utilisation WPULEUS3 | A mechanism / B signal |
| Refinery maintenance | Turnarounds cluster Feb–Mar and Sep–Oct; utilisation troughs ≈86–87 % vs 92–93 % in summer. Late Aug 2026 at 97.4 % — no headroom, so autumn maintenance mechanically weakens crude demand. | Weeks | S / M | EIA utilisation; STEO refining | A physical cycle / B–C directional timing |
| Freight (VLCC) | Higher freight widens location spreads; disruptions lift delivered crude and depress stranded grades. Mar 2026 VLCC records (TD3C ~$424k/day VERIFY). | Hours–weeks | I / S | Baltic TD3C/TD25 (paid); port/insurance notices | B |
| Index roll window | S&P GSCI rolls on business days 5–9, Bloomberg BCOM on business days 6–10, both at 20 %/day (index methodologies). Documented spread distortion in 2000–10 (~$0.31 M1–M2, Mou 2011) is an old estimate, not a modern execution prior. Exclude both windows from spread signals. | Days | I / S (local) | Index methodologies; CME monthly OI | B mechanism / C current effect size |
3.5 Macro and financial
| Driver | Mechanism → direction | Magnitude / speed | Horizon | Data | Grade |
|---|---|---|---|---|---|
| US dollar | Denomination, terms-of-trade (flipped when the US became a net exporter, 2019) and risk channels. Correlation: none pre-2007, negative 2007–15 (risk-off), positive 2021–23 (ECB 2024; BIS Bulletin 74). Exchange-rate models "not successful at short horizons" (Alquist–Kilian–Vigfusson). | Minutes–days | I / S as context | FRED DTWEXBGS (ALFRED vintages); use changes, never level percentiles | B context / C direction |
| Rates & Fed | Higher real rates raise storage finance and weigh on demand/risk assets — but rates now react to oil: an oil-supply surprise that cut 2-yr yields 3 bp in the 2000s raised them ~4.5 bp by 2024 (SF Fed). Oil is contemporaneous inflation, not a leading hedge. | Minutes–weeks | I / S context | FRED DFII10, DGS2; FOMC 14:00 ET | B |
| Growth proxies (PMI, credit impulse, freight) | Demand-side confirmation with 1–3-month leads at best; no peer-reviewed PMI→oil lead at S VERIFY. | Months | M | ISM (free), S&P Global PMI (paid); Kilian index | B |
| Risk-on/off & equities | Sign of oil–equity correlation identifies the dominant shock: positive = demand regime (0.47 at the ZLB, 0.39 in 2020), ≈0 or negative = supply regime (0.01 pre-2008). | Seconds–days | Regime flag | S&P futures, VIX; rolling 60-day correlation | B context / C as a rolling-correlation regime classifier (correlation signs do not identify shocks) |
| OVX & options | Implied vol and skew price risk, rarely direction. OVX is on USO options, not CL. OVX–price correlation flipped positive in 2025 (SF Fed Aug 2026): supply-shock regime marker. | Seconds–weeks | Risk sizing | FRED OVXCLS; licensed CL surface | A volatility / C direction |
3.6 Positioning and flows
| Driver | Mechanism → direction | Magnitude / speed | Horizon | Data | Grade |
|---|---|---|---|---|---|
| COT managed money | Reveals crowding and prior trend. Positions follow price (Büyükşahin–Harris 2011: no Granger causality). Changes carry a weeks-long mean-reversion component (liquidity demand, Kang–Rouwenhorst–Tang 2020); levels reflect trend and hedging pressure. Tuesday data published Friday 15:30 ET — stale by design. Neither Büyükşahin–Harris (2000–09 proprietary data) nor KRT (cross-commodity, legacy categories) validates a current single-WTI managed-money factor. | Weekly | S (changes) / context (levels) | CFTC disaggregated, NYMEX CL code 067651 (+ ICE WTI/Brent to avoid mis-stating extremes); normalise by OI; note the Oct 2025–Jan 2026 publication gap and the 2026 CFTC format review | B context / C direction |
| CTA / trend flows | Amplify moves and de-risk in reversals; public "positions" are model proxies; trend replicas average ~1 % of crude OI. | Days | S context | Transparent 1/3/6/12-month replicas labelled proxy | B mechanism / C timing |
| Index & ETF rolls (GSCI, BCOM, USO) | Scheduled roll demand; USO's 2020 liquidation moved WTI −25 % on 27 Apr 2020; "uninformed financial longs unable to take delivery" were the catalyst of the negative print (Gilje et al. 2026). | Intraday–days | I / S (local) | Index calendars; USO holdings; CME OI by month | B local / C direction |
| Producer hedging | Selling of Dec-27/28 swaps in rallies steepens backwardation; swap-dealer shorts in COT are the footprint. Second-order for front month at S, first-order for calendar spreads. | Weeks | S3 | COT swap dealers; 8-K hedge tables | B |
3.7 Geopolitics and policy
| Driver | Mechanism → direction | Magnitude / speed | Horizon | Data | Grade |
|---|---|---|---|---|---|
| Chokepoints (Hormuz ~20 mb/d, Bab el-Mandeb ~8.5 mb/d VERIFY) | Price jumps on probability-weighted loss and freight; fades if flows continue; persists only with realised loss. Hormuz 2026 is the realised case (8.3 mb/d shut in July; transits 7–9 mb/d vs 20). | Seconds; the largest moves in the sample | I / S | Maritime/port notices; Windward transit counts; AIS loadings (paid); war-risk premia | A mechanism / B quantity |
| Risk premium | = P(loss) × size + precautionary stockbuilding; convex in spare capacity; first visible in prompt spreads, Brent–Dubai, freight. Decays in ~1 month (TD), insignificant after a quarter (ECB) absent physical loss. | Hours to add, weeks to decay | S | Derived: spread/differential moves vs flow data; GPR index as context only | B; GPR trading C |
| OPEC politics | Baseline/quota-share disputes (Iraq, UAE exit 1 May 2026) are a recurring source of negative surprises; monthly seven-country meetings since 2025 make policy schedule-like. | Meeting days | I / S | opec.org; Reuters/Bloomberg sourcing | B |
| US policy (SPR, sanctions enforcement, export rules) | Expectation shifts with long implementation lags; enforcement (naval blockade 2026) matters more than designation. | Minutes then months | I / M | Federal Register, OFAC, DOE | B |
3.8 Technical, calendar and flow
| Driver | Mechanism → direction | Magnitude / speed | Horizon | Data | Grade |
|---|---|---|---|---|---|
| Trend / time-series momentum | 1–12-month persistence across 58 futures (Moskowitz–Ooi–Pedersen 2012); commodities the weakest sector (CFM: Sharpe 0.28 over 200 years); per-market ~0.4 (Hurst–Ooi–Pedersen). Short-horizon (daily-rebalanced) trend is a distinct pattern from monthly trend (Baltas–Kosowski). | Days–months | S / M | Contract-correct CL 20/60/120/252-day signals; fixed roll | A diversified / B–C for one contract at 2–20 days |
| Mean reversion | Liquidity shocks reverse; fundamental gaps continue; RSI-type rules mix the two. | Minutes–days | I / S | Event-labelled returns | C |
| Seasonality | Feb–Sep +1.66 %/mo vs Oct–Jan −1.45 %/mo (Arendas 2018, p = 0.002) but monthly SD 7–14 %; ~35 observations per month; heavy 2008/2014/2020 weight. | Months | M (weak prior) | Walk-forward only | B physical / C returns |
| Expiry / roll | Convergence and vanishing liquidity dominate small signals in the last sessions; OI migrates the week before. | Days | I / S | CME expiry calendar; per-contract OI/volume | A |
| Day-of-week | Shows up in volatility (mean abs(return) peaks Wednesday 1.91 %, troughs Friday 1.61 %), not returns. | — | Sizing | Own calc from EIA RWTC | B |
| Liquidation / dealer flow | Margin calls, stops and option hedging accelerate moves (TAS selling into the 14:28–14:30 window on 20 Apr 2020). | Seconds–hours | I | Book depth, option OI, margin notices | B mechanism / C forecast |
3.9 Mechanisms covered thinly in v1.0 (added after the Codex review)
| Mechanism | Why it matters at 2–20 days | Data | Grade |
|---|---|---|---|
| Cushing plumbing | Weekly Cushing stock is a lagged residual. The mechanism is inflows (Permian, Canadian, Bakken lines), outbound capacity (Seaway, Marketlink, Keystone legs), nominations, linefill, storage leasing and the Midland–Cushing–MEH/Houston basis. | Pipeline nominations/notices (paid); Argus/Platts basis (licensed); EIA PADD movements | A mechanism / B data access |
| The export arb | Roughly 3.85 mb/d of 2025 US crude exports left from PADD 3. WTI Midland/MEH vs Dated Brent after freight, terminal fees, quality and draft constraints sets whether US barrels clear — more informative than naked Brent–WTI. | EIA PET_MOVE_EXP monthly; weekly WPSR exports (WCREXUS2); licensed differentials and freight | A mechanism / B signal |
| Hurricanes and Gulf outages | Offshore production loss is bullish crude; simultaneous refinery, port or export-terminal loss can be bearish WTI and bullish products. BSEE reports shut-in production and infrastructure damage separately. | NHC tracks; BSEE daily shut-in statistics; USCG port conditions | A mechanism / B timing |
| Refinery unit outages | Aggregate utilisation is too slow and coarse; unit-level planned/unplanned outages, restart timing and crude-slate capacity separate crude-demand loss from product-supply loss. | Outage feeds (paid: IIR, Genscape/Wood Mac); company notices | B |
| Options, TAS, EFP/EFS, blocks | Weekly/monthly option expiry, strike open interest and gamma exposure shape liquidity and gap risk around expiry; TAS/EFP flows can dominate the settlement window (20 Apr 2020). Dealer sign is unobserved unless sourced. | CME option OI by strike; TAS/EFP volumes | B liquidity / C direction |
| East-of-Suez links | Dubai/Oman/Murban, the Brent–Dubai EFS, Saudi OSPs and sweet/sour differentials set Asian marginal pricing; Canadian displacement and Asian arbs can move WTI before US headline stocks change. | Licensed assessments; Aramco OSP releases (monthly) | B |
| Price-reporting agencies | Platts/Argus values are assessments under versioned methodologies at fixed timestamps, with editorial judgement — not exchange trades. Store methodology version and licence entitlement with every value. | S&P Global / Argus methodology pages | A (definition) |
4. What the evidence says actually predicts oil returns
4.1 The hard result
Alquist, Kilian & Vigfusson (2013): futures-based and macro forecasts do not reliably beat the no-change forecast at short horizons; occasional 12-month gains are modest and sample-sensitive. Baumeister & Kilian (2012–16): real-time VAR and industrial-commodity models beat no-change at 1–3 months (MSPE ratios ≈0.87–0.90; directional accuracy 55–65 %), but Benyo (2026) finds "no consistently significant improvements over the end-of-month no-change forecast at short horizons." Everything is monthly, and Benyo's main correction matters: much of the Baumeister–Kilian gain disappears when the no-change benchmark uses the end-of-month spot price rather than the monthly average. This review found no directly transferable, replicated 2–20 day signal in the published forecasting literature.
Consequence: "collect fundamentals, add signs, predict price" is not a strategy. Oil is endogenous, prices aggregate information faster than agencies publish it, and different shocks produce identical price moves. What survives is narrower and more specific.
4.2 Effects with the best support (and their honest horizon)
| Effect | Evidence | Verdict at 2–20 days after futures costs |
|---|---|---|
| Storage / curve state | Working 1949; Fama–French 1987; GHR 2013 (31 commodities, 1969–2006): basis, prior returns and inventories predict risk premia; low-inventory months earn more. Szymanowska et al. 2014: a single basis factor prices spot premia; term premia 1–3 %/yr. | A as conditioning state, B as timing. The predictive content is a slow drift, not a trigger. Test interactions (curve × inventory), not the curve alone. |
| Carry / roll yield | Erb–Harvey 2006; Koijen et al. 2018: commodity carry Sharpe 0.60 cross-sectionally; the time-series carry coefficient is significant in every asset class "save for the commodity strategy." | A cross-section / B single-commodity time series. Benchmark and P&L component; ten days of carry is swamped by curve repricing. |
| Trend | MOP 2012; HOP 2017 (net Sharpe 0.76 diversified, ~0.4 per market); CFM 2015 (commodities 0.28); Zhang–Urquhart 2020: momentum yes, reversal no, across 189 windows. | A diversified / B–C for one market at S. A cheap, serious benchmark, not a validated 2–20 day rule. |
| EIA surprise | Bu 2014; Ye–Karali 2016; HKK 2014; Miao, Ramchander, Wang & Yang 2018; Wen et al. 2023 (third half-hour return on EIA days predicts the last half-hour). | A for minutes-to-hours (S2), C as delayed 2–20 day alpha. Needs auditable consensus/API timestamps (Tradero §5.2 test). |
| Positioning changes | Kang–Rouwenhorst–Tang 2020: short-term position changes = liquidity demand that mean-reverts over weeks; commercials earn the liquidity premium. Cross-commodity, legacy categories. | C as a WTI managed-money mapping — the only positioning result on-horizon, but not evidence for a current single-contract factor. Test changes normalised by OI, late in the queue. |
| Regime classification | Kilian 2009; Baumeister–Hamilton 2019; Fed/SF Fed correlation work; NY Fed Oil Price Dynamics decomposition (PLS on financial variables). | A as a lens (structural shock taxonomy); C as a rolling-correlation classifier. Choose the prior (continuation vs reversion) per regime; the classifier stays a diagnostic (§5). |
4.3 Effects commonly over-sold
- COT extremes as reversal signals. No Granger causality from spec positions to prices; speculators "hold the biggest long near the peak" because they are trend-followers. Levels ≠ timing.
- Inventory levels alone. "Below the five-year average = buy" is not established return predictability; weekly changes are noisy balance residuals; crude-only headlines ignore products, trade flows and maintenance.
- Agency balances as trades. Published deficits are neither positions nor guaranteed draws; agencies diverge by 2.2 mb/d on 2026 demand (IEA −1.6 vs OPEC +0.6). Only vintage revisions are candidates.
- Rigs / DUCs. Months-ahead supply monitoring; far too slow and endogenous for next-week direction.
- Static macro betas. Dollar/rates/equity correlations flip with the shock; absolute percentiles with fixed signs create false confidence.
- Calendar seasonality and chart patterns. Physical seasonality does not imply stable excess returns; short-term reversal, support/resistance, weekday effects carry the highest multiple-testing and cost burden.
- News/sentiment counts as a price score. A geopolitical premium can vanish while the news stays alarming, because P(loss) fell. Without cargo/production confirmation it is not a durable factor.
- "EIA moves WTI 2–4 %." Blog folklore; the peer-reviewed magnitude is surprise-scaled and regime-dependent.
4.4 The bar a Tradero hypothesis must clear
Trend and carry are the frozen benchmarks. A new factor earns admission only if it adds walk-forward return/Sharpe after controlling for (a) the sign of the 1–12-month trend, (b) the front spread, and (c) the EIA/roll calendar — otherwise it repackages them. In absolute terms the bar is low (single-market Sharpe ≈0.3); in orthogonality terms it is high. Tradero's admission gate (MASTER-PLAN §7) already encodes this.
5. Regimes — and how to tell them apart deterministically
| Regime | Behaviour | Prior for S1 | Deterministic indicators |
|---|---|---|---|
| Supply shock (Abqaiq 2019; Hormuz Mar–Sep 2026) | Violent up-gaps, extreme backwardation, Brent–WTI blow-out, vol-of-vol; relief moves equally violent (8 Apr 2026: WTI −16 %) | Continuation while realised loss grows; sharp reversal on physical restoration — trade the flow confirmation | Prompt spread z-score at extreme; OVX–price correlation positive; oil–equity correlation ≈0 or negative; observed stock draws; transit/loading counts falling |
| Demand shock (2008; 2020) | Grinding declines, deepening contango, storage economics dominate, oil trades as a risk asset | Trend continuation; curve-carry drag on longs; storage-limit tail (2020) | Oil–equity correlation high and positive; contango widening; inventories building; Kilian activity index falling; VIX and OVX co-moving |
| OPEC-managed / range (2023–25 voluntary cuts; the 2026 unwind path) | Mean reversion around OPEC+ signalling; monthly meeting event risk; modest spreads; agency balances near zero | Mean reversion within the band; event-driven bursts; trend weak | Curve near flat; spreads inside 1σ; OPEC+ statements scheduled; STEO/OMR balance ±0.5 mb/d |
A NY Fed-style decomposition (partial least squares of weekly Brent moves on financial variables into supply vs demand components) is replicable in code and a candidate for a Tradero regime diagnostic: cheap, deterministic, point-in-time. Caveat from the Codex review, accepted: rolling correlation signs are diagnostics, they do not identify shocks; structural identification needs the Kilian / Baumeister–Hamilton machinery on monthly data. At 2–20 days the classifier is exploratory and never a scored factor.
6. The pre-trade checklist
Two layers: the common gate every trade must pass (mostly vetoes, mechanically encodable) and the case (what the long or the short must be able to say). Tags: E evidence-based · P practitioner consensus · F folklore, retained only as a risk caution.
Four layers, kept apart (Codex review): research-admission tests (MASTER-PLAN §7), machine pre-trade vetoes (the table below), position sizing, and operator monitoring. Displaying state (item 5) is monitoring, not a veto.
6.1 Common gate (PASS / FAIL / NA per item, logged with input, threshold, timestamp and rule version)
| # | Item | Rule | Tag |
|---|---|---|---|
| 1 | Mandate frozen | Specification and parameters frozen before observing the decision sample; strategy id, signal version, decision timestamp, horizon (2–20 d), target contract month and scheduled exit computed only from data available at that timestamp. No factor substitution after the fact. | P |
| 2 | Data integrity | Every input passed freshness/schema checks; available_at ≤ decision_time; any approximate timestamp that could flip the signal → veto. | E (Tradero rule) |
| 3 | Contract, not ticker | Trade an individual month. Remaining life > holding window + roll buffer, or the roll (spread, cost) is part of the plan. No physically-delivered CL near delivery: out before the broker deadline (IBKR: longs 2 business days before first notice, shorts 2 before last trade). | E |
| 4 | Event map | Enumerate EIA/API, OPEC+, STEO/OMR/MOMR, expiry, FOMC/CPI/payrolls, China data, known policy dates inside the window (§9). Apply the strategy's tested event policy (hold / reduce / flat per event type). A blanket veto on "unmodelled events" would forbid nearly every 2–20 day trade because WPSR recurs weekly; the policy must be a tested rule, never a headline reaction. | P |
| 5 | State displayed separately | Trend, curve, inventory tightness, realised vol, cracks, data quality shown side by side. Contradiction does not auto-reverse; it reduces size under a pre-tested interaction or yields WAIT. | E |
| 6 | Session & liquidity | Session status is an input, not a veto. What vetoes is measured: bid/ask, depth and expected slippage on the traded contract above caps (MCL ≠ scaled CL), or an outright/TAS early close per CME's final holiday file (§9.2). | E |
| 7 | Risk arithmetic | One-contract loss under absolute $/bbl shocks ($5 / $10 / $20 / $40 — percentage stress is meaningless near zero after April 2020), 2×ATR, expiry/basis scenarios, jump slippage, a margin increase, EUR/USD move and portfolio correlation — all inside limits. A stop is not the gap loss. If the minimum unit exceeds the risk budget, size = 0. | E |
| 8 | Operations | Broker link, data feed, margin excess, order-state reconciliation and kill switch verified; overnight/weekend ownership explicit. | P |
6.2 What the long case needs
- A pre-specified positive signal — ideally trend up and/or a tight, backwardated curve. "Looks cheap" is not a signal. (E)
- A mechanism that tightens the marginal prompt barrel: unexpected draws with healthy runs and products, realised (not announced) supply loss, upward demand revision, lower effective spare capacity. (E/P)
- Expected move > costs + roll: if long into contango, the thesis must include a tested spot/curve repricing larger than the carry drag. (E)
- No false draw: the crude draw did not simply migrate into products while cracks and runs collapse — encoded as same-week product-stock change and crack change inside pre-set bounds. (P)
- No premium-chasing after a gap: buying an unconfirmed geopolitical premium after the move is buying decay (1–8-week half-life). (E)
- Defined downside written down: demand shock, restored supply/ceasefire, OPEC reversal, storage stress; orders and P&L negative-price-compatible. (E)
6.3 What the short case needs
- A negative signal plus a loosening mechanism: broad stock builds, weak products/cracks, run cuts, realised output restoration, downward demand revision. (E/P)
- Expected decline > backwardation: a short in steep backwardation pays adverse carry and carries squeeze/gap risk; "fundamentals bearish" without a dated timing trigger is inadequate. (E)
- Realisation, not arithmetic: evidence that announced OPEC barrels or sanctions relief will reach loadings, not just quota tables. (E)
- Explicit upside tail: weekend attack, chokepoint closure, surprise cut, short-covering — a futures short has no natural price cap; low spare capacity makes spikes non-linear (Andurand). (E/P)
- Positioning check as a risk input only: a washed-out spec book raises squeeze risk; it is not a timing signal. (P/F)
6.4 Discount as folklore (keep only as risk cautions)
Fixed "EIA moves 2–4 %" rules · rig count as a Friday catalyst (thin session, slow variable) · "extreme COT percentile → fade" · calendar-month seasonality as a trigger · chart levels as thesis.
6.5 Making it deterministic
Each item becomes a function returning PASS/FAIL/NA with input_series, threshold, observed_at, rule_version. Hard vetoes: stale or quarantined data; prohibited expiry window; unmodelled event exposure; spread above cap; insufficient margin/gap capacity; contract unsupported; minimum unit above risk. Soft states never become free-form overrides: only interactions selected before the backtest may change size. The order generator consumes the checklist output; an LLM may explain a failure but cannot set a threshold or grant an exception (Tradero iron rule).
Undefined predicates are not cured by PASS/FAIL/NA (Codex review): every predicate — "false draw", "premium after a gap", "washed-out positioning", "event policy" — must name its feature, threshold, version and missing-data behaviour, and NA needs an explicit policy. "Expected move exceeds costs" is circular until a calibrated predictive distribution exists; until then it is a research-admission test, not a pre-trade predicate. Hard controls that belong in code, not prose: stale or revised data, clock synchronisation, missing or late releases, contract mapping and roll migration, price collars, maximum slippage, order rejection/cancel reconciliation, gross/net exposure, FX collateral and broker excess liquidity. Every production decision must be reproducible from versioned data, versioned code and immutable parameters.
7. Traps and asymmetries specific to oil
- Weekend and headline gaps. OPEC+ decides on Sundays; attacks happen on Saturdays. −25 % (Mon 9 Mar 2020), +15 % (Mon 16 Sep 2019), ≈+22 % intraday (Mon 9 Mar 2026 VERIFY). CL/MCL are shut 17:00 Fri–18:00 Sun ET. Size from gap stress, not daily vol.
- OPEC semantics. "Cut", "extend", "voluntary", "compensation" use slippery baselines. Parse target, dates, country allocation and realised output; reiterated compensation schedules are routinely re-filed (soft).
- The negative price. 20 Apr 2020: May CL from $17.73 to −$37.63 in one session; Cushing 76–83 % full; OI still 108,593 on the penultimate day; TAS selling into the settlement window; IBKR's systems could not display negative prices (CFTC fine $1.75 m). Rules: never assume price > 0, never divide by price unguarded, never percentage-stop near zero, never hold the front CL into its last three sessions when Cushing is extreme either way.
- Roll arithmetic. Carry arrives through convergence and contract replacement, not as a daily fee; a $0.50 monthly backwardation is ≈0.03 %/day, but a curve reshaping can be 5 % in a week. Oil ETPs (USO) bleed contango structurally (FINRA 20-14: one ETP lost 41 % in a week).
- API/EIA whipsaw. Both are sample estimates within ~1 % of each other; Tuesday absorbs most of the surprise. Conflicting crude vs product numbers often reverse the first headline move.
- Evaporating premium. Fear lifts price without lost barrels; confirmation that loadings continue removes it abruptly. The 2026 exception (barrels actually lost) will itself reverse on physical restoration — 8 Apr 2026 ceasefire: −16 % in a day.
- Revisions and vintages. WPSR weekly values are not revised but are superseded economically by the PSM (current + two prior months); FRED series revise; EIA weekly production is a model re-benchmarked monthly, not a survey. Latest-value downloads are not backtest data.
- Consensus is a survey. Reuters polls 4–9 analysts Monday/Tuesday; WSJ and Platts run others; medians shift and cutoffs are unrecorded. Store source, contributors, cutoff and later edits. If 90 of 100 historical events cannot be audited, S2 history is abandoned and the overlay runs forward-only (MASTER-PLAN §5.2).
- Correlation breaks. USD/equity/oil correlations flip between growth, monetary and supply shocks; a static hedge adds exposure at the worst time.
- Micro-contract liquidity and basis. MCL is cash-settled from CL but has its own book — measure spread/depth/fills by hour. TCL: not launched (postponed, TBD); when it lists, gate it fresh and ignore promotional "deep liquidity".
- Pro-cyclical margins. CME raised CL margins 17.6 % four days after the negative print; IBKR house margin (~$1.7 k intraday CL VERIFY) reverts to full overnight margin at the intraday end time. Margin is collateral, not a loss limit; size to a 5 % day.
- Settlement and expiry mechanics. Front-six CL settle on the 14:28–14:30 ET VWAP; marks can differ from last trade; expiry-day settlement uses 14:00–14:30; flag expiry OI, TAS and holidays.
- Units and grades. Barrels vs kb/d vs tonnes vs gallons; Brent, WTI Midland, WTI Cushing and products embed location/quality/freight — a "global oil price" factor hides basis risk.
- Data plumbing surprises. COT was not published 30 Sep 2025–19 Nov 2025 (backlog cleared 23 Jan 2026); the CFTC opened a COT format/frequency review in 2026; EIA discontinued the storage-capacity report after March 2024; holiday releases move to Thursday at varying times. Read calendars from the source each year.
8. Contract mechanics you cannot ignore
| Contract | Size / tick | Settlement | Expiry rule | Notes |
|---|---|---|---|---|
NYMEX WTI CL | 1,000 bbl; $0.01 = $10 | Physical delivery at Cushing | Trading ends 3 business days before the 25th of the month preceding delivery (adjusted if the 25th is not a business day); notice and delivery provisions per NYMEX Rulebook Ch. 200 — ingest the rule text, do not paraphrase it | CLV26 last trade 22 Sep 2026, FND 24 Sep; CLX26 last trade 20 Oct. Daily settle = VWAP 14:28:00–14:30:00 ET. CME maintenance margin ≈$8,054 on 2 Sep 2026 (Barchart) VERIFY on CME. |
Micro WTI MCL | 100 bbl; $0.01 = $1 | Cash-settled off CL | Expires one business day before the matching CL month | ADV 272k/day May 2026 (+317 % y/y). One-tenth CL margin at CME; IBKR intraday ≈$171 VERIFY. Own order book: measure liquidity separately. |
10-Barrel WTI TCL | 10 bbl (1/100 CL) | Cash-settled | 24/7 framework (2-min daily pause, 2-h Saturday pause) per CME design | Not launched (a live status — query the CME product page before any reliance). Announced 11 Jun 2026 for 30 Aug; CME client-systems page updated 27 Aug 2026: "Postponed launch date pending regulatory review", production launch TBD, weekend trading TBD. Tick value, expiry rule, IBKR listing and liquidity all VERIFY after launch. Not an executable default. |
ICE Brent B | 1,000 bbl; $0.01 = $10 | Deliverable via Exchange of Futures for Physical, with an option to cash-settle against the ICE Brent Index | Last business day of the second month preceding the contract month | Nov-26 expires 30 Sep 2026; Dec-26 on 30 Oct. Hours 01:00–23:00 London; settlement window 19:28–19:30 London. |
Broker close-out (IBKR): does not allow delivery on physically-settled futures; standard deadline — longs by end of the 2nd business day before First Notice Day, shorts by end of the 2nd business day before Last Trade Day; otherwise liquidated without notice. IBKR publishes product-specific close-out rows and reserves the right to liquidate without notice, so the generic formula is illustrative only: the engine must ingest the live product row and take the earliest of broker liquidation date, strategy roll date and exchange expiry — never a hand-derived date (for CLV26 the generic formula would give ~22 Sep for longs and ~18 Sep for shorts; treat both as unverified). Italian residents are served by IBKR Ireland.
Hours: CL on Globex Sun 18:00–Fri 17:00 ET with a 17:00–18:00 ET break Mon–Thu (Rome: 00:00–23:00, break 23:00–00:00). Circuit breakers: NYMEX Rule 589 dynamic circuit breakers (60-minute look-back; energy variant raised 7 %→15 % in March 2020; current value VERIFY); no halts in the last 5 minutes before the close. Negative prices: enabled by CME on 8 Apr 2020 (Advisory 20-152); options margined with the Bachelier model since 22 Apr 2020.
Sizing arithmetic at WTI ≈ $90: a 5 % day = $4.50/bbl = $4,500 per CL, $450 per MCL, $45 per TCL. 1 Sep 2026 was +5.2 %; 8 Apr 2026 was −16 %. Size to the day and the weekend, never to margin.
9. Event calendar (ET / Rome)
Rome = ET + 6 h except 8–28 March and 25–31 October 2026 (ET + 5 h) because US and EU daylight-saving dates differ. Convert America/New_York → Europe/Rome in code; never add six hours by hand.
9.1 Recurring
| Release | When (ET) | Rome (normal) | What moves | Notes |
|---|---|---|---|---|
| EIA WPSR | Wed 10:30 (summary + Tables 1–14); rest 13:00 | 16:30 | Largest scheduled oil event: crude, Cushing, products, runs, imports/exports; reaction to surprise | Holiday weeks → Thu 12:00 ET / 18:00 Rome: 2026 dates 22 Jan, 19 Feb, 28 May, 10 Sep, 15 Oct, 12 Nov. Times vary by year — read the EIA schedule page. |
| API WSB | Tue ≈16:30 (Wed after a Monday holiday) | 22:30 | Overnight preview; absorbs most of the EIA surprise | Paid (Refinitiv/ICE). |
| CFTC COT | Fri 15:30, data as of Tuesday | 21:30 | Positioning context; Monday gap risk if extreme | Holiday delays: 2026 — 5 Jan, 22 Jun, 6 Jul, 16 Nov, 30 Nov, 28 Dec. |
| Baker Hughes rigs | Fri 13:00 | 19:00 | Supply-trend input; rarely a catalyst | Thin session. |
| CL settlement | 14:28–14:30 daily | 20:28–20:30 | Marks, calendar spreads | Expiry day: 14:00–14:30 VWAP. |
| EIA STEO | Monthly, first Tue after first Thu, ≈12:00 | 18:00 | World balance, OPEC spare, forecast revisions | 2026: 9 Sep (Wed), 6 Oct, 10 Nov, 8 Dec. |
| IEA OMR | Monthly, 04:00 (10:00 Paris) | 10:00 | Demand/supply/stock revisions — moves the European morning | 2026: 11 Sep, 14 Oct, 13 Nov, 11 Dec. Tables licensed. |
| OPEC MOMR | Mid-month, Vienna, no fixed time | first-seen | Secondary-source output, call on OPEC+, demand | 2026: ≈10 Sep, 13 Oct, 11 Nov, 14 Dec VERIFY on opec.org. |
| OPEC+ meetings | Seven-country monthly (usually Sunday); JMMC bi-monthly; full Ministerial | Sunday → Monday 00:00 Rome Globex open | Weekend gap | Next: Sun 6 Sep 2026; Ministerial 28 Nov 2026. |
| EIA PSM / EIA-914 | Monthly, ~end of month, 2-month lag | — | Revises the weekly story; matters for point-in-time backtests | Time VERIFY. |
| JODI | ~20th, 07:00 | 13:00 | Lagged country data; confirmation | — |
| US macro | NFP Fri 08:30; CPI 08:30; FOMC statement 14:00 | 14:30 / 14:30 / 20:00 | USD/rates/risk channel; sign regime-dependent | FOMC 2026: 15–16 Sep, 27–28 Oct, 8–9 Dec. |
| China | GACC trade ~7th–10th; NBS output 15th 10:00 Beijing | ≈04:00 | Asian-session demand read | NBS 2026: 15 Sep, 19 Oct, 16 Nov, 15 Dec. |
| Dallas Fed Energy Survey | Quarterly (late Mar/Jun/Sep/Dec) | — | Breakevens, activity, capex intentions | — |
| Index rolls | GSCI business days 5–9; BCOM business days 6–10 | — | Spread distortion; exclude both windows from spread signals | — |
9.2 Holiday sessions (CME energy, 2026)
Labor Day 7 Sep (halt ≈13:30 ET, reopen 18:00 ET); Thanksgiving 26 Nov (halt ≈13:30 ET) and 27 Nov early close; Christmas 25 Dec closed. Product-specific times are posted ~2 weeks ahead and can change close to the date; CME distinguishes outright Globex trading from TAS early closes. Load the final holiday file from the CME trading-hours page rather than hard-coding halts. EIA/API/CFTC shift as above.
9.3 The next twenty trading days from 2 Sep 2026 (dated example of an event map)
NFP 4 Sep · OPEC+ Sun 6 Sep · Labor Day 7 Sep (early halt) · API Wed 9 Sep · STEO 9 Sep · EIA Thu 10 Sep 12:00 ET / 18:00 Rome · OPEC MOMR 10 Sep · IEA OMR + US CPI 11 Sep · China NBS 15 Sep · FOMC 16 Sep · IBKR short close-out CLV26 ~18 Sep · CLV26 last trade 22 Sep · FND 24 Sep · Brent Nov-26 expiry 30 Sep.
10. Snapshot — the market on 2 September 2026 (dated; will age)
2026 is a supply-shock regime, not a normal balance year. Fighting from ~28 Feb closed the Strait of Hormuz (~20 mb/d of crude pre-war). Brent went $61→$118 in Q1, the largest real quarterly rise since 1988 (EIA); +65 % in March alone (World Bank). Ceasefire 8 Apr (WTI −16 % on the day), front-month Brent high $118 on 29 Apr (EIA; the widely quoted "$126 peak" is unverified and may be a Dated or intraday print), MoU 17 Jun, WTI trough $69.63 on 24 Jun, strait effectively re-closed early July, Houthi Red Sea blockade 20 Jul, fresh US strikes ~1 Sep.
Information cutoff: prices as of 2 Sep 2026 ≈13:00 CET; the US weekly row is the WPSR for the week ending 21 Aug (the week-ending-28-Aug report was released later on 2 Sep and is not reflected); agency figures are the August editions. In the engine, every row of a table like this carries as_of, first_seen, source, contract and price-type fields; the prose below is a snapshot, not a data product.
| Variable | Latest | Source |
|---|---|---|
| WTI front | $90.22 settle 1 Sep (+5.2 %); ≈$90.40 on 2 Sep; +41 % YTD | Investrade; TradingEconomics (B) |
| Curve | CLV26 ≈$90.4 vs CLX26 ≈$87.8 — steep backwardation; "record-breaking 2026 backwardation" | Barchart; CME OpenMarkets |
| Brent–WTI | Peaked $25 on 31 Mar; negative 18–24 Jun and 2–8 Jul (Cushing < 20 mb); ≈$4–5 in Aug | EIA (A) |
| IEA balance (Aug OMR) | 2026 demand −1.6 mb/d, 2027 +2.4; supply 101.5 mb/d in July, 2026 −4.3 mb/d; 8.3 mb/d Gulf output shut in; observed stocks −69 mb in July (almost entirely oil on water — onshore stocks fell only ≈6 mb), −410 mb since Feb; effective spare 1.09 mb/d; Dated Brent $96.80 end-July | IEA (A) |
| EIA STEO (11 Aug) | Brent $85 Q3 → $78 Q4 → $69 in 2027; ME shut-ins 5.5 mb/d in July, easing from Sept, 0.6 mb/d residual through 2027 | EIA (A) |
| OPEC MOMR (12 Aug) | 2026 demand growth +0.6 mb/d y/y (cut four months running; cite the official MOMR page, not a mirror); OECD stocks 2,729 mb (66.5 mb below 5-yr), 58.7 days | OPEC (A) |
| US weekly (w/e 21 Aug) | Crude 428.9 mb (1 % above 5-yr); utilisation 97.4 %; gasoline 6 % below, distillate 14 % below; products supplied 4-wk 20.5 mb/d (−3.0 % y/y); Cushing 22.4 mb (low 18.6 mb on 24 Jul) | EIA (A) |
| OPEC+ | 1.65 mb/d rollback completed with +188 kb/d for Sept (2 Aug); ~2 mb/d 2022 cuts to end-2026; Q4 pause expected VERIFY; UAE left OPEC 1 May; next meeting 6 Sep, Ministerial 28 Nov | OPEC (A); CNBC (B) |
| Positioning | Managed-money combined crude length (NYMEX + ICE WTI + ICE Brent, Saxo's aggregation) from a record low in 2025 to a four-year high in Mar 2026; OPEC MOMR reports money managers adding longs in July. Exchange, contract set, futures-only vs combined, report date and publication date must be specified before this becomes a factor input VERIFY spec | Saxo; OPEC MOMR (B) |
| Regime markers | OVX–price correlation positive since 2025 (SF Fed); Brent–Dubai and freight elevated; ±5–16 % days in sample | SF Fed (A) |
| Demand signals | China 2Q imports 8.1 mb/d (−32 % q/q), June 7.1; India June 4.8; China gasoline demand hit hard | EIA; OPEC |
| Shale | Oil rigs 452 (21 Aug); DUCs 5,319 (May) VERIFY (context only); breakevens $59–68; activity up but barrels arrive in 1H27 | Baker Hughes; Dallas Fed |
| SPR | 400 mb IEA collective release (11 Mar); US 172 mb exchange; 308 mb on 24 Jul, lowest since 1983 VERIFY (context only until sourced from DOE/EIA) | IEA; CNBC (B) |
| Structure | Platts lengthened the WTI Midland sailing assumption in Dated Brent (1 May); TCL postponed; WTI options record ADV | S&P Global; CME |
What this snapshot implies for the study, not for a position: every rolling statistic computed on the last six months is a supply-shock sample; the official base case (EIA, World Bank) is mean-reversion as Hormuz normalises; the 2–20 day variables that matter now are transit/loading counts, the pace of Gulf restart, the Cushing floor, the 6 Sep OPEC+ decision, and agency balance revisions. Slow variables (shale, EVs, non-OPEC projects) are irrelevant at this horizon.
11. Recommendation for Tradero
Both studies reach the same verdict independently: Oil State v0 is a dashboard, not a forecast model, and the way forward is sequential hypothesis testing against frozen benchmarks, not a bigger score.
11.1 Oil State v1 — feature families to compute (never a summed score)
The Codex review rejected the "12-factor" framing as a collection of correlated feature ideas dressed as a model; accepted. v1 is organised as feature families, each with its interactions declared in advance. A factor count is not a research objective.
| Family | Deterministic recipe (exact inputs) | Role |
|---|---|---|
| Benchmarks (frozen first) | No-change; long-only; contract-correct trend family (individual CL settlements, one pre-registered lookback set, vol-normalised, fixed roll rule); exact carry family (F1–F2, F1–F4 in $ and annualised by calendar days) | The bar every family must beat |
| F1 Curve | Slope (F1–F2, F1–F4) and curvature (F1−F2) − scaled(F6−F12); matched timestamps; OI/liquidity flags; roll-window exclusions (GSCI days 5–9, BCOM days 6–10); PCA/Nelson–Siegel only with enough contract history | State + first hypothesis (curve conditionality) |
| F2 Inventory state | Cushing W_EPC0_SAX_YCUOK_MBBL week-of-year robust percentile with estimated (not asserted) tail thresholds; broad crude WCESTUS1 and separately gasoline WGTSTUS1, distillate WDISTUS1, jet WKJSTUS1; days-cover = stock / 4-week products supplied; expanding-window seasonals from stored release vintages; components preserved | State, tested only as interactions with F1 |
| F3 WPSR decomposition / innovation | Actual weekly change minus a forecast trained exclusively on pre-release information (lags, seasonals, flows known before the release), for crude, Cushing, products, runs WCRRIUS2, imports WCRIMUS2, exports WCREXUS2 and the adjustment; evaluated from the first executable timestamp after parse; consensus surprise only when a timestamped vendor/API archive exists | S1 post-release hypothesis; S2 input |
| F4 Refinery / products | Inputs and utilisation WPULEUS3 vs robust seasonal expectation; 4-week product demand WGFUPUS2, WDIUPUS2, WKJUPUS2 vs seasonal trend with compatible product stocks; unit-correct RB and HO cracks aligned to refinery-relevant contract months | Confirms or vetoes F2/F3 |
| F5 Location / export arb (data permitting) | Midland, MEH/Houston, Cushing, Dated Brent after freight and fees; loadings and exports; licensed differentials with methodology version stored | Whether US barrels clear — replaces naked Brent–WTI |
| F6 Physical disruption state (data permitting) | BSEE shut-in volumes, refinery unit outages, port conditions, pipeline notices, hurricane restoration timing; realised_net_loss = observed_loss − offsets − releases for geopolitical events | Non-linear supply state |
"Scored" means each family is standardised on its own expanding point-in-time history and exposes sign, confidence and freshness. Nothing is summed. A spare-capacity "buffer" is not a naive sum of nominal series divided by consumption — barrels are not fungible across grade, geography, sanctions and logistics — so STEO spare/outage series stay in context until a defensible construction exists.
11.2 Context-only (collected, displayed, not scored)
Realised vol, OVX, CL skew, liquidity, margin and gap regime (risk controls) · rolling oil–equity and OVX–price correlations as an exploratory regime diagnostic, never a scored factor · vintaged STEO balance revisions and spare/outage series as prospective context (few releases, heavy revisions) · COT 067651 managed-money long/short/spreading ÷ OI with both Tuesday and Friday timestamps — crowding and change, no contrarian score · USD DTWEXBGS, DFII10, DGS2, equities/VIX and rolling correlations · rigs, DUCs, China/India data, freight, floating storage, agency balance levels, GPR · SPR and sanctions as dated event objects whose flows enter the balance factors.
11.3 Drop as noise or mis-specification
Absolute 3-year percentiles of USD, yields or rigs with fixed signs · unconditional "COT extreme = reversal" · news/sentiment/article counts as a price score · calendar seasonality, RSI/support-resistance, ETF flows as standalone direction · any equal-weight sum before factor correlation, horizon and incremental value are established · any continuous futures series with an unknown splice.
11.4 Specific corrections to v0 (from Codex's code read, endorsed)
trendis two moving-average signs on a Yahoo/Stooq continuous front month with an unknown roll — replace with contract-correct settlements before any return research; keep a 50/200 rule only as one benchmark.crude_inventoryandcushingare stock-level seasonal deviations, not surprises — rename; buildbalance_innovationseparately; replace the prior-five-year ±1-week mean/SD with robust expanding seasonals and expose sample size.productsequal-averages gasoline and distillate, omits jet, ignores days-cover — preserve components.positioninghard-codes a contrarian sign — remove it; show OI-normalised long, short, spreading and their changes.usdandrigsscore absolute level percentiles — changes only, context-only.- The equal-weight aggregate mixes correlated weekly stocks, slow rigs/COT and daily prices with different effective timestamps — retire the directional label until walk-forward rules exist.
- Historical WPSR values are stamped conservatively on Thursday — safe against holiday leaks but withholds normal Wednesday information and cannot support S2; store the official release calendar plus first-seen latency. Next holiday release: Thu 10 Sep 2026, 12:00 ET.
- COT backfill starts 2017; disaggregated history begins 2006 — extend before estimating percentiles, preserving release-delay exceptions and the 2025 gap.
11.5 Hypothesis order (each step gated by MASTER-PLAN §7 before the next)
- Data and execution integrity — individual-contract P&L, rolls, negative prices, MCL bid/ask and commissions; immutable raw release vintages and parse logs for every EIA, CFTC, STEO, IEA and OPEC input; clock and calendar checks.
- Frozen benchmarks — no-change, long-only, random-entry, one trend family and one curve/carry family, separately and in one fixed combination; frozen without peeking at the final test years.
- Curve family (F1) — does slope/curvature improve trend or carry? Strongest economic prior.
- WPSR decomposition (F3) — post-release returns at the single pre-registered horizon; crude, Cushing, products, runs, imports, exports, adjustment; strict availability from the first executable timestamp.
- Curve × inventory interactions (F1 × F2) — levels vs changes; estimated Cushing tail thresholds.
- Cracks, location/export arb, outage state (F4–F6) — confirm or veto; only where data are licensed and point-in-time.
- Slow global context — STEO/IEA/OPEC revisions, spare capacity, COT changes, macro interactions, seasonality — regime filters with long holdouts, preregistered signs, multiple-testing control.
- S2 prospective EIA overlay — timestamped consensus, minute bars, fill simulation, paper first; never infer an intraday edge from S1 evidence.
Pre-registration: one primary horizon and one loss function are chosen before step 1 (testing 2/5/10/20-day horizons across 20/60/120/252-day lookbacks is a multiple-testing machine); secondary horizons are reported, not selected on. 2026 is a disclosed challenge set, not a clean holdout — it shaped this design.
Look-ahead traps to encode, not remember: F1 changes identity around rolls; inventory seasonals must be expanding-window and built from stored release vintages; EIA history downloads contain revisions; "known flows" must be known before the WPSR, not reconstructed later; cracks must align barrel/gallon units and contract months; STEO/IEA/OPEC tables need first-seen archives; index exclusions need the correct 5–9 vs 6–10 calendars.
Every step: walk-forward incremental return/Sharpe, drawdown and turnover after normal and 2× costs; stability across pre/post-2014, 2020 and the 2026 shock; materially better than the frozen benchmark — otherwise keep the simpler model. The project kill condition (MASTER-PLAN §0) still applies.
11.6 Instrument note
TCL is not executable (postponed, TBD). Signals on CL; paper execution on MCL with its own liquidity gate; TCL re-enters only behind a live product-status and liquidity gate after CME lists it and IBKR supports it. MASTER-PLAN §2 and the project memory should be corrected accordingly.
12. Where Claude and Codex agree, and where they differ
Full agreement (independently reached): trend and carry as the only defensible initial benchmarks · the curve as A-grade state / B-grade timing · EIA report as an intraday event (the evidence of no multi-day drift is a single-study absence result, grade B) · Cushing as the WTI-specific non-linearity · announced ≠ realised, with realised_net_loss as the modelled quantity · macro as context, static betas as noise · COT contrarian scoring unsupported · no equal-weight aggregate · v0 inventory factors are levels, not surprises · negative-price-safe code · size to gaps, not margin.
Differences and how they were resolved:
| Topic | Claude research | Codex | Resolution |
|---|---|---|---|
| TCL launch | Note D reported "launched 30 Aug" from pre-launch press | Found CME's client-systems page: postponed 27 Aug, TBD | Codex correct; verified directly on the CME page. Memory and MASTER-PLAN to be corrected. |
| Positioning | Note C surfaces Kang–Rouwenhorst–Tang: position changes mean-revert over weeks — on-horizon | COT context-only; KRT is cross-commodity with legacy categories, not evidence for a WTI managed-money signal | Context-only in v1; KRT not accepted as direct evidence; OI-normalised changes may be tested at step 6 with a preregistered sign. |
| Regime classifier | Correlation-sign flags (SF Fed) and NY Fed-style decomposition as a deterministic state | Rolling correlation signs do not identify shocks; diagnostic only | Removed from the scored set in v1.1; kept as an exploratory diagnostic (§5, §11.2). |
| Seasonality | Feb–Sep vs Oct–Jan significant but unusable at S | Calendar returns C-grade | Same conclusion; physical (runs/products) seasonality retained through factors 7–9. |
| Factor count | Claude's synthesis would have started with ~8 | Proposed 11, then rejected any count as an objective | v1.1 drops the count: six feature families plus frozen benchmarks (§11.1), interactions declared in advance. |
| Magnitude bands | Notes give episode-specific numbers | Proposed S/M/L/T bands, then rejected uncalibrated buckets | Removed in v1.1; magnitudes are calibrated on Tradero's own point-in-time event set only. |
12.1 The Codex review of v1.0 — what changed in v1.1
Codex reviewed the merged v1.0 as second author (research/codex/2026-09-02-review-oil-fundamentals-doc.md). Accepted and applied: ICE Brent settlement wording and tick value; IBKR close-out treated as a live product row, not a formula; Cushing capacity language (stored volume vs working capacity; the 20 mb floor is a hypothesis); API paragraph downgraded to C; GSCI 5–9 vs BCOM 6–10 roll windows (both verified); WPSR "no drift" downgraded to B and attributed to Miao, Ramchander, Wang & Yang (2018); Benyo's end-of-month benchmark correction; the Brent "$126 peak" replaced with EIA's $118 front-month high on 29 April; an explicit information cutoff for §10; IEA's July draw qualified as mostly oil on water; magnitude bands removed; the regime classifier demoted to a diagnostic; the 12-factor list reorganised into feature families with two new families (location/export arb, physical disruption); the hypothesis order compressed with one pre-registered horizon and 2026 quarantined as a challenge set; checklist items rewritten as machine predicates with a hard-controls list; §3.9 added for thinly covered mechanisms.
Partially adopted: the proposal to replace the single grade with three axes — grades now state mechanism vs signal explicitly, and data reproducibility is delegated to the rights registry rather than a third column in every table. Deferred to the engine: a field-level as_of / first_seen schema for snapshot tables (the prose keeps a stated cutoff instead). Not adopted: none of the review's factual corrections were rejected.
12.2 Round two — the information and behaviour layer
Codex's independent round-two memo (research/codex/2026-09-02-part2-information-behaviour-chains.md, 53 chains) and Claude's six research notes (E–J) were merged into §14–§20.
Independent agreement: news must be stored as data objects with announced, expected and realised values and an append-only confirmation chain; geopolitical headlines have no drift beyond intraday; the three-session model with Brent-led Europe and WTI-led US; Shanghai INE as a conditional, not universal, leader; the participant map and the absence of a stable smart-money group; commercials' short-term position changes as liquidity provision; the narrative state as a diagnostic that reports distributions and never a score; GDELT, official reports and a curated X list as the free, legal core; the realistic single-market edge near a Sharpe of 0.3–0.5; and the chain format (trigger → transmission → observable → lag → sign → grade → destination).
Differences and resolutions:
| Topic | Claude research | Codex | Resolution |
|---|---|---|---|
| Hurricane chain | Note I grades the dual-hit chain A with the sign rule "refining storm bearish crude, production storm bullish" | Context until the net-flow rule is deterministic | Split: A mechanism / B net sign; enters context until BSEE and refinery-loss data give a deterministic net-flow rule (P2) |
| Chain count | 41 chains | 53 chains | Merged and de-duplicated (v2.0 claimed 66 but carried 70 ids); re-validated in v2.1 to 78 uniquely identified chains after splits, merges and four scheduled additions (§17); Codex's Tradero-destination field adopted for every chain |
| ARA product stocks | Note F corrected the brief: Thursday 16:15 CET, not Wednesday | Not covered | Thursday adopted everywhere (§9, §15.1) |
| Crowd stance proxies | Note H proposes venue vote ratios (Yahoo JP, TradingView, StockTwits) as components of the narrative state | Metadata and attention counts only; personal-data minimisation | Both: vote ratios and post counts as attention counters collected forward, no post text retained beyond permitted metadata (§18.3, §18.5) |
| Options expiry | Note F: WTI expiry is now near-daily, so monthly gamma pins are diluted | "Options expiry needs product, underlying, strike and date, not a monthly flag" | Same conclusion; expiry becomes a dated object (§15.2, §20) |
| Retail boards in Italy | Note H inventories Investing.com Italia and FinanzaOnline as low-signal retail venues | Same, with GDPR emphasis | Collected as attention counters because they are the owner's local market, not for signal (§18.5) |
| Regional chapters | Middle East and Russia written as chapters (note F) | Same structure, adding the "three Saudi objects" rule and "Urals is not Russian Brent" | Both adopted (§15.7–§15.8) |
12.3 The Codex review of v2.0 — what changed in v2.1
Codex reviewed v2.0 as second author (research/codex/2026-09-02-review-oil-fundamentals-v2.md). Its verdict: Part II is useful as an encyclopedia but was not yet a safe registry or collector specification — the merge had inflated conditional mechanisms into universal rules, mixed source authority with licence status, and turned episodes into laws. Accepted and applied: the chain catalogue re-validated (v2.0 claimed 66 chains but carried 70 ids); P5, P8, P9 and P19 split into two chains each because they mixed opposite mechanisms; R5 merged into P7 and X12's slow leg into L2; X8 split into freight-arb and floating-storage chains; four scheduled chains added (P21 inventory-report surprise, P22 expiry and roll, P23 planned versus unplanned refinery work, P24 weekly-to-monthly reconciliation) and placed ahead of slow structural chains; signs and grades corrected on P15, Q8–Q9, Q15, Q19, X4 (narrowed to product and refinery supply shocks, with §1 item 21 and §17.6 rewritten), X10, R3, R11; observables added to Q1, R2, R10, P4. Facts corrected: USO's five-day roll from January 2026; X's live post-read cap and endpoint pricing in place of a quoted per-read price; CME SPAN 2; the CL settlement rule stated in ET, not "Chicago time"; Dated Brent as an assessment, never a fix; ARA stocks in Amsterdam local time, sold not open; the two days-of-cover definitions; Boons & Porras Prado (JF 2019). Statements removed: "commercials are net short by construction", banks as synonymous with Swap Dealers, utilities as structural futures shorts, "all free and licence-clean". Schema changed to immutable claims plus append-only observations with separate authority, independence, measurement-quality, latency and rights fields; social-data retention, deletion compliance and GDPR obligations (household exemption, Garante 2025) written into §14.3 and §18; single-study mood signals downgraded; §18.1 renamed "sampled public venues" with the missing regions named; §15.2 sessions made overlapping and Asia a working prior; TAS treated as an execution diagnostic; §2.6 observables split into three latency classes and the index-inflow loop deleted; §2.7 given the 14:25 macro checkpoint and the WPSR holiday and DST branches; §1 items 16–23 rewritten as conditional statements; §20 rewritten so that the §11.5 order is preserved and a collector backlog is not a hypothesis queue; look-ahead traps and the missing risk tools added.
Partially adopted: the participant table keeps its secondary numbers with an explicit "no decision use" warning rather than deleting them; §1 item 19 keeps the retail finding as a case-study statement rather than being cut. Not adopted: none of the factual corrections were rejected.
13. Verification queue (consolidated VERIFY items, by priority)
P1 — affects decisions now
- TCL: launch date, tick value, expiry rule, IBKR listing, liquidity — re-check CME client-systems page and IBKR before any reliance.
- IBKR product-specific close-out rows for CL months and current house margins (CL, MCL) in TWS; IBKR Ireland specifics.
- CME CL/MCL maintenance margins (official page) and current Rule 589 circuit-breaker variant.
- OPEC MOMR 2026 dates on opec.org; OPEC+ Q4 pause status after 6 Sep. (STEO schedule and BCOM/GSCI roll windows: confirmed, closed.)
- WPSR "adjustment" footnote wording since Nov 2023; days-of-supply denominator.
P2 — affects research design
- Reconstruct 100 EIA events with consensus + cutoff (MASTER-PLAN §5.2 falsification test); no public archive exists.
- Baumeister–Hamilton posterior elasticities (~0.1 / −0.1 to −0.2); OPEC-surprise event-study magnitudes (telegraphed vs surprise); balance-revision day-of effect (1–3 % claim).
- Post-2015 size of the GSCI roll-window distortion; Basu–Miffre hedging-pressure magnitudes.
- Cushing ≈20 mb operational floor (market convention; EIA pilot study pending).
- Seasonality of monthly utilisation averages from the EIA table (secondary summary used).
P3 — context accuracy
- 9 Mar 2026 record daily gain vs exchange settlement; the reported Brent "$126" print (benchmark and timestamp); SPR 308 mb / 172 mb exchange; DUC count 5,319; Iran August loadings; UAE–Iran trade halt 19 Aug; Red Sea 8.5 mb/d; Bloomberg consensus panel; CFTC "77 % automated spread trades"; CME May-2026 skew note; current 2026 producer hedge ratios; Kelly (2023) SPR event study; TD3C March records.
P4 — round two (information, sessions, participants, mood, chains)
- Access and pricing: X API tiers and read caps; Reddit self-service closure and contract pricing; StockTwits API status; Substack, TradingView and Investing.com terms; Weibo and WeChat collectability; LinkedIn terms.
- Sessions: INE night-session end time and deliverable grades; Platts Dubai and Dated Brent methodology details (partials, convergence); TOCOM Dubai contract specs; GME Oman marker time; Baker Hughes release time on bakerhughes.com; IEA OMR clock time; GACC release clock; CME LO option expiry rule and TAS rule 524; EFP mechanics; Tadawul hours; month-end and quarter-end flow evidence; dealer-gamma pinning; ADNOC's November 2026 pricing change.
- Participants: Mexico's historical hedge volumes and the Pemex figure; Treasury's 2022 SPR price-impact number; BCOM assets under management; the HFT share vintage (~47 %); any audited COT-indicator track record; 2026 producer hedge ratios; leveraged-ETF rebalance magnitudes; Norway's arbitration precedent.
- Chains: Uri's ~4 mb/d crude loss; the 2016 E&P default rates; Russian 2023 statistics restriction (primary); Transneft schedule leaks; rig→production lag; Aramco's "largest cut since 2003"; the March 2026 $70→$119 path against settlements; the UAE-exit Brent–WTI sign; Q4-2026 OPEC+ pause; China product-export-quota publisher; South Asian 2022 switching volumes; the 2023 OPEC demand-growth cut; naphtha margin claims; IMO slow-steaming tanker demand.
- Mood: the OOTT origin; unconfirmed X handles (Kemp, Hansen, Sen, McNally, Pies, Nuttall, Young, Kpler, Vortexa, official feeds); Alhajji's Arabic activity; Ed Crooks's affiliation; the Calomiris–Çakır Melek–Mamaysky specifics; the CME CVOL skew page; AI-generated Hormuz videos; peer-reviewed work on 2026 social sentiment (none yet).
- Closed in round two: OPEC MOMR time (12:00 GMT); ARA stocks (Thursday 16:15 CET); BCOM roll days (6–10); STEO time (12:00–12:15 ET).
14. The information layer — how news becomes data
Oil is traded on information long before it is traded on barrels. This section describes the news flow as an engineering problem: which categories of news exist, what each does to price and for how long, which sources carry which authority, what a retail operator may legally automate, what the evidence says about news and attention as signals, and how the day should be organised in Rome time. The iron rule applies throughout: the LLM may classify and explain a headline; deterministic code computes the surprise, the confirmation and the eligibility.
14.1 A headline is a data object, not a fact
Every item, from an OPEC communiqué to a tanker-tracker post, is stored as an immutable claim plus append-only observations — the Codex review's correction to v2.0, which had one row that was both immutable and later overwritten with a realised value. The fields below merge the two studies' schemas. Authority, independence, measurement quality, latency and rights are five different properties and are stored as five fields, not one "tier".
EventClaim (immutable — one row per version of a claim)
claim_id · category (§14.2) · subtype · entities[] (country / company / facility / vessel IMO / grade)
announced_value, unit, baseline (quota vs voluntary cut vs production are different fields)
expected_value, expected_source, expected_cutoff ← captured BEFORE ts_event or flagged post-hoc
surprise = announced − expected ← computed, never LLM-written
magnitude in kb/d AND cumulative barrels over the active window
direction_hint {bullish, bearish, mixed, n/a} + confidence ← LLM classification, logged with model + prompt hash
source_authority {official, wire, PRA/professional, expert, crowd} · source_independence (origin count, not outlet count)
ts_event · ts_published (first version) · ts_first_seen · executable_at (feed + parse latency) · source timezone kept
revision · content_hash · headline_hash · cluster_id (same fact across outlets) · correction_of · retracted_at
lang · translated_from · url · rights_tag · retention_class · parser_version · human_override_reason
EventObservation (append-only — many per claim)
claim_id · observed_at · observation_type ∈ {confirmed, denied, corrected, retracted, measured}
source, source_authority, measurement_quality {official statistic, licensed measurement, modelled estimate, report}
realised_value, unit, measurement_window, latency, rights_tag
Rules that make it back-testable: the expectation must exist before the event; a realised value is an observation with its own measurement quality — an official designation is not realised lost supply, while a licensed loadings measurement may be the best available — and never overwrites the claim; the observation log is append-only so a denial after a report stays visible; anonymous "sources say" items keep low independence until the primary party or two independent origins confirm; corrections create a new claim version; the chain of physical confirmation is explicit, e.g. minister statement → operator nomination → port line-up → AIS departure → customs/JODI. Raw social text is not archived immutably: platforms require deletion compliance (X compliance streams; Reddit's requirement to delete cached and derived content), so the store keeps identifiers, permitted metadata and irreversible daily aggregates, with a retention_class per row.
14.2 News taxonomy — what each category does, and whether anything is tradable afterwards
| # | Category | First-day impact and decay | Tradable after the headline? | Grade |
|---|---|---|---|---|
| 1 | OPEC+ policy (cut, increase, maintain, voluntary, compensation) | Asymmetric: only cut announcements show significant abnormal returns; "maintain" does nothing; largest in front months, fading along the curve (Loutia et al. 2016; Lin & Tamvakis 2010). Sunday decisions open as Monday gaps. | Demirer & Kutan (2010) find post-cut drift for longs opened the day after; samples end ~2010, untested in the OPEC+ era VERIFY. Convert words into dated barrels and monitor compliance. | B |
| 2 | Outages and attacks (Abqaiq 2019, pipeline or terminal strikes) | Violent and fast, then reversed on the repair timeline: Abqaiq's Monday record gain was unwound by month-end as Aramco restored capacity. | The headline is not tradable in size by a retail account (gap risk). The object is the repair timeline: announced vs realised restoration. | B (decay pattern) |
| 3 | Sanctions, OFAC, price caps | Effects land in differentials (Urals–Brent), freight and dark-fleet flows rather than flat price; OFAC's Nov 2023 designations widened the Urals discount >20 %; the EU dynamic cap moved to $47.60 then $44.10 (Feb 2026). Designation spikes fade in 1–3 days unless buyers are targeted. | Multi-week effects on spreads; a regime variable, not a same-day flat-price signal. | B |
| 4 | SPR releases and refills | Modest and temporary; announcement priced within the day; Treasury's estimate for 2022 was 13–31 ¢/gal on gasoline VERIFY; event studies show far smaller effects than OPEC cuts. Refill tenders are a slow demand floor. | Weak. | C |
| 5 | US macro data (payrolls, CPI, ISM, Fed) | Kilian & Vega: no compelling daily or monthly feedback from US macro surprises to energy prices; some intraday response (Chatrath et al.). Brandt & Gao: macro-fundamental news has small short-run effects but longer-run predictive content. | Not as a headline trade; a slow demand-regime input. | B regime / C event |
| 6 | Inventory reports (API Tuesday, EIA Wednesday) | Best-documented scheduled event: inverse reaction to the surprise within minutes, volatility up; EIA effects larger and longer than API (Ye & Karali 2016); on EIA days the 10:30 ET half-hour predicts the last half-hour (Wen et al. 2023). | The surprise is the object; documented intraday continuation is the strongest same-day evidence anywhere in this document. No multi-day drift (single study, §3.3). | A impact / B drift |
| 7 | Agency reports (IEA OMR, OPEC MOMR, EIA STEO) | Revisions reset the narrative; day-of moves modest and confounded; no clean event study found VERIFY. | Value is the revision series (this month's 2026 demand vs last month's), not the print. | C |
| 8 | Shipping and chokepoints (Hormuz, Bab el-Mandeb, Suez) | Priced through freight, insurance and time-spreads. ECB: shocks originating in China, Israel, Russia or Venezuela lift Brent 0.8–1.5 % immediately; global shocks lower Brent ~1.2 % after a quarter through activity; mostly insignificant after one quarter. | The sign is not knowable from the headline: classify the shock as energy-type or macro-type first (§14.4). Trade transits and loadings, not tension. | B |
| 9 | Weather and hurricanes | Products and crude move opposite ways when refining is hit: Harvey (2017) took WTI $48→$46 while RBOB rose $1.67→$2.14 as Gulf runs fell 3.2 mb/d. Prices revert within days once damage is assessed. | Trade the crack and spread logic; the NHC cone is the leading object. | B |
| 10 | Refinery incidents | Same asymmetry: local product tightness, softer crude; no systematic study VERIFY. | Product spreads only. | C |
| 11 | Corporate and producer guidance (capex, shale volumes, Aramco OSPs) | Slow; OSPs are a monthly signal of Aramco's read of demand and structure (§15.7). | Regime input. | C |
| 12 | Exchange and margin notices (CME clearing advisories, ICE circulars) | Not a price signal; a sizing constraint and a volatility-regime tell (margins rise after vol). | Ingest as risk inputs with effective dates. | A as risk input |
| 13 | Political statements ("sources say", presidents, ministers) | Large, noisy, frequently reversed; in one proprietary-data study geopolitical news had the stronger immediate impact and no predictability beyond intraday (Brandt & Gao, RavenPack taxonomy). | Not tradable after the headline; the value is in not being run over. | B for "no drift" (one taxonomy, one sample) |
| 14 | Rumours and unverified reports | Reversal within minutes to hours (§14.6 cases). | Never on the flash; only on the confirmation chain. | — |
Codex's compression of the same table: realised outages, policy converted into dated barrels, scheduled data as surprises, and cargo confirmations are the classes with after-the-fact value; threats, statements, macro indices and crowd posts are context or risk, never direction.
14.3 Sources by tier and region, with timing and rights
Tier 0 — primary and automatable (free unless marked)
| Source | Release (home zone) | Rome | Access and licence | Notes |
|---|---|---|---|---|
| EIA WPSR | Wed 10:30 ET summary + Tables 1–14; rest 13:00 ET; holiday weeks Thu, usually 12:00 ET | 16:30 (15:30 in DST-mismatch weeks) | API v2 with key, public domain | Week ending previous Friday; superseded economically by the PSM (last business day of month) — store both vintages |
| EIA STEO | Monthly, 12:00–12:15 ET | 18:00 | Free, API | Keep every vintage; revisions are the signal |
| API Weekly Statistical Bulletin | Tue ≈16:30 ET (Wed after Monday holidays), 18 h before EIA | 22:30 | Paid, only via LSEG/ICE redistributors | Headline numbers echo on wires within minutes: capture the echo as Tier 1, never claim Tier 0 |
| IEA Oil Market Report | Monthly, 10:00 Paris | 10:00 | Highlights free on release day; full report and tables paid (≈€3,450/yr single user); public after three months | Outside the trader's window — automate |
| OPEC MOMR | Mid-month, 12:00 GMT / 14:00 Vienna | 14:00 | Free PDF | Secondary-source production table is the realised value for OPEC+ events |
| OPEC+ statements | Irregular, usually Sunday | Sunday → Monday 00:00 Globex open | Free | Weekend release = Monday gap |
| JODI-Oil | Monthly per calendar; ~100 countries from 2002 | — | Free CSV | Two-month lag; non-OECD demand truth |
| CFTC COT | Fri 15:30 ET, data as of Tue; holiday delays 1–2 days | 21:30 | Free bulk files | Tuesday = ts_event, Friday = ts_published |
| CME clearing advisories / ICE circulars | Ad hoc, numbered, with effective dates | — | Free (scripted fetch may be blocked; use index or e-mail) | Margin = sizing input |
| OFAC recent actions; EU Official Journal | Ad hoc, US or Brussels hours | 15:00–23:00 | Free | Designations of tankers and traders are the realised value for sanctions events |
| Baker Hughes rig count | Fri 13:00 ET | 19:00 | Free | Slow supply signal |
| BSEE shut-in statistics; NHC advisories; USCG port conditions | Storm-driven, daily | — | Free | The hurricane chain's observables (§17) |
| Company filings, Aramco OSP circulars | OSPs ~5th–12th; filings quarterly | — | Free | OSP release day floats — poll, do not schedule |
| GACC customs, NBS, MOFCOM | ~7th–10th (trade); 15th–20th 10:00 Beijing (activity) | ≈04:00 | Free, sometimes blocked | China imports and runs |
Tier 1–2 — wires, professional services, price-reporting agencies, trackers (paid)
| Service | What it is | Access and constraints |
|---|---|---|
| Reuters / LSEG news feeds | Fastest structured headlines; machine-readable news with sentiment, relevance, novelty scores | Enterprise licences for internal algorithmic use; redistribution prohibited even for derived data; consumer website subscriptions do not cover automated ingestion |
| Bloomberg Terminal / News API | Benchmark speed and OPEC sourcing (Javier Blas, Grant Smith) | Terminal ≈$24k+/yr; enterprise data licences $10k–100k+ VERIFY; no retail API |
| Argus, S&P Global Platts | Price assessments used in physical contracts; MOC windows | Enterprise; Argus explicitly prohibits systematic scraping and database creation; store entitlement and methodology version with every value |
| Energy Intelligence, Energy Aspects, Rystad, Wood Mackenzie | Consultancy-grade balances and OPEC sourcing | Enterprise, no public pricing VERIFY |
| Kpler, Vortexa, Windward | Tanker tracking, flows, floating storage, ownership and dark-activity flags | Tens of thousands of dollars per year at entry VERIFY; Kpler bars copying and derivation unless agreed in writing; buy an API with historical, derived-data and retention rights |
| TankerTrackers.com | Satellite and AIS voyage evidence, dark-fleet focus | Corporate tiers, no public price; their X account is the free, delayed channel |
| Newsquawk | Audio headline triage | $199–399/month, personal use only |
Tier 3 — free and cheap aggregators, newsletters, expert accounts
OilPrice.com (RSS exists, but the terms forbid robots and non-personal use: store headline, link and timestamp only) · Rigzone, Upstream, Oil & Gas Journal (RSS) · Commodity Context (Rory Johnston; free tier, paid $75/mo; Oil Context Weekly Fridays 22:00–23:00 Rome) · HFI Research (paid daily) · Doomberg (paid) · Super-Spiked (Arjun Murti, free) · John Kemp's energy analysis · GDELT (free, 15-minute global event feed in 65 languages — its own datasets are broadly reusable, the linked articles are not, and GDPR still applies; noisy but usable) · Economic Policy Uncertainty and Geopolitical Risk indices (free, CC BY 4.0).
Widely followed X accounts with confirmed identities: Javier Blas (Bloomberg), Amena Bakr (Kpler), Rory Johnston, John Kemp; commonly cited: TankerTrackers, HFI Research, Doomberg, Arjun Murti, Giovanni Staunovo, Helima Croft, official EIA/OPEC/IEA/BSEE/NHC accounts VERIFY handles and current affiliations. Keep a dated registry of author, platform, language and rights rather than a permanent "key account" list.
Tier 4 — crowd (§18): Reddit, StockTwits, TradingView, Weibo/Xueqiu/East Money, Telegram/Discord/WeChat, local forums. Attention and narrative anomaly only; a post never becomes "realised supply".
What a retail operator in Italy can legally automate — source by source, never by category. Government and agency statistics with open terms (EIA, CFTC, JODI, OFAC, EU Official Journal, BSEE, NHC); GDELT's own datasets (broadly reusable, but that grants no rights in the linked articles); EPU/GPR (CC BY 4.0); RSS headline metadata from sites that publish feeds; X through its API only (a 2 million post-read monthly cap and endpoint-specific prices in the Developer Console; filtered streams exist; plan, version and price stored as live configuration, never quoted as a constant); own paid newsletters for personal analysis. Public is not open: the IEA excludes the OMR and standalone datasets from its CC BY licence; Insights Global sells the ARA series; CME's website terms prohibit systematic extraction and AI use without permission; Argus prohibits scraping. Not: full-text scraping of OilPrice, Reuters or Bloomberg; redistributing API, Argus, Platts or IEA numbers; publishing derived series built on licensed feeds; Reddit at commercial scale without a contract (self-service access closed in late 2025 VERIFY); private WeChat or Telegram groups. Personal data: the GDPR household exemption ends where use becomes professional or commercial (recital 18); beyond it the project needs a lawful basis, purpose limitation, minimisation, retention limits, an Article 14 analysis, erasure handling and a legitimate-interest assessment; the Italian Garante has rejected indiscriminate reuse of public social data (2025 decision); author-level histories and bot scores are profiling and are avoided unless necessity is documented. Every field admitted to the system carries a rights tag and a retention class (MASTER-PLAN §5.3).
14.4 What the evidence says about news and attention as signals
| Signal | Finding | Horizon | Grade |
|---|---|---|---|
| Geopolitical Risk index (Caldara–Iacoviello) | Counts adverse-geopolitical articles in ten newspapers, separating threats from acts; higher GPR foreshadows lower investment and higher disaster probability. For oil the sign depends on the shock type: Caldara–Conlisk–Iacoviello–Penn separate "geopolitical energy shocks" (GPR up, oil up) from "geopolitical macro shocks" (GPR up, oil down) with a three-day window. | Days to a quarter | A measurement / B oil sign (must be resolved by the oil market itself) |
| Economic Policy Uncertainty (Baker–Bloom–Davis) | Raises volatility; for crude, single uncertainty indices are "not satisfactory" out of sample — OVX and VIX are the best two volatility predictors; shrinkage combinations help mainly in recessions. | Weekly–monthly volatility | B volatility / C direction |
| Professional news sentiment (RavenPack-type; Brandt & Gao 2019) | Macro news predicts returns short- and long-run; geopolitical news is immediate with no predictability beyond intraday and raises volume through disagreement; sentiment "contains more information about future expectations than about future realizations". One proprietary taxonomy, researcher degrees of freedom. | Intraday (geo) to months (macro) | B |
| Google Trends | Captures retail attention; relates to volatility; return-forecast papers disagree; Trends is a normalised sample and repeated downloads differ. | Weekly | C returns / B− volatility |
| Wikipedia page views | Used with Twitter and GDELT in ARIMAX models; in-sample. | Weekly | C |
| Twitter/X, Reddit sentiment | Short samples, unstable APIs, leakage-prone feature selection, platform populations that are not the marginal futures trader; pre-2023 Twitter data cannot be legally reproduced. | Daily–weekly | C |
| Narrative economics (Shiller) | Narratives go viral and drive fluctuations; no robust out-of-sample oil result. | Months | C signal / useful for regime labelling |
Two structural cautions. Attention is endogenous: oil shocks generate searches and posts, so "sentiment predicted price" often means timestamps failed to separate reaction from anticipation. And the robust findings are narrow: scheduled inventory surprises move price and leave intraday momentum; geopolitical headlines move price instantly and then carry no drift; attention and sentiment mostly forecast volatility; any news-based state must classify a geopolitical shock as energy-type or macro-type before it is given a sign.
14.5 The operating routine in Rome time
Use Europe/Rome and exchange calendars in code; never hard-code a six-hour offset (five hours during 8–28 March and 25 Oct–1 Nov 2026). The human reads conflicts, not feeds.
Daily (present 15:30–20:30): 15:30 read the machine-generated Asia/Europe handover — overnight returns by contract, curve, basis, cracks, INE and Dubai moves, new confirmed event objects, data failures; 15:40 inspect Tier 1–2 exceptions and today's event clock; 16:20 Wednesdays freeze the pre-release state; 16:30 WPSR ingest and surprise computation by code, the trader watches the 16:30–17:00 window; 17:00 check whether price, spreads, cracks and observed flows agree; 18:00 on STEO days read the vintage diff; 19:00 Fridays glance at Baker Hughes, never trade its level; 20:15 decide overnight exposure ahead of the 20:28–20:30 settlement; keep an incident log, not a scrolling-news habit.
Weekly: Tuesday 22:30 API arrives outside attendance — collected automatically, parsed surprise delivered Wednesday morning. Friday 21:30 COT and 22:00–23:00 Oil Context Weekly — read Saturday. Sunday evening: OPEC+ statements and weekend geopolitical items checked before the Monday 00:00 Globex open; a system alert fires on any Tier 0–1 item published after Friday 20:30. Friday: compare cargo and loading estimates with their later revisions and score source accuracy.
Monthly: IEA OMR 10:00, OPEC MOMR 14:00, STEO 18:00, PSM on the last business day (triggers revision of weekly series), JODI, Aramco OSPs (poll from the 4th), China customs and NBS, CME/ICE margin cycle, OFAC/EU package cadence — all collected as vintages, read as a one-page revision diff. Quarterly: earnings hedge tables, refinery maintenance schedules, Dallas Fed survey, index weights. January: BCOM/GSCI reweighting audit.
Collect automatically, invoke the LLM only on change:
| Feed | Change detector | LLM invoked when |
|---|---|---|
| EIA / STEO / PSM API | New period, or changed value for an existing period (revision) | Never for numbers; only to draft the narrative diff |
| IEA / OPEC PDFs | SHA-256 of the PDF plus table-extraction diff | Table diff non-empty |
| CFTC | New report date | Never |
| CME/ICE notices, OFAC/EU | New notice id or SDN delta | New item touches energy entities |
| RSS headlines | GUID plus normalised-headline hash; MinHash clustering | New cluster only, not each syndicated copy |
| X (paid API) | Post id, text hash, author tier | Tier 1–2 author and not already in a cluster |
| GDELT | 15-minute files filtered on energy themes and Gulf/Russia geographies | Event-count z-score above threshold |
| Web pages (OPEC press, Aramco) | ETag / Last-Modified, then body hash after boilerplate stripping | Body hash changed |
Hash normalised text (strip timestamps, adverts, "updated x minutes ago"), or every re-fetch looks new.
14.6 Pitfalls, and how desks triage
- Rewritten pages. Wire stories are updated in place; the first version may carry a wrong number that later disappears. Snapshot every version, bump the revision, keep the first
ts_published. - Headline versus body. "OPEC+ agrees to cut" over a body that says "delegates say no final decision". Separate hashes; classify from the body; hedging words ("sources", "could", "considering") map to
status = sourced, notconfirmed. - Rumour laundering. A claim moves crowd → aggregator → wire ("reports say") and acquires false authority. In 2013 an Israeli army account tweeting a 1973-war anniversary line lifted Brent about $1 within minutes; in May 2026 an Axios report of a US–Iran memorandum took Brent from $108 to $97 before it recovered to ~$102, one of several "false starts" traders called suspiciously timed VERIFY single-outlet account; doctored strike videos reached millions of views before fact-checks. Rule: at least one Tier 0–1 independent confirmation before an item can change the Oil State; count sources by origin, not by outlet.
- Duplicate reporting. One Reuters story on dozens of sites inflates "attention". One cluster id, many URLs.
- Timezone traps. DST-mismatch weeks; "data as of Tuesday, released Friday" (COT); "week ending Friday, released Wednesday" (EIA); holiday shifts to Thursday at varying times. Store event, published and ingested timestamps in UTC with the source zone string; derive Rome time at display only.
- Translation loss. OPEC, Gulf ministries, Russian and Iranian agencies publish in Arabic, Russian and Farsi; wire translations drop modals and conditionals. Keep the original, mark
translated_from, treat machine translations as Tier 3 until a Tier 1 English version exists; GDELT's translingual feed is for detection, not quotation. - How desks triage VERIFY: inferred from the services they buy: a speed layer (machine-readable headlines with sentiment and novelty scores, or a human squawk grading priority), a confirmation layer (second independent source or primary document before size is added), and a numbers layer (consensus versus actual computed by code). Tradero mirrors this: Tier 3–4 alerts, Tier 1 confirmation, Tier 0 realisation.
15. Sessions and regions — who moves the market, when
15.1 The master clock
Rome = ET + 6 h and London + 1 h, except during the DST-mismatch weeks (8–28 March and 25 October–1 November 2026: ET + 5 h). ICE states its settlement window in London time and CME states its CL procedure in Eastern Time (14:28–14:30 ET; 14:00–14:30 ET for the expiring contract), so the two windows coincide except in those weeks — a real engineering point for a Brent–WTI overlay. Store every timestamp in the zone the rule names plus UTC and convert at query time.
| Event | Home time | Rome (summer) |
|---|---|---|
| CME Globex CL weekly open | Sun 18:00 ET | Mon 00:00 |
| CME daily maintenance halt | 17:00–18:00 ET | 23:00–00:00 |
| CME CL settlement window (VWAP) | 14:28–14:30 ET (expiry day 14:00–14:30) | 20:28–20:30 |
| ICE Brent trading | 01:00–23:00 London (Sunday open 23:00) | 02:00–00:00 |
| ICE Brent settlement window | 19:28–19:30 London | 20:28–20:30 |
| Platts Dated Brent MOC | 16:00–16:30 London, assessed at 16:30:00 | 17:00–17:30 |
| Platts Dubai MOC; GME Oman marker | 16:00–16:30 SGT; 16:30 SGT | 10:00–10:30 |
| Shanghai INE SC day sessions | 09:00–11:30, 13:30–15:00 Beijing | 03:00–05:30, 07:30–09:00 |
| INE SC night session | 21:00–02:30 Beijing (end time VERIFY) | 15:00–20:30 |
| MCX crude (India) | 09:00–23:30 IST (23:55 outside US DST) | 05:30–20:00 |
| EIA WPSR / API / Baker Hughes / CFTC COT | Wed 10:30 / Tue ≈16:30 / Fri 13:00 / Fri 15:30 ET | 16:30 / 22:30 / 19:00 / 21:30 |
| IEA OMR / OPEC MOMR | 10:00 Paris / 12:00 GMT | 10:00 / 14:00 |
| Insights Global ARA product stocks | Thursday 16:15 Amsterdam local time (Europe/Amsterdam; not Wednesday) | 16:15 |
| China NBS activity data; GACC trade data | ~15th–20th 10:00 Beijing; ~7th–10th Beijing morning | ≈04:00 |
| Saudi Aramco OSPs | ~5th–12th of the month (floated in 2026) | — |
15.2 The three-session hand-off
| Rome window | Participants and information | Liquidity and likely leader |
|---|---|---|
| Asia, 00:00–09:00 | Chinese SOEs and teapots, Japanese and Korean refiners, Gulf sellers, commodity desks; GACC/NBS data, Asian PMIs, China policy; the first pricing of weekend news; INE day session and the Dubai MOC | CL and Brent thinnest; jumps on local news. Working prior, not a fact: Asian hours usually follow, with local information on China and the RMB; Dubai/Oman and Brent frame physical Asia; INE SC's information share is time-varying (§15.3) |
| Europe, 08:00–17:30 (overlapping the US from 14:00) | Physical merchants, majors, banks, European refiners; IEA and OPEC monthlies, Libya, Russia, North Sea and macro news; the Singapore MOC at 10:30 Rome and the London MOC at 17:00–17:30 Rome inside the US overlap | Brent and gasoil liquidity deepen; Brent, Dated and the EFS transmit seaborne information; CL follows but US location basis may not |
| US, 14:00–23:00 | US producers and refiners, merchants, banks, CTAs and HFT, ETFs and retail; US macro at 14:30 Rome, WPSR at 16:30, pit-era liquidity 15:00–20:30, settlement 20:28–20:30, Globex break from 23:00 | Highest WTI volume and volatility; CL leads US grades and often global futures |
Shape of the day. Practitioner sources describe a U-shaped liquidity profile: the London–New York overlap (13:00–17:00 UTC) has the deepest book and tightest spreads, the London morning is second, the Asian window is thinnest; institutional Brent activity thins after London closes and volume migrates to WTI alone VERIFY with tick data before relying on it. The academic evidence is strongest on the announcement spike: EIA surprises move returns inversely and lift volatility asymmetrically (Ye & Karali 2016; Miao 2026 VERIFY), and on EIA days the third half-hour predicts the last half-hour (Wen et al. 2023). Mean absolute daily move peaks on Wednesday (1.91 %) and troughs on Friday (1.61 %) in EIA spot data. A pre-COVID positive Monday effect disappears in the full sample; EIA days carry a positive return effect including holiday-shifted Thursdays (Cogent Economics & Finance 2023).
Sunday open and the weekend. The first tradable print after a weekend is the Sunday 18:00 ET open through a thin book. On Monday 2 March 2026 crude gapped ~8 % higher after a weekend drone strike shut Aramco's Ras Tanura refinery; Gulf equity markets in Dubai and Abu Dhabi closed for two days. Weekend retail CFD quotes are not the futures market and re-align to the Globex open. Gulf equity exchanges open on Sunday (Tadawul trades Sunday–Thursday VERIFY hours), so Aramco's share price and TASI are the first liquid prints on Gulf news before Globex opens — a usable early gauge for a Sunday gap estimate.
Month-end, quarter-end and the January reweighting. The documented calendar flow is the January reconstitution: for 2026 BCOM set WTI at 6.64 % (lowest on record) and Brent at 8.36 % (highest), the largest divergence since Brent's inclusion; BCOM rebalances over business days 6–10 and GSCI rolls from about 8 January over five days, so index flow concentrates around 8–15 January — a "mechanical, price-insensitive" rebalance out of last year's winners. Month-end and quarter-end pension rebalancing is widely discussed but undocumented here VERIFY before coding. Intraday evidence finds index-flow impacts statistically strong but economically modest and temporary (Ready, Roussanov & Ward 2022).
Options expiry and TAS. (TAS gross volume is signless by construction; a signed imbalance is a testable diagnostic.) ICE Brent options cease three business days before the future's expiry, with in-the-money auto-exercise one hour after the 19:30 London settlement. CME WTI monthly options expire three business days before the future VERIFY; Micro WTI weekly options exist since June 2022, and CME has added Monday/Wednesday and Tuesday/Thursday weeklies, so WTI expiry is now near-daily and the classic monthly "gamma pin" is diluted — "options expiry" needs product, underlying, strike and date, not a monthly flag. Dealer-gamma pinning is a practitioner claim without a retrievable study VERIFY. TAS trades at the eventual settlement plus a permitted differential: it concentrates benchmark demand into the 14:28–14:30 window and shows up as a volume spike that by construction carries no directional information.
15.3 Which benchmark leads
The literature is not unanimous and the answer is time-varying: an intraday 2007–12 study has WTI dominating price discovery; a Journal of Asian Economics study finds Brent "the most influential market" with WTI "the most sensitive" and Shanghai SC influencing nothing; a 2023 spread study has Brent driving; the SC contract moved from follower to bidirectional causality about 15 months after its 2018 launch (Frontiers 2022), with newer 15-minute evidence that INE's information share rises during its daytime liquidity and jumps while longer-horizon volatility favours WTI (Shi & Zheng 2026). The robust conclusion is integration, not a permanent horse race. Working assumption: in London and New York hours Brent and WTI are jointly determined, Brent marginally leading on non-US news and WTI leading on US inventory and Cushing news; in Asian hours SC is a follower with occasional local information (Chinese demand, RMB), and Dubai/Oman is a physical-differential market rather than a flat-price leader. Any SC-lead test must be conditioned on session, because SC's night session straddles London and the US settlement.
15.4 Asia
Shanghai INE crude (SC). Listed 26 March 2018, RMB-denominated, physically delivered, 1,000 bbl per lot, deliverable grades including Dubai, Oman, Basrah and Shengli VERIFY grade list; first-year retail share slightly over three-quarters of volume and over half of open interest, ~92 % of volume domestic despite 52 registered overseas agencies; volume regularly far exceeds open interest. Its night session overlaps the entire London afternoon and the US morning through settlement, which is why it looks like a follower: it is open while the leaders trade.
Chinese retail and the April 2020 lesson. Bank of China's "Crude Oil Treasure" was pegged to the flat front-month price with 100 % margin and settled its May exposure on 20 April 2020 at −$37.63; the bank's estimate of retail losses rose from 600 million to more than 7 billion yuan (~$1 bn); the bank absorbed the negative-price losses, refunded 20 % of principal, and was fined 50.5 m yuan. Chinese bank and retail products roll mechanically and late; their forced flows land in the US settlement window on expiry-adjacent days.
Gulf benchmarks traded in Asia. GME (ex-DME) Oman launched June 2007, physically delivered FOB Oman, daily marker at 16:30 Singapore to coincide with Platts; Saudi, Kuwaiti, Omani, Bahraini and Dubai OSP formulas reference it; DFM lists a cash-settled 100-bbl micro Oman contract for Gulf retail. Platts Dubai is assessed in a Singapore MOC ending 16:30 SGT in 25,000-bbl partials converging to a 500,000-bbl cargo after 20 partials, deliverable as Dubai, Oman, Upper Zakum, Al Shaheen or Murban VERIFY methodology details. The Brent–Dubai EFS is the bridge between the sour Asian complex and ICE Brent: a widening EFS makes Dubai-linked barrels cheaper for Asian refiners and is one of the cleanest "Asia versus Atlantic" signals available. ADNOC announced a 2026 move from Murban-based pricing to Platts Dubai plus a differential effective November VERIFY implementation — benchmark methodology is itself market data.
Japan and India. TOCOM's yen-denominated Platts Dubai contract (50 kl ≈ 314.5 bbl, since 2001) is a hedging and Japanese-retail venue, not a leader. India's MCX crude (100 bbl; mini 10 bbl), priced against WTI in rupees, is described as India's most traded commodity contract VERIFY, with an evening session overlapping US releases; MCX settled the April 2020 contract at −₹2,884/bbl, producing ₹418–450 crore of mostly retail losses because domestic hours closed before the NYMEX collapse; negative prices were enabled from 27 July 2020. Both are large retail crowds reacting to the same 10:30 ET and 14:30 ET events — sentiment gauges, not inputs.
Chinese data and Asian-hour correlations. NBS activity data (including refinery throughput) at 10:00 Beijing around the 15th–20th; GACC preliminary trade data in the first ten days of the month, Beijing morning VERIFY clock time. Correlations of oil with Asian equities, CNH and JPY during Asian hours were not sourced — VERIFY with data.
15.5 Europe
The Brent complex. Platts Dated Brent reflects the most competitive of the BFOET-plus-WTI-Midland grades at exactly 16:30:00 London, assessed from bids, offers and trades in the 16:00–16:30 MOC window; WTI Midland was added from June 2023 deliveries, priced CIF Rotterdam like the North Sea grades (WTI flows to north-west Europe had grown from 13 kb/d in 2016 to 778 kb/d in 2022). Around Dated sit the forward BFOE cash market and weekly CFDs (cash-settled on Dated versus first-month cash BFOE, 100,000-bbl lots VERIFY), which tie the physical to the futures curve. The 16:30 London assessment is the daily physical read on North Sea tightness — a PRA assessment with editorial judgement, not an exchange fix; a Dated–futures blow-out is a physical signal the futures screen sees only with a lag (Energy Aspects, April 2026: "physical crude is trading much higher than futures").
ARA product stocks. Insights Global publishes ARA inventories of naphtha, gasoline, jet-kero, diesel/gasoil and fuel oil every Thursday at 16:15 Amsterdam local time, sourced from terminal inventory systems; the series is sold, not open — a subscription and a timestamp SLA come with it.
Refinery structure, gas and why diesel leads. European refineries run mostly sweet crude, yielding gasoline and naphtha; raising diesel yields needs hydrocracking, which "uses a lot of hydrogen" made from gas, so TTF spikes raise European diesel costs directly. July 2026: diesel cracks ~$70/bbl, gasoline ~$40, jet ~$60; a 70:30 hydrocracker earned $30.46/bbl over Brent versus $23.42 for an FCC configuration; refiners rotated yield from jet back to road fuels after the Iran-war jet surge. The structural "diesel-short, gasoline-long" framing is standard but was not confirmed from an IEA/FuelsEurope primary page VERIFY.
Monthlies. IEA OMR mid-month at 10:00 Paris (11 Sep, 14 Oct, 13 Nov, 11 Dec 2026); OPEC MOMR at 12:00 GMT. Both land while Brent leads; no event study of their price impact was retrieved VERIFY with data.
15.6 United States
The weekly cadence and pit hours. "Pit hours" (09:00–14:30 ET) remain the convention for the liquid US session because settlement closes it VERIFY: convention. API Tuesday ≈16:30 ET (thin, post-settlement), EIA Wednesday 10:30 with full tables after 13:00, Baker Hughes Friday 13:00, CFTC Friday 15:30 (an aggregator's 14:30 is wrong — trust the CFTC). Both API and EIA cover roughly 90 % of the industry.
Settlement, TAS, EFP. Settlement is the 14:28–14:30 ET VWAP (§8). EFPs exchange futures for physical positions and are the plumbing between Cushing physical and CL VERIFY mechanics on CME.
The physical rhythm. Argus WTI Houston is Permian-quality WTI at the Magellan East Houston terminal, assessed as the day's volume-weighted spot trades and quoted as a differential to the NYMEX settlement — ~1.25 mb/d and >300 trades a month in Q1 2024, more than the eight or so monthly cargo trades across the Dated Brent basket, with >160,000 lots of open interest in CME/ICE contracts that settle on it. Nearly 2 mb/d of pipeline capacity links Cushing to Houston (Seaway 950 kb/d, Marketlink 750 kb/d VERIFY); exports leave through Corpus Christi, Houston and Beaumont/Port Arthur; Argus approved 12 US export terminals for Midland cargoes eligible in its North Sea Dated assessment. Physical WTI trades in the month before delivery (the "trade month"), so the physical calendar runs roughly a month ahead of the futures expiry VERIFY dates. Roughly 3.85 mb/d of 2025 US crude exports originated in PADD 3, so Gulf Coast export economics (§17, chain P7) matter more than naked Brent–WTI.
Equities and dealer positioning. Interactions with the energy sector and with dealer option positioning were not sourced — hypotheses to test, not facts VERIFY.
15.7 Middle East
Saudi Arabia transmits policy through three different objects — the OPEC+ target, actual production and allocations, and the Aramco OSP — and none should be inferred from another. Nominations reveal customer demand; allocations can express Saudi strategy.
OSPs — the monthly signal. Aramco publishes next-month official selling prices early in the month: February 2026 prices on 5 January (Arab Light +$0.30 vs Oman/Dubai to Asia); July 2026 on 8 June (+$9.50 Asia, +$15.65/15.85 Europe, +$12.60 US — rationing); August 2026 at −$1.50, a cut of ~$11 described as the largest since 2003 VERIFY; September 2026 at −$2.00, the lowest since June 2020, reported 12 August. The Asia OSP is set against the Platts Dubai/DME Oman average, so it embeds Aramco's read of the Dubai structure and the EFS: a large cut signals a seller chasing volume, a large rise signals rationing. Release day floats (5th–12th in 2026): poll rather than schedule. Grade: A as a pricing mechanism, C as a WTI direction signal.
Hormuz mechanics. About 20 mb/d of crude and products transited in 2025 (~15 mb/d crude, 34 % of global crude trade; 80 % to Asia, China and India taking 44 % of the crude). Bypass capacity: Saudi Petroline 7 mb/d nameplate with ~2 mb/d used (3–5 mb/d spare) and UAE ADCOP 1.8 mb/d with ~0.7 mb/d spare, ~3.5–5.5 mb/d total; Iran's Jask terminal effectively non-operational (IEA). A Hormuz story should be a graph of transits, loadings, bypass throughput, insurance and shut-in output — not "tension". 2026 reality: by 14 March Iranian attacks on tankers at Basra and the blockade had cut Iraqi output to 1.4 mb/d from 4.5+ mb/d, with Baghdad pressing to push at least 100 kb/d through Kirkuk–Ceyhan.
Early signals. Gulf equities open before Globex on Sundays (2 March 2026: TASI +0.13 %, Aramco +1.63 %, Qatar −4.29 %, DFM/ADX closed). Accounts that break Gulf and OPEC+ news: Amena Bakr (Kpler), Reuters' Gulf and OPEC desks, Bloomberg's Javier Blas, Argus and Platts MOC reporters VERIFY handles before wiring a collector.
15.8 Russia
Urals is not "Russian Brent". Argus' Urals FOB Primorsk/Novorossiysk quotes are assessments built from Dated Brent, a Brent–Urals spread estimate and freight estimates, increasingly using netbacks from Indian landed prices; a former Gazprom Neft strategist argues official Russian averages (e.g. $46.82/bbl) understate actual sales to India at $70–75. Discounts: ~$15.5/bbl at Primorsk in March 2025; $28/bbl in 9–13 February 2026, deepest since April 2023, on sanctions, falling Indian purchases after a US tariff deal and icy-Baltic freight; Brookings tracks the wedge peaking near $30, narrowing to ~$12.50 by October 2025, widening to ~$27 by December 2025. ESPO/Kozmino has different Asian economics and consistently trades above the cap.
The cap. The G7/EU cap bars coalition firms from financing, shipping or insuring Russian crude sold above the cap; the EU replaced the fixed $60 with a dynamic cap 15 % below the 22-week average Urals price — $47.60 from 3 September 2025, $44.10 from 1 February 2026, six-monthly reviews. It binds through insurance (the International Group of P&I Clubs covered ~90 % of vessels), which is why the shadow fleet matters. Effectiveness is discount + service cost + realised volume, not whether a headline cap was breached.
Shadow fleet and routes. Russia exports 4–5 mb/d of crude by sea; Baltic loadings split ~69 % Primorsk / 31 % Ust-Luga; by March 2025 a ~350-vessel shadow fleet (average age 19) carried over 60 % of Baltic crude; the EU's 18th package listed ~500 vessels; ~0.8 mb/d is sold above the cap FOB.
Ukrainian strikes. Tankers hit at scale (ten sanctioned tankers in one July operation; the Kairos and Virat near Novorossiysk; a first Mediterranean strike); refinery strikes produced fuel shortages and diesel export bans VERIFY dates. "Refinery strike = bullish oil" is usually wrong without the next link: less product supply is bullish cracks, while freed crude can lift exports and depress crude; only storage or export constraints force upstream shut-in. Russian statistics are restricted VERIFY the 2023 primary; coverage comes from Argus (whose Baltic Urals data even the Russian tax authority proposed to use), Kommersant, Bloomberg tanker tracking, IMO GISIS, Kpler/Vortexa/LSEG weekly exports, and Transneft schedules leaked through Reuters VERIFY.
15.9 Other recurring event-source regions
| Region | Pattern | Primary confirmation | Recent example |
|---|---|---|---|
| Libya | NOC force majeure follows political blockades; restarts can be as fast as the shutdowns | NOC statements (Tier 0); loadings | Sharara FM 7 Aug 2024, El Feel 2 Sep 2024, lifted early Oct after the central-bank deal; output ~1 mb/d → ~450 kb/d during the shutdown |
| Kazakhstan / CPC | CPC carries >80 % of Kazakh exports (~1 % of world supply); terminal SPMs and tankers are the vulnerability | CPC notices; liftings | SPM-2 disabled 29 Nov 2025 → Dec loadings ~1.14 mb/d vs 1.7 planned; four tankers hit 17–20 Jul 2026, output ~1 mb/d by 26 Jul as storage filled |
| Iraq / Kurdistan | Separate southern SOMO exports from northern KRG/ITP flows; a political deal becomes supply only after Ceyhan metering | SOMO/KRG releases; Ceyhan loadings | Kirkuk–Ceyhan reopened 27 Sep 2025 after a 2.5-year halt (180–190 kb/d); the fallback route when Hormuz closed |
| Canada / WCS | Late-May wildfire season; pipeline apportionment; diluent | AER production; CER pipeline capacity; WCS–WTI (licensed) | 2025 fires shut ~345 kb/d (19 % of oil sands) for ~2 weeks; WCS stayed ~$13 under WTI; May 2026 fires threatened ~500 kb/d without loss |
| Norway | Wage-round strikes/lockouts usually end in compulsory arbitration VERIFY | Government/union statements | 2020 threat to Johan Sverdrup 470 kb/d; June 2026 lockout hit drilling, not production |
| North Sea maintenance | Late-summer turnarounds tighten BFOET programmes and Dated | Loading programmes | VERIFY seasonality |
| Nigeria | Chronic under-quota; Trans Forcados outages; Amukpe–Escravos (160 kb/d) as new route; distinguish production, theft, terminal availability and scheduled liftings | NUPRC; OPEC secondary sources; AIS | VERIFY |
| Venezuela | OFAC licence is permission, not capacity: diluent, power, upgrader and Puerto José constraints set the response | OFAC general licences; PDVSA/company disclosures | Chevron licence revoked Feb 2025; US tanker blockade; Maduro removed 3 Jan 2026; Chevron–PDVSA asset swap Apr 2026 |
15.10 What this implies for the intraday overlay (engineering, not advice)
- Store every timestamp in the venue's home zone plus UTC; derive ET, London and Rome at query time.
- Model the day as three regimes (Asia thin follower; Europe Brent-led; US WTI-led); condition every lead-lag test on session.
- Treat 10:30 ET as a structural volatility event with documented asymmetry and intraday follow-through, and 14:28–14:30 ET as a benchmark calculation window: settlement is a computed mark, gross TAS volume is signless, and a signed TAS imbalance may carry information — both are execution diagnostics until tested.
- Carry a real calendar: EIA/API holiday shifts, OPEC 12:00 GMT, IEA mid-month, ARA Thursdays, NBS 10:00 Beijing, the OSP polling window, the 8–15 January index roll, ICE option expiry (futures expiry − 3 business days), near-daily WTI weeklies.
- Weekend module: Sunday Gulf-equity prints and Middle East feeds produce a Sunday 18:00 ET gap estimate.
- Regional supply-risk nodes, each with its own event grammar: NOC force majeure (Libya), CPC SPM and tanker strikes (Kazakhstan), Hormuz and bypass capacity (Gulf), Kirkuk–Ceyhan status (Iraq), late-May wildfires (Canada), Norwegian wage rounds (June–July), Urals discount and cap resets (Russia, six-monthly).
16. The participant map — who trades oil, why, and where it shows in the data
16.1 Reading the public footprints
The single most useful public dataset is the CFTC's weekly Disaggregated Commitments of Traders, which splits reportable open interest into Producer/Merchant/Processor/User, Swap Dealer, Managed Money and Other Reportables. Three caveats govern every signal built on it: the CFTC classifies traders, not trades ("by predominant activity" on Form 40 — a merchant or a bank desk can speculate inside a "commercial" bucket, and all of a trader's positions land in one category); index-investor data is gone (the monthly Index Investment Data ended with the October 2015 report); and the programme is under review (Federal Register, 5 May 2026: frequency and content of the reports — assume the format may change).
| Participant | Where it shows up | Note |
|---|---|---|
| Producers, refiners, merchants | COT Producer/Merchant (short side dominated by producers; long side refiners and consumers) | Merchants sit on both sides; they price physical off settlement and are heavy TAS users |
| Banks and other swap dealers | COT Swap Dealer (largely banks, not only banks) | Reflects OTC client hedges (collars, swaps) and index swaps net of the dealer's own book; a client can be commercial or speculative |
| Hedge funds, CTAs | COT Managed Money | Discretionary and systematic are not separated |
| Index investors | Inferred from roll-window volume and swap-dealer positions | GSCI/BCOM roll and January reweighting are calendar-known |
| ETFs (USO, BNO, UCO/SCO) | Fund filings (holdings by contract month), announced rolls | USO's roll dates are published in advance |
| Options market makers | Exchange option open interest by strike; not signed | Gamma effects near heavy strikes and expiry; dealer sign is not public |
| Retail | Micro WTI volumes, ESMA loss disclosures, broker sentiment | Below reporting thresholds — invisible in COT |
| States | DOE/IEA announcements, EIA stock series, customs data | Discrete, pre-announced |
16.2 The groups
The numbers in this table (fund returns, merchant profits, hedge ratios, index assets, HFT shares, community sizes) are secondary, mutable estimates kept for orientation; none has decision use, and each must be sourced to a filing or method note before it enters any model.
| Group | Horizon and motive | Behaviour, footprint and numbers | Typical mistake; how they push others |
|---|---|---|---|
| US shale producers | 6–24 months; protect drilling budgets and lender covenants with swaps, two-way and three-way collars, puts | Hedging is procyclical to rallies, not to risk: 51.7 % of output hedged in 2020 but only 21 % of 2025 and 4 % of 2026 output (Standard Chartered, 40 firms); by Q2 2025 19 % of Q4-2025 output (38 firms). Dec 2016: a record 580,000 NYMEX options in a day after the OPEC cut, Pioneer raising 2017 hedges to 75 %, deferred selling flipping the curve to backwardation — "the curve is screaming producer hedging". 2026: 14 unhedged producers led by Diamondback captured the full move while peers' $55–65 collars capped them; Kelt sold swaps above $90 into the rally. | Hedging least when protection is cheapest; three-way collars whose sold put re-exposes them in crashes (2020); lifting hedges as a view. Their selling is the structural short that speculators and index longs absorb; banks lay it off as Swap Dealer shorts and put open interest clustered at budget and breakeven strikes |
| National oil companies | Cargo to decades; state revenue and policy | Aramco runs no systematic hedge; Petrobras hedges episodically (2019 $60 puts); Pemex reportedly ~250 mb of puts in some years VERIFY | Outsiders mistake a target for a commercial motive |
| Mexico's sovereign hedge | Annual budget insurance | The world's largest sovereign oil hedge: Asian puts on the Maya basket bought each year from banks and majors, historically ~$1 bn/yr; $2.38 bn payout for 2020 (fourth in twenty years); IMF: ~210–250 mb/yr hedged in 2010–17. Since 2020 the cost, strikes and counterparties are state secrets to prevent front-running | Dealers hedge their short puts by selling deferred futures during the buying window (Aug–Nov) — a seasonal source of deferred selling that has become harder to date |
| Canadian and offshore producers | Quarters–years | Carry WCS–WTI basis risk (~US$14/bbl for 2026–27 after TMX); majors and Norway run little price hedging VERIFY | Differential swaps as well as WTI |
| Refiners | Days–months; hedge the crack and inventory, not flat price | Buy crude, sell product futures; Marathon's 10-K describes hedges of LIFO inventory deviations; 2026 distillate squeeze took MPC's margin from $17.58 to $36.33/bbl | Treat nameplate as available capacity; cracks move on turnaround calendars |
| Airlines and consumers | Months–years | No major US airline hedges fuel as of 2026 (cost, pass-through); Cathay and Qantas still do; Delta owns a refinery instead; unhedged carriers passed $5 jet fuel to passengers in March 2026; Delta and United booked hedge losses after the 2014 crash | Collars bought after a rally, then the sold-put leg in the crash — the producer error mirrored |
| Utilities and shipping | Months | Fuel consumers typically hedge by buying futures or swaps and receive variation margin in a price spike; the margin-vulnerable "structural shorts" the Bank of England flagged in 2022 were producers, merchants and gas sellers with "little to no investments in securities" | Position sign must be established per group before any margin-spiral claim |
| Physical merchants (Vitol, Trafigura, Glencore, Gunvor, Mercuria) | Minutes–months; time, location and quality arbitrage | Vitol delivered 8 mb/d in 2025 on $343 bn turnover; net profit $2.3 bn (2019) → record $15.1 bn (2022) → ~$4.5 bn (2025); record $10.6 bn payout to trader-shareholders in 2025. Edge: cargo-by-cargo demand, storage and shipping optionality. Classified Producer/Merchant, so their futures shorts against physical length are invisible as speculation; natural TAS users — 21 % of WTI volume on 20 April 2020, limit-price TAS 70× 2019 levels | Contango: buy and store (2020 windfall). Backwardation: destock and get squeezed by margin — March 2022 Trafigura sought up to $3 bn against multibillion margin calls, Shell diverted $7 bn of cash flow, EFET asked for emergency liquidity. Dependence on bank credit lines |
| Banks / swap dealers | Intraday–years; intermediate OTC client and index risk | Sell producer collars, buy consumer swaps, run index swaps, lay off net risk in futures — their COT position reflects client flow net of their own inventory, and the CFTC notes clients may be speculative or commercial. Volcker ended most bank prop trading (physical carved out). Brunetti–Büyükşahin–Harris: swap-dealer activity has "little connection" to volatility; Büyükşahin–Robe: swap dealers did not raise equity–commodity correlation, hedge funds did | A rising Swap Dealer short in a rally usually means producer hedging being laid off, not a bank view |
| Discretionary macro and commodity funds | Days–months | Andurand's flagship: −54 % (2023), +50 % (2024), −40 % (2025) after touching −60 %; +6 % in the first week of the 2026 Hormuz shock while Millennium lost ~$1.5 bn, Citadel Wellington −2 %, Balyasny −3.5 %; Westbeck +80 % in 2020; Citadel commodities ~$8 bn (2022), ~$4 bn each in 2023–24. Specialists run balance models with positioning awareness and tolerate huge drawdowns; platforms run tight pod stop-outs and get cut in fast reversals. Footprint: Managed Money net length across six contracts with percentiles since 2013 (Kemp method). Extremes: record Brent net short 174,703 (week to 2 Dec 2025, OI a record 5.5 m) → four-year-high combined net long 554k by 17 March 2026 → mid-July 2026 rebuild of +76k in a week to 357k Brent longs. OIES: speculative volumes peaked in 2018; hedge-fund positions 36 % below the 2017 high in late 2025 | Crowding at extremes and being stopped out together (the record short preceded the largest real quarterly rise since 1988); confusing a balance view with timing; they are the marginal liquidity takers from commercials |
| CTAs / trend followers | Days–months; multi-horizon price signals, vol-scaled | Inside Managed Money. Bank monitors are model outputs, not positions VERIFY before use: TD Securities on 16 Aug 2024 expected CTAs to flip Brent net short that session; by Jan 2025 net long energy; in 2026 many were long from early Q1, rode Feb–Mar, then cut on volatility — the SG CTA index +12.2 % YTD to 3 June 2026 with energy a standout | Whipsaw in ranges; late entry after shocks; sold into the March 2026 highs because vol targets forced size cuts even with the trend intact |
| Vol-targeting and risk-parity | Days–months; allocate risk, not barrels | ECB: up to $2 tn in volatility strategies and ~$300 bn in ~100 risk-parity funds; the stylised March-2020 model required selling ~225 % of capital; the same "forced deleveraging" pattern in commodities in late 2025 (Saxo) | Procyclical, indiscriminate selling; links oil to equities and rates in stress |
| Commodity index investors | Months–years; passive beta | GSCI rolls over business days 5–9 at 20 %/day; BCOM over days 6–10; the 2026 reweighting windows overlapped on 8–15 January; assets tracking BCOM >$60 bn VERIFY. Academic verdict: no evidence index flows caused 2007–08 (Irwin–Sanders; markets without index participation rose too) against Singleton's finding of significant flow effects in 2008 | Confuse collateral, spot and roll return; dealer hedges of scheduled flows are liquidity events, rarely durable alpha |
| ETFs / ETNs (USO, BNO, UCO/SCO, XLE) | Intraday–months; packaged exposure | USO in 2020: AUM ~$1.5 bn → ~$4 bn as retail bought the dip; a record 220,905 Robinhood holders; forced to spread holdings across months on 20 April; FCM position limits (22 Apr–12 Jun) not fully disclosed → $2.5 m CFTC penalty and an SEC order; short sellers made ~$300 m against it. USO has lagged crude by half since 2014 because of roll cost. Leveraged UCO/SCO rebalance daily into the close VERIFY magnitude | Retail assumes "spot oil"; roll, issuer and forced methodology changes dominate outcomes; creations in contango force front-month buying and calendar-spread selling on roll days |
| Options market makers | Seconds–months; quote vol and hedge Greeks | WTI options record ADV 320,000 in Q1 2026. Dealers short producer puts must sell futures as price falls and buy as it rises — mechanical flows that intensify near expiry at heavy strikes; the oil gamma profile is claimed to be asymmetric to the downside because producer put buying exceeds upside speculation (practitioner claim, VERIFY with a dealer-gamma dataset) | Inferring dealer sign from open interest alone |
| HFT / market makers | Microseconds–day | CFTC: automated trading ~47 % of metals and energy futures volume vs 80 % in FX VERIFY vintage; 2013–18 follow-up: automation rising in every commodity market, orders almost always limit orders, no matching trend in end-of-day volatility; account-level evidence associates HFT participation with better spreads and price impact, partly offset when trading aggressively (Coughlan et al. 2023) | Withdraw or trade aggressively in jumps; transmit venue shocks |
| Retail — EU CFDs | Minutes–weeks | ESMA: leverage capped at 10:1 for commodities other than gold, 50 % margin close-out, negative-balance protection, mandatory loss warnings; 74–89 % of retail accounts lose, average losses €1,600–29,000 | For an Italian resident CFD oil exposure is small, expensive and structurally negative-carry; regulated futures are the cleaner route |
| Retail — micro futures | Minutes–weeks | Micro WTI (100 bbl) ADV 272,000 in May 2026 (+317 % y/y) | Contract, expiry and negative-price mechanics misunderstood |
| Retail — Asia | Intraday–weeks | Bank of China ~$1 bn (2020); MCX ₹418–450 crore (2020); Robinhood USO buyers (2020) | The pattern across all four: retail buys "cheap" oil in demand shocks, in contango, through instruments with hidden roll, expiry or settlement mechanics — and is the counterparty to the storage trade |
| State actors | Days–decades; revenue, inflation, security | US SPR: 180 mb over six months in 2022 (IEA collective actions 62.7 mb on 1 Mar and 120 mb on 7 Apr 2022); 413 mb in Dec 2025 against 714 mb capacity; 172 mb over ~120 days announced 11 Mar 2026 inside a 400 mb IEA action with a plan to more than replace it; refill rule buys at WTI ~$67–72. China: strategic plus commercial stocks ~1.4 bn bbl at end-2025 after adding ~1.1 mb/d in 2025; 169 mb of new capacity planned 2025–26; a countercyclical buyer visible only in customs imports. Japan: 70 days of industry stocks (~220 mb) plus 263 mb government. Norway's GPFG holds no oil futures | Multiple objectives make simple "pain price" reaction functions fail; states change the feasible set for everyone else |
16.3 Hedgers, speculators, and the myth of smart money
| Study | Data | Finding for a systematic trader |
|---|---|---|
| Büyükşahin & Harris (Energy Journal 2011) | CFTC daily non-public positions 2000–08 | Little evidence that hedge-fund position changes Granger-cause price changes; price changes precede position changes. Managed money is reactive |
| Brunetti, Büyükşahin & Harris (JFQA 2016) | Crude, gas, corn 2005–09 | Hedge-fund position changes are negatively related to volatility; swap dealers unrelated — funds provide liquidity on average |
| Cheng, Kirilenko & Xiong (Review of Finance 2015) | Large-trader data around 2008 | Financial traders accommodate hedgers in normal times but cut net longs when VIX rises, so risk "convects" back to producers in stress — the important exception to "flows do not matter" |
| Kang, Rouwenhorst & Tang (JF 2020) | 26 commodities, COT | Short-term position changes are speculators' liquidity demand (which hedgers are paid for); long-term variation is hedging demand; the two predict returns with opposite signs |
| Basu & Miffre (JBF 2013) | Cross-section | Hedging-pressure-sorted portfolios earn Sharpe ratios above long-only, distinct from momentum and term structure VERIFY magnitudes |
| Sanders, Boris & Manfredo (Energy Economics 2004) | Energy COT | Positive returns are followed by rising non-commercial net positions the next week; commercials fade — funds trend-follow, hedgers fade |
| Singleton (Management Science 2014) | 2008 oil | Index and managed-money spread flows had significant effects on prices after controls — one boom/bust |
| Irwin & Sanders (2010–12) | Cross-section incl. non-index markets | "Scant evidence" that index funds moved returns; the Masters hypothesis fails |
| Büyükşahin & Robe (JIMF 2014) | 17 markets | Hedge-fund participation raises equity–commodity correlation; swap dealers and index traders do not |
| OIES (Dec 2025) | COT/ICE | Speculative volumes peaked in 2018; the "spec" share of oil is smaller than the narrative |
| Pierru, Smith & Zamrik (IMF WP/22/183) | OPEC decisions 1989–2019 | Model classified cut/hold/increase ~66 % of the time; cuts often followed falling prices rather than reversing them — B context, C trading rule |
Synthesis. There is no stable smart-money group. The CFTC classifies traders by predominant business, so Producer/Merchant/Processor/User positions can be net long or net short in any given report — a rising commercial short in a rally is usually hedging demand (a slow risk-premium signal), while short-term changes in commercial positions reflect liquidity provision to speculators (a mean-reversion signal); both are empirical quantities for a specified report, never structural constants. Managed money is reactive and momentum-like — right in trends, wrong at extremes. Practitioner "COT index" and "commercials vs large specs" rules (Briese, Williams) have no audited track record in crude VERIFY; the closest evidence implies they work only when the horizon of the position change is respected (multi-month hedging pressure, not week-to-week noise). Retail's April 2020 mistake was structural, not proof that retail always loses: dip-buying products held a deliverable expiring future with no preparation for negative settlement.
16.4 Reflexive loops and three episodes
- Positioning → price → positioning. Funds add on strength and cut on weakness; commercials fade them and are paid a liquidity premium; in stress the funds' cuts push risk back to producers. Observable: the rate of change of Managed Money net length versus its percentile.
- Margin calls → forced selling and de-hedging. In 2022 ICE Clear Europe TTF initial margin rose sixfold January–April; structural shorts had to pay variation margin; some "reduced their hedging activities altogether"; TTF open interest fell >40 % with large drops in Brent — hedging capacity contracted exactly when the curve most needed sellers; LSGO margin rose 90.3 % in a single step in March 2022.
- ETF flows → roll → curve. Inflows in contango force front-month buying and a scheduled roll everyone can see; in April 2020 that made USO the fulcrum of the May contract; the CFTC found open interest "much higher than usual" before expiry and liquidity falling "well before April 20".
- Producer hedging → curve. Rallies trigger deferred selling that flattens or flips backwardation (Dec 2016), lowering the price at which the next producer can hedge; collars leave dealers short puts whose delta-hedging accelerates the next fall.
Episode A — April 2020 (demand shock, super-contango). Retail and ETFs bought the dip through instruments with public, late rolls; merchants with tank space bought the contango; TAS hit 21 % of volume; the May contract settled at −$37.63 and the losses landed on retail; the survivors were producers who had hedged 51.7 % of output.
Episode B — 2022 (supply shock, backwardation, margin spiral). Margin calls hit merchants and utilities; open interest collapsed as hedgers de-hedged; Citadel and the merchants booked record profits from dislocation; the US released 180 mb; prices fell back in H2 as managed money de-risked into a curve that hedgers had stopped selling.
Episode C — 2026 (Hormuz closure). Set-up: record Brent managed-money shorts, US producers ~4 % hedged for 2026, no US airline hedged. Shock: strikes on Iran on 28 February and a de-facto closure; Brent $61→$118 over Q1; global supply −10.1 mb/d in March; Brent–WTI $25. By group: CTAs already long rode it then cut on volatility; specialists won, multi-strategy platforms lost; managed money swung to a four-year-high net long by 17 March; unhedged shale captured the upside while hedged peers were capped; the US released 172 mb inside a 400 mb IEA action; refining margins doubled. Q2 retraced ~30 % before a record mid-July weekly rebuild of Brent longs.
What the episodes share, and what it means for Tradero. In each episode, separately documented, a group with pre-committed flows — published rolls and late-rolling retail products (2020), mechanical margin (2022), hedge programmes triggered by price levels and vol-targeted CTA cuts (2026) — moved price at the extreme while the discretionary groups mostly reacted; this is three case studies, not one law. The actionable public data are therefore calendar-known flows (index rolls and the January reweight, ETF roll dates, options expiries and heavy strikes, SPR schedules), the decomposed rate of change of Managed Money positioning, and the contract mechanics that decide who is forced — not the level of "commercial" shorts, which mainly measures hedging demand.
17. The cause→effect chain catalogue
This is the section the owner asked for: the causes of the causes. Every chain is written in one fixed format so it can later become a row in a hypothesis registry — but it is not one yet: a registry row additionally needs trigger_first_seen, an expectation and cutoff where one exists, an executable_at timestamp, a named falsifier and a missing-data policy, and it enters research only through the §11.5 gate (§20). Chains split or added after the Codex review of v2.0 carry a/b suffixes or ids above the original range. Signs are for the trigger as named, first-order and bullish-version: flat + = higher WTI; front + = wider F1–F2 (more backwardation); cracks + = products strengthen versus crude; B–W + = Brent minus WTI widens; ? = no stable first-order sign; reverse the trigger, reverse the sign. Lags are priors to test, not constants. Grade is mechanism / signal where they differ. Enters says where the chain could live in Tradero: S1 (swing), S2 (event overlay), S3 (spreads), context, or never. The catalogue merges Claude's 41 chains (research note I) and Codex's 53 (memo part 2); after the review's splits, merges and additions it holds the chains listed below, each with a unique id.
17.1 Physical and logistics chains
- P1 — Gulf offshore shut-in (hurricane, accident). Trigger: platforms evacuate; crude output stops while refineries and ports stay open. Transmission: lost production → PADD 3 stock draws. Observable: BSEE daily shut-in statistics, NHC advisories, EIA PADD 3 stocks and runs. Lag & decay: headline minutes; stock effect 3–10 days; decays along the reported restoration curve. Sign: flat +, front +, cracks −/0, B–W −. Grade: A mechanism / B timing. Enters: S2 event; S1 confirmation.
- P2 — Hurricane's dual hit. Trigger: a storm closes refineries, LOOP/Houston/Corpus terminals or product pipelines as well as platforms; the dominant lost flow decides direction. Harvey 2017: runs −3.2 mb/d, utilisation 96 %→63 %, retail gasoline +28 ¢/gal in a week while WTI fell to a six-week low. Ida 2021: 96 % of federal Gulf output shut in, 28 shut-in days, Gulf runs −1.6 mb/d. Observable: NHC cone, BSEE, USCG port conditions, EIA runs
WCRRIUS2and exportsWCREXUS2, company notices. Lag: forecast days, closures hours, restoration 2–4 weeks (Ida) to months (Katrina/Rita). Sign if downstream loss dominates: flat −, front −, cracks ++, B–W +; production-dominated: the reverse. Grade: A mechanism / B net sign. Enters: context until the net-flow rule is deterministic. - P3 — Refinery-unit outage. Trigger: fire or power loss at a CDU, FCC, hydrocracker or coker. Transmission: crude intake falls; the product effect depends on the unit (FCC tightens gasoline; hydrocracker/coker tightens distillates and heavy-crude demand). PES Philadelphia (June 2019, ~27 % of East Coast capacity): RBOB +3.9 % on the day; never restarted. Observable: EIA-820 unit capacities, PSM downstream inputs, 8-Ks and press releases, state flaring filings, IIR/Wood Mac feeds (licensed). Lag: products minutes, crude stocks 1–2 WPSRs, decay on restart. Sign for a large USGC FCC outage: flat −, front −, gasoline crack +, B–W +. Grade: A mechanism / B measurement. Enters: S2 and context; S1 after run confirmation.
- P4 — Permian→Cushing inflow restriction. Trigger: leak, power or maintenance reduces Midland inflow. Transmission: Midland weakens, Cushing tightens, delivery-grade WTI strengthens. Observable: operator bulletins, nominations and linefill (licensed) and their later revisions — the weekly Cushing stock is a lagged residual, never the only observable; EIA PSM PADD 3→2 movements, Argus Midland/Cushing. Lag: basis hours, stocks 1–3 weeks, decay after linefill normalises. Sign: flat +, front +, cracks −, B–W −. Grade: A mechanism / B public observability. Enters: S3; S1 context.
- P5a — Cushing inbound loss (Canadian or Bakken leg). Trigger: Keystone or another inbound line outage; 7 Dec 2022 (~14,000 bbl spill, 622 kb/d line): prompt +~5 % intraday on Cushing-draw fears, the Cushing leg shut to month-end. Transmission: fewer barrels arrive at the delivery hub → prompt WTI spread and Mars firm; WCS Hardisty weakens. Observable: operator notices, PHMSA incidents, EIA Cushing stocks, WCS Hardisty vs Houston, nominations (licensed). Lag: basis same day; stocks 1–3 weeks. Sign: flat +, front ++, cracks 0, B–W −. Grade: A. Enters: S3 spreads; S2 event.
- P5b — Cushing outbound loss (Seaway, Marketlink). Trigger: an outbound leg to the Gulf goes down. Transmission: barrels strand at the hub while Houston can tighten. Observable: operator notices, EIA Cushing stocks and PSM PADD movements, Cushing–MEH basis (licensed). Lag: basis same day; stocks 1–2 weeks; decay after restart and linefill. Sign: flat −, front −, cracks +/0, B–W +. Grade: A mechanism / B signal. Enters: S3 spreads.
- P6 — US export-port closure. Trigger: fog, hurricane, channel collision or berth outage. Transmission: loadings queue, PADD 3 crude backs up, WTI discounts until export economics clear. Observable: USCG Marine Safety Information Bulletins, port line-ups and AIS, EIA weekly exports, Census HS 2709. Lag: hours; inventory 1–2 weeks; decays days after reopening. Sign: flat −, front −, cracks 0/+, B–W +. Grade: A mechanism / B AIS quantity. Enters: S2 event; S3 location.
- P7 — The US export netback (the arbitrage opens or closes; absorbs the former R5 loop). Trigger: Dated Brent delivered value rises above WTI Midland/MEH plus terminal, voyage and quality costs (or freight rises and closes it). Transmission: traders nominate and load more US crude → PADD 3 stocks fall → WTI catches Brent; when freight or Dated weakness closes the arb, origin stocks rise, destination grades strengthen and the wider location spread eventually repositions vessels. Roughly 3.85 mb/d of 2025 US crude exports left from PADD 3, so this matters more than naked Brent–WTI. Observable: Platts Dated, Argus MEH/Midland, freight (all licensed), EIA exports, vessel manifests. Lag: paper basis minutes; nominations 1–4 weeks; closes when the netback converges. Sign: flat +, front +, cracks −, B–W −. Grade: A mechanism / B signal. Enters: S3; S1 confirmation.
- P8a — Cushing storage full (the April 2020 tail). Trigger: inbound exceeds contracted outbound plus truly available tank space; April 2020: ~60 mb in tank against ~76 mb working capacity with much of the free space already leased, May CL −$37.63. Transmission: bids for tanks rise, cash WTI discounts, contango pays storage; the expiring contract detaches from spot when holders without booked storage must exit. Observable: EIA Cushing weekly stocks, PSM tank-farm and pipeline stocks, storage lease quotes (licensed VERIFY), spread and OI by contract, days-to-expiry. Lag: days; can persist months; reverses non-linearly when spare tank returns. Sign: flat −, front −−, cracks +, B–W +. Grade: A mechanism / C observable capacity threshold. Enters: S3 and expiry risk; never as a fixed level rule.
- P8b — Cushing near operational minimum (the June–July 2026 tail). Trigger: stocks fall toward the level at which pumps and pipes still function (below ~20 mb in 2026; the floor is estimated, not published). Transmission: the marginal delivery barrel must be bid out of pipelines or other hubs → convenience yield explodes → prompt spreads and Brent–WTI turn violent (Brent–WTI negative 18–24 Jun and 2–8 Jul 2026). Observable: EIA Cushing weekly stocks, prompt spreads, Brent–WTI spot, Midland–Cushing. Lag: days; persists while stocks stay near the floor. Sign: flat + (local), front ++, cracks 0, B–W −−. Grade: A mechanism / C threshold. Enters: S3; S1 WTI-local state with an estimated tail threshold.
- P9a — Western Canada apportionment glut. Trigger: oil-sands growth or maintenance meets Enbridge, Keystone or Trans Mountain constraints; nominations are apportioned. Transmission: WCS discounts until rail or a marginal pipeline clears; cheap heavy feed benefits Midwest refiners; Cushing is affected only later. Observable: CER pipeline throughput and capacity, operator apportionment notices, Alberta production, WCS–WTI (licensed). Lag: differential days; rail response weeks. Sign for WTI: flat 0/−, front 0, PADD 2 cracks +, B–W 0/+. Grade: A regional / C outright. Enters: S3 and context.
- P9b — Canadian wildfire supply loss. Trigger: late-May fire season (2016: >1.1 mb/d peak; 2025: ~345 kb/d for ~2 weeks). Transmission: heavy-sour supply to PADD 2/3 falls → WCS narrows, Mars firms; WTI muted when stocks are high. Observable: AER production, company notices, WCS–WTI, Enbridge nominations. Lag: 1–4 weeks. Sign: flat + (small), front + (small), cracks 0, B–W −. Grade: B. Enters: S1 context.
- P10 — CPC terminal disruption (Kazakhstan). Trigger: storm, single-point-mooring damage, sanctions friction or Russian administrative action. CPC carries >80 % of Kazakh exports (~1 % of world supply); SPM-2 disabled 29 Nov 2025 cut December loadings to ~1.14 mb/d vs 1.7 planned; four tankers hit 17–20 Jul 2026 and output fell to ~1 mb/d as storage filled. Transmission: Mediterranean light-sweet supply tightens; alternatives are small. Observable: CPC press releases and liftings, Kazakh production, Kpler/Vortexa cargoes, CPC Blend differentials. Lag: headline hours, loadings days, global substitution 1–4 weeks. Sign: flat +, front +, cracks −, B–W +. Grade: A mechanism / B duration. Enters: S1 disruption context.
- P11 — Libyan blockade and force majeure. Trigger: a faction closes a field, pipeline or terminal; NOC declares force majeure; restarts can be as fast as the shutdown (2024: Sharara 7 Aug, El Feel 2 Sep, lifted early October; ~1 mb/d → ~450 kb/d). Observable: NOC statements (Tier 0), OPEC secondary-source output, loadings. Lag: hours; physical 2–10 days; decay one day to many months. Sign: flat +, front +, cracks −, B–W +. Grade: A mechanism / B political duration. Enters: S2 event; S1 realised flow.
- P12 — Nigeria outage and theft. Trigger: pipeline sabotage, terminal force majeure, chronic underinvestment; Trans Forcados outages; Amukpe–Escravos (160 kb/d) as a new route. Transmission: Bonny/Forcados/Qua Iboe programmes lose light-sweet barrels; official production is noisy. Observable: NUPRC production, terminal programmes (licensed), company notices, OPEC secondary sources, AIS. Lag: differentials hours; global 1–3 weeks. Sign: flat +, front +, cracks −, B–W +. Grade: A mechanism / B quantity. Enters: S1 context.
- P13 — Iraq–Kurdistan pipeline resolution. Trigger: Baghdad, KRG and Türkiye settle payment, marketing and arbitration terms; Kirkuk–Ceyhan restarted 27 Sep 2025 after 2.5 years (180–190 kb/d) and became the fallback route when Hormuz closed. Transmission: Kurdish crude displaces Mediterranean alternatives. Observable: SOMO/KRG releases, Ceyhan loadings, AIS. Lag: announcement minutes; reliable flow days–weeks; becomes a new supply level. Sign on restart: flat −, front −, cracks +, B–W −/0. Grade: A mechanism / C political timing. Enters: S1 only after metered or loading confirmation.
- P14 — Venezuelan licence and diluent change. Trigger: OFAC licence tightens or eases; imported condensate and power availability change. Transmission: Orinoco blending and Puerto José exports rise or fall → USGC heavy-sour scarcity → Mars and WCS differentials and coker economics. Licence is permission, not capacity. Observable: OFAC general licences, PDVSA and company disclosures, Puerto José AIS, OPEC secondary output, EIA company-level imports. Lag: headline minutes; contracts 2–8 weeks; field response quarters. Sign on easing: flat −, front −, cracks +, B–W 0/−. Grade: A mechanism / B implementation. Enters: S1 context; S3 quality.
- P15 — Russian refinery strike or outage. Trigger: capacity damaged by drones. Transmission: fewer domestic outlets for crude; if storage and export logistics permit, crude exports rise while diesel exports fall (Russia banned product exports and pushed more crude out in 2026); if not, upstream shuts in. Observable: Russian export restrictions, company statements, NASA FIRMS fire detections (detection only, not an outage-volume measure), Kpler/Vortexa crude and product loadings, Argus Urals and gasoil. Lag: product cracks hours; cargo mix 1–4 weeks; repairs weeks–months. Sign (exportable-crude case): flat −/0, front −, cracks +, B–W ?. Grade: A accounting / B net outcome. Enters: context; S3 cracks. "Refinery strike = bullish oil" is usually wrong without the next link.
- P16 — Winter freeze-offs (Texas, February 2021). Trigger: Permian and Eagle Ford wellhead freeze; Uri took ~4 mb/d of crude offline VERIFY and ≥2.6 mb/d of refining. Transmission: supply and refining both lost; WTI modestly bullish, cracks up, then a crude build as refineries lag restarts. Observable: NOAA CPC 6–10-day outlook, Waha and Henry Hub cash, EIA WPSR. Lag: 1–2 weeks; stock reversal 2–3 weeks later. Sign: flat + (days), front +, cracks +, B–W − then +. Grade: A episode / B general. Enters: S2 and S1 context.
- P17 — Rhine low water. Trigger: Kaub gauge below ~40 cm (Oct 2018: Rotterdam→Basel freight ~$5→>$35/bbl, Karlsruhe diesel premium doubled, ARA distillate stocks 15.7→>21 mb; Aug 2026: lowest since records began in 1880, "effectively impassable at Kaub"). Transmission: inland German product prices decouple upward while ARA stocks back up — a location spread. Observable: Pegel Kaub (pegelonline.wsv.de), Argus Rhine barge freight, Insights Global ARA stocks. Lag: weeks–months; ends with rain. Sign: flat 0, front 0, ARA gasoil crack − (hub build) while inland premiums +, B–W 0. Grade: A. Enters: context; S3 European products.
- P18 — Product-pipeline outage (Colonial, May 2021). Trigger: ransomware shut the 2.5 mb/d product line for six days. Transmission: PADD 1 premiums up, USGC product stranded, crude softer if runs are cut; a difference-in-differences study finds only ~4 ¢/gal across 18 states, mostly after restart through panic buying. Observable: Colonial nominations, Argus USGC vs NYH gasoline, EIA PADD 1 stocks. Lag: days; reversed in 2–3 weeks. Sign: flat − (small), front 0, NYH crack + / USGC −, B–W 0. Grade: A (documented as small). Enters: intraday and S1 context.
- P19a — Chokepoint closure: the crude-flow loss (Hormuz 2026). Trigger: hostilities close the strait; Gulf exports −2.1 mb/d to 15 mb/d in July, loadings ~12 mb/d late July; observed stocks −69 mb in July and −410 mb since late February; Dated $105 on 23 July inside a ~$40 July range. Transmission: physical crude loss → violent backwardation and sour-grade scarcity → demand destruction (China imports −3.9 mb/d) and a 400 mb IEA release cap the spike; a pure crude-supply shock can compress cracks if refining is intact. Observable: Kpler/Vortexa transits, bypass-pipeline throughput, IEA/EIA stock estimates, Brent M1–M2, Dubai structure, war-risk premia. Lag: intraday on headlines; physical 3–6 weeks (voyage times); decays only with reopening, then a multi-quarter rebuild. Sign: flat ++, front ++, cracks ?, B–W ++ (WTI cushioned by domestic supply). Grade: A mechanism / B net sign and duration. Enters: intraday through months — the live regime.
- P19b — Chokepoint closure: the refining and product loss. Trigger: the same conflict shuts Gulf refineries and product exports (jet, diesel, naphtha, LPG) and stalls refining hubs. Transmission: product scarcity is a second shock → record cracks and regrades, Asian petrochemical run cuts, airline pass-through. Observable: Platts and Argus cracks by hub, IEA product balances, jet–diesel regrade, ARA and Singapore product stocks. Lag: days; persists with the outage. Sign: flat +, front +, cracks ++, B–W +. Grade: A mechanism / B magnitude. Enters: S3 cracks; S1 context.
- P20 — ENSO and heating demand. Trigger: El Niño winters lower US heating degree days; La Niña tilts colder. Observable: CPC ENSO status, EIA Winter Fuels Outlook, HDD forecasts. Sign: La Niña distillate crack + (winter); El Niño −. Grade: C for oil, B for gas. Enters: context.
- P21 — Scheduled inventory report: expectation → surprise → reaction → confirmation. Trigger: API (Tuesday) and EIA (Wednesday, holiday-shifted) releases against a timestamped consensus and the API pre-print. Transmission: price and the front spread react to the surprise within minutes, volatility rises, the third half-hour predicts the last on EIA days (§3.3, §14.2); the new stock state persists while the return effect does not (single-study evidence of no multi-day drift, grade B); products, runs, imports, exports and the adjustment can reverse the crude headline. Observable: the consensus vintage and cutoff, the API echo, WPSR Tables 1–14 at first retrieval, Cushing, the 10:30–10:45 ET return, then Cushing and spread behaviour over the following sessions as confirmation. Lag: minutes; state persists; drift unsupported. Sign: draw vs expectation → flat +, front +, cracks ?, B–W −. Grade: A impact / B no-drift / B as S1 state. Enters: S2 event; S1 state (F3) — the most important scheduled chain in the catalogue and missing from v2.0.
- P22 — Contract expiry, open-interest migration, roll and convergence. Trigger: the front month approaches expiry (CL: three business days before the 25th; MCL one day earlier; Brent last business day of the second preceding month); index rolls (GSCI 5–9, BCOM 6–10), USO's first-five-day roll and broker close-out deadlines are dated. Transmission: liquidity migrates the week before expiry; the expiring contract converges to physical (Cushing) and can detach when holders cannot deliver (P8a); spreads absorb the scheduled flow. Observable: per-contract OI and volume by days-to-expiry, F1–F2 during roll windows, TAS volume, ETF holdings, broker deadlines. Lag: days; ends at expiry. Sign: flat 0, front ? (scheduled pressure), cracks 0, B–W 0. Grade: A mechanics / C direction. Enters: calendar, risk gate (§6 item 3), expiry stress; roll-window exclusion for spread features.
- P23 — Planned refinery turnaround versus unplanned outage. Trigger: a scheduled maintenance season (Feb–Mar, Sep–Oct; utilisation troughs ≈86–87 %) versus an unplanned unit loss (P3). Transmission: planned work is anticipated in cracks and crude demand weeks ahead and is largely priced; an unplanned outage is a surprise with the P3 dynamics; confusing the two mis-signs the crude effect. Observable: turnaround schedules (IIR/Wood Mac, licensed; company guidance), EIA utilisation and inputs, PADD-level runs, crack term structure. Lag: planned — weeks ahead, priced; unplanned — minutes. Sign (planned season): flat − (crude demand), front −, cracks + seasonal, B–W ?; (unplanned) see P3. Grade: A calendar / B crude effect. Enters: seasonal prior for F4; S2 for unplanned events.
- P24 — Weekly reporting error → apparent draw or build → later reconciliation. Trigger: the WPSR's adjustment term (>2 mb/d at times), unedited weekly customs export data (swings that EIA says are usually within ±2 % of the PSM) and modelled weekly production produce a headline stock change that the Petroleum Supply Monthly later revises. Transmission: the market trades the headline; the monthly reconciliation moves the level quietly weeks later; a headline draw with a large positive adjustment is weaker evidence than the same draw with a small one. Observable: WPSR Table 1 adjustment, weekly exports vs four-week average, PSM two months later, vintage differences. Lag: headline minutes; reconciliation 4–8 weeks. Sign: none by itself — a quality flag on P21 and F3. Grade: A measurement. Enters: F3 data-quality field; never a directional feature.
17.2 Policy and producer-reaction chains
- Q1 — Unexpected OPEC+ cut. Trigger: falling price or inventory forecast, low member revenues and Saudi preference for price defence overcome cheating and market-share concerns. Transmission: target falls → only compliant output and loadings fall. 2 Apr 2023: >1 mb/d cut a day before a meeting expected to hold; WTI +8 % with managed-money Brent shorts far below their average — surprise × positioning. Observable: a timestamped pre-meeting consensus (Reuters/Bloomberg delegate polls) and a leaked-versus-new classification of the wording, OPEC communiqués and allocation tables, MOMR secondary-source output, IMF fiscal breakevens, AIS loadings. Lag: futures seconds and the Sunday gap; barrels 1–3 months; decays if compliance disappoints or demand offsets. Sign: flat +, front +, cracks −, B–W +. Grade: A mechanism / B forecast. Enters: S2 event; S1 compliance.
- Q2 — Telegraphed increments (2025–26 unwind). Trigger: pre-leaked monthly steps (188 kb/d) completing the 1.65 mb/d rollback; 3 Apr 2025 acceleration to +411 kb/d with prices ~6 % lower VERIFY. Transmission: priced by the time of the announcement; supply in 1–3 months. Sign: flat − (small), front −, cracks +, B–W −. Grade: A for 2025 / B generalised. Enters: S2 (fade telegraphed decisions unless spreads confirm within 3–5 sessions); S1 context.
- Q3 — Market-share pivot. Trigger: years of unilateral Saudi restraint invite free-riding and non-OPEC growth; Saudi stops defending price and uses discounts and volume (netback pricing 1985–86; no cut against shale Nov 2014, $112→$27 by Jan 2016; March 2020: Russia refuses cuts on 6 March, Saudi announces 12.3 mb/d and $6–8 OSP discounts, Brent −30 % on 9 March, then a record ~10 mb/d cut in April). Transmission: prompt surplus → producer capex and default stress. The tell is the OSP cut plus a volume announcement, not the communiqué. Observable: Saudi production and exports, Aramco OSPs, OPEC ceiling, non-OPEC supply, Dallas Fed survey, HY energy spreads. Lag: −20–30 % within weeks; regime 6–18 months; investment response 6–24 months. Sign: flat −−, front −−, cracks + initially, B–W −. Grade: A historical mechanism / C timing. Enters: regime context.
- Q4 — Saudi fiscal pressure (a weak constraint). Trigger: Vision 2030 spending raises the fiscal breakeven (IMF: ~$91–96/bbl for 2025). Transmission: ambiguous — revenue need can favour price defence, volume, debt issuance or reserve draws; the breakeven rises when Saudi cuts; off-budget PIF spending is excluded; the Kingdom can run deficits for years; +1 mb/d of output improves the fiscal balance by ~3.2 % of GDP. Observable: IMF Regional Economic Outlook, Saudi budget and quarterly oil revenue, Aramco dividends, reserves. Sign: flat ?, front ?, cracks 0, B–W ?. Grade: A fiscal measure / C meeting signal. Enters: context, never directional.
- Q5 — Cheating and compensation spiral. Trigger: high OSP discounts or fiscal stress reward overproduction (Iraq, Kazakhstan, UAE); compensation schedules are re-filed; credibility falls. Transmission: price weakens; Saudi may demand compensation, deepen its own cut, or pivot to market share (Q3). Observable: country targets, MOMR six secondary sources, compensation tables, loadings. Lag: monthly estimates; 1–6 meeting cycles. Sign while cheating persists: flat −, front −, cracks +, B–W −/0. Grade: A mechanism / B detection. Enters: S1 OPEC state.
- Q6 — Saudi OSP signal. Trigger: Asian refinery margins, Dubai structure, customer nominations and allocation preference. Transmission: Aramco sets grade differentials to the Dubai/Oman marker; relative demand and competing sour differentials adjust; reallocates barrels more reliably than it predicts WTI. September 2026 Arab Light at −$2.00 to Asia, lowest since June 2020, after the ~$11 August cut. Observable: Aramco OSP circular (5th–12th, poll), Platts Dubai, DME Oman, Brent–Dubai EFS, Asian cracks. Lag: immediate in differentials; next loading month; decays into nominations. Sign on a broad hike: flat +/0, front +, cracks −, B–W +/0. Grade: A pricing mechanism / C WTI signal. Enters: Middle East context; S3.
- Q7 — UAE exit from OPEC/OPEC+ (announced 28 Apr 2026, effective 1 May). Trigger: quota lagged ADNOC capacity (3.4 mb/d produced vs 4.2 mb/d capacity in 2025). Transmission: ~0.8 mb/d of disciplined spare capacity leaves the cartel; OPEC+ share of world output ~46 %→~42 %; weaker cohesion lowers the "OPEC put"; masked in 2026 by Hormuz. Observable: ADNOC output (Kpler, MOMR), Murban vs Dubai, STEO spare capacity. Lag: structural. Sign: flat − (medium term), front −, cracks 0, B–W − VERIFY sign. Grade: B. Enters: months; regime context.
- Q8 — US SPR release. Trigger: political response to disruption or pump prices; four mechanisms (emergency drawdown, exchange repaid with premium barrels, test sales, mandated sales). 2022: ~180 mb over six months to 405 mb, lowest since 1984; 2026: 172 mb over ~120 days inside a 400 mb IEA action. Transmission: sour crude delivered at specific sites and grades → the basis effect depends on delivery site, grade, award volume and window; the flat-price announcement is mostly priced within the day; an exchange creates a future repayment bid. Observable: DOE notices of sale and exchange, award and delivery tables (site, grade, volume, window), EIA
WCSSTUS1, commercial stocks and exports. Lag: announcement minutes; deliveries weeks–months; partial reversal on return barrels. Sign: flat − (small, B), front − (C), cracks 0, B–W conditional on delivery site and grade. Grade: A barrels / B–C price effects. Enters: S2 event; S1 scheduled flow; S3 basis only with the award table. - Q9 — SPR refill. Trigger: low inventory, political target, acceptable offers and appropriated cash; the 2022 refill rule targeted WTI ~$67–72. Transmission: dated physical demand for specified grades at specified sites; a soft floor under deferred WTI. Observable: DOE solicitations, awards, delivery windows. Lag: tender headline hours; delivery weeks. Sign: flat + (small, C), front + (C), cracks 0, B–W conditional on grade. Grade: A mechanism / C outright magnitude. Enters: context; S3 basis only with the award table.
- Q10 — Sanctions: designation versus enforcement (Iran, Venezuela). Trigger: OFAC designates a producer, ship, insurer, bank or buyer (Chinese teapots from March 2025 with secondary-sanctions warnings). Transmission: buyers pause → discount widens → flows reroute; after the first teapot designation Iranian Light offers slipped from −$0.8 to −$1.5/bbl versus Brent with no fresh deals for two weeks and China's intake fell from ~1.8 mb/d to ~0.8 mb/d by mid-2025 VERIFY; volume falls only if enforcement and alternative fleet or payment capacity bind. Observable: OFAC SDN additions with timestamps, vessel ownership and port calls, Kpler/Vortexa exports and floating storage, Iranian Light vs Oman, Shandong run rates. Lag: discount days; volumes recover 1–3 months unless enforcement escalates. Sign under effective enforcement: flat + (small), front +, cracks −, B–W + (Asian sour tightens). Grade: B (designation alone decays; buyer enforcement bites). Enters: S2 event; S1 confirmation.
- Q11 — Russian price-cap tightening and major designations. Trigger: G7 cap ($60, Dec 2022) enforced through shipping and insurance attestations; EU dynamic cap $47.60 (Sep 2025) then $44.10 (Feb 2026); Rosneft/Lukoil SDN 22 Oct 2025 touched >5 mb/d of production and ≥2 mb/d of seaborne exports — Brent +~5 % the next morning, then faded as India and China reorganised. Transmission: the cap bites on discount and service cost, not volume; shadow-fleet substitution takes 1–6 months. Observable: OFAC/OFSI/EU texts, Argus Urals FOB vs Dated, Kpler exports and floating storage, sanctioned-vessel lists, Indian refinery intake. Lag: pop 1–3 days, fades 2–4 weeks; discount persists. Sign if volumes bind: flat + (fading), front +, diesel crack +, B–W +. Grade: A "spike fades" / B volume effect. Enters: S1 sanctions state; S3 freight and cracks.
- Q12 — Tariffs and trade-war demand fears. Trigger: 2 April 2025 tariffs: Brent −~$15/bbl in April; OPEC cut 2025 demand growth 10 % to 1.3 mb/d VERIFY; compounded by Q2. Transmission: growth expectations → demand forecasts → positioning; partly reversed on pauses. Observable: COT managed-money length, OPEC/IEA revisions, PMI export orders, customs and Federal Register text with effective dates. Lag: positioning days; macro quarters. Sign: flat −, front −, cracks −, B–W 0. Grade: A episode / B repeatability. Enters: S1 context. A crude or product tariff by an importing country is a separate micro chain: netbacks change, cargoes reroute, affected grades discount — A micro / C outright.
- Q13 — US permitting, leasing, election cycle. Trigger: rule changes; Dallas Fed respondents put regulatory changes since January 2025 at <$2/bbl off breakevens. Transmission: US supply follows price and capital discipline, not permits, within two years; election-year SPR politics (Q8) matters more. Sign: flat ~0 short run; − over years if acreage expands. Grade: B for "small effect". Enters: never at S1.
- Q14 — China independent-refiner import quota. Trigger: MOFCOM grants quota (2025 aggregate allowance 257 Mt; allocations, not the ceiling, matter). Transmission: teapots buy discounted and sanctioned crudes, raise runs and imports; teapot crackdowns and the April 2026 US sanctions on a major teapot cut sour demand. Observable: MOFCOM allowances and company allocations, GACC HS 27090000, NBS throughput, Shandong utilisation (licensed). Lag: policy day; purchases 2–8 weeks; exhausted over the quota year. Sign: flat +, front +, cracks −/0, B–W +/0. Grade: A policy / B execution. Enters: S1 China context.
- Q15 — China product-export quota. Trigger: domestic product surplus and SOE lobbying meet inflation and environmental objectives; batches from MOFCOM/NDRC VERIFY publisher. Transmission: a quota is an allowance, not a run order — refiners may raise runs and export gasoline and diesel if margins justify it → crude demand up, Asian cracks face added supply. Observable: quota batches, GACC HS 2710 exports (the realised quantity), NBS runs. Lag: days to margins, 2–8 weeks to cargoes. Sign: flat +/0, front +/0, Asian cracks −, B–W +/0. Grade: A mechanism / C signal. Enters: S1 context; S3 cracks after exports confirm.
- Q16 — Chinese strategic and commercial stockpiling. Trigger: low delivered price and available tanks raise expected stockpiling value; NOCs directed since 2024 to hold emergency stocks commercially; ~1.4 bn bbl total at end-2025 after +1.1 mb/d in 2025; 169 mb of new capacity planned 2025–26. Transmission: imports exceed reported use plus exports → prompt support until tanks, credit or policy bind; drawing ~1 mb/d in 2026 damped the spike. Observable: GACC imports, NBS runs, JODI, Kpler onshore and floating estimates; the residual
imports + production − runs − exports(China publishes no complete inventory series). Lag: cargo buying 2–8 weeks; stock cycle months. Sign (build): flat + (floor), B–W +; (draw): flat − (cap). Grade: A identity and buffer role / C stock level. Enters: context; prospective research only. - Q17 — China EV mandates and refinery policy. Trigger: NEVs ~55 % of car sales in 2025 (~60 % in 2026); EVs displaced ~1 mb/d in China and ~1.7 mb/d globally in 2025, heading to ~5 mb/d by 2030; LNG trucking erodes diesel; OIES puts China's gasoline peak at 2025–28 VERIFY. Transmission: gasoline yield pressure → exports and petrochemical shift; new crackers offset through naphtha and LPG. Observable: CPCA/CAAM NEV sales, NBS apparent gasoline demand, Singapore 92 RON crack, refinery start-ups. Lag: ~0.3–0.5 mb/d per year. Sign: flat − (slow), front 0, Asian gasoline crack −, B–W −. Grade: A direction / C at 2–20 days. Enters: context, never an S1 trigger.
- Q18 — EU ETS, FuelEU and European fuel taxes. Trigger: EUA ~€73–74/t in 2025, free allocation conditional on efficiency plans 2026–30, ETS2 for road and buildings delayed to 2028+, maritime coverage phasing in. Transmission: higher refinery and shipping cost → marginal closures → more diesel imports from the USGC, Middle East and India → European cracks structurally higher and more shock-sensitive; carbon cost passes to cracks within a quarter. Observable: ICE EUA futures, verified emissions, closure announcements, Euroilstock runs. Lag: years for capacity; quarter for pass-through. Sign: flat ~0, front 0, European diesel crack +, B–W +. Grade: B mechanism / C short-run signal. Enters: context; S3 regional.
- Q19 — IMO sulphur rules (2020 cap; EEXI/CII). Trigger: 0.5 % cap from 1 Jan 2020 (EIA projected diesel margins 43→65 ¢/gal and a light-sweet premium, effects most acute in 2020 then fading; COVID intervened). Transmission: bunker demand shifted grades — HSFO crack collapses, VLSFO and gasoil widen, sweet–sour widens; total oil demand is not mechanically destroyed; slow-steaming rules add small tanker demand VERIFY. Observable: Singapore HSFO 380 crack, Hi-5 spread, Brent–Dubai EFS. Lag: anticipated 6–24 months; structural after. Sign: flat ?/0, front 0, distillate crack +, HSFO −−, B–W 0. Grade: A product-spread direction / C WTI. Enters: S3 cracks; context.
- Q20 — Japan/Korea stockholding and IEA collective action. Trigger: Japan's 70 days of industry stocks (~220 mb) plus 263 mb government; IEA members still held >1 bn bbl after releasing ~290 mb of the 400 mb March-2026 action. Transmission: coordinated releases cap the front; summer LNG-to-oil switching in Japanese and Korean power adds seasonal fuel-oil demand VERIFY. Observable: IEA releases, METI/KNOC stock data. Lag: announcement intraday; physical 1–3 months. Sign: flat −, front −, cracks 0, B–W 0. Grade: B. Enters: S2 and S1 scheduled flow.
- Q21 — Biofuel policy (RVOs, RINs, renewable diesel, SAF). Trigger: EPA's final 2026–27 RVOs (27 Mar 2026) were "significantly higher"; D4 RINs $2.41 in June 2026, near 2021 records; the 2023 reverse (D4 −53 %) came from renewable-diesel overcapacity and a narrower bean-oil–heating-oil spread. Transmission: high RINs subsidise renewable diesel, which displaces petroleum diesel (California, USGC) → softer petroleum diesel crack over months; non-RIN refiners carry compliance cost; soybean oil sets the margin floor. Observable: EPA EMTS RIN prices, CBOT soybean oil, BOHO spread, EIA biofuel capacity. Lag: policy days; supply 6–18 months. Sign: flat ~0, front 0, US diesel crack − over months (+ briefly if runs are cut), B–W 0. Grade: B. Enters: context only.
17.3 Cross-commodity and cross-market chains
- X1 — Gas/LNG/coal spike and fuel switching. Trigger: TTF/JKM or coal far above gasoil and HSFO on a $/mmBtu basis (2021–22). Transmission: industry, Middle East and South Asian power and some refineries burn fuel oil, diesel or LPG instead of gas → product demand → crude runs; IEA raised 2022 demand ~380 kb/d for switching; ~7 bcm of EU industrial gas-to-oil switching in 2022; constrained by plant capability and emissions rules. Observable: ICE TTF M1, Platts JKM, Henry Hub (FRED
DHHNGSP), API2 coal, ENTSOG storage, IEA OMR "fuel switching" line. Lag: weeks to a quarter; fades as gas re-prices; ~0.3–0.5 mb/d. Sign: flat + (mild), front + (mild), gasoil/HSFO cracks +, B–W +. Grade: A feasible mechanism / B quantity. Enters: S1 context; S3 products. - X2 — Henry Hub/NGL versus naphtha feedstock switch. Trigger: US gas and NGL prices rise relative to crude-linked naphtha. Transmission: flexible crackers shift from ethane and propane toward naphtha → naphtha crude demand rises; reverse when gas is cheap (the STEO HGL model uses the HH/WTI ratio). Observable:
DHHNGSP, Mont Belvieu propane, naphtha assessments, EIA HGL and petrochemical inputs, US ethane exports. Lag: days to slate, weeks to inventories. Sign: flat + (small), front 0/+, naphtha margin +, B–W 0. Grade: A model mechanism / C WTI magnitude. Enters: context. - X3 — Coal–gas–power–carbon dispatch. Trigger: power demand and weather move clean-dark versus clean-spark spreads; EUA cost penalises coal while gas scarcity restores coal or oil burn. Observable: TTF, API2, EUA, EEX day-ahead power, ENTSO-E generation by fuel. Lag: power hours; fuel procurement days–months. Sign: flat ?/+ only when oil burn is feasible; cracks +. Grade: A dispatch economics / C oil forecast. Enters: context, never a direct score.
- X4 — Diesel leadership in product and refinery supply shocks (Europe's structural distillate short). Trigger: a middle-distillate loss — refinery outage, product sanctions, Ukrainian strikes on Russian refineries (Russia supplied ~50 % of EU diesel imports in 2022 and <1 % of seaborne imports by 2024). Transmission: gasoil crack jumps first → refiners maximise runs and bid crude if capacity exists → backwardation follows; if capacity is constrained, crude need not rally. 2022: European gasoil crack briefly >$80/bbl VERIFY; 2026: diesel cracks toward $100/bbl with three refining hubs stalled; late 2025: NYH/USGC/ARA cracks above $1/gal on Rosneft/Lukoil sanctions and the Al Zour outage. Scope: this is a product or refinery supply shock rule; a crude production outage usually hits crude first and can weaken cracks (P1, P19a). Observable: ICE gasoil–Brent and NYH ULSD–WTI cracks, ARA distillate stocks (Thursday), EIA distillate vs five-year, days-cover, runs. Lag: crack leads flat price by days–weeks; decays 1–3 months as runs and imports respond. Sign with spare refining: flat +, front +, diesel crack ++ (leads), B–W +. Grade: A crack→structure / B crack→flat price. Enters: S1 confirmation; S3 cracks.
- X5 — Gasoline season (turnarounds, RVP switch, driving season). Trigger: ~25 % of US refineries turn around each spring; 9.0-psi summer RVP from 1 May to 15 September; butane blending returns in September. Transmission: lower runs plus costlier spec plus demand ramp → RBOB crack peaks in spring and fades by autumn. Observable: RBOB–WTI crack, EIA gasoline stocks, utilisation, implied demand. Lag: calendar-driven; crack fronts the Q2 ramp by 4–8 weeks. Sign: flat + (spring), front + (spring), gasoline crack + Feb–May and − Aug–Oct, B–W 0. Grade: A shape / B magnitude. Enters: S3; S1 seasonal prior.
- X6 — Jet versus diesel yield competition. Trigger: jet recovery or diesel shortage — both come from the middle-distillate cut; in 2026 jet and diesel cracks surged together, then refiners rotated yield back to road fuels. Observable: Platts jet–ULSD regrade (NWE, USGC, Singapore), IATA RPKs, EIA jet product supplied. Lag: weeks; regrade mean-reverts within a quarter. Sign: flat + (small), front 0, diesel crack + when jet demand rises, B–W 0. Grade: B. Enters: S3 products.
- X7 — Naphtha, LPG and petrochemicals. Trigger: Chinese cracker start-ups versus ethane substitution; naphtha-cracking margins negative in Asian and European hubs since Q2 2024 VERIFY; IEA still sees China naphtha demand +6 % (2025) and +8.6 % (2026). Transmission: naphtha demand supports light-sweet crude and condensate; ethane substitution erodes it; flexible crackers switch LPG/naphtha share without transport demand changing. Observable: Singapore/NWE naphtha crack, ethylene–naphtha spread, IEA naphtha line, GACC LPG/naphtha imports. Lag: quarters. Sign: flat + (light sweet), front 0, naphtha crack +, B–W +. Grade: B. Enters: context; S3 products.
- X8a — Tanker-freight shock and the arbitrage. Trigger: vessel scarcity, longer routes or a war-risk premium (Mar 2026 VLCC records VERIFY; 2024 Red Sea: day-rates $23k→$73k, 10–14 extra days via the Cape, flat-price premium only ~$2–4). Transmission: delivered parity widens → formerly open crude arbitrages shut, stranded origin grades discount, destination grades and cracks rise; dirty and clean rates diverge by shock type; the wider location spread eventually repositions vessels. Observable: Baltic dirty (TD3C, TD25) and clean indices, war-risk quotes, AIS tonne-miles, origin and destination differentials, loadings. Lag: freight hours–days; cargo rerouting 2–8 weeks; fleet response 1–3 months. Sign for WTI when US exports close: flat −, front −, US cracks +, B–W +. Grade: A delivered-cost mechanism / B sign by route. Enters: S3 location; context.
- X8b — Floating-storage economics. Trigger: deep contango (2020: Brent May–Nov spread a record $13.45/bbl; VLCC time-charter ~$40k→$120k/day; storing six months locked in $7–8 m per VLCC). Transmission: when the spread exceeds charter, finance and insurance, prompt barrels go to sea and contango stops widening; when storage fills or the spread narrows, barrels return and the front weakens; Cushing is the special case (P8a). Observable: Brent M1–M6, VLCC time-charter rates, Kpler/Vortexa floating storage, Dallas Fed tanker-storage model. Lag: freight reacts in days; the arbitrage caps contango while vessels are available. Sign (storage contango): flat −, front − then stabilising, cracks 0, B–W + when Cushing-specific. Grade: A mechanics / B timing. Enters: S3; context.
- X9 — Producer currencies (CAD, NOK, RUB, MXN, BRL). Finding: causality runs oil → FX, same day; Ferraro–Rogoff–Rossi find a robust contemporaneous daily link from oil to CAD/USD, little systematic relation monthly or quarterly, and lagged-oil predictability that is "ephemeral"; FX → oil is not supported. Feedback loop: a stronger producer currency raises dollar costs, improving margins and future supply only over 6–24 months. Observable: FRED
DEXCAUS,DEXNOUS,DEXMXUS,DEXBZUS; CBR RUB fixing. Sign (oil up): commodity currencies appreciate; as a predictor of oil: none. Grade: A co-movement / C lead. Enters: context; never a signal. - X10 — Consumer-currency squeeze (INR, CNH, JPY, EUR). Trigger: an oil rally raises import bills; whether the currency weakens depends on the shock and the policy regime (not every rally weakens every importer's currency). Transmission: where it does, higher local fuel prices → subsidies, taxes and rationing. 2026: China Q2 imports −32 % q/q to 8.1 mb/d, which "softened the upward price effects". Observable: USD/INR, USD/CNH, USD/JPY, PPAC import bill, GACC customs, local retail fuel prices, Kpler onshore stocks. Lag: FX days; demand rationing 1–6 months. Sign (oil up): currencies may weaken; feedback flat − (lagged), front − (months), Asian cracks −, B–W −. Grade: B for the 2026 demand feedback / C as an oil predictor. Enters: months; context.
- X11 — Energy equities (XLE, XOP, OSX) as lead or lag. Finding: no reliable predictive sign; weekly oil changes explain ~2 % of XLE variance; the only correlation peak (XLE leading by a week) is an artefact of weekly-average price construction; XLE decouples from WTI for long stretches. Beta is regime-dependent (high in supply shocks, low in demand shocks). Observable: XLE, XOP, OIH vs CL1; 60-day rolling beta. Grade: C as signal / B as regime diagnostic. Enters: diagnostic only.
- X12 — Acute risk-off deleveraging through energy equities and credit. Trigger: a fall in oil below levered producers' cash cost coincides with fund stress. Transmission: energy equities fall and HY energy spreads widen (2016: energy HY default rate 15 %, E&P 29 % VERIFY; June 2020: 11.2 % with Fitch projecting ~17 %; >200 producers filed since 2015 owing >$130 bn); cross-asset deleveraging can sell crude futures now — much of the same-week co-movement is reverse causality from the oil move itself. Observable: XLE/XOP/OIH, issuer CDS, ICE BofA US HY energy OAS (energy sub-index VERIFY; all-HY on FRED
BAMLH0A0HYM2), VIX. Lag: securities seconds; futures liquidation days. Sign: near-term flat − in stress, front ?, cracks 0, B–W 0. Grade: A financing channel / C timing. Enters: context; regime. The 6–18-month supply response (spreads → capex and rig cuts → tight oil falling >35 % within 12 months absent investment) is chain L2. - X13 — Rates, breakevens, the dollar and the Fed reaction function. Trigger: an oil shock. WTI–TIPS breakeven correlation 0.65 (2011–19); a 10 % oil rise lifts advanced-economy headline inflation ~0.4 pp over ~8 quarters; since 2022 a one-standard-deviation (3 %) oil-supply surprise moved 2-year yields ~4.5 bp at the early-2024 peak, more than three times the pre-2021 response; the gasoline→household-expectations link turned negative in 2025 VERIFY. Transmission: breakevens → rate expectations → USD and growth → demand (second-order negative); a supply-driven rise delays easing, a demand-driven rise confirms growth; the inverse oil–USD correlation is regime-dependent and weaker with the US a net exporter. Observable: FRED
T5YIE,T10YIE,DGS2,DFII10,DTWEXBGS, Fed funds futures, Känzig OPEC-surprise series. Lag: breakevens same day; macro feedback over quarters. Sign (oil up): breakevens + intraday; feedback flat − over quarters. Grade: A oil→breakevens / B feedback / C dollar causality and static beta. Enters: context; never a fixed sign. - X14 — Gold/oil, copper/oil, EM-stress diagnostics. Finding: academic support is for gold–copper predicting equity excess returns and for time-varying gold–oil links tied to geopolitical risk — not for forecasting oil; in a growth regime copper beating gold and EM credit strengthening raise expected oil demand, but in war or inflation shocks gold and oil rise together and the signal breaks. Observable: CME HG/GC, JPM EMBI (licensed), VIX, broad dollar, Baltic dry index. Grade: C (regime descriptor only). Enters: context.
- X15 — Emerging-market stress → demand. Trigger: EM FX or credit crisis (1998: Brent below $11 VERIFY; 2026: China's 3.9 mb/d import drop and ~1.7 mb/d stock draw damped the Hormuz spike). Observable: EM FX basket, EMBI spreads, China and India customs, IEA non-OECD revisions. Lag: 1–3 quarters. Sign: flat −, front −, Asian cracks −, B–W −. Grade: B. Enters: months; context.
17.4 Long cycles and structure
- L1 — Capex cycle, underinvestment, decline rates. Trigger: price-driven cuts; upstream oil investment −6 % in 2025 (first fall since 2020, largest since 2016), US tight oil ~−10 %. Transmission: conventional fields decline 5.6 %/yr post-peak; ~90 % of upstream spending since 2019 offsets decline; without investment global output would fall ~5.5 mb/d per year; Middle East supergiants decline <2 %/yr vs >15 %/yr for small offshore fields; 2–5 years FID-to-first-oil for conventional projects, 6–12 months for shale → low-price years sow later tightness; decline geography defines where spare capacity sits. Observable: IEA World Energy Investment, Rystad/Wood Mac FID trackers, company capex guidance, international rig counts. Lag: years; sets the level of the curve, not daily moves. Sign (capex cut): flat + (2–4 years later), front + (structural backwardation), B–W +. Grade: A mechanism / B timing. Enters: regime context. Slow variables set the sensitivity of fast ones: decline rates, capex, stock cover and spare capacity decide whether a hurricane or a designation moves price 2 % or 20 %.
- L2 — US shale: breakevens, capital discipline, rig lag, consolidation (absorbs the 6–18-month leg of X12). Trigger: WTI versus breakeven (~$65/bbl to drill profitably, $59–68 by size and basin, Dallas Fed Q1 2026 at $66). Transmission: post-2020 capital discipline and consolidation flatten the supply response to high prices (2026: 30 % of E&Ps planned no output change despite $57→$111), but tight oil falls >35 % in 12 months without investment, so discipline cuts both ways; price→rigs 3–6 months, rigs→production 4–8 months VERIFY; productivity gains decoupled output from rig counts (rigs −33 % Dec 2022–Oct 2025 while Permian output +18 %). Observable: Dallas Fed survey (breakevens each Q1), Baker Hughes rigs, EIA DPR and Form 914, frac-spread count, DUC counts, 10-K hedge tables. Sign (WTI < $60 sustained): flat + (lagged), front +, B–W −. Grade: B. Enters: months; context.
- L3 — Supercycle narratives versus the peak-demand debate. Trigger: sell-side supercycle calls (Goldman from October 2020, built on underinvestment and ESG capital limits) cut repeatedly in 2023 as sanctioned supply held; against it, the IEA–OPEC divergence on EV-driven demand, IEA 2026 demand −1.6 mb/d then +2.4 mb/d in 2027, governments making efficiency a policy cornerstone in July 2026. Transmission: narratives move positioning (COT length) more than balances; peak-demand expectations lower the long end and raise capital costs for long-cycle projects → paradoxically tighter mid-decade supply (L1). Observable: COT, forecast dispersion, Brent 5-year forward vs spot, IEA Oil 2030, OPEC World Oil Outlook. Lag: narrative half-life 6–12 months; structural effects years. Sign: supercycle — none reliable (a crowding indicator); peak demand — long-dated WTI −, prompt spread +. Grade: C (supercycle) / B (peak-demand structure). Enters: context; crowding diagnostic.
17.5 Second-order and reflexive loops
- R1 — Price → producer hedging → curve. Trigger: deferred WTI rises above producer budget or breakeven → E&Ps sell swaps and collars; dealers hedge by selling futures concentrated beyond the prompt month. Transmission: the back end is capped and backwardation can steepen without new prompt scarcity (Dec 2016 record options day; 2026 swaps sold above $90); producers and dealers reduce net positions after positive price shocks while money managers add (Dedi & Mandilaras 2022). Observable: 10-Q/10-K hedge tables, CFTC swap-dealer shorts, calendar-average futures, deferred open interest, put OI at budget strikes. Lag: days–weeks; positions roll over quarters. Sign: prompt flat 0/−, front spread +, cracks 0, B–W 0. Grade: A behaviour / B curve effect. Enters: S3.
- R2 — Volatility → margin → leveraged liquidation. Trigger: a shock raises realised and implied vol → exchange and FCM margins and VaR limits rise (CME +17.6 % on CL after the negative print; TTF initial margin sixfold Jan–Apr 2022; LSGO +90.3 % in one step) → leveraged longs and shorts cut gross exposure; the crowded side sets direction and liquidity loss magnifies both (the hedger de-hedging leg is R11). Observable: archived CME performance-bond advisories and broker house-margin snapshots (both change and both bind), OVX and CL implied vol, open interest, bid–ask and depth. Lag: same day to several days; decays over weeks as vol and margins normalise. Sign: flat ?, front ?, cracks ?, B–W ?. Grade: A risk constraint / C direction. Enters: risk sizing and context, never a signal.
- R3 — Index allocation change → scheduled futures demand. Trigger: an index provider's weight change or an allocator's decision (index allocations follow weights and assets under management, not positive carry; "backwardation attracts index money" is a plausible allocator story without documented causality). Transmission: swaps and index products add or cut long futures on a known schedule; dealer hedge flow is distributed by the roll calendar; temporary price pressure meets commercial liquidity. Observable: BCOM/GSCI weights and roll calendars (days 5–9 and 6–10), CFTC swap dealers, fund AUM and flows, per-month OI. Lag: allocation weeks–quarters; roll pressure hours–days and decays quickly. Sign: flat +/0 on the schedule, front +/− around the chosen contract, cracks 0, B–W 0. Grade: C mechanism as a return forecast / A as a calendar. Enters: calendar; context.
- R4 — Refinery margin → runs → crude demand. Trigger: product scarcity widens cracks → refiners raise utilisation and buy crude → crude stocks and spreads tighten → higher crude cost compresses cracks, closing the loop; with US utilisation at 97.4 % in late August 2026 there is no headroom, so autumn maintenance mechanically weakens crude demand. Observable: matched RB/HO/CL and gasoil/Brent cracks, EIA
WCRRIUS2, utilisation, product and crude inventories. Lag: futures minutes; runs 1–3 weeks; feedback 2–6 weeks. Sign initially: flat +, front +, cracks + then decay, B–W route-dependent. Grade: A mechanism / B timing. Enters: S1 conditional hypothesis; S3. - R5 — (merged into P7 — the US export netback: freight → parity → cargoes → regional spread → fleet repositioning.)
- R6 — Sanctions → shadow fleet → freight. Trigger: designations exclude mainstream shipping and insurance → opaque ownership, ship-to-ship transfers and longer voyages expand (~350 vessels carrying >60 % of Baltic crude by 2025; ~500 listed by the EU) → the effective fleet tightens and incident and war-risk cost rise → non-sanctioned freight and delivered crude rise even if sanctioned volume survives. Observable: OFAC/EU lists, Windward/Kpler ownership and dark-activity flags, AIS gaps and STS events, Baltic freight. Lag: weeks–months; persists until enforcement or the fleet adapts. Sign: flat +/0, front +/0, destination cracks +, B–W +. Grade: A channel / B magnitude. Enters: context; S3 freight.
- R7 — Positioning → price → positioning. Trigger: a breakout triggers CTA and macro buying → the rise validates trend and raises managed-money length → producers hedge and dealers sell deferred → flow amplifies the front but resists the back; reversal triggers symmetric liquidation (funds add on strength and cut on weakness; commercials fade them and are paid a liquidity premium; in stress the funds' cuts push risk back to producers). Observable: daily trend replicas (explicitly proxies), CFTC code
067651changes, OI and volume, issuer hedges. Lag: intraday to weeks; decays at trend reversal or risk limit. Sign during an up-loop: flat +, front +, cracks −/0, B–W 0. Grade: B mechanism / C ex-ante timing. Enters: context only. - R8 — ETF creations and redemptions → roll → spreads. Trigger: retail demand creates USO baskets → the fund buys its disclosed contract basket; redemptions reverse it; scheduled rolls transfer exposure along the curve — from January 2026 USO rolls over the first five trading days of the month at roughly 20 % per day (SEC-filed prospectus supplement), replacing the older ten-day roll; every ETF methodology is versioned by effective date. In April 2020 the fund's front-month concentration made it the fulcrum of the May contract; leveraged UCO/SCO rebalance daily into the close. Observable: USO daily holdings and shares, SEC filings, the current roll schedule, per-contract OI. Lag: same or next day; price pressure normally decays intraday to days; research on predictable rolls finds liquidity provision limits the impact (Bessembinder et al. 2016). Sign on creations: flat +/0, affected spread ?, cracks 0, B–W 0. Grade: A mechanics / C durable price effect. Enters: calendar; context.
- R9 — Chinese stockpiling elasticity. Trigger: a low crude price widens the perceived policy and refining value → China imports above current use → global price and structure strengthen → a higher price slows purchases or induces destocking (2025 record imports at low prices; 2Q26 −32 % at high prices) → price is damped in both directions, but unobserved stocks make turning points hard. Observable: vintaged GACC imports, NBS runs, domestic production, product trade, licensed tank estimates. Lag: 1–3 cargo cycles; reversal 1–6 months. Sign at low-price buying: flat +, front +, cracks 0/−, B–W +/0. Grade: A economic response / C timing (latent stocks). Enters: context; prospective research.
- R10 — Option-dealer gamma. Trigger: a large customer position leaves dealers short or long gamma near a strike and expiry → hedging buys rallies and sells falls (short gamma) or the reverse (long gamma) → realised intraday volatility changes without new barrels; strongest near expiry and strike proximity; the sign of dealer inventory is not public; the claimed downside asymmetry from producer put buying is a practitioner claim. Observable: CME option OI by strike and expiry, trades and the IV surface; signed option flow is required for any directional use — without it the chain stays risk-only. Lag: seconds; vanishes at expiry. Sign: flat ?, front ?, cracks 0, B–W 0. Grade: A hedge mathematics / C dealer sign. Enters: S2 risk only; never directional without signed flow.
- R11 — Margin calls on futures shorts → de-hedging → fewer curve sellers. Trigger: variation-margin demands on participants short futures — producers and merchants hedging physical length, gas sellers in 2022 — in a spike; fuel consumers hedging long typically receive margin and are not part of this loop. Transmission: some shorts reduce hedging altogether; open interest falls (>40 % in TTF in 2022) with large drops in Brent; hedging capacity contracts exactly when the curve most needs sellers; the position sign must be established per group before the loop is asserted. Observable: exchange OI, clearing-house and broker margin notices, EFET and industry statements, bank liquidity facilities. Lag: days–weeks; persists through the spike. Sign: front + (fewer deferred sellers), flat ?, cracks ?, B–W ?. Grade: A episode (2022) / C direction and repeatability. Enters: risk context.
17.6 Cross-cutting lessons from the catalogue
- Slow variables set the sensitivity of fast ones (L1, L2, Q7): store decline rates, capex, stock cover and effective spare capacity as regime features, not as signals.
- Product and refinery supply shocks show up in cracks first; crude production outages hit crude first; demand shocks hit flat price first (X4, P1, P19a, Q12): the diesel crack is the first responder to distillate shocks and can compress in a pure crude outage.
- Designation is not enforcement (Q10, Q11): sanctions spikes fade in weeks unless buyers are targeted; the persistent variable is the discount.
- China is a volatility buffer (Q16, R9): building at lows, drawing at highs; latent stocks make its turning points a research question, not a feature.
- The tell is a physical quantity (Q3, P19, Q1): OSP cuts plus volume, transit counts, loadings, restoration slopes — never the communiqué or the headline.
- Folklore to demote: equity leads (X11), metal ratios (X14), fiscal-breakeven-triggered cuts (Q4), supercycle calls (L3), "refinery strike = bullish oil" (P15), "backwardation attracts index money" (R3), dealer-gamma direction without signed flow (R10), consumer-currency weakness as an oil lead (X10). Context, never inputs.
- The scheduled chains come first in any registry (P21, P22, P23, P24): they have expectations, timestamps and falsifiers; ENSO, EVs and capex do not belong ahead of them.
18. Mood and narrative — where oil traders talk, and what it is worth
The owner's brief: know where people who trade and comment on oil are active, in every region, so the general mood can be studied. The research answer has three parts: the map is lopsided and access is the binding constraint; the evidence supports mood as a volatility and event-detection diagnostic, not a price score; and the useful quantities are concentration, novelty, attention and the expectation–spot gap, not the sign of the mood.
18.1 The sampled public venues (not a world map)
| Region / language | Venues (with what was observed on 2 Sep 2026) | Who is there; signal-to-noise | Access |
|---|---|---|---|
| US/UK English — professional | X's #OOTT cluster ("Organization of Oil Trading Tweeters"): Rory Johnston (Commodity Context, 31k+ subscribers, Oil Ground Up podcast), HFI Research, Amena Bakr (Kpler), Anas Alhajji (Energy Outlook Advisors, 16k+), Samir Madani and Lisa Ward (TankerTrackers), Giovanni Staunovo (UBS), Herman Wang (Platts OPEC), Jennifer Dlouhy (Bloomberg policy), Javier Blas, plus Doomberg (387k+ subscribers), John Kemp, Ole Hansen, Amrita Sen, Bob McNally, Warren Pies and official EIA/IEA/OPEC/Argus/Platts feeds VERIFY handles and affiliations; Substacks with comment threads (The Commodity Report: "Short commodities is now consensus"); podcasts (Oil Ground Up, HC Commodities, Energy News Beat, Doomcasts) | Analysts, journalists, tanker trackers, fund managers; high signal among the top ~50 accounts, poor beyond; US/UK/Gulf-centred | X API only: a 2 million post-read monthly cap with endpoint-specific prices in the Developer Console (filtered streams exist; legacy Basic and Pro closed to new sign-ups; plan, version and price kept as live configuration, never quoted as a constant); ~50 curated accounts read daily fits the cap, a firehose does not; the academic Twitter Economic Uncertainty index is frozen since X removed academic access |
| US/UK English — retail | Reddit r/oil (101k members), r/commodities (38k), r/FuturesTrading (195k), r/energy (287k, policy-dominated), r/wallstreetbets (19.9 M, oil a minority topic); StockTwits CL_F sentiment page (score, message volume, buzz); TradingView USOIL ideas (~20 recent, ~55 % bearish / 40 % bullish, almost all pattern-based, Hormuz-premium framing); Discord/Telegram (channel-name spoofing common: an "MCX Traders Group" posts crypto signals) | Retail; equity-centric; low signal | Reddit commercial access by contract only (~$0.24 per 1,000 calls; self-service closed late 2025 VERIFY; deletion obligations); StockTwits API status VERIFY; TradingView has no ideas API |
| Germany | wallstreet-online "Öl (WTI)/(Brent)" boards (15–20 live threads, 500+ post archives, heavy knock-out-certificate promotion); finanzen.net / Ariva Brent thread (~11k posts VERIFY) | Retail leverage-product traders; low signal | HTML; ToS VERIFY; Ariva blocks bots |
| Italy | Investing.com Italia "Forum Petrolio Greggio" (40–50 visible comments: technical levels 87–95, Hormuz transit counts "solo 4 navi", CFD leverage); FinanzaOnline product-selection threads (ETC vs certificati); Borsa Italiana communities, Telegram, YouTube VERIFY | Retail CFD traders and ETC investors; low signal; the owner's own language market | HTML; ToS VERIFY; FinanzaOnline blocks bots |
| France / UK | Boursorama "Forum Pétrole" (threads to 31 Aug 2026, less active than stock boards); ADVFN, LSE.co.uk, Trade2Win (small-cap and "own book" talk) | Retail; equity-centric | 403 to bots (UK) |
| Russia / CIS | smart-lab.ru/trading/oil (1,215+ pages, daily posts to 2 Sep 2026: Brent ~$94–95, Hormuz, tanker attacks, US SPR lows, OPEC; "premium" analysts plus automated reposts; 0–1 replies typical); professional discussion migrated to paid Telegram and YouTube; Kommersant/Interfax comment streams; VK | Semi-professional retail; medium signal; censorship and deleted history | HTML; public Telegram via t.me/s/; Russian-law issues VERIFY |
| China | Eastmoney Guba's Shanghai-crude (SC) board — the liveliest retail oil venue found anywhere: 27,543 reads and 155 comments on a single thread on 2 Sep 2026, SC at the 700 yuan/bbl threshold, a distinctly local "inner-plate premium too high" (domestic-vs-international arbitrage) theme, the "three barrels of oil" majors; Sina Guba weaker; Xueqiu behind a login wall VERIFY; Weibo; WeChat public accounts of Chinese PRAs (隆众, 金联创) and Zhihu not inventoried VERIFY | INE retail and teapot narrative; repost cascades and state-media language | Weibo's API needs a Chinese business licence with severe limits; the Sina Visitor System allows anonymous trending topics but keyword search needs a logged-in cookie; third-party scrapers exist but likely violate ToS; private WeChat is not lawfully collectible by default |
| Japan | Yahoo! Finance Japan boards for the WTI ETFs 1671/1690 (~150 posts on 1–2 Sep 2026: CENTCOM strikes, tankers near Hormuz, WTI 88–93 resistance) with a built-in bull/bear vote (67 % / 33 %); Yahoo! Realtime Search over Japanese X ("WTI原油": OANDA, Reuters Japan, CFD retail, economists — inflation-anxious tone after a −2.85 % Nikkei day) | An importer's narrative: oil as inflation, not revenue | HTML; ToS VERIFY |
| Korea | Investing.com Korea WTI forum (36,695+ comments of intraday, aggressive long/short chatter); Naver cafés for overseas futures VERIFY | Retail; very low signal | HTML |
| India | MCX crude is retail-heavy and Telegram-driven: "tips" channels claiming 100k–926k subscribers ("Mcx Crudeoil" 452,977) with no SEBI verification and "jackpot calls"; Moneycontrol boards VERIFY; TradingView MCX "Minds" nearly empty | Very low signal; tip-selling and manipulation risk | Public Telegram via t.me/s/ |
| Singapore / professional Asia | Commodity Trading Club (Geneva, London, Dubai, Shanghai, Singapore; APPEC supporting partner); APPEC 2026 (7–10 Sep, ~1,500 delegates) | Physical traders and brokers; the usable signal is the conference-week press burst ("trading houses say…") as an attention spike | Membership VERIFY |
| Middle East / Arabic | attaqa.net (first Arabic energy-news platform; X @attaqa2); Gulf English voices (Alhajji, Bakr); Argaam and Mubasher comment communities; Arabic X commentators not enumerated VERIFY; Gulf equities open Sunday | OPEC and Gulf politics; source proximity is not source reliability | HTML; X paid |
| Closed professional | Instant Bloomberg chat, ICE Chat, WhatsApp, PRA MOC systems, LinkedIn | Where real physical indications and dealer colour live — unobservable, licensed, non-reproducible; LinkedIn scraping contractually restricted | None |
| Vendors already covering sentiment | RavenPack (40,000+ sources, point-in-time sentiment and attention scores from 2000, via WRDS — paid); Consensus Economics monthly commodity survey (paid); Bloomberg weekly and Reuters monthly analyst polls VERIFY; free: GDELT (event database and Global Knowledge Graph, tone, 15-minute updates, 65 languages machine-translated, BigQuery), CFTC COT, Dallas Fed Energy Survey | GDELT's own datasets are broadly reusable and multilingual; the linked articles carry their own copyright and GDPR still applies |
Two structural facts about the sample — which omits Spanish- and Portuguese-speaking Latin America, Turkey, Southeast Asia and most Arabic and African communities, while the price-forming professional venues are, correctly, listed as closed. It is lopsided: the professional narrative forms on English X and a few Substacks; Reddit is small for oil; the retail crowd is loudest on Investing.com boards (Italy, Korea), Yahoo Finance Japan, Eastmoney Guba and Indian Telegram — venues that measure local retail framing (inflation in Japan, SC arbitrage in China, CFD levels in Italy), not the marginal futures trader. Access, not modelling, is the binding constraint: every collector must survive a venue vanishing (the TEU index died with X's academic tier), and per-venue terms, GDPR minimisation and deletion obligations apply to an Italian operator. Maintain a dated registry of author, platform, language and rights rather than a permanent "key account" list.
18.2 What the evidence says
| Finding | Source | Grade |
|---|---|---|
| News and Twitter sentiment improve volatility forecasts; news beats Twitter (GARCH-BiLSTM hybrid) | Abdollahi, Energy Economics 2023 | B |
| Twitter-based uncertainty adds value in HAR realised-vol models | Lang, Lu, Ma, Huang, FRL 2022 | B− |
| Multi-perspective investor attention has "significant additional economic value" for volatility | Qu & Li, Energy Economics 2023 | B− |
| Google attention has a significant negative impact on oil prices and ~15 % of long-run fluctuations (monthly SVAR) | Yao, Zhang, Ma, Applied Energy 2017 | B as a study / C for a 2–20-day signal |
| Attention shifts oil, gold and stock variances and covariances | Fiszeder et al., Energy Economics 2023 | B |
| Macro-fundamental news predicts returns short- and long-run; geopolitical news: strong immediate impact, no predictability beyond intraday, more volume and disagreement | Brandt & Gao (RavenPack data), 2016–19 | B (vendor-published) |
| Topic-level news measures show out-of-sample gains for oil returns and volatility at broader horizons with a frozen corpus | Calomiris, Çakır Melek, Mamaysky, KC Fed RWP 20-20 → FAJ 2026 | B |
| ChatGPT-derived sentiment of IEA and OPEC monthly reports negatively predicts monthly returns; OPEC's dominates | Jeong & Ahn, Energy Economics 2025 | B as a study / C for a 2–20-day signal |
| Raw news count is the robust predictor of volatility direction; most sentiment metrics underperform a HAR benchmark; drivers shift by regime (supply-demand pre-COVID, uncertainty early-COVID, geopolitics in the war period) | Hashami & Maldonado, arXiv 2508.20707 (2025) | C+ (one preprint; the most useful negative result, not yet replicated) |
| Five-dimensional LLM sentiment (relevance, polarity, intensity, uncertainty, forwardness): intensity and uncertainty rank above polarity in SHAP | Dai et al., arXiv 2603.11408 (2026) | C+ |
| r/wallstreetbets attention trades → higher volatility and negative profits (equities) | Warkulat & Pelster, IRFA 2024 | B (not oil) |
| Bots target under-performing, high-selling-pressure stocks and are asymmetric to bad news — "bots intensify market stress" | Paydarzarnaghi & Rakowski, FRL 2026 | B (equities) |
| Dallas Fed Q1 2026: activity index −6.2→21.0, uncertainty 43.4→53.7, year-end WTI expectation $74 while spot averaged ~$95 during the survey | Dallas Fed Energy Survey | B as survey; insiders anchor below spot in a spike |
| COT as sentiment: "Bullish Consensus" ~70 % bullish in Sept 2023 against a managed-money net long a third of the record — positioning lagging sentiment | practitioner example | C as predictor; A as data |
| Any sentiment signal mined over lexicons × models × horizons must clear a t-statistic above 3 | Harvey, Liu & Zhu, RFS 2016 | A (method) |
Reading. The strongest, most repeated result concerns second moments: news and attention help forecast volatility. For returns, the credible evidence is monthly and uses official or organisational text (IEA/OPEC reports, Google attention), not social feeds. Geopolitical text is priced within the day — the 2026 regime. The best recent negative result says how much is written matters more than how positive it is, and the meaning of the signal changes by regime. Nothing here justifies a directional score; everything justifies an attention and narrative diagnostic.
18.3 The narrative state — a diagnostic, never a price score
A daily (intraday during shocks) vector describing what the oil conversation is about, how loud, how new, from whom, in which languages, and how one-sided — stored point-in-time with model and prompt versions.
NarrativeState
topic_share[topic] fixed taxonomy: Hormuz/Gulf security · OPEC+ · Russia/sanctions · China demand · US shale ·
inventories · SPR · refining/products · macro-dollar-Fed · recession · transition · weather ·
Venezuela/Iran/Libya; aggregated by source tier; report shares and concentration (Herfindahl/entropy)
attention document/post counts per topic and venue vs a rolling 60-day baseline (TEU-SCA-style normalisation);
multilingual Google Trends
polarity[topic] multi-dimensional: polarity, intensity, uncertainty, forwardness — a distribution, never a mean;
per asset and horizon (flat, spread, crack), never one polarity
source_tier_mix T0 official · T1 wire · T2 PRA/professional · T3 named analysts and curated #OOTT · T4 open retail · T5 anonymous/tips
novelty embedding distance from the trailing 7–30-day corpus; near-duplicate share; first-seen flag per claim
confirmation_depth primary + independent wire + physical observation count
cross_language_agreement topic-share vectors per language (EN, ZH, JA, KO, RU, AR, DE/IT/FR); cosine similarity; divergence list
crowd_stance_proxies Yahoo JP bull/bear vote; TradingView long/short ratio; StockTwits CL_F; survey expectations − spot; managed-money percentile
propagation_speed · disagreement_entropy · half_life · bot_score · language_coverage · rights_status · model_version
Deterministic shift and anomaly detection: CUSUM or Bayesian change-points on topic shares and concentration; attention z-scores with venue-specific thresholds; burst detection on Tier 0–1 counts; duplicate-ratio and account-age spikes as bot alarms; divergence alarms when languages disagree; a "headline-reversal" flag when polarity flips intraday (11 Mar 2026: Brent −9.3 % on one report that the US might seize the strait, then $96 six days later). Alert when narrative and market disagree — attention at the 99th percentile but no move in prompt spreads, freight or loadings — or when a low-tier rumour outruns every primary source.
How professionals use it, per the evidence: event detection and risk (where attention demonstrably helps); a crowding gauge (survey stance, COT percentile and narrative concentration together — extremes are a reason to size down, not a direction); a contrarian sanity check (organisational sentiment negatively predicts monthly returns; producer expectations sit below spot in spikes); and explanation (the LLM summarises "why the market moved" — the project's boundary). Evaluation targets are operational: earlier verified-event detection, fewer duplicate alerts, calibration of confirmation, conditional volatility — never P&L first.
Point-in-time failures waiting to happen (Codex review): mutable vote ratios stored without their denominators; account lists built retrospectively; Google Trends rescaling between downloads; GDELT re-processing; API outages that look like low attention; translations or models changed mid-sample; a topic taxonomy designed after seeing 2026. Freeze the venue universe and the taxonomy prospectively, archive permitted raw payloads at ingestion, and store coverage and denominator features beside every count.
Pitfalls and mitigations. Bots (strategic, asymmetric to bad news — source authority, duplicate ratios; author-level bot scores are profiling and need a documented necessity case). Sarcasm and negation (lexicon tools mislabel — classify with an uncertainty dimension, never trust single-post polarity). "Oil down" referring to fuel, equities or a past move. Multilingual entity aliases; platform time versus original time; deleted and edited posts (only forward-collected, timestamped data enters a backtest — retrospective corpora differ from what was visible live). Survivor-biased account lists; follower count as authority; geography and VPN bias; Google Trends normalisation. Reflexivity (curation algorithms and monitors shape what gets posted — expect decay). Synthetic media (AI-generated "Hormuz traffic" videos circulated in August 2026 VERIFY — imagery needs Tier 0–1 corroboration). Data snooping across lexicons, models and horizons. Access decay. Legal: X, Reddit, Weibo, Investing.com and LinkedIn restrict automated collection — keep a per-venue terms register and prefer official APIs, GDELT and licensed vendors.
18.4 What the crowd said versus what happened
- April 2020. USO was the most-bought stock on Robinhood and the highest-volume trade on SoFi on 21 April while down ~80 % year-to-date; buyers "mistakenly thought this fund was a proxy for the spot price"; retail paid "$22 a barrel when the spot market's negative $38" (Kyle Bass); short sellers made ~$300 m against it; USO reverse-split 8-for-1 and moved to multi-month holdings. Lesson: the crowd was right that oil would recover and wrong about instrument and term structure; ETF sentiment signalled flows and forced positioning, not crude. Separate "sentiment about oil" from "sentiment about USO, 1671 or CFDs".
- 2022. Crude and wheat rose 23 % and 36 % within two weeks of the invasion; the top r/wallstreetbets post on invasion day (~32,000 upvotes) was about defence stocks, not oil; Reddit hope/fear indices tracked battlefield events, not markets. Lesson: geopolitical narrative is priced intraday and retail attention went to equities — an oil-only social gauge would have missed the crowd's actual behaviour.
- 2026. One theme dominated every language; polarity flipped on single headlines (11 March −9.3 %; a June closure announcement produced textbook risk-off; 8 July "ceasefire over"); institutions anchored far below the spike (EIA $87 and World Bank $86 for the 2026 average against a $95 spot; Texas producers expecting $74 at year-end); professional dissent argued the opposite risk ("market blindness to the 13 million barrel shock"; SPR draws suppressing futures relative to physical tightness); on 2 September the crowd was split by venue (Yahoo JP 67 % bullish, TradingView ~55 % bearish, Guba divided between "700 will never be seen again" and momentum buyers). Lesson: the informative quantities were concentration, novelty and the expectation–spot gap, not the sign of the mood. No peer-reviewed study of 2026 social sentiment exists yet VERIFY periodically.
18.5 Recommendations for the diagnostic (no trading use)
- Free and legal core first: GDELT GKG (multilingual tone and themes), EIA/IEA/OPEC reports (monthly organisational sentiment), CFTC COT, Dallas Fed, multilingual Google Trends. Everything else is enrichment.
- A curated X list of at most ~50 accounts under pay-per-use, read daily; no keyword firehose.
- Retail boards as attention counters only (post counts, vote ratios with their denominators), collected forward with timestamps, per-site terms respected, no post text or author histories retained beyond permitted metadata, never backfilled; the Italian boards are the owner's local market and deserve a counter for that reason, not for signal.
- Report distributions, not a score — topic shares, concentration, attention z-scores, tier mix, language divergence, expectation–spot gap — with the LLM writing the explanation and never a number.
- Validate only against volatility and event timing, under multiple-testing discipline; any return predictability is a pre-registered research question, not a feature.
19. The trader's analytical toolkit and the catalogue of known strategy ideas
What professional and systematic oil traders actually compute and trade, with recipes, evidence grades and failure modes — so the project can maintain a testable idea backlog rather than a list of bullish and bearish nouns.
19.1 Fundamental analytics
| Tool | What it is and how it is computed | Good for | Evidence and pitfalls |
|---|---|---|---|
| Balance model | Supply − demand = stock change, by month, region, product and grade; compare implied with observed stock changes; the residual is the IEA's "miscellaneous to balance" VERIFY term. Inputs: IEA OMR, OPEC MOMR (secondary sources vs direct communication), EIA STEO, JODI, national data. July 2026 OMR illustrates the observables: observed inventories +21 mb in June, oil on water +117 mb while onshore −96 mb, OECD −62 mb of which ~44 mb government releases | Slow directional bias (quarters), regime labelling, sanity-checking the curve; low/base/high cases | B. Baumeister–Kilian real-time forecasts cut MSPE 18–25 % at short horizons with directional accuracy up to 77 % — gains that Benyo (2026) finds insignificant against the end-of-month no-change benchmark. Demand and supply are revised for months; the residual absorbs all error; agencies disagree on Chinese stockpiling and oil on water. Never call the residual a price target |
| Days of cover — two named series | Monthly (EIA analysis): end-of-month commercial crude ÷ forecast next-month refinery runs, ex-SPR (29 days in Feb 2015, most since 1985). Weekly (EIA WPSR display): stocks ÷ the four-week average of refinery inputs. IEA uses OECD forward-demand cover | Normalising stocks across demand regimes; the x-axis of the Working curve | B. Never mix the two denominators; maintenance seasons distort both |
| Inventory-vs-curve scatter (the Working curve) | Inventory level or days-cover against the front spread; convex — steep backwardation when stocks are scarce, flat contango when ample; regime-switching models (contango / backwardation / extreme backwardation) | Detecting unusual convenience yield and non-linear stock regimes | A for the relationship (GHR 2013). Location-specific (Cushing for WTI): EIA's study finds Cushing stocks a function of the lagged ~8-week M2–M1 spread; Büyükşahin et al. tie calendar and Brent–WTI spreads to Cushing storage. Do not infer causality from a contemporaneous scatter; use week-of-year percentiles with expanding vintages |
| Implied storage economics (cash-and-carry) | Profitable when F(T2) − F(T1) > financing + storage + insurance + terminal + quality loss + the shadow cost of capacity — all time- and location-specific (the 0.74 %-of-spot-per-month figure used in one study and ICE Permian storage-futures settlements are inputs, not a formula); the spread exceeded carry from 5 March 2020 and Cushing inventory responses were 4.3× historical norms | Testing whether contango pays to carry physical barrels; explaining spread floors | A mechanism / B signal. The negative print was caused by long May-2020 holders without pre-booked storage reversing at any price, plus margin calls, a liquidity crush and TAS distortion — not by USO (Fernandez-Perez, Fuertes & Miffre). Capacity and credit are shadow-priced; screen quotes are not executable; EIA's storage-capacity report was discontinued after March 2024 |
| Refinery margin models | 3-2-1 crack = [2 × RBOB × 42 + ULSD × 42 − 3 × WTI] ÷ 3; 2-1-1 and 5-3-2 variants; regional: Brent–gasoil (NWE), Dubai–Singapore products | Run forecasts (high margins → higher runs → crude draws), product-vs-crude relative value | B. Crack-spread futures carry forecast content (Murat & Tokat 2009); units (gallons vs barrels), RBOB summer spec, maintenance seasons and refinery configuration are the traps |
| Location arbs | Brent–WTI (convenience yield at Cushing, paper activity, shipping, post-2010 breaks — Geyer-Klingeberg & Rathgeber 2021; spread tightens in OPEC disruptions); Midland–MEH and Midland–Cushing (pipeline and export parity); Brent–Dubai EFS and freight-adjusted netbacks into Asia | Whether US barrels clear; sweet–sour and East–West arbs | B for Brent–WTI determinants; C for the rest as signals. Naked Brent–WTI is not the export arb |
| OPEC compliance and tanker flows | Quota vs secondary-source production; compliance % and cumulative over-production; AIS positions plus draught for cargo nowcasts (IMF staff built real-time trade nowcasts from AIS) | Realised-loss measurement; the physical confirmation layer for every policy chain | B (data good, alpha undocumented). Dark fleet, AIS spoofing, floating-storage classification |
| Seasonal decomposition | Subtract a 5-year average or fit STL/harmonics to weekly stocks and demand, expanding-window, with leap, holiday and report-week handling | Forecasting physical maintenance, runs and product stocks | B for stock seasonals (mechanical); B/C for price seasonality (Arendas et al. is lower-tier and uncontrolled) |
19.2 Curve analytics
| Tool | Computation | Evidence |
|---|---|---|
| Calendar spreads (M1–M2, M1–M6, M1–M12, Dec–Dec) | $/bbl and annualised %; individual contracts, never continuous splices | A as state variable |
| Butterflies / curvature | F1 − 2F2 + F3 ("relative basis"); duration-matched wings; plot by days-to-expiry and season | B. Folklore: "every extreme fly must mean-revert" (C) |
| Basis-momentum | Momentum of M1 minus momentum of M2; predicts spot and term premia, beats basis and momentum alone (Boons & Porras Prado, JF 2019) | A cross-commodity / untested for WTI at 2–20 days |
| PCA / Nelson–Siegel | Level, slope, curvature fitted to the strip; dynamic Nelson–Siegel explains WTI and Brent curves with R² ≈ 99.99 %; common components explain ~62 % of level and ~74 % of slope and curvature across 24 commodities; slope and curvature relate to inventories, hedging pressure and rates (Karstanje, van der Wel, van Dijk 2015) | A (description) |
| Curve-dynamics strategies | Continuation of recent slope and butterfly moves reported profitable (JBF 2023) | B |
| Roll yield | One convention is (F_near − F_next)/F_next per roll, undefined around zero or negative prices; specify the P&L decomposition, denominator, maturity interval and roll execution instead of treating replacement as a daily fee; index rolls GSCI days 5–9, BCOM 6–10 | A mechanics |
| Spot vs term premia | A basis-sorted factor explains spot premia of 5–14 %/yr; term premia 1–3 %/yr need two more factors (Szymanowska et al. 2014) | A |
| Three-factor commodity model | Average + carry + momentum factors price the cross-section (Bakshi, Gao, Rossi 2019) | A |
| Convenience yield | cy = r + storage − (1/τ)·ln(F2/F1), or Gibson–Schwartz two-factor; Alquist–Kilian read the negative basis as an index of precautionary demand | A measurement |
| Backwardation-regime filters | Miffre–Rallis momentum buys backwardated and sells contangoed contracts; Fuertes–Miffre–Rallis: momentum 10.1 %, term structure 12.7 %, double sort 21.0 %/yr alphas; KAPSARC: WTI carry Sharpe 0.62, Brent 0.68 over 1988–2024, with no liquidity premium in crude | A cross-commodity / B single-market |
| The forward curve as a forecast | Alquist–Kilian: no theoretical support, biased, typically worse than no-change; Reeve–Vigfusson: 1-year relative MSE 0.92 vs a random walk, but 0.31 when futures were >15 % above spot and ≈1.0 within 5 % — informative only when steep; Chinn–Coibion: roughly unbiased, no better than a random walk; Ellwanger–Snudden: with end-of-month rather than monthly-average prices futures do beat no-change at short horizons | A that it is weak; the benchmark convention flips conclusions — fix it before testing |
19.3 Positioning and flow analytics
- COT mechanics (A): Disaggregated categories back-cast to 2006; classification is staff judgement from Form 40; Tuesday data released Friday 15:30 ET — a three-day lag any backtest must respect; ICE publishes an equivalent Brent COT; the programme is under review (2026).
- Normalisations (B): net length ÷ open interest; z-score over 52/156 weeks; the "COT index" = (net − min)/(max − min) × 100. Evidence is mixed: hedging-pressure portfolios earn premia in the cross-section (Basu–Miffre; de Roon–Nijman–Veld), KRT decompose liquidity demand from insurance demand with opposite signs, GHR reject hedging pressure, KAPSARC finds no liquidity premium in crude. Positioning is a conditioning variable, not a standalone signal.
- CTA positioning replicas (B): lookback-straddle or time-series-momentum sleeves at 20/60/125/250/500 days under a common vol target; regressing the SG CTA Trend index on the sleeves gives betas summing ≈1.06, two-thirds in mid and slow horizons; bank "flow monitors" are black boxes.
- ETF and index flows (A for mechanics): USO rolls ~two weeks before expiry (predictable, liquidity-provided); the Bank of China product rolled on the last day, leaving ~38,000 contract-equivalents of retail longs in the May-2020 contract; front-running the GSCI roll earned Sharpe ratios up to 4.39 in 2000–10 and cost index investors ~3.6 %/yr, likely decayed since VERIFY.
- Options (B): OVX applies the VIX method to USO options; the variance risk premium (IV² − RV²) negatively predicts crude futures returns (Kang & Pan); commodity vol term structures are documented; OVX changes negatively predict equity returns; inventory announcements move option prices more persistently than futures with no asymmetry to the surprise sign; put/call skew and 25-delta risk reversals are watched daily but no crude-specific predictive study was located VERIFY; CME CVOL publishes variance-based skew VERIFY.
- Volume, OI, VWAP, settlement, TAS (A mechanics): per-contract time-of-day volume, OI change, spread volume, block and TAS flags; TAS executes at a tick differential to the day's settlement (ICE Brent TAS ±5 cents on the front three months VERIFY); on 20 April 2020 the May contract fell from $17.73 to −$37.63 with exceptional velocity between 13:00 and 14:30, order-book liquidity deteriorating days earlier and >30 dynamic circuit breakers triggered. Market-profile and volume-profile "support" without a tested execution mechanism is C.
19.4 Technical analysis in oil — what survives testing
| Rule family | Evidence | Finding |
|---|---|---|
| Thousands of MA, breakout and filter rules on 15 commodities | A (negative) | Not consistently profitable in isolation after data-snooping corrections (Marshall, Cahan & Cahan 2008) |
| Dual-MA crossover and Donchian channel rules, 28 markets, 48 years | A (positive) | Positive net mean excess returns in ≥22 of 28 markets, significant pooled across sub-periods (Szakmary, Shen & Sharma 2010) |
| Cross-sectional momentum, 1–12-month ranking | A | 13 profitable strategies averaging 9.4 %/yr, buying backwardated and selling contangoed (Miffre & Rallis); profits rise with formation and holding length, no reversal profits across 189 windows (Zhang & Urquhart 2020) |
| Time-series momentum (12-month sign, vol-scaled) | A | Positive for every one of 58 contracts; 1880–2016 per-market Sharpe ≈0.4; gross Sharpe 1.38/1.19/1.32 for 1/3/12-month signals, 0.45/0.64/1.04 when lagged a month (Hurst, Ooi & Pedersen); commodities the weakest sector at 0.28 over 200 years (CFM) |
| Intraday momentum | B | The last-30-minute return is positively predicted by the rest-of-day return across 60+ futures, linked to gamma hedging (Baltussen et al. 2021); intraday predictability around EIA releases (Indriawan et al.) |
| Day-of-week, time-of-day | B/C | Daily seasonality in returns and volatility (Auer 2014 VERIFY sign); the weekly cycle is dominated by Wednesday 10:30 ET and Tuesday's API |
| Round numbers | B (weak) | Brent shows barriers at $10 levels on upward breaches only pre-2007 with 1–5-day effects; WTI shows none (Dowling, Cummins & Lucey 2016) |
| ATR stops, vol-targeted sizing | A as risk practice | Constant ex-ante vol per contract (MOP); no evidence that stops add alpha — they change the return distribution |
| Expiry effects | B episode / C general signal | Retail and index positioning into expiry precipitated the 2020 negative print; no general directional rule follows |
Reading: trend rules pass when tested as diversified, vol-scaled, long-horizon portfolios; the same rules fail as single-market timing. The single-market oil Sharpe should be expected near 0.3–0.5 gross.
19.5 Known strategy families — evidence, reported numbers, failure modes
| Family | Evidence and reported performance | Failure modes |
|---|---|---|
| Trend / time-series momentum (1–12-month lookbacks, vol-scaled) | A; diversified Sharpe ~1 gross, per-market ~0.4; a 1/3/12-month combination tracks CTA indices | Sharp reversals (Mar 2020 V-bottom; Mar 2022 spike-and-reverse VERIFY; Mar 2026 vol-forced cuts at the highs); crowding measured by CTA replicas |
| Carry / roll yield (long backwardated, short contangoed) | A cross-commodity: term-structure alpha 12.7 %/yr (Fuertes et al.); crude-only carry Sharpe 0.62–0.68 (KAPSARC) | Joint carry crashes in global recessions (Koijen et al.); 2020 super-contango annihilated front-month longs and cash-and-carry without booked storage |
| Basis-momentum / curve steepeners | A/B: predicts spot and term premia (Boons–Prado); slope-change continuation profitable | Term premia only 1–3 %/yr — cost-sensitive; 2020 showed spreads can move $50+/bbl |
| Cross-commodity spreads (cracks, Brent–WTI, WTI–Dubai) | B: crack futures carry forecast content; Brent–WTI tied to Cushing storage, pipeline capacity and freight | Structural breaks: the US export ban lifted in 2015, pipeline start-ups, WTI Midland in Dated Brent (2023), IMO 2020 |
| Inventory-surprise event trades | A that surprises move prices; B for tradability: OLS understates the response, instrumented estimates ~2× (Halova–Kurov–Kucher); high-frequency jumps map to scheduled news (Elder, Miao & Ramchander 2013); asymmetry disputed (none in Yang et al.; under-reaction to negative shocks in Bu 2021) | Reaction within seconds; the API number pre-empts part of the surprise; consensus vintages must be point-in-time |
| OPEC-meeting event trades | B: effects vary by decision and over time, larger for cuts, differ WTI vs Brent (Loutia et al.); OPEC announcements identify oil-supply-news shocks (Känzig, AER 2021) | Leaks and pre-positioning; direction unknowable ex ante — only volatility is tradable |
| Seasonal product trades (gasoline into driving season, heating oil into winter) | B/C: EIA documents seasonal demand and spec changes; price seasonality is weak-journal evidence | Warm winters, refinery outages, RVP transition timing |
| Short volatility (selling variance) | B: a negative variance risk premium means short variance earns on average | The negative-price tail (Black-76 fails below zero; CME switched to Bachelier in April 2020); margin spikes |
| Long volatility into events (straddles into EIA/OPEC) | B: implied vol responds to inventory news; the premium paid is the same VRP the short-vol family earns | Opposite family to short vol; event vol is usually priced; only a mis-priced event pays |
| Pairs with energy equities | C VERIFY — only spillover and cointegration studies found | Equity beta and rates dominate |
| Storage plays (physical cash-and-carry, storage futures) | A for the mechanism | Capacity, not price, is the binding constraint; storage data discontinued |
| Macro-news trading | A (negative): daily oil prices show no compelling response to 30 US macro surprises 1983–2008 (Kilian & Vega); later work finds some effect from claims, ISM, durable goods and gasoline stocks | Regime-dependent |
19.6 Risk and scenario tools
- Scenario and stress trees. Replay 2008 (−$100 in five months), 20 April 2020 (−$55.90 intraday, settle −$37.63), March 2022, March 2026; branch trigger → realised loss → offset → duration; shock flat, curve, cracks, basis, EUR/USD, margin and liquidity jointly; include direction reversals (hurricane refinery loss, Russian refinery strikes). No component may assume price > 0; stress the expiring month separately because liquidity vanished days before expiry in 2020.
- Gap-risk sizing. Size to the worst observed one-day move in the specific contract month and to absolute $/bbl shocks, not to daily σ; the front month is a different asset from M2.
- VaR limitations. Fat tails and long memory: long-memory GARCH–EVT VaR beats normal VaR for energy (Youssef & Belkacem 2015); VaR cannot capture negative-price or delivery-mechanism risk.
- Margin modelling. Major CME energy products are margined under SPAN 2 (historical VaR with stress, liquidity and concentration components), not the legacy SPAN scan grid; broker house margins sit on top; budget for margin doubling in stress; margin calls aggravated April 2020.
- Correlation stress. Carry and trend across asset classes crash together in recessions; commodity co-movement in level factors rose from 53 % (1995) to 68 % (2012) with financialisation.
- Event-study hygiene. Standardised surprise = (actual − consensus)/σ from the pre-release survey vintage (Kilian–Vega); instrument the noisy consensus (Halova et al.); align to the first tradable second after 10:30:00 ET (WPSR) or 15:30 ET Friday (COT); keep API as a separate event; non-overlapping windows, matched controls, robust errors, transaction costs, walk-forward holdout; post-selection of event class or window is C.
- Multiple-testing controls. Harvey, Liu & Zhu's t > 3.0 for the cross-section of equity factors is the analogy, not Tradero's test: use Bonferroni/Holm or BHY on the project's own trial family and compute the Deflated Sharpe Ratio (Bailey & López de Prado 2014) from the effective number of independent trials, the dispersion of trial Sharpes, sample length, skew and kurtosis — a logged raw trial count is necessary but not sufficient. An exhaustive parameter search on a random walk almost always produces an "optimal" rule that fails out of sample.
- Realistic edge sizes. Single-market trend ≈0.3–0.5 Sharpe gross; crude carry 0.6–0.7 over 36 years; long-only commodity excess ≈0; term premia 1–3 %/yr; a single-market backtest above ~1.0 is a review trigger for the deflated-Sharpe and trial-count checks, not proof of overfitting and not a result.
- Missing from v2.0, added on review: expected shortfall and drawdown or risk-of-ruin limits; liquidity-adjusted slippage and market-impact stress; portfolio delta, gamma and vega with calendar and basis risk; variation-margin cash-flow and EUR collateral stress; broker concentration, default and kill-switch drills; data and order-state failure scenarios; delivery and notice risk; reverse stress ("what joint move exhausts excess liquidity?"). The worst observed day is a floor for stress, not a bound.
19.7 What a professional desk looks at every day
Daily: the front curve (M1, M1–M2, M1–M3, M1–M6, M1–M12, Dec–Dec in $/bbl and annualised %; the F1−2F2+F3 butterfly) for WTI, Brent and Dubai · Brent–WTI (front and M+6), Midland–Cushing, MEH–Cushing, Brent–Dubai EFS · the 3-2-1 crack, RBOB, ULSD and gasoil cracks · settlement prices, the 14:28–14:30 ET window volume, TAS volume, OI by month and the expiring month against days-to-expiry · OVX, ATM implied vol by expiry, 25-delta risk reversals, realised vol (5/20/60-day), the variance risk premium · the roll calendar (GSCI 5–9, BCOM 6–10, USO window, CL and Brent expiries, near-daily WTI weeklies) · estimated CTA position and predicted flow by sleeve · OPEC+ statements, sanctions, outages in announcement windows. Weekly: Tuesday API, Wednesday WPSR (Table 1 balance, crude by PADD and Cushing, products, inputs and utilisation, imports and exports, production, product supplied → surprise, five-year deviation, days of cover), Thursday ARA, Friday Baker Hughes and COT (managed-money net, z-score, ICE Brent COT). Monthly: STEO, OMR, MOMR (secondary-source production, compliance), JODI → recomputed balance, implied vs observed stock change, OECD days-cover, oil on water; tanker-tracking export and import estimates and floating storage. Redundancy is the point: a bullish flat-price move with a weaker front spread, softer cracks, no loading loss and only crowd attention is a different object from the same move with lost cargoes and steeper backwardation.
Reference texts: Downey, Oil 101 (2009); Kaminski, Energy Markets (Risk Books, 2013) VERIFY; Petroleum Economist, Trading and Pricing Oil VERIFY; CME "Introduction to Crack Spreads" and "Trading Crack Spreads" (2024); the ICE Brent FAQ; Blas & Farchy, The World for Sale; Arjun Murti, Crude Oil 101.
20. What the knowledge base adds to the Tradero programme
Section 11 set the v1 feature families and the hypothesis order; nothing in Part II changes that order, but it adds collectors, context objects and later-stage hypotheses. In priority order:
- Collectors to add now, each after its own rights check (free to access is not the same as free to use — the IEA OMR is non-CC, Insights Global sells ARA, CME's website terms restrict systematic extraction): the official release calendars as data (EIA WPSR holiday shifts, STEO, COT delays, IEA, OPEC, ARA Thursdays, NBS/GACC), stored per week with first-seen latency; BSEE shut-in statistics, NHC advisories and USCG port conditions (chain P1–P2); DOE SPR notices of sale and exchange (Q8–Q9); OFAC and EU designation timestamps (Q10–Q11); Aramco OSP circulars by polling (Q6); CME clearing advisories and ICE circulars as margin objects (R2); GDELT energy themes as the free multilingual attention feed (§18); Pegel Kaub, NOAA CPC and ENSO status (P17, P20); the BCOM/GSCI roll and reweighting calendars (R3, §15.2).
- The event-object schema (§14.1) and the narrative-state schema (§18.3) become tables in the point-in-time store before any LLM touches news; the LLM classifies and explains, code computes surprise, confirmation depth and eligibility.
- Feature families F5 and F6 (§11.1) get their data plan: F5 location/export arb needs licensed Midland, MEH, Dated Brent and freight — deferred until the budget step; F6 physical-disruption state can start free with BSEE, NHC, NOC statements, CPC notices and OFAC, with
realised_net_losscomputed from public loadings proxies until Kpler or Vortexa is licensed. - Session-conditioned research (§15.10): every lead-lag or event test is conditioned on session; the Sunday-gap estimator uses Gulf equities and weekend Tier 0–1 items; TAS volume is excluded from directional features; option expiry is a dated object with strike and product.
- Positioning is decomposed, never levelled (§16): OI-normalised long, short and spreading with Tuesday and Friday timestamps; the rate of change of managed-money length as a step-6 hypothesis; calendar-known flows (index rolls, ETF rolls, expiries) as calendar context and risk-gate inputs, not features, until separately admitted; no "commercials are always right".
- Chains are a candidate registry, not a queue (§17): each chain is a row with trigger, observables, expected signs, lag priors, falsifier and the Tradero destination. Nothing enters research automatically. The §11.5 order is preserved: only the F5/F6 observables join existing families; a chain graded A/B and marked S1 or S2 may be proposed at step 6, one at a time, with pre-registered sign and horizon and counted in the trial family; chains marked context feed the regime state; chains marked never are recorded so nobody re-proposes them.
- The mood diagnostic runs beside the market, not inside the score (§18.5): GDELT, organisational sentiment, a ≤50-account X list, retail attention counters (including the Italian boards) — evaluated on event detection and volatility only; a collector backlog is not a hypothesis queue.
- Rights and reproducibility are fields, not footnotes: every source in §14.3 carries a rights tag and a retention class; licensed values carry methodology version; nothing scraped against terms enters the store.
- Look-ahead traps specific to this layer (Codex review): current calendar pages backfilled onto old dates; today's ETF methodology applied before its effective date; revised cargo and AIS histories; PDFs silently replaced;
ts_publishedcopied from page metadata instead of first retrieval; post deletions ignored; later physical confirmation written into the original claim; a 2026-built topic or account universe run on earlier years; session conditioning chosen after seeing where results are strongest. Snapshot raw releases at first sight, version every calendar, methodology and universe, and never recompute a historical availability timestamp from today's page.
Appendix A — Reading list (in the order a new team member should read them)
- Morgan Downey, Oil 101 — how prices are set day to day.
- Hamilton (2009), Understanding Crude Oil Prices (NBER w14492) — elasticities, overshooting.
- Kilian (2009), Not All Oil Price Shocks Are Alike (AER) — the three-shock lens; Baumeister & Hamilton (2019, AER) — the rebuttal.
- Gorton, Hayashi & Rouwenhorst (2013), The Fundamentals of Commodity Futures Returns — inventories, basis, risk premia.
- Alquist, Kilian & Vigfusson (2013), Forecasting the Price of Oil — why no-change is hard to beat.
- Erb & Harvey (2006); Koijen et al. (2018) Carry; Moskowitz, Ooi & Pedersen (2012) Time Series Momentum; Hurst, Ooi & Pedersen (2017) A Century of Evidence — the benchmarks.
- Kang, Rouwenhorst & Tang (2020) — what positioning does and does not tell you.
- Bu (2014); Ye & Karali (2016); Halova, Kurov & Kucher (2014) — EIA announcement effects.
- CFTC Interim Staff Report on 20 April 2020; Gilje et al. (2026, NBER w34905) — the negative price.
- Blas & Farchy, The World for Sale; Arjun Murti, Crude Oil 101; Andurand interviews — how practitioners think.
- EIA "Contango in Cushing?" (2012); EIA Today in Energy on Cushing tank bottoms (July 2026); IEA OMR August 2026 — the physical plumbing and the current regime.
- Fernandez-Perez, Fuertes & Miffre on 20 April 2020 — cash-and-carry without booked storage, margin calls and TAS, not USO; Gilje, Ready, Roussanov & Taillard (2026) — the retail-long mechanism.
- Cheng, Kirilenko & Xiong (2015) convective risk flows; Büyükşahin & Harris (2011); Brunetti, Büyükşahin & Harris (2016); Irwin & Sanders — the positioning evidence in one afternoon.
- Brandt & Gao (RavenPack); Hashami & Maldonado (2025) on news count versus sentiment; Jeong & Ahn (2025) on IEA/OPEC report sentiment — what news is worth.
- Boons & Prado (2018) basis-momentum; Karstanje, van der Wel & van Dijk (2015) on curve factors; Reeve & Vigfusson on when the curve forecasts; Ellwanger & Snudden on the benchmark convention.
- Ferraro, Rogoff & Rossi on oil and currencies (same day only); Pierru, Smith & Zamrik (IMF 2022) on OPEC decisions; Loutia, Mellios & Andriosopoulos (2016) on OPEC announcements.
- Kaminski, Energy Markets; Petroleum Economist, Trading and Pricing Oil; CME crack-spread primers; the ICE Brent FAQ — the practitioner shelf VERIFY editions.
Appendix B — Provenance
- Research note A (physical supply & demand, ~4,400 words, 60 sources, 32 VERIFY), B (inventories & market structure, ~4,000 words, 67 sources, own calculations from EIA series), C (macro, positioning, evidence, ~4,000 words, 91 sources), D (trader process, contracts, calendar, ~3,700 words):
research/studies/2026-09-02-oil-fundamentals/. - Codex memo (4,991 words, 11-factor v1 proposal, code-level v0 audit):
research/codex/2026-09-02-crude-oil-fundamentals-deep-study.md; brief in the same study folder. Codex review of the merged v1.0 (2,216 words):research/codex/2026-09-02-review-oil-fundamentals-doc.md. - Key primary pages verified directly during synthesis: IEA OMR August 2026; EIA Today in Energy #67424 (Q1 2026 price surge) and #67865 (Q2 2026, Brent high $118 on 29 Apr); CME client-systems page for 10-Barrel WTI (launch postponed); Bloomberg BCOM methodology (roll days 6–10).
- Round two (2026-09-02, same day): research notes E (information layer, ~4,400 words, ~90 sources), F (sessions and regions, ~5,400 words), G (participant map, ~4,900 words), H (mood and communities, ~4,700 words, nine languages searched), I (cross-market, policy and long-cycle chains, 41 chains, 113 sources), J (toolkit and strategies, ~4,350 words, ~30 primary PDFs):
research/studies/2026-09-02-oil-fundamentals/E-…J-…md. Codex round-two memo (9,413 words, 53 chains, platform map, toolkit):research/codex/2026-09-02-part2-information-behaviour-chains.md; Codex review of v2.0:research/codex/2026-09-02-review-oil-fundamentals-v2.md(when present).