The Empty Band
oil-shock · working views · 1 September 2026

Four views of a model whose central estimate rests on a single month

These are working views rather than finished designs. Each is generated from the project database, which holds 140 months of series, six events and a precomputed Monte Carlo of 20,000 draws. They show different parts of one problem: the price response the model reports is identified by very few observations. Readers will want to test that directly, so the first view re-estimates the relationship with those observations removed.

A

The empty band

Each point is one month of the panel. The line is re-estimated when the five months of the Hormuz closure are removed, and the statistics beside it update accordingly. Removing all five reverses the sign, and removing March 2026 on its own is enough to take the coefficient below conventional significance, which suggests the estimate rests on a single observation rather than five.

ordinary month Hormuz closure, Mar–Aug 2026 fitted line

The same months arranged by the level of disruption rather than its month-to-month change, which is what the regression above uses. There are no observations between 5.03 and 10.05 mb/d, so no choice of specification can recover the shape of the response across that interval.

Table view: the five Hormuz months
B

Headline versus measured

Each event appears twice: the figure quoted at the time, and the change in world supply measured afterwards. Three of the six carried no barrel figure at all, a different statement from a claim of zero, and drawn accordingly.

headline claim measured, verified against a primary series no barrel figure ever quoted
Table view: all six events
C

The buffer runs out

Two panels on a shared time axis, rather than two scales on one panel. Spare production capacity is the buffer that absorbs a disruption before it reaches the price, and it approaches zero at roughly the point where a price response appears. The pattern is visible in the series themselves and does not depend on the model.

Table view: monthly, 2025-10 onward
D

The model that refuses to answer

The control sets the barrels removed. The model adds what is already offline, roughly 2.67 mb/d in normal conditions, and compares the implied total against the range where observations exist. Between 5.03 and 10.05 mb/d it returns no estimate, since eleven years of monthly data contain no month in that interval. The gap is reported rather than interpolated.

1.50 mb/d
E

Who is exposed, and to what

Countries are grouped by the kind of exposure rather than its size. Producers inside the Gulf lost volume, since barrels that cannot be shipped are shut in at the wellhead. Import-dependent economies face a price they have no domestic production to escape. Exporters outside the Gulf kept their output and sold it into a higher price. Vertical position is the change in production between February and April 2026; horizontal position is the share of consumption met by imports.

Gulf producer, volume exposed import dependent, price exposed exporter outside the Gulf

Stock cover, and how fast it is being used

Reported petroleum stocks for the OECD countries that publish them, in days of net imports. The 90-day line is the IEA holding obligation. Countries outside the OECD reporting system, including China and India, hold substantial reserves that do not appear in this series.

Table view: countries above 0.5 mb/d of consumption
F

Where the oil moves

Routes follow the shipping-lane network rather than the shortest line between two ports. The difference matters for the argument rather than the appearance: a straight line from the Gulf to Rotterdam crosses Saudi Arabia and Africa, so a route described as passing Hormuz did not go near it. A Gulf to Rotterdam route now runs 11,941 km through Hormuz, the Red Sea and Suez, and a Gulf to Ningbo route 10,341 km through Hormuz and Malacca, because the lanes go there.

The published lane data is drawn in disconnected pieces, so three corridors were completed by hand: the Red Sea between Bab el-Mandeb and Suez, the Arabian Sea between the Gulf of Aden and Hormuz, and the Cape of Good Hope. Panama and Suez are joined across the canals themselves, and nothing was connected across the antimeridian, which had been sending Pacific routes round Africa. Eleven segments are drawn rather than sourced and are recorded as such. Every route on the globe, including the country bundles and the United States import layer, now follows the same network, and the build fails if any route would fall back to a straight line. The lane network itself is drawn faint as geography, and the lanes button cycles it into a traffic view, where every segment is weighted by how many of the drawn routes travel it and any segment can be selected for its count. The lane data carries no names or traffic of its own, so that count is the one thing a segment can honestly show.

Approximating those corridors is a judgement about where ships go, which is settled geography, and it changes no measurement: every volume, transit count and barrel figure still comes from its source. Nine reference routes are checked against published sailing distances on every build, so a network that goes somewhere a ship would not fails before the page is written rather than after.

A globe rather than a flat projection, because routes between the Gulf and Asia cross the frame edge on any rectangular map and stop reading as single journeys. Dragging rotates it, the wheel or the buttons zoom, and a double-click returns to the opening view. Selecting a port opens its throughput and its country's position in the panel alongside. Chokepoints and routes are selectable in the same way, and Escape clears the selection.

Play runs the months in sequence, resizing ports, redrawing chokepoint rings and moving the Brent line underneath together, so volume and price advance under one control. Each chokepoint is ringed against its own 2024 to 2025 baseline rather than against Hormuz, which lets an unaffected chokepoint read as unaffected instead of as small. Selecting one gives its transits, its own baseline, where it ranks among the 27 this month, and the major chokepoint running closest to normal, which is the comparison that turns a large percentage into evidence. Country bundles collapse the port-to-port links between the same two countries into one arc whose width shows how many connections it aggregates.

Two shadings are available. Import dependence covers 44 countries and describes a structural position that barely moves. Stock cover, in days of net imports, covers only the six countries that both report stocks and import more than they produce, and it is the one that depletes as the months advance. Countries outside those sets are left unshaded because their position is unknown, which is not the same as being zero.

The United States import layer is different in kind from everything else drawn here. Those are measured barrels attributed to the country they came from, whereas the connection arcs record that two ports are linked by observed shipping and say nothing about what moved along them. Marker density on the arcs divides an origin's measured loadings evenly across its connections, which is an assumption stated wherever a number derived from it appears.

Brent, monthly average, moving with the month control.

Gulf port and its routes port and route elsewhere shipping lanechokepoint marker, paced by transit time
Table view: the twelve largest tanker ports

Every figure on this page is generated from shock.db by src/render/export_viz.py, and none of it is entered by hand. The provenance chips are clickable and open the underlying parameter, including its citation, its stated range and the series it was read from.

This copy was revised after an adversarial audit on 1 September 2026, which found six defects in the version it replaces. Two mattered for the numbers shown here: the earlier text described an underpowered result as a null, and the scenario engine compared an incremental shock against a threshold expressed as a total, so it answered in a range where it should have declined. Both are now checked by gates 13 and 14 in gates.py.

Colours are the data-viz reference palette's first two categorical slots, re-validated all-pairs against the surfaces this site uses (#ffffff light, #101624 dark). One hue carries a contrast warning in light mode, so each series is direct-labelled and each chart offers a table view.