Your Oil Inventory Window Is on the Wrong Day This Week — and the Wrong Hour

Terbit: Diperbarui: 2026/09/09 11.47 UTC

The EIA Weekly Petroleum Status Report is not at 14:30 UTC today. Labor Day pushed it to Thursday 10 September at noon Eastern — 16:00 UTC. That is a different day and a different hour: the normal slot is Wednesday at 10:30 Eastern, 14:30 UTC. The API inventory number, normally Tuesday, runs tonight at 20:30 UTC. And the EIA natural gas storage report is not delayed at all: it lands Thursday at 14:30 UTC, in exactly the slot where your calendar expects the oil number. In a week where oil is the dominant input into every FX pair we cover, that is three separate ways for an event filter to be wrong.

The correction, and who got it wrong — including us

The EIA's own holiday release schedule puts the report covering the week ending 4 September on Thursday 10 September at noon Eastern. An energy-trade calendar independently gives the same thing: API delayed from Tuesday to Wednesday 4:30 p.m. Eastern, the Weekly Petroleum Status Report delayed from Wednesday 10:30 a.m. to Thursday noon, natural gas storage unmoved on Thursday at 10:30 a.m.

At least one widely-read FX daily still listed “EIA Crude Oil Stock Change” under Wednesday this morning. A general-purpose economic calendar we sampled listed the API number correctly for tonight but carried no EIA oil entry at all. And this desk published, at 06:45 UTC yesterday morning, a week-ahead table with EIA crude inventories at 14:30 UTC on 9 September. That was wrong. We took it from a single aggregator and did not check it against the agency. The agency publishes its holiday schedule on a public page and it took one fetch.

We are spelling that out rather than quietly fixing it because the failure mode is the point of this article. Nobody mis-times a release on purpose. It happens because a weekly event feels like a constant, and constants do not get re-checked.

A shifted window is worse than a missing one

If a release simply vanished, your filter would block a quiet period and you would lose a little expectancy to over-caution. That is cheap. A shifted release is expensive in both directions at once.

Today your filter blocks 14:29 to 14:35 UTC for an event that is not happening, so you sit out the twenty minutes immediately after the New York option cut — which, with EUR/USD expiries at 1.1615 and 1.1600 rolling off at 14:00, is one of the few genuinely interesting windows on an otherwise empty afternoon. Tomorrow it lets you trade straight into 16:00 UTC with full size.

Then there is the string-matching trap. If your calendar filter keys on the source name rather than the series — and a surprising number do, because “block anything tagged EIA” is the easy rule to write — tomorrow at 14:30 UTC it will fire on natural gas storage, an event that has never moved USD/CAD, and it will be open at 16:00 UTC for the crude number that has. It will do exactly the wrong thing twice, and the log will look like the filter worked.

This is the general shape of the problem and it is not specific to oil. Any rule that encodes when rather than what degrades silently. It does not throw an error. It just stops describing the world, and your backtest — run against a calendar file that has the historical dates right — will never show you that it happened.

Thursday is the cluster, and it is bigger than you think

The corrected schedule makes tomorrow considerably denser than the version most calendars are carrying. In UTC:

  • 12:15 — ECB decision (deposit rate expected 2.25% to 2.50%)
  • 12:30 — US August PPI (consensus 0.0% m/m, core +0.2%, 4.7% y/y against 5.3% prior) and initial jobless claims (consensus 206,000)
  • 12:45 — Lagarde press conference and staff projections
  • 14:00 — US existing home sales and wholesale inventories
  • 14:30 — EIA natural gas storage (not crude)
  • 16:00 — EIA Weekly Petroleum Status Report (this is crude)
  • 17:00 — US 30-year bond reopening

Seven windows in four and three-quarter hours, three of them in a thirty-minute block, and the two that matter most for the oil complex sit at the back end where a European-hours system is least likely to be watching. The crude number arrives while the 30-year auction is being priced. If you were planning to be flat for the ECB and back on afterwards, “afterwards” on Thursday does not begin until 17:15 UTC at the earliest.

Today's actual windows, in UTC

  • 12:15 — ADP weekly employment change (consensus 11.75K; one source for the time)
  • 14:00 — 10am New York option cut; EUR/USD 1.1615 and 1.1600 expire
  • 15:30 — 17-week bill auction
  • 17:00 — US 10-year note reopening (12 August cleared 4.683%)
  • 20:30 — API crude oil stock change (consensus −2.6M)

There is no 12:30 UTC release. Two independent calendars agree on that, which is the standard we hold a negative claim to. So the New York open at 13:00 UTC is a liquidity event and not an information one, and the first thing capable of moving oil today is the API print at 20:30 — after the European close, in thin conditions, on a number the official series will restate sixteen hours later. That is the worst available combination of “moves price” and “might be wrong,” and it is a reasonable argument for simply not being in oil-correlated FX overnight tonight.

The fix is boring and takes ten minutes

Once a quarter, pull the release schedules from the agencies rather than from an aggregator: the EIA publishes its holiday schedule, the BLS publishes its annual release calendar, Treasury publishes the tentative auction schedule. Diff them against whatever your system is using. The federal holidays are known years in advance and every one of them shifts something.

Then make your filter key on the series, not the publisher, and store a timestamp per release rather than a weekday plus an hour. If that is more engineering than you want to do, the fallback is cruder and still works: in the week of a US federal holiday, widen every event block by an hour on either side and cut size by a third for the whole week. You will give up some expectancy. You will not be the one trading into a crude number you thought had already happened.

What this does not tell you

We have not verified that the EIA report will actually publish at 16:00 UTC tomorrow, only that the agency and an energy calendar both say it is scheduled to. Schedules slip.

The 12:15 UTC time for today's ADP weekly reading comes from one calendar. Two sources agree the release happens today; only one gave us the minute. Treat it as uncertain.

We have made no claim about which way any of these numbers will print, or that the oil complex will react to them at all. Crude has been trading on Gulf supply headlines rather than US inventory statistics for a fortnight — WTI was quoted between roughly $92 and $94 across two desks this morning, a two-dollar spread that itself says something about how orderly that market is — and it is entirely possible tomorrow's report is ignored. A window is a place where you might be wrong quickly. It is not a forecast that something will happen in it.

And the honest caveat on the whole argument: if your system trades a daily bar and holds for a week, none of this reaches you. This is a problem for intraday systems with event filters. That is most of them, but not all of them.

Related


Systems Desk
Systems Desk