---
title: "Commodity Spreads"
book: "Strategies II: Volatility, Relative Value, Macro and the Bank Desks"
subject: quant
language: en
chapter: 21
exercises: 8
source: https://one-course.com/books/quant/9/en/chapter/21-commodity-spreads
---

# Chapter 21 — Commodity Spreads

A refinery earns the difference between the crude it buys and the products it sells. A trader who holds that difference, rather than oil, is betting on refining margins, storage and the seasons, not on the price of oil. From 2006 to 2026 the New York Harbor 3-2-1 crack spread, computed from EIA spot prices, averaged $21.30 a barrel and reverted with a half-life of about 51 trading days. A rule fading its deviations earned a Sharpe ratio of 0.48 with a correlation of $-0.02$ to crude’s daily moves. On this chapter’s synthetic market, where the crack has a planted season and a planted mean reversion, the same rule earns a Sharpe ratio of 1.05, with a correlation of $-0.12$ to crude. The build is `firm.commspread`.

## 21.1 Calendar spreads again

A calendar spread (Book 1, chapter 19) is the simplest commodity spread: one commodity at two dates, priced by storage and convenience yield. This chapter’s spreads join different commodities, grades or places. Each is priced by a physical activity that converts one into the other: refining, generating, crushing, shipping, blending. The activity puts bounds on the spread. When the crack is too narrow, refiners cut runs and product inventories fall; when too wide, they run harder. That is the economic reason for the mean reversion a trader fades, and the reason it can fail when the activity itself is blocked.

**Definition 21.1 (Processing-spread trade).**

A *processing-spread trade* is a position in an input commodity against the outputs made from it, in the ratio the process yields (crude against gasoline and diesel, gas against power at a heat rate, soybeans against meal and oil), that profits from changes in the processing margin rather than in the commodities’ price level.

Girma and Paulson found crude oil, gasoline and heating oil futures prices cointegrated, with stationary spreads between crude and its products. They found historically profitable and statistically significant risk arbitrage in three popular petroleum spreads, though they could not be certain that these opportunities still existed. `firm.commspread` builds the spreads by ratio ([Listing 21.1](#lst-s2-commodity-spreads-build)); with gasoline at $2.50 a gallon, diesel at $3.00 and crude at $80 a barrel, the 3-2-1 crack is $32.

## 21.2 Quality and location

**Definition 21.2 (Location spread).**

A *location spread* is the price difference between the same or nearly the same commodity at two delivery points, bounded in normal times by the cost of moving it between them and widened without bound when the transport capacity is full.

**Definition 21.3 (Quality spread).**

A *quality spread* is the price difference between two grades of one commodity (light sweet against heavy sour crude, high- against low-protein wheat), set by the cost of processing the lower grade into the products of the higher one.

Brent is a seaborne crude priced in the North Sea; WTI is delivered inland at Cushing, Oklahoma. From 2006 to 2026 Brent traded on average $4.76 above WTI, with a standard deviation of $5.97 ([Figure 21.1](#fig-s2-commodity-spreads-real)). The EIA attributed the record spread of 2011, when Brent averaged about $111 and WTI about $95, to transportation bottlenecks near Cushing. In 2017 the EIA wrote that near-term changes in the spread generally come from changes in pipeline capacity or in US crude production. A [location spread](#def-s2-commodity-spreads-location) is a view on pipes.

The daily data hold two warnings. On 20 April 2020 WTI’s spot price was $-\$36.98$, and Brent stood $54.34 above it, the series’ maximum: a delivery point that could not take more crude priced it below zero. And the Brent-WTI spread’s daily changes have an autocorrelation of $-0.36$. Brent is assessed at the London close and WTI at New York’s, so each day’s spread mixes two times, and part of its change is undone the next day. A rule fading the spread’s deviations from its trailing mean earned a Sharpe ratio of 0.85 without April 2020. Entered a day later, it earned 0.32.

![Monthly means of the New York Harbor 3-2-1 crack spread and of Brent minus WTI, from EIA daily spot prices, June 2006 to September 2026. Data: EIA via FRED; s2_fetch_spreads.py.](https://one-course.com/images/onecourse/chapters/quant-9/s2-commodity-spreads/fig-76182d2850d9.svg)

***Figure 21.1.** Monthly means of the New York Harbor 3-2-1 crack spread and of Brent minus WTI, from EIA daily spot prices, June 2006 to September 2026. Data: EIA via FRED; `s2_fetch_spreads.py`.*

## 21.3 Processing spreads: crack, spark, crush

The synthetic crack in `firm.commspread` has four parts: a mean of $20, a seasonal cycle of $5 amplitude that peaks in late April, before the summer driving season, a deviation that reverts with a half-life of 40 days, and a planted lag: when crude jumps, products follow over weeks, so the crack first narrows. Its daily changes have a correlation of $-0.36$ with crude’s, close to the $-0.38$ of the real 3-2-1 crack. Fading the crack beyond 1.5 standard deviations of its trailing year ([Listing 21.2](#lst-s2-commodity-spreads-fade)):

| nine years, $0.10/bbl per unit traded | $/bbl a year | Sharpe ratio | correlation with crude |
| --- | --- | --- | --- |
| fade the crack | 15.4 | 1.05 | $-0.12$ |
| fade the crack, season removed | 6.2 | 0.44 | $-0.07$ |
| long the crack February–April | 7.4 | 0.78 | $-0.15$ |
| fade the [location spread](#def-s2-commodity-spreads-location) | 3.8 | 0.48 | 0.01 |
| fade the [quality spread](#def-s2-commodity-spreads-quality) | 2.6 | 0.98 | 0.01 |
| equal-risk combination |  | 1.69 | $-0.13$ |

Removing each month’s average before fading cuts the crack trade by more than half: much of what the plain rule fades is the season. The two crack rules are one bet on the same seasonal cycle. On the real gasoline crack, the change from the start of February to the end of April was positive in 14 of the 20 years from 2007 to 2026, averaging $6.17 with a $t$-statistic of 2.8; the worst year lost $11.97.

The spark spread is power less gas at a heat rate: at $50 per megawatt-hour, gas at $3 per million British thermal units and a heat rate of 7, it is $29. A trader with a view of which plants will set the price, and at what heat rate, trades the spread at that rate. The crush is soybean meal and oil less the beans they come from. Simon found that deviations of the crush from its long-run equilibrium were transitory from 1985 to 1995, with strong seasonality and a tendency to revert toward its recent five-day average, and that trading rules based on this would have been profitable.

## 21.4 Risk in spread books

A spread has lower volatility than its legs, and a spread book looks well diversified: the combination above has a Sharpe ratio of 1.69. Three risks hide in it. First, the spreads’ reversion depends on the physical activity that links the legs, and when that activity is blocked the spread trends. The synthetic [location spread](#def-s2-commodity-spreads-location) earned $35.3 a barrel over four years by fading, then a planted pipeline bottleneck widened it by $15 over six months. The fade lost $14.1 in those months and $9.3 over the bottleneck’s life, before earning $8.4 afterwards ([Figure 21.2](#fig-s2-commodity-spreads-books)).

Second, a spread is two or more futures positions, each margined, each with its own liquidity, delivery and expiry; the thinner leg sets the cost. Third, the ratio in the trade is a convention, not the process: a refinery’s yields differ from 3-2-1, and the crush’s 44 and 11 pounds are averages. A book that fades several spreads also shares their common drivers. On EIA spot data, the crack fade and the Brent-WTI fade both had their best day of the sample on 20 or 21 April 2020, when WTI’s price went negative; in such a week a book of spreads is one position.

![Cumulative P&L of four synthetic spread rules, in dollars per barrel per unit of spread; the shaded band is the planted pipeline bottleneck that widens the location spread. Data: s2_commspread.market.](https://one-course.com/images/onecourse/chapters/quant-9/s2-commodity-spreads/fig-56f8bca07bbf.svg)

***Figure 21.2.** Cumulative P&L of four synthetic spread rules, in dollars per barrel per unit of spread; the shaded band is the planted pipeline bottleneck that widens the [location spread](#def-s2-commodity-spreads-location). Data: `s2_commspread.market`.*

## 21.5 Strategy files

**Strategy file 21.1 — Crack-spread mean reversion.**

**Who pays you, and why.** Refiners and product buyers hedging at the extremes; refiners’ run changes close the gap with a lag.

**Instruments and venues.** Crude, gasoline and diesel futures in the 3-2-1 ratio; exchange-listed crack spread contracts.

**Signal.** The crack’s deviation from its trailing mean, with or without its season.

**Sizing and execution.** Traded as one spread order where the exchange allows; sized by the spread’s volatility.

**Costs.** Three legs; the thinnest sets the cost.

**How it dies.** Refinery outages and structural shifts in product demand that move the mean.

**Horizon, capacity, infrastructure.** Weeks to months.

**Backtest honestly.** Futures, not spot; synchronous closes; the season separated from the reversion.

**Sources.** Girma and Paulson (1999); EIA spot: Sharpe ratio 0.48 (0.35 without April 2020); this chapter: 1.05 on a planted crack.

**Strategy file 21.2 — Spark spread with a heat-rate view.**

**Who pays you, and why.** Generators and retailers hedging; the market’s view of which plants set the price.

**Instruments and venues.** Power and gas futures or forwards for the same period and region.

**Signal.** The trader’s heat rate for the marginal plant against the market-implied one.

**Sizing and execution.** Gas at the heat rate per megawatt-hour of power.

**Costs.** Power’s wide bid-ask; shape and location mismatch.

**How it dies.** New capacity, outages, weather.

**Horizon, capacity, infrastructure.** Months to seasons; a fundamental power model.

**Backtest honestly.** The plant stack as it was at the time.

**Sources.** No performance figure verified.

**Strategy file 21.3 — Soybean crush trade.**

**Who pays you, and why.** Processors’ margin hedging; crushing capacity closes wide margins.

**Instruments and venues.** Soybean, meal and oil futures (the board crush).

**Signal.** Deviations from a seasonal equilibrium; short-term reversion.

**Sizing and execution.** 44 pounds of meal and 11 of oil per bushel, in contract units.

**Costs.** Three legs.

**How it dies.** Changes in demand for oil (biofuels) or meal that move the equilibrium.

**Horizon, capacity, infrastructure.** Days to months.

**Backtest honestly.** The trend in the equilibrium; out-of-sample periods.

**Sources.** Simon (1999).

**Strategy file 21.4 — Brent-WTI location spread.**

**Who pays you, and why.** Shippers and refiners paying for access to the other market; the spread pays for pipes and tankers.

**Instruments and venues.** Brent and WTI futures.

**Signal.** The spread against transport costs and capacity.

**Sizing and execution.** One contract against one.

**Costs.** Low; roll mismatch between the two contracts’ expiries.

**How it dies.** A bottleneck that widens the spread for a year; delivery-point squeezes.

**Horizon, capacity, infrastructure.** Weeks to years; pipeline and export data.

**Backtest honestly.** Synchronous prices: spot assessments at different closes create false reversion.

**Sources.** EIA (2012, 2017); EIA spot: Sharpe ratio 0.85, 0.32 a day late.

**Strategy file 21.5 — Sweet-sour quality spread.**

**Who pays you, and why.** Refiners who can or cannot process sour crude; complex refineries pay less for it.

**Instruments and venues.** Grade differentials, swaps or physical cargoes.

**Signal.** The differential against the value of the extra processing.

**Sizing and execution.** Barrel for barrel.

**Costs.** Illiquid differentials.

**How it dies.** Changes in supply of one grade (OPEC cuts of sour crude); refinery conversions.

**Horizon, capacity, infrastructure.** Months.

**Backtest honestly.** Assessed prices, not traded ones.

**Sources.** No performance figure verified; this chapter: 0.98 on a planted spread.

**Strategy file 21.6 — Seasonal gasoline crack.**

**Who pays you, and why.** The switch to summer-grade gasoline and the driving season; refiners’ maintenance in spring.

**Instruments and venues.** Gasoline against crude futures, summer contracts.

**Signal.** The calendar.

**Sizing and execution.** Long from February to April.

**Costs.** Two legs, rolled.

**How it dies.** Well-known seasonality priced into the forward curve; a demand shock.

**Horizon, capacity, infrastructure.** Three months a year.

**Backtest honestly.** Futures for the summer month, whose price already includes the season, not spot.

**Sources.** EIA spot: up in 14 of 20 years, mean $6.17, $t$ 2.8.

## 21.6 Tutorial: not the price of oil

**Goal.** Build spreads by ratio, simulate a crack with a season and a lag and a [location spread](#def-s2-commodity-spreads-location) with a bottleneck, fade them, and compare with the EIA spot record. **End state:** the table and two figures.

1. **Spreads by ratio**. `def crack_321 (crude, gasoline, diesel): return (2 * np.asarray(gasoline) + np.asarray(diesel)) * 42 / 3 - np.asarray(crude) def spark (power, gas, heat_rate: float = 7.0 ): return np.asarray(power) - heat_rate * np.asarray(gas) def board_crush (beans, meal, oil): """A 60 lb bushel yields about 44 lb of meal (0.022 short ton) and 11 lb of oil.""" return 0.022 * np.asarray(meal) + 0.11 * np.asarray(oil) - np.asarray(beans)` **Listing 21.1.** The 3-2-1 crack, the spark spread and the board crush. code/firm/commspread/firm_commspread.py
2. **The fade and the season**. `def fade (x, cfg: SpreadConfig | None = None , month=None , delay: int = 1 ): """Short the spread when it is more than `band` trailing sds above its trailing mean, long when below, out when it crosses the mean; with `month`, first subtract each calendar month's average over the trailing window. The position decided at a close earns from `delay` days later; costs per unit traded.""" cfg = cfg or SpreadConfig() x = np.asarray(x, float ) T, w = len (x), cfg.window y = x.copy() if month is not None : for t in range (w, T): past = x[t - w:t] y[t] = x[t] - past[month[t - w:t] == month[t]].mean() + past.mean() pos, cur = np.zeros(T), 0.0 for t in range (w, T): past = y[t - w:t] z = (y[t] - past.mean()) / past.std() if z > cfg.band: cur = -1.0 elif z < -cfg.band: cur = 1.0 elif cur != 0 and np.sign(z) == cur: cur = 0.0 pos[t] = cur held = np.concatenate([np.zeros(delay), pos[:-delay]]) pnl = held * np.diff(x, prepend=x[0 ]) - cfg.cost * np.abs(np.diff(pos, prepend=0.0 )) return pnl, pos def seasonal (x, month, cfg: SpreadConfig | None = None ): """Long one unit of the spread from the first day of February to the last of April each year.""" cfg = cfg or SpreadConfig() x = np.asarray(x, float ) pos = ((month >= 2 ) & (month <= 4 )).astype(float ) held = np.concatenate([[0.0 ], pos[:-1 ]]) return held * np.diff(x, prepend=x[0 ]) - cfg.cost * np.abs(np.diff(pos, prepend=0.0 ))` **Listing 21.2.** Fading the deviation from the trailing mean, and the seasonal rule. code/firm/commspread/firm_commspread.py
3. **Run** `table()` , `bottleneck()` , `bands()` , `fig_commspread.py` and, once, `s2_fetch_spreads.py` .

**What to change next.** Add asynchronous closing times to the synthetic [location spread](#def-s2-commodity-spreads-location) and measure the false reversion; estimate the season from past years only; stop the location fade when transport capacity is full.

## 21.7 Build: commodity spreads

**Purpose.** Spread construction by ratio; a synthetic market of crude, crack, location and [quality spreads](#def-s2-commodity-spreads-quality); fade and seasonal rules.

**Interface.** `crack_321`, `spark`, `board_crush`, `SpreadConfig(…)`, `simulate_spreads(cfg)`, `fade(x, cfg, month, delay)`, `seasonal(x, month, cfg)`.

**Rules.** P&L per unit of spread from the next day’s change; costs per unit traded; trailing windows only.

**Acceptance tests.** `code/firm/commspread/tests/`: the three spreads by hand; the fade’s positions and P&L by hand; the seasonal window; the bottleneck’s shape and the crack’s negative response to crude.

**Stretch.** Futures curves for each leg; a refinery model with run cuts.

Sources and further reading

- P. B. Girma and A. S. Paulson, “Risk arbitrage opportunities in petroleum futures spreads”, *Journal of Futures Markets* 19(8), 1999.
- D. P. Simon, “The soybean crush spread: empirical evidence and trading strategies”, *Journal of Futures Markets* 19(3), 1999.
- US Energy Information Administration, “2011 brief: energy commodity price trends varied widely during 2011”, *Today in Energy* , 2012.
- US Energy Information Administration, “Transportation constraints and export costs widen the Brent-WTI crude oil price spread”, *Today in Energy* , 15 November 2017.
- US Energy Information Administration, daily spot prices of WTI, Brent, New York Harbor gasoline and diesel, via FRED, accessed 25 September 2026.

## 21.8 Exercises

**Exercise 21.1 ★.**

Gasoline is $2.50 a gallon, diesel $3.00 and crude $80 a barrel. What is the 3-2-1 crack?

**Solution of Exercise 21.1.**

$(2 \times 2.50 + 3.00) \times 42 / 3 - 80 = 112 - 80 = \$32$ a barrel.

**Exercise 21.2 ★.**

Power is $50 per megawatt-hour and gas $3 per million British thermal units. What is the spark spread at a heat rate of 7, and at 7.5?

**Solution of Exercise 21.2.**

$50 - 7 \times 3 = \$29$ per megawatt-hour; at a heat rate of 7.5, $50 - 22.5 = \$27.50$. A less efficient plant earns less on the same prices.

**Exercise 21.3 ★.**

Soybeans are $10 a bushel, meal $300 a short ton and oil 50 cents a pound. What is the board crush?

**Solution of Exercise 21.3.**

$0.022 \times 300 + 0.11 \times 50 - 10 = 6.60 + 5.50 - 10 = \$2.10$ a bushel (oil at 50 cents a pound is $0.50 a pound, and $0.11$ is 11 pounds in dollars per cent).

**Exercise 21.4 ★★.**

Why do the daily changes of the crack spread correlate negatively with crude’s?

**Solution of Exercise 21.4.**

Product prices follow crude with a lag: retail and wholesale product markets adjust over days or weeks, so a jump in crude first narrows the crack and a fall first widens it. The real 3-2-1 crack’s daily changes have a correlation of $-0.38$ with WTI’s; the synthetic crack’s $-0.36$ is planted.

**Exercise 21.5 ★★.**

Why does the Brent-WTI fade lose most of its Sharpe ratio when entered a day later?

**Solution of Exercise 21.5.**

Brent is assessed at the London close and WTI at New York’s, so a day’s spread combines prices from different times; a move in oil after London’s close shows up in WTI today and in Brent tomorrow, and the spread’s change reverses. The daily changes have an autocorrelation of $-0.36$. A rule that trades at the day’s close captures that reversal, which no one could trade at those prices; entered a day later, its Sharpe ratio falls from 0.85 to 0.32.

**Exercise 21.6 ★★.**

What economic force makes the crush spread’s deviations transitory?

**Solution of Exercise 21.6.**

Crushing capacity: when the crush is wide, processors buy beans and sell meal and oil, crushing more; when it is narrow, they slow down. Their arbitrage pulls the spread back toward the processing cost, as Simon found for 1985–1995.

**Exercise 21.7 ★★★.**

*Coding.* Run `bands()`. How do the crack fade’s Sharpe ratio and time in the market change with entry bands of 1.0, 1.5 and 2.0 standard deviations, and what would choosing the best one after the fact do to the backtest?

**Solution of Exercise 21.7.**

Sharpe ratios 0.85, 1.05 and 0.65, in the market 73%, 56% and 31% of days. Choosing 1.5 after seeing all three is a small multiple test: the reported 1.05 is the best of three trials and overstates what the rule would earn next (Book 4’s deflated Sharpe ratio applies). The band should be fixed before the test, or chosen on data before the evaluation period.

**Exercise 21.8 ★★★.**

*Find the flaw.* “Our location fade made $35 a barrel in four years; the spread always comes back to transport cost, so we doubled it.”

**Solution of Exercise 21.8.**

The spread comes back to transport cost only while transport capacity is spare. In the synthetic market a pipeline bottleneck widened the spread by $15 over six months, and the fade lost $14.1 in those months after earning $35.3 in four years; doubling the position doubles that loss. The EIA attributed the record Brent-WTI spread of 2011 to bottlenecks near Cushing. Fading a [location spread](#def-s2-commodity-spreads-location) needs a view on capacity, and a stop when it is full.

## 21.9 Problem: Not the Price of Oil

**Problem 21.1.**

Weekend problem — commodity spreads

The chapter’s synthetic spreads and the EIA record.

**Part I — Spreads.**

1. Define a [processing-spread trade](#def-s2-commodity-spreads-processing) , a [location spread](#def-s2-commodity-spreads-location) and a [quality spread](#def-s2-commodity-spreads-quality) .
2. What bounds each spread, physically?
3. What did Girma and Paulson find?
4. What did Simon find for the crush?

**Part II — The record.**

5. Give the real 3-2-1 crack’s mean, half-life and correlation with crude.
6. What happened to Brent-WTI in 2011 and in April 2020?
7. Why do the daily Brent-WTI changes revert, and what does it do to a backtest?
8. What did the real gasoline crack do from February to April?

**Part III — The synthetic market.**

9. Describe the synthetic crack.
10. Give the table of rules.
11. Why does removing the season halve the crack fade?
12. What did the bottleneck do to the location fade?

**Part IV — The verdict.**

13. State the *named result* : the crack-spread trade’s Sharpe ratio and its correlation with crude.
14. Why is the combination’s Sharpe ratio of 1.69 flattering?
15. Which three risks hide in a spread book?
16. How would you backtest the crack fade honestly?
17. When should a location fade stop?
18. Which strategy file needs a fundamental model?
19. How does a spread book relate to chapter 16’s systematic macro?
20. In one sentence: what does a spread trader bet on?

**Solution of Problem 21.1.**

1. A [processing-spread trade](#def-s2-commodity-spreads-processing) holds an input against its outputs in the process’s ratio, to profit from the margin; a [location spread](#def-s2-commodity-spreads-location) is one commodity’s price difference between two places; a [quality spread](#def-s2-commodity-spreads-quality) is the difference between two grades.
2. Processing capacity and its cost (refining, generating, crushing); transport capacity and cost; the cost of upgrading the lower grade.
3. Crude, gasoline and heating oil futures are cointegrated with stationary spreads, and risk arbitrage in three spreads was historically profitable, though perhaps no longer.
4. Deviations from a seasonal, trending equilibrium were transitory, with reversion to the recent five-day average, and simulated rules would have been profitable.
5. Mean $21.30, half-life about 51 trading days, correlation of daily changes with WTI’s $-0.38$ .
6. In 2011 Brent averaged about $111 and WTI about $95, a record spread the EIA attributed to bottlenecks near Cushing; on 20 April 2020 WTI’s spot price was $-\$36.98$ and Brent stood $54.34 above it.
7. The two prices are assessed at different closing times; changes have an autocorrelation of $-0.36$ , and a same-close rule captures a reversal no one could trade: the fade’s Sharpe ratio falls from 0.85 to 0.32 a day later.
8. It rose in 14 of 20 years, by $6.17 on average, $t$ -statistic 2.8, worst year $-\$11.97$ .
9. A $20 mean, a $5 seasonal cycle peaking in late April, a deviation reverting with a 40-day half-life, and a planted lag behind crude.
10. Crack fade $15.4 a year, Sharpe ratio 1.05, correlation $-0.12$ ; season removed 6.2, 0.44, $-0.07$ ; February–April 7.4, 0.78, $-0.15$ ; location 3.8, 0.48, 0.01; quality 2.6, 0.98, 0.01; combination 1.69, $-0.13$ .
11. The plain rule fades the season as well as the deviation; without the season, only the deviation is left.
12. It earned $35.3 over four years, lost $14.1 in the bottleneck’s first six months and $9.3 over its life, and earned $8.4 after.
13. The synthetic crack fade earns a Sharpe ratio of 1.05 with a correlation of $-0.12$ to crude’s daily moves; on EIA spot data, 0.48 with $-0.02$ (0.35 without April 2020, 0.24 a day late).
14. Two of its four rules are one bet on the crack’s season; the planted effects are strong; and the combination’s risk is measured in a sample with one bottleneck.
15. Reversion that depends on a physical link that can break; legs with their own margin, liquidity and expiry; ratios that are conventions.
16. On futures, not spot, at synchronous closes, with parameters fixed before the test and the season estimated from past years only.
17. When the transport capacity is full: the spread then prices the scarcity of the pipe, not a deviation.
18. The spark spread with a heat-rate view: it needs a model of the plant stack.
19. Both trade many markets on simple signals with equal risk; spreads remove the level of each commodity, which systematic macro keeps.
20. On the physical activity that links the legs: the margin of refining, generating, crushing or moving the commodity.

## 21.10 Interview questions

**Interview question 21.1 ★ trader.**

What is a 3-2-1 crack spread, and who hedges it?

**Solution of Interview question 21.1.**

Three barrels of crude against two of gasoline and one of distillate: a rough refinery margin. Refiners hedge it by selling products and buying crude forward; airlines and product buyers hedge the other side.

**Interview question 21.2 ★★ researcher.**

A spread shows strong mean reversion in daily data. How do you check it is not an artefact?

**Solution of Interview question 21.2.**

Check that the legs are recorded at the same time; test the rule entered a day later; use traded futures, not assessments; look at the autocorrelation of daily changes (a strongly negative one is a sign of asynchronous or noisy prices); and check that the reversion survives costs and out-of-sample periods.

**Interview question 21.3 ★★ trader.**

Brent-WTI has widened $10 in a month. Do you fade it?

**Solution of Interview question 21.3.**

Only after asking why: if pipelines or export capacity are full, the spread prices scarce transport and can keep widening, as in 2011; if it is a temporary outage or a delivery squeeze, a fade with a stop may pay. The EIA’s view is that near-term changes come from pipeline capacity or production.

**Interview question 21.4 ★★ risk.**

How would you set limits on a book of commodity spreads?

**Solution of Interview question 21.4.**

Limits on each spread’s risk and on each leg’s outright position and liquidity; stress tests that break each spread’s link (bottlenecks, outages, squeezes) and a common scenario for all of them; limits near expiries and delivery.

**Interview question 21.5 ★★ developer.**

How would you store and roll the legs of a three-leg spread in a backtester?

**Solution of Interview question 21.5.**

Store each leg as its own futures series with its own roll calendar; build the spread from the legs at synchronous timestamps; roll the legs together, or record the roll mismatch; compute costs per leg, and margin per leg or per recognised spread.

**Interview question 21.6 ★★★ researcher.**

Two prices follow the same random walk but are recorded at different times of day, a fraction $f$ of a day apart. Show that the daily changes of their difference have a first-order autocorrelation of $-1/2$ whatever $f$, and say what happens when the true spread also moves.

**Solution of Interview question 21.6.**

Split day $d$ into the part before the earlier recording time and the last fraction $f$. The spread is the price’s increment over the last $f$ of the day, $S_d = W_d$. So $\Delta S_d = W_d - W_{d-1}$ and $\Delta S_{d+1} = W_{d+1} - W_d$, with independent increments of variance $f\sigma^2$: the covariance is $-f\sigma^2$ and the variance $2f\sigma^2$, so the autocorrelation is $-1/2$ whatever $f$. If the true spread also moves, its own changes add variance without this covariance, and the autocorrelation lies between $-1/2$ and zero, like the real $-0.36$.
