Options Volume vs Open Interest: Wetin Dem Mean
Options volume na contracts wey change hand today; open interest na contracts wey still dey outstanding. See both definitions plus one full day of US options tape.
Options volume na number of contracts wey change hand today. Open interest na number of contracts wey still exist—positions wey dem open but never close. Volume dey add up trade after trade throughout the session, while Options Clearing Corporation (OCC) dey calculate open interest again once every day after market close. Dem build the put-call ratio from volume side. This page define both, explain the mechanics wey dey move each one, measure one full day for US options tape on Monday, July 6, 2026, and show where official open-interest figures dey.
Wetin be options volume?
Volume na number of option contracts wey people trade for the current session. Every trade add the size wey dem execute. For example, block of 500 contracts add 500. Dem count am once, no be once for each side. The count go reset to zero when market open for the next session. Volume na live number. E dey stream for consolidated tape wey OPRA (the Options Price Reporting Authority) dey run, as executed trades dey print. This page measure am from the tape wey dem store.
Wetin be open interest?
Open interest (OI) na number of contracts wey still dey outstanding: dem don open am but never close am through offsetting trade, exercise, or expiration. Dem dey track am for each contract. Every strike, expiration, and type get im own figure. E no dey reset; e dey carry over.
Open interest no be live number. OCC, wey be clearinghouse behind every listed US option, dey reconcile opening and closing positions after each session. E publish the updated count before the next market open. So, OI wey dey broker’s chain at 2 p.m. na simply the count from the previous evening.
The tape behind this page dey carry trades, no be positions. E no get open-interest column. Every measured panel below na volume. Wetin e fit show na how the two connect: how one trade fit move each one, how much volume fit ever reach an OI print, and the rhythm wey OI screens dey monitor. The official figures dey elsewhere. One section below explain where.
Single trade fit change volume and open interest how?
Every option trade get two sides. Each side either dey open position or dey close position. Make we follow one brand-new contract through three hypothetical trades:
- Trader A buy to open one contract from trader B, wey sell to open. Volume: 1. Open interest: +1. New contract don enter market. A hold the long side, B hold the short side.
- Later, A sell to close, and trader C buy to open. Volume: 1 more (2 for the day). Open interest: no change. The long side don change hands, but one contract still dey outstanding.
- Finally, C sell to close and B buy to close the short. Volume: 1 more. Open interest: −1, back to zero. Both sides don close, and the contract stop to exist.
Every trade dey add to volume. Open interest only dey rise when both sides open. E dey fall only when both sides close. Otherwise, e no change. One thing matter here: the day’s volume na the highest amount wey that contract’s open interest fit change overnight. The tape no show which combination each print be. OCC dey settle that after the close.
Wetin one day of options volume dey look like?
The panel below total the full US options tape for Monday, July 6, 2026.
| contracts m | trades m | different contracts | different roots | call contracts m | put contracts m | put call ratio | same-day expiry pct |
|---|---|---|---|---|---|---|---|
| 60.6 | 10.5 | 340203 | 4654 | 35.5 | 25.1 | 0.71 | 38.8 |
The exact SQL behind every number
SELECT
round(sum(volume) / 1e6, 1) AS contracts_m,
round(sum(transactions) / 1e6, 1) AS trades_m,
uniqExact(ticker) AS distinct_contracts,
uniqExact(substring(ticker, 3, length(ticker) - 17)) AS distinct_roots,
round(sumIf(volume, substring(ticker, length(ticker) - 8, 1) = 'C') / 1e6, 1) AS call_contracts_m,
round(sumIf(volume, substring(ticker, length(ticker) - 8, 1) = 'P') / 1e6, 1) AS put_contracts_m,
round(toFloat64(sumIf(volume, substring(ticker, length(ticker) - 8, 1) = 'P')) / toFloat64(sumIf(volume, substring(ticker, length(ticker) - 8, 1) = 'C')), 2) AS put_call_ratio,
round(100 * toFloat64(sumIf(volume, substring(ticker, length(ticker) - 14, 6) = '260706')) / toFloat64(sum(volume)), 1) AS same_day_expiry_pct
FROM global_markets.options_minute_aggs
WHERE window_start >= '2026-07-06 00:00:00' AND window_start < '2026-07-07 00:00:00'One session: 60.6 million contracts inside 10.5 million trades, across 340203 different contracts for 4654 underlying roots. Calls pass puts, 35.5 million against 25.1 million, with put/call ratio of 0.71. Options wey expire that same session carry 38.8% of the total volume.
The accumulation dey show for the clock, with the same session split into half-hour buckets and running total beside am:
| ET time | contracts m | running total m |
|---|---|---|
| 09:30 | 8.53 | 8.5 |
| 10:00 | 6.39 | 14.9 |
| 10:30 | 5.28 | 20.2 |
| 11:00 | 5.07 | 25.3 |
| 11:30 | 4.34 | 29.6 |
| 12:00 | 3.97 | 33.6 |
| 12:30 | 3.63 | 37.2 |
| 13:00 | 3.49 | 40.7 |
| 13:30 | 4 | 44.7 |
| 14:00 | 3.55 | 48.3 |
| 14:30 | 3.44 | 51.7 |
| 15:00 | 3.59 | 55.3 |
| 15:30 | 4.86 | 60.1 |
| 16:00 | 0.49 | 60.6 |
The exact SQL behind every number
SELECT
formatDateTime(toStartOfInterval(toTimeZone(window_start, 'America/New_York'), INTERVAL 30 MINUTE), '%H:%i') AS et_time,
round(sum(volume) / 1e6, 2) AS contracts_m,
round(sum(sum(volume)) OVER (ORDER BY formatDateTime(toStartOfInterval(toTimeZone(window_start, 'America/New_York'), INTERVAL 30 MINUTE), '%H:%i')) / 1e6, 1) AS running_total_m
FROM global_markets.options_minute_aggs
WHERE window_start >= '2026-07-06 00:00:00' AND window_start < '2026-07-07 00:00:00'
GROUP BY et_time
ORDER BY et_timeThe first half-hour print 8.53 million contracts. By the last print, the running total reach 60.6 million. The small 16:00 bucket na the 4:00–4:15 p.m. ET index-options tail. Every point for this chart na volume. The count wey OCC publish that morning remain the same throughout the day, and the next count land before Tuesday open.
Which individual contracts dey trade pass?
Each option’s OCC ticker dey encode root, expiry, call/put, and strike. The query parse all four so the table go read clear:
| contract | contracts wey dem trade | trades | all ten go expire July 6 | all ten na SPY or QQQ |
|---|---|---|---|---|
| SPY $751 call, expires 2026-07-06 | 1082297 | 128107 | 1 | 1 |
| SPY $750 put, expires 2026-07-06 | 986392 | 106731 | 1 | 1 |
| SPY $752 call, expires 2026-07-06 | 911035 | 87708 | 1 | 1 |
| SPY $750 call, expires 2026-07-06 | 739555 | 116377 | 1 | 1 |
| SPY $751 put, expires 2026-07-06 | 735199 | 81507 | 1 | 1 |
| SPY $749 put, expires 2026-07-06 | 627447 | 74561 | 1 | 1 |
| SPY $753 call, expires 2026-07-06 | 587785 | 30301 | 1 | 1 |
| QQQ $725 call, expires 2026-07-06 | 520038 | 75367 | 1 | 1 |
| SPY $748 put, expires 2026-07-06 | 457351 | 48122 | 1 | 1 |
| QQQ $724 call, expires 2026-07-06 | 424104 | 66982 | 1 | 1 |
The exact SQL behind every number
SELECT
contract,
contracts_traded,
trades,
toUInt8(min(expires_july_6) OVER ()) AS all_ten_expire_july_6,
toUInt8(min(root_is_spy_or_qqq) OVER ()) AS all_ten_spy_or_qqq
FROM (
SELECT
concat(substring(ticker, 3, length(ticker) - 17), ' $',
toString(round(toFloat64(toUInt32OrZero(substring(ticker, length(ticker) - 7, 8))) / 1000, 2)),
if(substring(ticker, length(ticker) - 8, 1) = 'P', ' put', ' call'),
', expires 20', substring(ticker, length(ticker) - 14, 2), '-', substring(ticker, length(ticker) - 12, 2), '-', substring(ticker, length(ticker) - 10, 2)) AS contract,
toUInt64(sum(volume)) AS contracts_traded,
toUInt64(sum(transactions)) AS trades,
substring(ticker, length(ticker) - 14, 6) = '260706' AS expires_july_6,
substring(ticker, 3, length(ticker) - 17) IN ('SPY', 'QQQ') AS root_is_spy_or_qqq
FROM global_markets.options_minute_aggs
WHERE window_start >= '2026-07-06 00:00:00' AND window_start < '2026-07-07 00:00:00'
AND match(substring(ticker, 3, length(ticker) - 17), '^[A-Z]+$')
AND substring(ticker, 3, length(ticker) - 17) NOT IN ('SPCX')
GROUP BY ticker
ORDER BY contracts_traded DESC, ticker ASC
LIMIT 10
)
ORDER BY contracts_traded DESC, contract ASCThe busiest single contract for July 6, SPY $751 call, expires 2026-07-06, print 1082297 contracts across 128107 trades. Check the expiry dates: all ten expire that same Monday and dey under two roots. The receipt columns confirm both points for every row. Contracts for their final day na 0DTE options, zero days to expiration, and dem fill this table: tight ladder of SPY and QQQ strikes.
Now use the day’s biggest print for the open-interest arithmetic. Whatever OI SPY $751 call, expires 2026-07-06 show Monday morning na the previous evening’s count, and na the last time any report go mention am. All 1082297 contracts of volume trade inside their final session. At close, dem expire, and the next OCC file remove dem. By definition, open interest become zero. The standing caveat for every 0DTE table be say these contracts live and die inside the once-a-day OI cycle. Their heavy volume never meet a meaningful OI print.
Which underlyings dominate options volume?
Same session fit group underlyings by root, wey be the first letters for each option ticker. Most times, na the symbol of the underlying:
| underlying root | contracts m | pct of tape | different contracts | same-day expiry pct |
|---|---|---|---|---|
| SPY | 12.1 | 20 | 5747 | 70.2 |
| QQQ | 6.88 | 11.3 | 4661 | 72.4 |
| TSLA | 4.29 | 7.1 | 3266 | 65.4 |
| SPXW | 3.65 | 6 | 7407 | 73.2 |
| NVDA | 2.27 | 3.8 | 1984 | 49.3 |
| AAPL | 1.58 | 2.6 | 1706 | 56.9 |
| IWM | 1.35 | 2.2 | 1749 | 60.1 |
| AMZN | 0.79 | 1.3 | 1404 | 38.4 |
| META | 0.66 | 1.1 | 2730 | 55.1 |
| VIX | 0.65 | 1.1 | 405 | 0 |
The exact SQL behind every number
SELECT
substring(ticker, 3, length(ticker) - 17) AS underlying_root,
round(sum(volume) / 1e6, 2) AS contracts_m,
round(100 * toFloat64(sum(volume)) / (SELECT toFloat64(sum(volume)) FROM global_markets.options_minute_aggs WHERE window_start >= '2026-07-06 00:00:00' AND window_start < '2026-07-07 00:00:00'), 1) AS pct_of_tape,
uniqExact(ticker) AS distinct_contracts,
round(100 * toFloat64(sumIf(volume, substring(ticker, length(ticker) - 14, 6) = '260706')) / toFloat64(sum(volume)), 1) AS same_day_expiry_pct
FROM global_markets.options_minute_aggs
WHERE window_start >= '2026-07-06 00:00:00' AND window_start < '2026-07-07 00:00:00'
AND match(substring(ticker, 3, length(ticker) - 17), '^[A-Z]+$')
AND substring(ticker, 3, length(ticker) - 17) NOT IN ('SPCX')
GROUP BY underlying_root
ORDER BY sum(volume) DESC, underlying_root ASC
LIMIT 10SPY lead the day with 12.1 million contracts. E carry 20% of the whole tape under one root. QQQ follow next with 6.88 million (11.3%). The same-day-expiry column match wetin the table above show: 70.2% of the leader’s volume expire that same afternoon. Root no always be symbol wey you fit buy. S&P 500 index options dey trade under Cboe roots SPX and SPXW. One underlying fit carry many contracts at once: 5747 different strike/expiry/type combinations print under the leader alone.
How much of one day volume fit even reach open interest?
If we divide the session by time to expiration, the OI implication dey show for one table:
| go expire in | contracts m | pct of volume | different contracts k | pct of contracts |
|---|---|---|---|---|
| same day (0DTE) | 23.5 | 38.8 | 3 | 0.9 |
| 1-7 days | 15.3 | 25.3 | 47.1 | 13.8 |
| 8-31 days | 10.5 | 17.3 | 97.8 | 28.7 |
| 32-365 days | 10.5 | 17.3 | 168.8 | 49.6 |
| over a year | 0.8 | 1.3 | 23.6 | 6.9 |
The exact SQL behind every number
WITH dateDiff('day', toDate('2026-07-06'), toDate(concat('20', substring(ticker, length(ticker) - 14, 2), '-', substring(ticker, length(ticker) - 12, 2), '-', substring(ticker, length(ticker) - 10, 2)))) AS dte
SELECT
multiIf(dte = 0, 'same day (0DTE)', dte <= 7, '1-7 days', dte <= 31, '8-31 days', dte <= 365, '32-365 days', 'over a year') AS expires_in,
round(sum(volume) / 1e6, 1) AS contracts_m,
round(100 * toFloat64(sum(volume)) / (SELECT toFloat64(sum(volume)) FROM global_markets.options_minute_aggs WHERE window_start >= '2026-07-06 00:00:00' AND window_start < '2026-07-07 00:00:00'), 1) AS pct_of_volume,
round(uniqExact(ticker) / 1e3, 1) AS distinct_contracts_k,
round(100 * toFloat64(uniqExact(ticker)) / (SELECT toFloat64(uniqExact(ticker)) FROM global_markets.options_minute_aggs WHERE window_start >= '2026-07-06 00:00:00' AND window_start < '2026-07-07 00:00:00'), 1) AS pct_of_contracts
FROM global_markets.options_minute_aggs
WHERE window_start >= '2026-07-06 00:00:00' AND window_start < '2026-07-07 00:00:00'
AND dte >= 0
GROUP BY expires_in
ORDER BY min(dte)The same-day bucket na the extreme case: 0.9% of the day’s distinct contracts, about 3 thousand, carry 38.8% of all volume. Na the biggest share among all buckets, and none of dem fit appear for any future OI print. Another 25.3% expire within the week. The listed universe lean the other way: the 32-365-day bucket alone hold 49.6% of distinct contracts, while contracts with more than one year to expiry make up 6.9% of the universe but only 1.3% of volume. Longer-dated contracts dey trade quietly and stay alive longer. Na under these conditions standing pool dey build.
How open interest dey change from day to day?
Open-interest screens dey watch how contract OI change from one morning’s print reach the next one. Na the raw material be this: ten sessions for one long-dated contract, a SPY $620 put wey dey expire December 18, 2026:
| session | contracts wey dem trade | trades |
|---|---|---|
| 2026-06-22 | 15 | 7 |
| 2026-06-23 | 25 | 9 |
| 2026-06-24 | 26 | 10 |
| 2026-06-25 | 13 | 10 |
| 2026-06-26 | 21 | 11 |
| 2026-06-29 | 6 | 3 |
| 2026-06-30 | 9006 | 7 |
| 2026-07-01 | 9172 | 222 |
| 2026-07-02 | 10023 | 186 |
| 2026-07-06 | 20 | 7 |
The exact SQL behind every number
SELECT
toDate(toTimeZone(window_start, 'America/New_York')) AS session,
toUInt64(sum(volume)) AS contracts_traded,
toUInt64(sum(transactions)) AS trades
FROM global_markets.options_minute_aggs
WHERE window_start >= '2026-06-22 00:00:00' AND window_start < '2026-07-07 00:00:00'
AND ticker = 'O:SPY261218P00620000'
GROUP BY session
ORDER BY sessionFor six sessions straight, the contract barely print. E no ever pass a few dozen contracts for one day, and e reach as low as 6 for 2026-06-29. For those days, open interest remain almost frozen. The ceiling rule cap how much e fit move overnight to the small number of contracts traded that day. Then three sessions one after another print 9006, 9172, and 10023 contracts. The trades column add more detail: the 2026-06-30 burst happen through only 7 prints, with block-sized orders, while similar volume for the next session take 222 trades. By 2026-07-06, the tape don return to 20 contracts.
Volume alone no fit show wetin that burst do to open interest. E fit mean new positions, an unwind, or different hands changing position. The next morning’s OCC print settle the matter: when OI rise during a volume burst, e show new positioning; when OI fall, e show an unwind; when OI stay flat despite heavy volume, e show hands changing. Na that day-over-day change traders dey screen for.
Wey you fit check open interest?
No volume table dey carry am. The official figure dey here:
- OCC dey publish daily volume and open interest by contract for theocc.com (under market data). Dem dey update am every morning. Na the source figure wey every other place dey redistribute.
- Your broker's option chain get an “Open Interest” (or “Open Int”) column beside volume, for each strike and expiration. Na the previous evening count be this, and e dey show throughout the day.
- The listing exchanges, like Cboe and im peers, dey publish volume and OI summaries for their market-statistics pages.
One thing to note: “max pain” readings, wey be the strike where the highest option value go expire worthless, need the complete strike-by-strike OI distribution. No volume table fit calculate am, including the one for this page. Take those readings from OCC or exchange data, no be volume screen. To see wetin that distribution really fit tell you, the max pain calculation for real SPY chain dey run the arithmetic strike by strike and check the answer against where settlement land.
How traders dey read volume and open interest together?
When you look dem side by side, the two measures show contract liquidity from different angles: today’s traffic versus the crowd wey still hold positions:
- Busy volume, large open interest. Trading active today on top large pool of outstanding positions. This combination usually dey come with the tightest quoted markets.
- Busy volume, small open interest. Turnover heavy, but few positions remain open. This pattern often show same-day-expiry trading or fresh positioning.
- Quiet volume, large open interest. Traders build the positions before, and dem still dey open, but trading no active today.
- Quiet volume, small open interest. Contract thinly traded. Quotes dey wider, and small order fit move the price. Check the bid-ask spread first.
Neither figure show direction. Volume counts buyers and sellers together in one total. Open interest counts each contract’s long side and short side as one contract. So, two traders fit look at the same busy contract and hold opposite positions.
Options volume vs. open interest FAQ
Wetin be difference between volume and open interest?
Volume dey count option contracts wey traders buy and sell during the current session, and e dey reset to zero every day. Open interest dey count contracts wey still dey outstanding, wey dem open but never close, and e dey carry over. Every trade add to volume. Open interest only change based on whether the two sides open or close positions.
Why open interest dey update only once every day?
Open interest na clearinghouse count, e no be tape count. Public tape no dey show whether trade na opening or closing. OCC dey reconcile those records across clearing members after the session, then e publish the figure before the next market open.
Wetin rising or falling open interest mean?
Rising open interest mean say more contracts open than close, so new positioning enter that strike on net. Falling open interest mean say traders dey unwind positions. Flat open interest with heavy volume mean positions change hands. One day’s volume na the maximum wey the count fit move by the next morning’s print.
Volume fit pass open interest?
Yes, especially for short-dated contracts; na normal thing. If person open and close position inside one session, e add to volume two times but e add nothing to the next morning’s open-interest print. Contract wey expire today no go appear for tomorrow’s figure. On July 6, 2026, 38.8% of all US options volume dey for contracts wey expire that same session. See wetin 0DTE option be for the mechanics.
Every panel wey dey above na stored, inspectable query. You fit expand the SQL to audit am, or ask the same questions for any session on the Strasmore terminal.