When oil jumps, someone always pays; the only questions are when, where, and who. This is a working model of that journey: from a barrel of crude, through refineries, freight, and corporate balance sheets, to your grocery bill. Set the shock, press play, and watch it move through the digital twin.
The causal chain from the v0.12 spec. Click any station to jump there; press play and the rings fill as pressure arrives. The dashed return path is the demand feedback loop
Pick how big the oil shock is and how stretched the market already is, then press ▶ Run in the player below. Every number and chart on this page recalculates instantly.
Energy inflation never starts as "prices went up." It starts as a real-world event. The model draws the event first and lets prices follow.
A producer takes supply offline. A refinery goes down. A chokepoint closes, exports pull product away, a tariff lands, or demand surges. Each is a physical or policy event with a size and a duration.
The model's first discipline is to draw causes, not consequences. Prices, inventories, and CPI are never invented directly; they are computed from the event. That is what makes every downstream number traceable.
Your console setting of +$30/bbl in a tight market stands in for one of these events hitting a market with little slack.
Production outage or embargo, in mb/d, with a duration.
Capacity points offline: crude is available but products are not.
Pipeline, strait, or port constraint: product exists in the wrong place.
Global arbitrage draining domestic barrels.
2008-style destruction or reopening-style surges.
Policy wedges and seasonal stress enter here too.
Fuel is physical. When tanks run low and refineries max out, prices stop behaving politely; and they snap, they don't glide.
Before anything becomes a price, it is a stock-and-flow problem. Every barrel in every tank must be explained by production, imports, exports, refinery runs, demand, or an explicit adjustment. Nothing appears or vanishes
The number the market actually watches is days of supply: inventory divided by demand . When it falls toward the bottom of its seasonal range, scarcity pricing switches on, and it switches on nonlinearly.
Refineries cannot rescue this freely. A barrel of crude yields a roughly fixed slate of products, and diesel plus jet compete for the same middle-distillate molecules . Geography binds too: the five PADD regions are linked by pipelines and ships with finite capacity, so a national average can hide a regional shortage.
Premium demanded by the market as inventories fall below target, and a discount when tanks brim past it (the 2020 storage boundary). Flat when comfortable, steep when short: that curvature is why stressed markets overreact in both directions ASSUMPTION curve shape illustrative; calibrated per product/region in production.
A pump price is built like a receipt: barrel value, refining premium, geography, taxes, and margin, stacked in that order. Nothing is a mystery fee.
The bridge starts with arithmetic nobody can argue with: a barrel holds 42 gallons, so $1/bbl of crude is exactly 2.381¢/gal of raw barrel value .
Everything added on top has a name and a mechanism. The crack spread is the refining market's own scarcity price for turning crude into product . Regional basis is the price of geography: the same gallon costs more where tanks are short and pipes are full . The spec insists these are different mechanisms and must never be merged.
Taxes stay flat: fuel taxes are additive cents-per-gallon wedges, so a crude shock does not scale them. Distribution margins move slowly. The sum is the long-run retail target the pump price will chase .
Gas stations reprice over weeks, not minutes. About half the move shows up within two weeks, most of it within a month. Diesel drags behind.
Wholesale reprices in hours. The pump does not. Stations work off inventory bought at old prices and compete locally, so the retail price closes the gap to its target on a measured schedule .
The anchored prior, from EIA's pass-through study: gasoline realizes roughly 50% of the move by week 2 and 80% by week 4 ANCHORED. Diesel, sold on more contracts and fewer street corners, moves slower.
This lag is the first place the shock's timing gets shaped. Households feel gasoline within days; the freight and food effects downstream are still weeks away. One shock, many clocks.
Press ▶ Run in the player below to watch the weeks unfold across the whole page; the vertical marker tracks the simulation clock.
Before you feel it at the register, truckers, airlines, and farms feel it in their operating costs. Their exposure is measurable, not vibes.
Fuel is not just something households buy. It is a production input, and each sector's exposure is its fuel cost share times the fuel price change .
Two shares are anchored hard. ATRI's 2025 benchmark puts trucking at $2.336 per mile, $0.482 of it fuel: 20.6% of operating cost. BTS puts domestic airline fuel at 15.2% of operating expense. Farm and food-processing exposures run through fuel and feedstock (fertilizer) and are flagged provisional in v0.12.
Note what these cards show: cost shocks, not price changes. Whether a trucker's cost shock becomes a matching freight-rate hike depends on contracts, competition, and balance sheets. That is Stage 7, and the spec forbids confusing the two (INV-07).
Trucking translation: $2.336/mi becomes $2.43/mi.
Costs echo through supply chains in shrinking rounds; they don't multiply forever. How far each round travels is a business decision, not physics.
Direct fuel exposure is only the first round. The trucker's diesel becomes the grocer's freight bill; the farmer's fuel becomes the miller's wheat cost. The BEA input-output tables and USDA's Ag-FEDS food tables describe exactly who buys from whom.
But the spec draws a hard line: those tables describe production requirements, not pricing behavior. Each round of cost travels onward only to the extent firms pass it through, the Λ in . With pass-through below one, the rounds shrink geometrically and the total converges .
This kills a popular error: you cannot take a BEA "total requirements" coefficient and call it a CPI multiplier (INV-03). Drag the pass-through slider and watch how much of the folk multiplier is really a behavioral assumption.
Round 0 = the direct energy cost, indexed to 100. Each later round = suppliers passing their own cost increase onward. NY Fed survey mean pass-through: ≈60% ANCHORED. Average supplier cost linkage per round ≈0.5 ASSUMPTION.
Companies soak up part of every shock with hedges, old inventory, contracts, and squeezed margins. Only what's left over becomes a price increase.
Between a cost shock and a price change sits a balance sheet. Hedges absorb the front of the shock, old inventory delays it, contracts lock the response, and only then does a pricing decision get made. The NY Fed's evidence: firms pass through ≈60% on average, but the rate rises as the unrecovered gap grows. Big shocks break the usual stickiness.
The spec's accounting frame: every point of the shock must land somewhere. Drag the week, or let the simulation drive it.
Only the last slice becomes measured inflation. Margin absorption also burns working capital: if the liquidity gap opens, firms accelerate pricing or cut output
Falling-cost episode: the shares read as relief. "Passed through" is price cuts reaching customers; "absorbed in margin" is the windfall firms keep while their old hedges and contracts still price the relief away.
Here's what the shock costs your household per month, and how much of official inflation it explains. Your basket and the CPI's basket are not the same thing.
Weeks in, the surviving pressure reaches the household as a set of category price changes. The burden is simple arithmetic over the family's own basket : gasoline directly, food and airfare through the freight and processing chain you just walked.
The same category changes, weighted by national CPI weights instead of your basket, give the shock's direct CPI contribution . Those are different numbers, and the difference matters: a two-car exurban household lives a different inflation rate than the index.
Households then respond: buffers smooth the hit for a while , and what cannot be smoothed becomes less driving, less flying, less eating out . That response is the seed of Stage 9.
| Category | Your basket % | Price Δ | $ / month | CPI weight |
|---|
Price Δ at the simulated week (see the player). Food and airfare changes are the modeled pass-through from Stages 5–7, not observed grocery prices ASSUMPTION. CPI weights illustrative of BLS relative importance ASSUMPTION. The engine version swaps both for live BLS data.
Prices can stay high even after "inflation" returns to normal. And the cure for high prices is, slowly and painfully, the high prices themselves.
The spec calls this its core teaching graphic. A one-time shock raises the price level and, for a while, the inflation rate. But once the higher level enters the year-ago comparison base, its inflation contribution falls to zero, even though prices never came back down (INV-04).
That is why "inflation is back to 2%" and "everything is still expensive" are both true sentences. And if the shock reverses, the base effect runs the other way: measured inflation goes negative while the price level merely returns to normal.
Meanwhile the loop closes underneath: households cut consumption, retail volumes fall, freight demand falls, industrial output slows, fuel demand drops, inventories rebuild, scarcity fades . The system self-corrects, on a delay measured in months. 2008 is the textbook case.
This page runs the spec's Mode A live in your browser: transparent arithmetic on one lever, played out on the simulation clock. The production engine adds three deeper modes on the same causal chain, twelve modules, and ten invariants that keep it honest.
Hold the world fixed, move one input, trace the arithmetic. Teaching mode.
LIVE ON THIS PAGEStart from live EIA state, apply an event, let feedback run endogenously.
PRODUCTION BUILDObserved vs. modeled paths for 2008, 2020, 2021–23. Calibration in the open.
PRODUCTION BUILDDraw correlated events and parameters; report P10/P50/P90 with tail drivers, always labeled P(Y | regime, state, distributions).
PRODUCTION BUILD| ID | Source | Used for | Freq. |
|---|
The tiles are the live instruments from the story view; scrub or play in the bar below. Esc returns to the story.