Sam Pybis

Updated datasets

Oil supply, demand and risk shocks

Last updated 25 October 2026 · Data to August 2026 · Notes on the data · Report a problem

Ready (2018) showed that a month’s change in the oil price can be split into three parts using only asset prices: a risk shock, the part explained by an unexpected move in the VIX; a demand shock, the part explained by the return on oil producers’ shares once that VIX move is taken out; and a supply shock, the rest. Producers gain when demand rises but are roughly hedged against supply disruptions, which is what makes their shares a useful control. The three shocks are uncorrelated and add up to the oil price change exactly.

The paper’s sample ends in 2011 and its inputs are Datastream and NYMEX series. Here the decomposition is rebuilt from free sources, checked against the paper over its own sample, and extended to August 2026.

71%of the variance of monthly oil price changes since 1986 comes from supply shocks
26%from demand shocks, and 3% from risk shocks
+1.0%oil price change in August 2026: supply −4.2, demand +4.2, risk +1.0
+61log points of supply shock in August to October 1990, the Gulf War; the demand shock was 0
0.61R² of the US market return on the three shocks over the paper’s sample (paper: 0.60)
Oil price changes and the three shocksMonthly, from February 1986. Log changes, in per cent, or cumulated from January 1986 in log points. Shaded bands are NBER recessions.
  • Cumulative since 1986: supply shock
  • NBER recession

Sources: WTI spot price and the VIX from FRED; oil producer returns from Kenneth French’s data library; decomposition as in Ready (2018).

Hover over the chart, or select it and use the arrow keys, to read monthly values.

Show the last 24 months as a table
MonthWTI, $ at month endOil price change, %Supply shockDemand shockRisk shockVIX innovation
Aug 202687.03+1.0−4.2+4.2+1.0−0.09
Jul 202686.16+20.0+7.9+11.7+0.4−0.04
Jun 202670.56−25.6−19.3−6.2−0.1+0.01
May 202691.16−17.5−10.1−9.3+1.9−0.18
Apr 2026108.64+5.5+11.4−9.1+3.2−0.31
Mar 2026102.86+42.9+31.1+14.7−2.9+0.28
Feb 202666.96+3.7−3.9+9.2−1.5+0.15
Jan 202664.50+11.9+0.0+13.0−1.1+0.10
Dec 202557.26−2.3−0.2−3.4+1.2−0.12
Nov 202558.58−5.3−6.5+0.6+0.6−0.06
Oct 202561.75−2.3−0.9−0.8−0.6+0.06
Sep 202563.17−1.9−0.4−1.4−0.1+0.01
Aug 202564.36−8.9−11.7+1.7+1.1−0.11
Jul 202570.36+5.9+3.6+1.8+0.5−0.05
Jun 202566.30+7.6+4.1+1.9+1.6−0.15
May 202561.46+3.2+3.0−2.2+2.3−0.22
Apr 202559.55−18.8−3.9−13.3−1.7+0.16
Mar 202571.87+2.7−0.7+5.1−1.8+0.17
Feb 202569.97−4.0−6.8+4.4−1.6+0.16
Jan 202572.84+0.6+0.1+0.1+0.4−0.04
Dec 202472.44+5.9+15.0−7.9−1.2+0.12
Nov 202468.26−1.9−5.5−1.1+4.7−0.44
Oct 202469.58+1.2+1.3+3.3−3.5+0.33
Sep 202468.75−8.1−4.3−3.0−0.8+0.07

Shocks in log points (percentage points of the log change); the three add up to the oil price change. The VIX innovation is the residual of an ARMA(1,1) for the log VIX.

Download the data and code

Both scripts download the inputs when they run and estimate the ARMA(1,1) by the same conditional least squares, so they give the same output to the six significant figures written in the file. The whole series is re-estimated each time: see the notes below.

Read the code

Loading the script…

How the shocks are identified

Three monthly series go in: the log change in the oil price, Δp; the log return on an index of oil producers, Rprod; and the innovation to the VIX, ξVIX, the residual of an ARMA(1,1) fitted to the log of the index. Ready (2018, Section 3.1) writes the observed vector X = (Δp, Rprod, ξVIX)′ as X = AZ, where Z = (s, d, v)′ holds the supply, demand and risk shocks and

A = 1110a22a2300a33

The first row says the three shocks add up to the oil price change. The zeros say that producer returns do not respond to supply shocks, and that the VIX innovation responds only to the risk shock. The remaining three elements of A are chosen so that A−1ΣX(A−1)′ is diagonal, where ΣX is the covariance matrix of X: the shocks are uncorrelated by construction. This is the usual recursive identification of a structural VAR, renormalised so that the shocks are measured in units of the oil price rather than with unit variance. In regression terms, v is the fitted value of Δp on ξVIX; d is the fitted value of Δp on the part of Rprod that is orthogonal to ξVIX; and s is the residual.

Two details are choices made here. The demand and risk shocks are given a mean of zero, so the average drift in the oil price, 0.3% a month since 1986, sits in the supply shock; the covariances, and so A, are the same either way. And the ARMA and ΣX are estimated over the whole sample, as in the paper, so every value in the file is re-estimated when a month is added. The _realtime columns hold the shocks estimated only on data up to each month, from a first window of 120 months; they never change once published, and their correlations with the full-sample shocks are 0.99 for supply, 0.99 for demand and 0.72 for the much smaller risk shock.

Replication

Before extending anything, the decomposition was rebuilt over the paper’s own sample, January 1986 to December 2011, from the public inputs below. The paper’s summary statistics (Table III, Panel B) and its regression of the US market return on the shocks (Table IV, Panel A) are shown beside the same figures computed here. replicate_ready.py repeats the comparison.

1986 to 2011PaperHere
Annualised volatility of oil price changes0.340.34
Annualised volatility of the supply shock0.300.31
Annualised volatility of the demand shock0.150.14
Annualised volatility of the risk shock0.040.03
Share of variance: supply / demand / risk78 / 21 / 1%81 / 18 / 1%
Correlation of each shock with the oil price change0.88 / 0.45 / 0.110.90 / 0.42 / 0.10
Market return on the demand shock, slope (s.e.)0.370 (0.046)0.418 (0.051)
Market return on the supply shock, slope (s.e.)−0.102 (0.021)−0.097 (0.022)
Market return on the VIX innovation, slope (s.e.)−0.184 (0.012)−0.184 (0.011)
R² of that regression0.6040.613
Univariate R²: demand / supply / VIX innovation0.124 / 0.036 / 0.4440.135 / 0.034 / 0.445
Market return on the raw oil price change, slope (s.e.)0.031 (0.027)0.026 (0.038)

Market return: the CRSP value-weighted index in the paper, Fama and French’s market return (Mkt-RF plus RF) here; both in logs with White standard errors. The paper’s regressions use 315 months, the rebuild 311 (February 1986 to December 2011).

The paper’s central result survives the change of inputs: on its own the oil price change has no relation to the stock market (R² of 0.3%), but once it is split, demand shocks are strongly positive for returns and supply shocks strongly negative. The industry pattern in the paper’s Table V also holds with the Fama–French ten industries: consumer durables, retail, non-durables and the “other” group load most negatively on supply shocks, energy not at all, and every industry loads positively on demand shocks.

Inputs and what changed

SeriesIn the paperHereEffect
Oil price changeOne-month log return on the second-nearest NYMEX WTI contract (Datastream)Log change in the month-end WTI spot price at Cushing (FRED, DCOILWTICO)The EIA stopped publishing NYMEX contract prices on 5 April 2024. Over February 1986 to March 2024, shocks built from the EIA’s contract-2 series and from the spot price have correlations of 0.97 (supply) and 1.00 (demand and risk). The paper’s own quarterly analysis also uses the spot WTI (with a stock-volatility series in place of the VIX) and reports shock correlations of 0.99 and 0.93 with its main series.
Oil producer returnDatastream World Integrated Oil & Gas Producers indexFama–French 49-industry “Oil” portfolio, value-weighted, from Kenneth French’s data library (US-listed firms)The paper reports (footnote 6) that other producer indices give similar results. The slope on the demand shock is somewhat larger here, 0.42 against 0.37.
VIXCBOE VIX, “published back to 1986”CBOE VIX at month end (FRED, VIXCLS) from January 1990; the older VXO (VXOCLS) for 1986 to 1989, the years the VIX itself does not coverThe two indices move together; the ARMA is fitted to the spliced log series. The innovation’s correlation with the market return is −0.67 in the paper and here; with producer returns it is −0.45 in the paper and −0.42 here.
VIX innovationResidual of an ARMA(1,1) for the log VIXThe same, estimated by conditional least squares in both scriptsCorrelation of 0.99999 with exact maximum likelihood residuals.

What the shocks say about past episodes

EpisodeOil price changeSupplyDemandRisk
Gulf War, August to October 1990+54+610−7
Financial crisis, July to December 2008−114−69−32−14
Shale glut, July 2014 to January 2015−80−49−26−5
Covid, January to April 2020−116−76−24−15
Reopening, May to June 2020+71+73−3+1
January to June 2022+36+11+33−8
March 2026+43+31+15−3

Sums of the monthly log changes over each episode, in log points. The Gulf War is the paper’s own test case (its Section 3.3.a): a supply shock that oil producers’ shares shrugged off while the market fell.

Before you use it

Why it matters

Oil price changes and stock returns are almost uncorrelated, which has long looked like a puzzle given how much oil matters for the economy. Ready (2018) resolves it: supply-driven rises in the oil price are bad for stocks and for output, demand-driven rises are good for both, and the two cancel in the raw data. Because the shocks are identified from prices rather than from production data or news events, they are available monthly and in real time, which makes them usable in forecasting and asset-pricing work that quarterly SVAR shocks cannot support.

How to cite

If you use the shocks, please cite the paper that defined the method. A reference for this page is included in case it helps.

@article{Ready2018,
  author  = {Ready, Robert C.},
  title   = {Oil prices and the stock market},
  journal = {Review of Finance},
  volume  = {22},
  number  = {1},
  pages   = {155--176},
  year    = {2018},
  doi     = {10.1093/rof/rfw071}
}

@misc{PybisOilShocks,
  author       = {Pybis, Sam},
  title        = {Oil supply, demand and risk shocks after {Ready} (2018), monthly, 1986 to August 2026},
  year         = {2026},
  howpublished = {\url{https://sampybis.co.uk/updated-data/oil-shocks.html}},
  note         = {Updated 25 October 2026}
}

More updated datasets: Job openings-to-employment ratio · Large public-company bankruptcies · Technical trend indicators · all. Looking for something else? My guide to data for empirical finance covers more than 80 sources.

Provided as is for research and teaching; not a trading recommendation. Check the original sources before relying on the figures. The scripts are released under the MIT licence and the series built here under CC BY 4.0; the underlying sources keep their own terms and should be cited as above. If a figure looks wrong, please let me know.