Tension Board

The Fuel System: what the fossil system says fuel should cost

Projected balance: -6.1 mb/d deficit

Global liquids account, as of 2026-08. 2/8 lenses fresh, 0 active tensions.

The same headline means different things at different inventory levels, spare capacity, positioning and disruption state. This board tracks the market state explicitly: one measured lens per variable, each on its own page, disagreements displayed rather than averaged away. The integrated house read, when staked, enters the Forecast Lab ledger with a resolution date and is scored publicly.

How to read this page: backbone historical mass balance, structural · measured sourced data · inferred analyst reading, basis linked · forecast external model outlook (e.g. STEO). Bracketed citations link to the sources at the foot of the page.

System Account

Thick lines = physical flow (barrels, gas). Thin dashed = influence. Left to right = supply to demand. Colour = tight (red) / ample (green). Dashed border = forecast.

World liquids supply

98.3 mb/d

US crude stocks

429 Mbbl

SPR

290 Mbbl

Hormuz transit

3 calls/d

Gas price (HH)

$2.86 /MMBtu

Refining

83 mb/d runs

EU gas storage

64.09%

Qatari LNG

unmeasured

Product supply

77.8 mb/d

Other liquids

25.3 mb/d

Positioning

-24.2k contracts

Final demand

104.4 mb/d

Macro (DXY + IP)

118.1 DXY

neutral

Projected balance

-6.1 mb/d

surplusneutraldeficit| ● measured ◐ inferred ○ forecast

The gas account

The same construction as the oil account above, for natural gas, on JODI-Gas. One thing gas gets that oil does not: imports and exports each split into pipeline and LNG. A pipeline is a contract with a fixed counterparty; an LNG cargo can turn around mid-ocean. Drawn as one flow, that difference disappears. Pick a region, scrub the month.

Gas account, SE Asia, 2026-05

JODI-Gas · 5 countries in the balance

2026-05
Indigenous production342 PJ/moINDPRODPipeline imports39 PJ/moIMPPIP · fixed counterpartyLNG imports96 PJ/moIMPLNG · 72% of importsExports65 PJ/mopipe 17 · LNG 48Available for demand409 PJ/moproduction + imports − exportsStock change-7 PJ/mopositive = buildDemand415 PJ/mo2 country(s) calculatedBalance residual1 PJ/mo0.25% of flow in
Read shares carefully. This balance covers 5 countries. Russia, Iran, Saudi Arabia, Qatar, the UAE, Algeria, Egypt, Turkmenistan, Uzbekistan, Malaysia and India are absent, and they are overwhelmingly producers who consume their own gas without importing LNG. The sample therefore leans toward LNG importers, and any LNG share taken from inside it reads high: about 20% of demand here against roughly 13 to 15% for the world on external annual estimates. Use these figures for direction and month-to-month movement, not as world shares.

Built country-by-country and summed only over the 5 countries complete in this month. Summed instead across every reporter, the world residual is about 40%, because countries file different flows; that is the trap this construction avoids. The residual is displayed, never plugged. 2 country(s) here supply JODI's calculated demand rather than observed. 1 report no export flow at all, taken as zero.

What is in each box, and how the account closes

Every box is a breadcrumb from another page; the account is where they are compared. STEO gives supply 98.3 − demand 104.4 = -6.1 deficit, met by drawing on reserves. STEO splits that supply itself: 73.0 mb/d of crude and 25.3 mb/d of other liquids, the NGLs, biofuels and synthetics that never come out of a wellhead as crude. Those two are published separately and sum to the total exactly, so the split is measured rather than inferred. Note what it does not equal: the refineries page gives crude runs of 83 mb/d, which is larger than crude production, because refinery throughput counts every feedstock a refinery processes and draws on inventory besides. That gap is a fact about the system, not an error. Estimates are marked ~. The products lane closes from two sides: JODI measures 77.8 mb/d of refined output, but only from its ~50 reporting countries (2025-12), so it is a lower bound. The runs-based estimate, crude runs 83 plus ~2% processing gain, grosses that to ~85 mb/d, and ~85 products plus ~25.3 other liquids lands on demand. The 7.2 mb/d between JODI's 77.8 and the ~85 estimate is JODI's country coverage, not a hole in the account. One honest gap remains: we do not yet physically track crude supply, so supply and demand are STEO forecasts. The paper/money page is a separate lens, built to disagree with this physical balance, not to feed it.

BoxValueAs ofWhat it is, and where the number comes fromTier
World liquids supply98.3 mb/d2026-08monthly · STEOCrude + NGLs + biofuels + other liquids. Source: EIA STEO forecast (near-term actual plus outlook). We do not yet physically track crude supply, so this is the one node with no monitoring page behind it; it links to the physical energy overview, never the paper/money page. forecast
Refining runs83 mb/d2024annual · EIThe crude slice of supply actually run through refineries. From the refineries page backbone (EI 2024); the monitored-outage tally rides on top as a measured/inferred overlay. backbone
Product supply77.8 mb/d2025-12monthly · JODIWhat refineries make: gasoline, diesel, jet, fuel oil, naphtha, LPG. JODI measures 77.8 across ~50 reporting countries (2025-12), a lower bound. The runs-based cross-check (crude runs 83 + ~2% processing gain ≈ 85) is coverage-complete; the 7.2 mb/d between them is JODI's missing countries, not a broken balance. measured
Other liquids~25.3 mb/d2026-08monthly · STEONGLs (ethane, propane, butane), biofuels and synthetics: everything in world liquids supply that is not crude. Read directly from STEO's own split (OPEC_NC + NONOPEC_NC), which sums to the published total with a closure residual of 0.000 mb/d. Until 2026-07-27 this was computed as supply minus refinery runs, which double-subtracted the non-crude feedstock that does pass through refineries and compared two vintages; that method read 16.3 against the measured 25.3. measured
Final demand104.4 mb/d2026-08monthly · STEOTotal world liquids consumption. Source: EIA STEO forecast. A physical quantity, separate from the paper/money page. forecast
Projected balance-6.1 mb/d2026-08derivedSupply minus demand. Negative means the world is drawing this much from inventories (US crude stocks, SPR) to meet demand. That draw is what makes the account balance.derived

Crude supply, by vintage

The same crude, measured four ways at different scopes and dates. They do not line up, and that is the point: STEO's 98.3 is total liquids (crude plus NGLs plus biofuels); the EI backbone is crude runs; JODI's 47.5 is measured crude output but from only 42 countries (~58% coverage, a loose lower bound); EIA's 13.8 is tight but US only. None replaces the account value; the layers sit beside it so the coverage and scope gaps stay visible.

Readoutmb/dAs ofScopeTier
Total liquids supply98.32026-08monthlycrude + NGLs + biofuels forecast
World crude runs83.02024annualstructural throughput, a demand-side proxy backbone
World crude production47.52025-12monthlyJODI, 42 countries, ~58% coverage lower bound measured
US crude production13.82026-08-21weeklyEIA weekly, US only measured
Monitored disruptions−1.02026-07-19news · 1 trackedCPC (Novorossiysk marine terminal) (1.0) inferred

Monitored disruptions are news-inferred deltas with a 90-day decay, curated from primary reports into upstream_status_events.json. They are shown as context, not subtracted from the STEO forecast, which is a monthly figure that already reflects the war-depressed supply level; a fresh event (e.g. the 19 July CPC loading halt) is additive nowcast information the monthly forecast has not yet absorbed.

What comes out of the refinery

The account's product node, opened up. World refinery output by product, measured across JODI's reporting countries (2025-12). This is the physical flow; prices are a separate readout compared against it, and the two are not assumed to match.

Gas/diesel oil
24.3 mb/d
Gasoline
21.1 mb/d
Other products (bitumen, lubes, coke, wax)
11.8 mb/d
Other kerosene
6.9 mb/d
Naphtha
6.1 mb/d
Jet kerosene
4.4 mb/d
Residual fuel oil
4.3 mb/d
LPG
3.4 mb/d

The per-product bars sum to 82.2 mb/d; JODI's netted total for the same countries and month is 77.8. The 4.4 mb/d difference is interproduct transfers and category overlaps (naphtha reprocessed into gasoline, kerosene splits), shown here rather than plugged. Coverage is the JODI-reporting world, a lower bound; the account grosses it up via the runs cross-check in the box explainer above. Source: JODI-Oil World Database.

Flow against price: gas/diesel oil is the largest cut of the barrel at 24.3 mb/d, and it is also the product the market prices as scarcest (the diesel crack sits at 3.0x its pre-war mean, the market lens above). The slate is what refineries physically make; the crack is what the market pays for it. When they diverge, as now, the divergence is the signal, not an error. The rest of the lane: crude runs 83 mb/d feed this slate, and ~25.3 mb/d of other liquids (NGLs, biofuels and synthetics, STEO's own non-crude split) reach demand without ever coming out of a wellhead as crude.

Why the outage numbers differ across pages

The same event set produces different totals because each surface includes different status categories and uses different loss methods. All are defensible; the difference is the inclusion rule.

MeasureIncludesValueWhere
Tracked affectedoffline + run-cut (nameplate) + damaged/restarted (nameplate)11.6 mb/dStat strip
Estimated lossoffline (nameplate) + run-cut (shortfall where throughput sourced)Diagram
Verified offlineoffline only (nameplate)Refineries stat card

Tracked affected is the broadest (counts damaged/restarted at full nameplate even though they are partially running). Estimated loss is the most conservative (only counts shortfall where throughput is sourced). Both are computed from the same curated event set.

House read

Hindcast strip (Feb-Jun 2026)

02-281T 1L03-312T 0L04-303T 0L05-313T 0L06-304T 0L

Each chip shows one month-end: count of lenses reading tight/bearish/deficit (T) vs loose/bullish/surplus (L). Hover for per-lens breakdown. Crisis escalation visible: T count rises Feb to Jun.

Before the first house read

  • At least 5 measured lenses fresh (currently 2/8)
  • Hindcast strip seeded with crisis months (25 entries)
  • Corridor beats informativeness rule (narrower than realized vol or displaced from STEO median)

Lens readings

INVcrudeproducts
2026-07-21

Inventories

tight

US commercial crude stocks (409,665 kb) below the five-year weekly min (422,162 kb) for week 28.

highdata
MKTproductscrude
2026-07-24

Market prices

tight

US diesel crack (ULSD minus Brent) at $69.46/bbl on 2026-07-06, 2.4x the pre-war 2023-2025 mean of $28.91.

POScrude
2026-07-21

Positioning

bearish

ICE WTI managed money net short -24,220 contracts (below -10k threshold).

mediumdata
CONcrudeproductsgas

Consensus (STEO)

surplus

EIA STEO projects world supply/demand balance of +4.78 mb/d at end of forecast horizon (2027-12), with Brent falling to $61/bbl.

medium | 2026-07-21datastocks
PHYcrudeproducts
2026-07-21

Physical supply

tight

6.5 mb/d of tracked refinery outages (CIS -3.2, ME -2.2, SCA -0.7, AP -0.4).

MACcrudeproductsgas

Macro

neutral

Industrial production at 101.49 (2025-12), within 2% of trend.

low | 2026-07-21energy
GEOcrudeproductsgas
override2026-07-21

Geopolitical

stressed

Three concurrent conflict-driven disruption zones: CIS (Russia drone campaign, 3.2 mb/d offline), Middle East (Iran/Hormuz aftermath, 2.2 mb/d), South/Central America (Venezuela earthquake, 0.7 mb/d).

FLXgasproducts
override2026-07-21

Flexibility

normal

Henry Hub at $2.5/MMBtu (STEO forecast, Jul 2026): gas remains cheap relative to oil, preserving gas-to-oil substitution slack in power and industrial sectors.

lowdata

By product

Crude

INV: tight

MKT: tight

POS: bearish

CON: surplus

PHY: tight

MAC: neutral

GEO: stressed

Products

INV: tight

MKT: tight

CON: surplus

PHY: tight

MAC: neutral

GEO: stressed

FLX: normal

Gas

CON: surplus

MAC: neutral

GEO: stressed

FLX: normal

Tensions

The disagreement is the product. When two lenses point in opposite directions, the tension names what the market has to resolve. The hindcast record shows which lens was right the last time this pair disagreed.

No active tensions (all lenses agree or some are stale).

Crisis hindcast (Feb-Jun 2026)

What the mechanical rules would have said at each month-end during the crisis, computed from historical data. Clearly a backtest, not a real-time record. The escalation path is visible: physical stress crossing thresholds as outages accumulated, inventories tightening with a lag.

DateINVPOSCONPHYMAC
2026-02-28normalbearishsurplusnormalneutral
2026-03-31normalbearishdeficitnormalneutral
2026-04-30normalbearishdeficitstressedneutral
2026-05-31normalbearishdeficitstressedneutral
2026-06-30tightbearishdeficittightneutral

Hindcast: mechanical rules applied to data available at each date. Red = tight/bearish/deficit, green = loose/bullish/surplus. Hover for rationale. Not a real-time record.

The Record

Every staked claim is tracked here: staked, open, resolved, with what actually happened. The STEO consensus is scored alongside the house reads. A read that beats none of the no-skill baselines (no-change, the market's own curve, and STEO) is reported as beating none of them.

No claims staked yet. The first house read enters after the hindcast strip is live and the corridor beats the informativeness rule (narrower than realized vol or materially displaced from the STEO median).

Coverage and gaps

Every fuel-system surface either feeds this board, is planned to with a named blocker, or is exempt with a written reason. Gaps are allowed; undocumented gaps are not. The contract is checked mechanically at every push.

Planned feeds (the promises)

  • Global gas flows The gas-system lens promised in the original feeder table never shipped. Blocker: JODI-Gas fetcher pending (NE Asia LNG import volumes, the measured check on the El Nino winter tail); lng_capacity.json and gas_trade_pairs.json exist but the board reads none of them. The Qatari LNG node renders 'unmeasured' while this page holds the data to measure it.
  • Switchability matrix into flexibility lens The flexibility verdict is still curated from the Henry Hub price alone. switchability.json (Atlas volumes + timescale classes) exists and should make the verdict computable: system-wide short-term switchable volume vs current stress.
  • World stocks into the account The board uses US commercial stocks only; jodi_stocks.json (OECD + world, monthly) should give the inventory lens a world context line so US-tight vs world-comfortable stops being an unexplained contradiction.
  • Biofuels & renewable diesel US renewable diesel production (us_signals) is a measured diesel-supply margin that never enters the products lane. Small volume, but the diesel story is the board's differentiated call and this is measured supply on its margin.

Data the board cannot use, and why

  • NYMEX/Brent futures curve as a live series. EIA futures endpoint dead since 2024-04 (verified empirically); FRED excluded by its API terms (no caching/archiving); no licensed free feed exists; paid vendors refused on principle. The curve lens runs as a curated weekly observation with a press citation instead.
  • Options-implied volatility (OVX) as the corridor yardstick. CBOE copyright pre-approval class. Yardstick is realized volatility computed from EIA daily prices (public domain, own computation), stated as backward-looking.
  • JKM and API2 price series. Paywalled. EU/Asia switching bands are partial and labelled so; US bands are complete from EIA.
  • A measured monthly world liquids demand series. No free measured world series exists at monthly cadence; the demand node is STEO forecast, labelled and dashed. JODI TOTDEMO is a candidate lower bound pending the same netting work as product output.
  • Qatari LNG export volumes. JODI-Gas fetcher pending; node renders 'unmeasured' until it lands. The force-majeure state is known from press; the volume is not measured on-site yet.

8 surfaces feed the board, 4 are planned, 7 are exempt by design (structure-census maps, national-scope pages, samples too thin for a signal). Contract file: board_coverage.json, updated 2026-07-24.

Methodology

The board's lenses are the market state vector: inventories, expectations and positioning, physical balance, demand conditions, disruption state, and substitution slack. A sentiment model's deepest flaw is having no representation of the market state; the same headline means different things at different inventories, spare capacity, expectations and positioning. Each lens has its own page where its measured dataset lives; the board renders one-line summaries from shared data modules, never retyped.

Verdicts are mechanical where honest (stocks below five-year band = tight; net managed money below -10,000 contracts = bearish). The curator can override with a dated rationale, displayed as an override. Verdicts decay: a verdict not re-affirmed within its cadence window (weekly: 14 days, monthly: 45 days) renders grey "stale".

Three epistemic tiers: measured (lens data, green), inferred (lens verdicts, amber), staked (house read, openly speculative, ledgered in the Forecast Lab). Every house read is scored against named no-skill baselines: no-change, the futures curve, and STEO. A read that beats none of them is reported as beating none of them.

Sources and method (6)
  1. [1] EIA Weekly Petroleum Status Report
  2. [2] CFTC Commitments of Traders
  3. [3] EIA Short-Term Energy Outlook
  4. [4] EIA spot prices (daily)
  5. [5] Federal Reserve Board H.10 / G.17
  6. [6] A1AYN refinery status events

Inventories: EIA WPSR (weekly). Market: diesel crack from EIA daily spot prices vs its pre-war mean. Positioning: CFTC (weekly). Consensus: EIA STEO (monthly). Volatility: computed from EIA daily spot prices. Macro: Federal Reserve Board H.10/G.17. Physical: A1AYN refinery status events.