Strasmore Research
Learn am Matt ConnorBy Matt Connor · Updated 2026-07-25

Wetin be 0DTE? Zero Days to Expiry Options

0DTE options na contract wey dey expire the same day dem trade am. See how DTE work, how traders dey build 0DTE trade, and one real contract wey dem trace till market close.

0DTE options na contracts wey dey trade for their last day of life — zero days to expiration, dem dey expire for that afternoon close. Any listed option go turn 0DTE for im expiry date; the label come stick once the biggest index products start to list contract wey dey expire every trading day. For Monday, July 6, 2026, same-day-expiring contracts carry 38.8% of all US options volume. Everything wey dey below na from the tape wey dem measure, one real contract dey inside.

Wetin 0DTE mean?

DTE na trader shorthand for days to expiration: di calendar days wey remain before one option expire. One 30-DTE option still get one month of life; one 0-DTE option — "zero days to expiry," same-day option, "daily" — go expire today. Wen market close, any in-the-money option go either exercise or dem settle am with cash; out-of-the-money option just lapse, e no get value.

0DTE no be separate product: di SPY call wey be 30-DTE contract for early June don turn 0-DTE for im final trading day. Di full ladder of expiries dey inside wetin DTE mean for options. Volume for here dey count contracts wey dem trade, no be positions wey person hold — check options volume versus open interest.

Which options dey expire every day?

For many years, listed US stock options dey expire once a month, na for the third Friday; weekly Fridays spread through the 2000s and 2010s. For 2022, the exchanges complete the calendar for the biggest index products: Cboe add Tuesday and Thursday S&P 500 (SPX) expirations that spring, and Tuesday/Thursday listings for the SPY and QQQ ETFs follow for November. Since late 2022, SPX, SPY and QQQ don list an expiration for every trading day of the week; the Russell 2000 ETF (IWM) dey expire daily too. Single stocks keep the old rhythm, so Friday na the only day wey stock option fit be 0DTE before.

How much of di options volume na 0DTE?

Di panel group every contract wey dem trade dat Monday — na verified full session, with receipts for di data notes — by how many days e remain before e expire, wey dem parse from di OCC ticker.

QueryJuly 6, 2026: whole-tape options volume by days to expiry
The exact SQL behind every number
SELECT multiIf(dte = 0, '0 (expires today)',
               dte = 1, '1 day',
               dte <= 7, '2-7 days',
               dte <= 30, '8-30 days',
               '31+ days') AS days_to_expiry,
       round(sum(volume) / 1e6, 2) AS contracts_mm,
       round(100.0 * sum(volume) / sum(sum(volume)) OVER (), 1) AS pct_of_volume
FROM (
    SELECT toFloat64(volume) AS volume,
           dateDiff('day',
                    toDate(toTimeZone(window_start, 'America/New_York')),
                    toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6)))) AS dte
    FROM global_markets.options_minute_aggs
    WHERE window_start >= toDateTime('2026-07-06 08:00:00')
      AND window_start < toDateTime('2026-07-07 04:00:00')
      AND toDate(toTimeZone(window_start, 'America/New_York')) = toDate('2026-07-06')
)
WHERE dte >= 0
GROUP BY days_to_expiry
ORDER BY min(dte)

Contracts wey expire di same day na di biggest group: 23.52 million, 38.8% of di session total of 60.64 million — e pass di 18.6% wey dem trade with more dan one month to expiry. Di quietest group dey next door: contracts wey get one day left draw 4.5%. Short-dated activity dey concentrate for di expiry session itself, no be di day before.

Now make we check one full month:

QueryJune 2026: whole-month options volume and im same-day-expiry share
The exact SQL behind every number
SELECT round(sum(toFloat64(volume)) / 1e6, 1) AS contracts_mm,
       round(sumIf(toFloat64(volume), toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6))) = toDate(toTimeZone(window_start, 'America/New_York'))) / 1e6, 1) AS zero_dte_contracts_mm,
       round(100.0 * sumIf(toFloat64(volume), toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6))) = toDate(toTimeZone(window_start, 'America/New_York'))) / sum(toFloat64(volume)), 1) AS zero_dte_pct,
       uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS sessions
FROM global_markets.options_minute_aggs
WHERE window_start >= toDateTime('2026-06-01 00:00:00')
  AND window_start < toDateTime('2026-07-01 00:00:00')

Across 21 June sessions and 1477.9 million contracts, 506.3 million — 34.3% — trade on di day wey dem expire. Our first-half 2026 market recap run dat scan month by month and measure how di same-day share dey climb from im January level go reach im June high.

How traders dey arrange 0DTE trade

"To dey trade 0DTE" no be just one kain trade. Four structures dey cover most of wetin dey happen, each one na combination of same-day calls and puts. Na definitions we dey give, no be recommendation.

  • Single-leg directional. Buy one same-day call (e dey pay off if price pass di strike) or one put (if price fall below am). Di highest wey buyer fit lose na di premium wey e pay; di contract go worth zero at close unless e finish in-the-money.
  • Credit spread (vertical). Sell one option, come buy anoda one wey cheap pass and wey dey further out-of-the-money, but di same type and expiry. Di seller go collect di difference — na di credit — and e go keep am if di underlying finish for di correct side; di long leg go cap di loss at di strike gap minus dat credit ("defined risk").
  • Iron condor. Na two credit spreads at once: one call spread above di market, one put spread below. Di trader go keep both credits if di underlying close between di short strikes, and di loss dey capped for any side — dem go settle am for dat afternoon bell.
  • Gamma scalping. Na to dey trade di underlying against one options position so dat e go stay delta-neutral as di sensitivity dey swing. For expiry day, dose swings dey fastest and di hedging dey happen well-well — na one reason market makers dey so active for same-day contracts.

Every leg dey pay bid-ask spread and fee as e dey enter and as e dey comot — wetin e cost to trade options dey measure dat bill, and condor dey pay am four times.

Why 0DTE options dey move so fast: theta and gamma

Two terms from options math dey carry most of the difference — na mechanics of the contract, not anybody forecast.

Theta na time decay. An option price get two parts: intrinsic value (wetin e go worth if you exercise am now) and time value (the premium for wetin fit still happen). Time value must reach zero at expiration; for the final day, wetin remain dey burn off over hours, not weeks.

Gamma na how fast an option delta — im sensitivity to the underlying price — dey change. Near expiry, an at-the-money delta dey swing quick-quick between near zero and near one as the underlying cross the strike.

Theta, gamma, and delta na three of the option Greeks — the standard sensitivities wey every options desk dey quote. For the full set wey dem measure on real tape, start with the option Greeks, explained, then the deep dives on theta, gamma, and delta.

Both, on the tape. Of every same-day SPY contract wey dem trade that Monday, the two busiest na the $751 call (1.08 million contracts) and the $750 put (0.99 million); the ranking dey inside the data notes below. The panel sample both every thirty minutes against SPY distance from the $751 strike. SPY open at $748.74.

QueryOne 0DTE contract, all day: SPY im busiest same-day call and put, July 6, 2026
The exact SQL behind every number
SELECT formatDateTime(toTimeZone(window_start, 'America/New_York'), '%H:%i') AS et_time,
       round(anyIf(close, ticker = 'O:SPY260706C00751000'), 2) AS call_751_price,
       round(anyIf(close, ticker = 'O:SPY260706P00750000'), 2) AS put_750_price,
       round(anyIf(close, ticker = 'SPY') - 751, 2) AS spy_vs_751_strike
FROM (
    SELECT window_start, ticker, close
    FROM global_markets.options_minute_aggs
    WHERE window_start >= toDateTime('2026-07-06 09:30:00', 'America/New_York')
      AND window_start < toDateTime('2026-07-06 16:01:00', 'America/New_York')
      AND ticker IN ('O:SPY260706C00751000', 'O:SPY260706P00750000')
    UNION ALL
    SELECT window_start, ticker, close
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE window_start >= toDateTime('2026-07-06 09:30:00', 'America/New_York')
      AND window_start < toDateTime('2026-07-06 16:01:00', 'America/New_York')
      AND ticker = 'SPY'
)
WHERE toMinute(window_start) % 30 = 0
GROUP BY et_time, window_start
ORDER BY window_start

At the 09:30 open the call trade at $0.7 and the put at $1.88, SPY dey sit $-1.75 from the strike (the third column). One contract dey cover 100 shares: tens of dollars of premium against 100 shares of an ETF wey dey trade near $748.74. Na im be the leverage.

Theta dey run the middle of the day. At 11:30 the call na $0.57 and the put na $0.48, SPY dey $-0.29 from the strike. Two hours later, at 13:30, SPY still dey within one dollar of am ($-0.52) — and the call don slip to $0.42, the put dey sit about where e start at $0.47. The call no hold any intrinsic value at either sample and SPY end the stretch where e start: na the clock alone take the premium down.

Gamma dey run the afternoon. SPY cross above the $751 strike after 14:00 and finish $0.47 above am — well under half a percent for the ETF. Over that stretch the call run from $0.29 to $1.29 at 15:30 and the put fall from $0.52 to $0.03: small move for the index, triple-digit percentage gain for the call and near-total collapse for the put, opposite directions for the same afternoon.

Wetin dey happen for di 4 p.m. close?

For di bell, di arithmetic simple: one same-day contract get im intrinsic value, or e no get anytin. Di 16:00 row wey dey up na di closing minute — di call print $0.57, near di $0.47 of intrinsic value wey e settle with; di put, with SPY above im $750 strike, print $0.01. Spread dat one go every same-day SPY strike, sort am against SPY im $751.47 close:

QueryHow July 6 same-day SPY contracts finish — out of the money vs. in the money
The exact SQL behind every number
WITH (
    SELECT round(argMax(close, window_start), 2)
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND window_start >= toDateTime('2026-07-06 09:30:00', 'America/New_York')
      AND window_start < toDateTime('2026-07-06 16:01:00', 'America/New_York')
) AS spy_close
SELECT if(expired_at_zero, 'Out of the money at the close (expired at zero)',
                           'In the money at the close (settled with value)') AS at_the_bell,
       count() AS contracts,
       round(sumIf(vol, opt_type = 'C') / 1e6, 2) AS call_contracts_mm,
       round(sumIf(vol, opt_type = 'P') / 1e6, 2) AS put_contracts_mm,
       round(100.0 * sum(vol) / sum(sum(vol)) OVER (), 1) AS pct_of_spy_zero_dte_volume
FROM (
    SELECT substring(ticker, length(ticker) - 8, 1) AS opt_type,
           toFloat64(substring(ticker, length(ticker) - 7, 8)) / 1000 AS strike,
           (opt_type = 'C' AND strike > spy_close) OR (opt_type = 'P' AND strike < spy_close) AS expired_at_zero,
           sum(toFloat64(volume)) AS vol
    FROM global_markets.options_minute_aggs
    WHERE window_start >= toDateTime('2026-07-06 08:00:00')
      AND window_start < toDateTime('2026-07-07 04:00:00')
      AND startsWith(ticker, 'O:SPY260706')
    GROUP BY ticker, opt_type, strike, expired_at_zero
)
GROUP BY expired_at_zero
ORDER BY expired_at_zero DESC

86 of di day SPY strikes finish out of di money and expire for zero, dem carry 66.9% of di session same-day SPY volume — 3.91 million puts and 1.78 million calls. Di 33.1% wey finish in di money spread across 163 strikes.

Read dat one for both directions: every contract for di top row na total loss for anybody wey long am for di bell, and di whole premium na im di person wey short am keep. Volume no be ownership — di tape no fit talk who hold dis contracts for 4 p.m. E talk sey di majority of di session same-day SPY volume siddon for contracts wey end worth notin. For di size of both tails, di best and worst one thousand dollars of June 2026 run one month hindsight ledger.

Settlement dey differ by product: SPY, QQQ and single-stock options dey settle for shares, so one in-di-money contract wey dem hold through expiry turn to stock position: one $751 SPY call dey deliver 100 shares for dat strike. SPX options dey settle for cash.

Which tickers dey control 0DTE trading?

Every option ticker get one root — na di product wey e belong to. Di panel rank roots by same-day volume.

QueryJuly 6, 2026: top roots by same-day-expiry options volume
The exact SQL behind every number
SELECT root AS underlying,
       round(sum(volume) / 1e6, 2) AS zero_dte_contracts_mm,
       round(100.0 * sum(volume) / sum(sum(volume)) OVER (), 1) AS pct_of_zero_dte_volume
FROM (
    SELECT substring(ticker, 3, length(ticker) - 17) AS root,
           toFloat64(volume) AS volume
    FROM global_markets.options_minute_aggs
    WHERE window_start >= toDateTime('2026-07-06 08:00:00')
      AND window_start < toDateTime('2026-07-07 04:00:00')
      AND toDate(toTimeZone(window_start, 'America/New_York')) = toDate('2026-07-06')
      AND toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6))) = toDate(toTimeZone(window_start, 'America/New_York'))
)
WHERE root != 'SPCX'
GROUP BY root
ORDER BY sum(volume) DESC
LIMIT 8

Di two biggest index ETFs dey top di list: SPY carry 36.1% of di session same-day volume (8.49 million contracts), QQQ carry another 21.2%. SPXW — di root for weekly, cash-settled S&P 500 index options — print 11.3%, IWM print 3.5%. Di part wey stand out: TSLA na di largest single-stock same-day root at 11.9%, with NVDA, AAPL and META dey behind am — on a Monday, one day wey no stock option for expire under di old Friday-only convention.

Who dey trade 0DTE options, and when?

Di tape dey record contracts, prices, sizes and times — e no dey ever show identity. Exchanges and regulators describe di flow as mix: institutional desks dey run spreads and hedges, retail traders dey take directional positions. Di when wey you fit measure — when 0DTE options dey trade show say same-day flow dey fastest for di first half hour wey market open, no be di last.

Data notes: session and parse receipts

SPY print 390 regular-session minute bars on July 6 — na complete 9:30-to-4:00 session — e open at $748.74 and close at $751.47. Options volume wey expiry fail to parse from di OCC ticker: 0%. Volume on contracts wey don pass their expiry: 0%. Timestamps na UTC, dem convert am to Eastern before any date comparison; di contract-path panel dey read minute-bar closes (last-trade prints, no be quoted mids).

Di two contracts wey di theta/gamma section dey follow na di busiest same-day SPY strikes of di session, dem rank am here by contracts traded.

QueryJuly 6, 2026: SPY two busiest same-day contracts
The exact SQL behind every number
SELECT if(opt_type = 'P', 'Put', 'Call') AS side,
       toString(intDiv(strike_thousandths, 1000)) AS strike,
       round(contracts / 1e6, 2) AS contracts_mm
FROM (
    SELECT substring(ticker, length(ticker) - 8, 1) AS opt_type,
           toUInt32OrZero(substring(ticker, length(ticker) - 7, 8)) AS strike_thousandths,
           sum(toFloat64(volume)) AS contracts
    FROM global_markets.options_minute_aggs
    WHERE window_start >= toDateTime('2026-07-06 08:00:00')
      AND window_start < toDateTime('2026-07-07 04:00:00')
      AND startsWith(ticker, 'O:SPY260706')
    GROUP BY ticker, opt_type, strike_thousandths
    ORDER BY contracts DESC
    LIMIT 2
)
ORDER BY contracts DESC
QueryThe receipt: July 6, 2026 session completeness and OCC parse coverage
The exact SQL behind every number
WITH (
    SELECT countIf(window_start >= toDateTime('2026-07-06 09:30:00', 'America/New_York')
               AND window_start < toDateTime('2026-07-06 16:00:00', 'America/New_York'))
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND window_start >= toDateTime('2026-07-06 00:00:00', 'America/New_York')
      AND window_start < toDateTime('2026-07-07 00:00:00', 'America/New_York')
) AS spy_bars,
(
    SELECT round(argMin(open, window_start), 2)
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND window_start >= toDateTime('2026-07-06 09:30:00', 'America/New_York')
      AND window_start < toDateTime('2026-07-06 16:01:00', 'America/New_York')
) AS spy_open,
(
    SELECT round(argMax(close, window_start), 2)
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND window_start >= toDateTime('2026-07-06 09:30:00', 'America/New_York')
      AND window_start < toDateTime('2026-07-06 16:01:00', 'America/New_York')
) AS spy_close
SELECT spy_bars AS spy_session_bars_jul06,
       spy_open AS spy_open_jul06,
       spy_close AS spy_close_jul06,
       round(sum(toFloat64(volume)) / 1e6, 2) AS total_contracts_mm,
       round(100.0 * sumIf(toFloat64(volume), toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6))) IS NULL) / sum(toFloat64(volume)), 2) AS unparsable_expiry_pct,
       round(100.0 * sumIf(toFloat64(volume), toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6))) < toDate(toTimeZone(window_start, 'America/New_York'))) / sum(toFloat64(volume)), 2) AS past_expiry_pct
FROM global_markets.options_minute_aggs
WHERE window_start >= toDateTime('2026-07-06 08:00:00')
  AND window_start < toDateTime('2026-07-07 04:00:00')
  AND toDate(toTimeZone(window_start, 'America/New_York')) = toDate('2026-07-06')

0DTE options FAQ

Wetin be zero days to expiry (0DTE) options?

Zero days to expiry — 0DTE — na option wey dey trade for im own expiration date: for dat day close, dem go exercise am for im intrinsic value or e go just lapse for zero. "Zero days to expiration," "same-day options" and "dailies" na di same thing — na stage for any contract life, no be product. SPX, SPY, QQQ and IWM dey list one every trading day; every stock wey get option dey get dem for im expiration Fridays.

Wetin be di share of options volume wey be 0DTE?

For di whole US options tape, contracts wey dem trade for dia own expiry day na 34.3% of June 2026 volume — 506.3 million out of 1477.9 million contracts. For Monday, July 6, 2026, di same-day share print 38.8%.

I need special approval to trade 0DTE options?

Yes. 0DTE contracts dey inside broker ordinary options-approval process, wey dey run for levels: buying calls and puts for lower level, spreads and condors higher, uncovered (naked) selling higher still — generally with margin account and minimum balance. Buying and selling di same contract inside one session na day trade, so pesin wey dey trade 0DTE well-well dey under US pattern-day-trader rule: four or more day trades for five business days require $25,000 of margin-account equity. Levels dey vary by broker.

0DTE options riskier pass longer-dated options?

Dem dey compress di same outcomes inside one session: time value dey decay within hours, gamma dey highest near di strike, and out-of-the-money contract dey expire with no value for di close — total loss of di premium. FINRA investor guidance dey flag short-dated options trading.


Every panel wey dey up so na stored query — expand di SQL under any table, or ask di same question for plain English for Strasmore terminal.