Open Interest Feels Live. It Is Not.
Most traders treat Open Interest as a live number. It sits right there in the options chain next to price and volume, both of which update in real time, so people assume OI does too. It doesn't. And once you understand where the number actually comes from, that stops being a complaint and starts being the whole point.
Every listed options trade in the US clears through the Options Clearing Corporation. After each session, the OCC reconciles everything that happened during the day: new positions opened, existing ones closed, exercises, assignments, expirations. Only when that reconciliation is done does it publish final Open Interest for every contract on every underlying. That publication happens after the close, once per day. There is no intraday update, and the next authoritative number arrives the following evening.
So when you pull up OI before the open, you are looking at a figure calculated hours earlier, describing positions as of the prior settlement. Stale? Technically, yes. But it is also the only OI figure that has been verified and cross-checked against member firm records. Everything you will see labelled "OI" for the rest of the day is that same number, just older.
The overnight reconciliation is exactly what makes the number trustworthy. It is audited, settled, and complete. That verification process is the reason the pre-market snapshot is worth so much as a gamma input, and the reason nothing produced intraday can match it.
One consequence follows immediately. If the OCC only speaks once a day, the moment before the open is when your OI data is freshest relative to reality.
Every trade after 9:30 pushes reality away from the number on your screen, and the number does not move.
Why 9:30 AM Is the High-Water Mark
Gamma Exposure is a simple multiplication at heart: each strike's Open Interest, weighted by that option's gamma, times contract size and the notional of the underlying. So GEX is only as good as the OI you feed it. Wrong OI in, wrong gamma map out, wrong Zero Gamma and Call Wall and everything downstream.
At the open, that input is at maximum accuracy. It is exchange-reported and OCC-verified. It captures the complete settled positioning of every participant: the structured product desks, the portfolio hedgers, the vol funds, all of it. This is the one moment of the day where a gamma level rests on verified data rather than an estimate.
Pre-market OI is peak accuracy, and it only decays from there. The 9:30 AM gamma map is more than a convenient starting point. It is the most reliable version of the map you will have until the next morning's settlement figures arrive.
Then the first trade prints. That trade might open a new position, close an old one, or be one leg of a spread with no net OI effect at all. You do not know which. Nobody outside the clearing system knows which, in real time. Your screen still shows last night's number, but the true state of the market has already started drifting away from it.
By mid-morning on a busy day, tens of thousands of contracts may have traded in SPX alone. Some opened positions, some closed them, and the reported OI has not budged. The gap between reported and actual OI is now real, measurable, and growing with every minute of trading. This is degradation, not expiry. The map is still the map. It is just getting blurrier.
The Error Distribution Is Backwards
Here is the part that annoys me: the OI staleness problem is not spread evenly across strikes. It concentrates exactly where you can least afford it, at and near the money, where gamma peaks.
The math is straightforward. Gamma for an at-the-money SPX option is orders of magnitude higher than for the same option five percent out of the money. Multiply OI by gamma to get GEX and a small OI error at an ATM strike blows up into a large GEX error. The same size error at a far OTM strike barely registers, because you are multiplying it by a gamma that is already near zero.
And which strikes trade hardest intraday? The ATM and near-ATM ones. They are the most liquid, the most actively traded, and so the gap between reported and actual OI grows fastest at precisely the strikes that dominate the gamma calculation.
The gamma levels that matter most for your analysis are also the ones most exposed to intraday OI drift. Which makes the pre-market snapshot, taken before any of that drift has happened, worth even more than it first appears.
Deep OTM strikes are the safe zone, for what it is worth. They trade lightly, their reported OI stays close to reality for longer, and their gamma is negligible anyway. If the error had to pile up somewhere, out in the wings would have been convenient. It piles up at the money instead.
A Gauge for the Blur: Volume Relative to OI
Not every session degrades the map at the same speed, and you do not have to guess. The degradation rate tracks one thing: how much intraday volume has accumulated relative to total outstanding OI. Watch that ratio and you have a live gauge for how much to trust the morning levels.
On a typical SPX session, intraday volume runs at roughly fifteen to twenty-five percent of total OI. At that pace the overnight number stays a reasonable proxy well into the afternoon. The error from untracked flow is real, but bounded.
Two conditions reliably break that. The first is expiration proximity. As contracts approach expiry, outstanding OI shrinks while volume stays elevated as everyone manages risk. A 0DTE contract at noon on its expiration day can carry a volume-to-OI ratio above one, meaning more contracts have traded that day than existed at the open. The second is implied volatility expansion. When the market starts pricing a real chance of a big move, hedging and repositioning volume can push the ratio past fifty percent inside the first hour.
| Volume/OI at ATM Strikes | How Much I Trust the Map | What I Do With It |
|---|---|---|
| < 20% | High | Treat the morning levels as precise structural points |
| 20–35% | Moderate | Widen each level by a strike or two, look for price to confirm |
| 35–50% | Reduced | Levels become zones; weight the observed price reaction more heavily |
| > 50% | Low | Price behavior is the better signal now; use GEX only to mark broad zones |
Tracking this ratio at near-ATM strikes beats any categorical "catalyst day yes/no" rule. Past thirty to thirty-five percent, give the morning levels proportionally wider margins. Near fifty, the map is for zones, not points. Note what this does in practice: a level accurate to one strike at 9:30 might be accurate to three strikes by 2:00 PM on a heavy session. The mechanical hedging pressure behind it still exists. The price where dealers act has just become a range.
0DTE Runs the Whole Movie in One Session
Everything above plays out at a manageable pace across a normal multi-day expiration cycle. Overnight OI represents positions built over days or weeks, a single session's volume is small against it, and even a busy day might turn over five to ten percent of the OI at a given strike. The map degrades, slowly.
Zero days to expiration compresses that entire lifecycle into six and a half hours. Opening prints, position building, unwinds, expiry: all of it happens between 9:30 AM and the close. The pre-market OI still captures the carry-over positioning honestly, but the bulk of the day's 0DTE flow simply does not exist yet when the snapshot is taken.
By noon on a heavy 0DTE day, intraday volume in front-month SPX contracts can equal or exceed the entire overnight OI at certain strikes. New positions are open, some are already closed again, and the gamma picture has shifted substantially from the morning map. What is a slow, theoretical drift for longer-dated options becomes acute within hours here.
The 9:30 map still earns its place on 0DTE. It is the best available read on structural carry-over positioning, and that structure matters all day. But it depreciates faster in this context than anywhere else, so lean harder on the volume-to-OI gauge and on how price actually behaves at the levels. More on the expiry mechanics in 0DTE & Gamma Risk.
So You Want to Model Past the Snapshot
At some point every serious user of gamma data asks the obvious question: can't we just estimate intraday OI and refresh the map? You can try. Plenty of vendors claim to. The honest answer is that intraday OI estimation is an inference problem: you are working out from the public tape whether each trade opened or closed a position. The tape does not contain that information. Every method is a guess about intent, and better guesses need better, more expensive inputs.
I find it clarifying to lay the methods out as a hierarchy, Level 0 through Level 4, ordered by data quality and cost. Each level builds on the one below it. And every level above zero introduces something Level 0 does not have: classification noise. The hierarchy at a glance:
| Level | Method | Signal characteristic |
|---|---|---|
| L0 | Static overnight OI | Verified baseline, zero classification noise |
| L1 | Volume accumulation proxy | Session-level directional OI drift signal |
| L2 | 1-min bar bid/ask approximation | Bar-level directional classification |
| L3 | Tick-level NBBO matching | Trade-level classification, finer resolution than L2 |
| L4 | OPRA condition codes | Trade-level, with structural flow identified |
Each level uses richer data than the last. But L0 can and does outperform higher levels on sessions where intraday volume is low relative to overnight OI, because a stale clean number beats a fresh noisy one more often than people expect.
Level 0: Static Overnight OI, the Baseline
What it is. Use last night's OCC-reported closing OI for all gamma calculations, all day. No intraday updates. The pre-market snapshot is the picture, full stop.
What it requires. Daily OI data, available from exchanges, data vendors, and plenty of free sources. No intraday infrastructure at all. This is the simplest possible approach, and it is what most GEX tooling (including ours) runs on.
Accuracy profile. For longer-dated expirations with volume-to-OI ratios under twenty percent, the overnight baseline stays a solid structural proxy through the session. For 0DTE on heavy days, where the ratio can invert, the deviation gets material by mid-session.
Every level above it introduces estimation noise, random classification errors that compound with every trade processed. Level 0 introduces none. Its error is pure staleness, and staleness behaves differently from noise: a stale signal is delayed but still anchored in verified positioning, while noise is unpredictable and can conjure structural levels that were never there.
For identifying load-bearing gamma levels, a noise-free stale estimate frequently beats a noisy real-time one, especially when the day's volume is dominated by inter-dealer flow with no directional OI meaning.
Level 1: Volume Accumulation Proxy
What it is. Start with overnight OI and layer intraday volume on top, without trying to classify any of it as opening or closing. The naive version assumes volume runs roughly fifty percent opening, fifty percent closing, so net OI change is about zero and the overnight figure stays the best estimate. A smarter variant replaces that flat assumption with a historically derived open/close ratio for the contract type and applies it as a fixed correction.
What it requires. Contract-level intraday volume. One-minute bars per strike are plenty. Most data providers have this.
Accuracy and where it fits. You get a session-level read on which strikes are broadly accumulating versus unwinding OI, cheaply. The fifty-percent assumption is a simplification and sessions vary, but for liquid underlyings with stable open/close ratios the historical variant captures directional bias reasonably well. A sensible first step past the static baseline when you do not have (or want) per-trade infrastructure.
Level 2: One-Minute Bar Bid/Ask Approximation
What it is. The first genuinely classification-based level. For each one-minute bar, compare the bar's closing trade price to its closing bid/ask quote. Close at or above the midpoint, call the bar net buying (longs opening or shorts covering). At or below the midpoint, net selling. Adjust the OI estimate accordingly, bar by bar.
What it requires. Two separate one-minute streams per contract: trade bars and quote bars (bid and ask OHLC). Many providers split these into separate queries, so your data volume doubles versus trades alone. Still manageable for a focused strike set, and not prohibitively expensive.
Accuracy profile. Directionally useful on most sessions, and it classifies the majority of bars correctly on a normal day. It struggles when price oscillates inside the spread, which happens a lot in options, where spread width is often large relative to one minute of price movement.
Where it breaks down. The one-minute window hides everything inside it. A bar that opens at the ask, trades both ways, and closes at the bid gets labelled net selling even if it contained heavy opening buys early on. For fast-moving near-ATM 0DTE contracts, entire bars get misread this way.
Level 3: Tick-Level NBBO Matching (Lee-Ready)
What it is. Drop the bars entirely and match every individual trade tick against the prevailing National Best Bid and Offer at the moment it printed. Each print is then classified above, at, or below the midpoint under the Lee-Ready framework. The improvement over Level 2 comes from two places: per-trade time resolution instead of bar aggregation, and comparison against the NBBO at the exact millisecond of the trade rather than a bar's closing quote.
What it requires. Full tick trade data and full NBBO quote data, both timestamped to the millisecond and synchronized to a common clock. Providers that reconstruct NBBO from consolidated sources introduce timestamp misalignment that quietly degrades classification, worst in fast markets, which is exactly when you care.
Accuracy profile. Meaningfully better than Level 2 on normal sessions. Per-trade resolution kills the within-bar sequencing errors, and the millisecond NBBO is a far better reference. In SPX, where ATM spreads are tight and liquidity is deep, it performs well most days.
Dealer flow. Market-maker-to-market-maker trades make up a material share of listed options volume, and the algorithm classifies them as directional opening or closing flow when they are actually inventory rebalancing with no OI meaning for end users. A retail trader opening a long and a dealer buying to flatten a hedge look identical at the NBBO level. That misclassification is Level 3's ceiling, no matter how good your timestamps get.
Level 4: OPRA Condition Codes, Institutional Grade
What it is. Every trade on the OPRA feed carries a condition code describing what kind of transaction it was. These codes do not survive bar aggregation; you only see them in the full tick-level feed, through a provider with direct OPRA connectivity. Level 4 uses them to filter and categorize trades before running any directional inference.
What it requires. Direct OPRA access with full condition code pass-through. The complete OPRA feed runs to roughly three terabytes per trading day. Processing a targeted subset (say, SPX and SPXW across all strikes) is tractable with a well-built pipeline, but the engineering lift dwarfs every prior level.
Accuracy profile. The best you can do with public market data. Condition codes remove Level 3's most systematic errors, spread misclassification and cabinet ambiguity, and produce a noticeably cleaner estimate. On high-catalyst days with heavy inter-dealer activity everything degrades, but the structural filtering advantage holds.
The condition code categories that matter most for OI modelling:
Single-leg market orders
Clean directional flow, the easiest case for Lee-Ready.
Multi-leg and spread trades
Each leg prints separately but has to be handled as a unit, or excluded from per-leg inference entirely.
Cabinet trades
Near-zero-value options, almost always closes, OI-reducing regardless of where they sit against the quote.
Blocks and negotiated trades
Typically new openings, and big enough that misreading one is costly.
Inter-market sweeps
Routed across multiple exchanges at once, so a single trade can show up as several prints.
An intraday OI estimate reliable enough to work as a genuine complement to overnight OI, rather than a rough directional hint. Good enough to spot a new dealer hedging level forming, or a large structural position unwinding, with precision you can actually act on analytically.
Everything in this hierarchy infers intent from the tape. There is a parallel road that does not infer at all: the exchanges sell aggregated summaries of the open/close markers on the orders they execute (Cboe's Open-Close data, down to 1-minute intervals, plus a trade-by-trade execution detail dataset underneath it for those who need the individual marked prints). For SPX (which trades only on Cboe) that is a genuinely complete view of marked flow. The SPX positioning platforms charging north of $300 a month are built on it. Its own asterisks: self-reported markers, aggregated buckets rather than trades, a few minutes of delivery lag, and structural blindness to the majority of multi-listed volume that prints on other exchange families. That is why it sits beside this hierarchy as a complement rather than above it as a Level 5. The model write-up covers that ground, vendors and prices included.
Which Level Is Right for You
The right level is not the most sophisticated one you can build. It is the one that matches what you are actually trying to learn from the data, and I would argue most people overshoot.
If you are a discretionary trader using gamma levels as structural context, Level 0 with the volume-to-OI gauge from earlier in this article is honestly enough, and for anything beyond the front expiration it is usually the best choice outright. The verified baseline plus an awareness of how fast it is blurring gets you most of the practical value at a tiny fraction of the cost. Adding Level 1 on top gives you a cheap session-level read on which strikes are accumulating versus shedding OI, and that combination needs nothing more exotic than daily OI and per-strike volume bars.
If you are building tooling and want a real intraday signal, Level 2 is where classification starts. Bar-level bid/ask inference picks up strike-level positioning shifts within the session, rather than broad drift alone, and it runs on standard provider data. This is the highest level I would suggest to anyone who does not have a dedicated data budget. Levels 3 and 4 are for teams doing systematic work where the intraday OI estimate feeds directly into models. L3 fixes the within-bar sequencing errors L2 can not see; L4 additionally handles spreads, cabinets, and blocks as structural units (the main systematic error left at L3). The cost curve between them is steep, and so is the engineering.
The robust way to use any intraday estimate is as a delta on top of overnight OI, never as a replacement for it. The OCC settlement figure is the most accurate input you will ever have for pre-existing structural positioning. Swapping it out for a noisier model-generated number throws away verified data in exchange for a guess. That trade is rarely worth making.
And there is a ceiling nobody clears. Even at Level 4, a substantial fraction of SPX options volume is inter-dealer flow that offsets within the dealer community and changes nothing about end-user OI, yet prints on the tape looking exactly like directional flow. Classifying it correctly would require account-level clearing data, which is not public and will not become public. So intraday OI estimation stays an approximation at every level. Good at L4, good enough to catch genuine structural shifts, but the next morning's OCC figure will always land somewhere your best real-time estimate did not.
That is the frame the whole hierarchy sits inside: overnight OI as bedrock, intraday estimates as directional overlays.
Two Questions I Get About This
If the OI is stale by lunchtime, why do the morning gamma levels still seem to work in the afternoon?
Because degradation widens the error bars, it does not erase the structure. The big positions behind a Call Wall or a heavy put strike were built over days and mostly do not vanish by 2:00 PM. What changes is precision: a level good to one strike at the open might be good to three strikes late in the day. The hedging pressure is still there. Treat the level as a zone and let price behavior tell you where inside the zone dealers are actually leaning.
Do vendors selling "real-time OI" have data the rest of us do not?
No. Everyone works from the same public tape, so anything labelled real-time OI is an estimate sitting somewhere on the L1 to L4 ladder, usually lower than the marketing implies. The honest question to ask any vendor is which level of this hierarchy they are running and how they handle inter-dealer flow. If the answer is vague, assume L1 or L2. The deeper reasons true real-time OI can not exist are covered in the Intraday OI Problem.
This piece is part of a short series on Open Interest accuracy and intraday GEX reliability. The companion article on the Intraday OI Problem covers the structural reasons no true real-time OI feed exists. For the difference between raw OI and gamma-weighted exposure, start with Open Interest vs Gamma Exposure. For the expiry-day mechanics that make all of this move fastest, see 0DTE & Gamma Risk.
See the 9:30 AM Snapshot in Action
Gamma exposure analysis built on the same 9:30 AM snapshot discussed above. Zero Gamma level, Call Wall, Put Wall, all in one dashboard.
Open the Free GEX Dashboard The Intraday OI Problem