Physical Oil Prices Caught Down to Futures: Comparing John Kemp's Call with Same-Day Data
By OilPriceAPI · Published · Data: EIA daily spot prices through Nov 3, 2026; same-day futures
This page compares a post by energy analyst John Kemp with same-day data. Our numbers agree with him. Physical Brent was +$33.84 over front-month futures on Oct 2, 2026, and +$2.25 on Nov 3. The observation and the framing are Kemp's; we only rebuilt the figures.
The claim, in John Kemp's words
On Nov 6, 2026, John Kemp posted “Physical oil prices plunge, closing gap with futures”: “Physical crude oil prices have slumped much faster than futures in the last few weeks, largely eliminating the record gap that opened up between them in September and the first part of October.” His post carries his own chart; read it on X.
The same-day gap, rebuilt
We take EIA's daily physical prices, Europe Brent spot (series RBRTE) and WTI spot at Cushing (RWTC), and subtract the front-month futures price on the same date: ICE Brent and NYMEX WTI, as the daily average of the intraday quotes we capture. Matching dates matters. A Nov 3 spot price minus a Nov 12 futures price shows a premium that no longer existed.
The Brent physical premium averaged +$12.47 in Sep 2026 and +$16.26 in Oct 2026. It peaked at +$33.84 on Oct 2, 2026 (spot $135.51, futures $101.67), and averaged +$25.47 in the week of Oct 5 to Oct 9. By Nov 2 it was +$0.06 (spot $107.39, futures $107.33), and +$2.25 on Nov 3 (spot $107.03, futures $104.78).
WTI tells a smaller version of the same story. The Cushing premium averaged +$6.07 in Oct 2026, peaked at +$12.14 on Oct 19, and was +$1.36 on Nov 2 and +$2.80 on Nov 3.
| Period | Brent ($/bbl) | WTI ($/bbl) |
|---|---|---|
| Apr 2026 | +$15.03 | +$2.21 |
| Jul 2026 | +$0.17 | +$1.49 |
| Aug 2026 | +$3.44 | +$1.83 |
| Sep 2026 | +$12.47 | +$2.00 |
| Oct 2026 | +$16.26 | +$6.07 |
| Nov 2 and 3, 2026 | +$1.16 | +$2.08 |
Source: EIA RBRTE and RWTC daily spot prices; OilPriceAPI daily averages of front-month ICE Brent and NYMEX WTI futures, same dates. Averages of trading days with both prices.
Was it a record?
On our 2026 data, October was the widest month for the Brent physical premium, and Oct 2 the widest day. April came close: the premium averaged +$15.03 in Apr 2026. Our same-day series starts in Jan 2026, so we cannot test Kemp's “record” against earlier years here. He has the longer history; we don't contradict it.
What opened the gap, and what closed it
EIA's Nov 10, 2026 Short-Term Energy Outlook describes the setting. Attacks on tankers around the Middle East and in the Black Sea cut the number of available tankers and pushed freight rates up sharply. That raises the price of a cargo available now relative to a futures contract.
The same report says Middle East exports rose slightly in October after the Saudi East-West Pipeline restarted, and ship-to-ship transfers along Oman's coast added supply. EIA says that showed in prices in late October and early November, with Brent spot falling below $100 on Nov 4. That is EIA's account; the data here show the timing matches it.
Compute it yourself with OilPriceAPI
The codes are BRENT_SPOT_USD (EIA RBRTE), BRENT_CRUDE_USD (ICE Brent front month), WTI_SPOT_USD (EIA RWTC) and WTI_USD (NYMEX WTI front month). The snippet matches dates before subtracting. Our own Brent physical vs futures and WTI physical vs futures pages currently subtract a futures price from a later date. That is being fixed in website-clean#3283. Until it ships, use the same-date method here rather than the pages' headline spread. Separately, six spring 2026 daily values of BRENT_SPOT_USD in history are being corrected (api#10854); they do not affect the September to November figures above.
import requests
HEADERS = {"Authorization": "Token YOUR_API_KEY"}
URL = "https://api.oilpriceapi.com/v1/prices/past_year"
def daily(code):
r = requests.get(URL, params={"by_code": code}, headers=HEADERS, timeout=15)
r.raise_for_status()
# One daily row per date; key by the date, never by fetch time.
return {row["created_at"][:10]: row["price"] for row in r.json()["data"]}
spot, futures = daily("BRENT_SPOT_USD"), daily("BRENT_CRUDE_USD")
# Subtract only where both have the SAME date. EIA spot lags about a week.
for day in sorted(set(spot) & set(futures))[-5:]:
print(day, round(spot[day] - futures[day], 2))A caveat: EIA spot lags about a week
EIA publishes its daily spot prices weekly. On Nov 12, 2026 the latest published day was Nov 3, 2026. Any comparison with physical prices is about a week behind the futures market.
Related: live Brent price, Brent price history, Brent futures curve, and our earlier check where the Strait of Hormuz barrels went.
Credit: original work
The observation, the framing and the chart compared here are John Kemp's: “Physical oil prices plunge, closing gap with futures” (Nov 6, 2026). Follow him at @JKempEnergy. We only compared his published call with EIA's data and ours.
Sources
- EIA daily spot prices RBRTE and RWTC, EIA Open Data API v2, retrieved Nov 12, 2026 (latest day Nov 3, 2026).
- OilPriceAPI daily averages of intraday front-month futures quotes,
BRENT_CRUDE_USD(ICE Brent) andWTI_USD(NYMEX WTI), same dates. - EIA Short-Term Energy Outlook, released Nov 10, 2026, Global oil markets section.