Strasmore Research
Learn Matt ConnorBy Matt Connor

Which ETFs Have 0DTE Options?

Which ETFs have 0DTE options? We count every dated expiration in the option chain, by weekday, and rank the funds by how many weekdays they cover.

Which ETFs have 0DTE options? A 0DTE option is a contract trading on its final day, so one exists only where an exchange has listed an expiration dated for that session. That turns the question into a counting exercise over the option chain: which funds carry expirations dated on which weekdays. The screen below runs that count over a recent completed month and ranks 15 exchange-traded funds by how many of the five weekdays their dated expirations land on. Every name on it earned its place from dated expirations that traded, which is a different exercise from repeating a roster somebody typed once. 0DTE options covers the contract itself. This page answers the narrower question of where they exist among funds.

Which ETFs carry 0DTE options, counted by weekday

QueryETFs ranked by weekday coverage of dated option expirations (chain as of September 2026)
symbolweekdays_coveredmon_expiriestue_expirieswed_expiriesthu_expiriesfri_expiriesdated_expiries
GLD53454420
IWM53454420
QQQ53454420
SMH53454420
SPY53454420
XLF53454420
EEM33050412
IBIT33050412
SLV33050412
SOXL33050412
TLT33050412
TQQQ33050412
XLE33050412
UNG2005049
USO2005049
The exact SQL behind every number
SELECT
    underlying_symbol                                              AS symbol,
    uniqExact(toDayOfWeek(expiration_date))                        AS weekdays_covered,
    uniqExactIf(expiration_date, toDayOfWeek(expiration_date) = 1) AS mon_expiries,
    uniqExactIf(expiration_date, toDayOfWeek(expiration_date) = 2) AS tue_expiries,
    uniqExactIf(expiration_date, toDayOfWeek(expiration_date) = 3) AS wed_expiries,
    uniqExactIf(expiration_date, toDayOfWeek(expiration_date) = 4) AS thu_expiries,
    uniqExactIf(expiration_date, toDayOfWeek(expiration_date) = 5) AS fri_expiries,
    uniqExact(expiration_date)                                     AS dated_expiries
FROM global_markets.options_greeks
WHERE date BETWEEN '2026-09-01' AND '2026-09-30'
  AND expiration_date BETWEEN '2026-09-01' AND '2026-09-30'
  AND toDayOfWeek(expiration_date) <= 5
  AND volume > 0
  AND underlying_symbol IN ('SPY','QQQ','IWM','DIA','VOO','IVV','VTI','RSP','MDY',
                            'EEM','EFA','FXI','EWZ','EWJ','KWEB','INDA',
                            'GLD','SLV','GDX','USO','UNG',
                            'TLT','IEF','LQD','HYG',
                            'XLF','XLE','XLK','XLV','XLU','XLI','XLP','XLY','XLB','XRT','KRE',
                            'SMH','XBI','ARKK','IBIT','TQQQ','SQQQ','SOXL','VXX','UVXY')
  AND underlying_symbol NOT IN ('SPCX')
GROUP BY underlying_symbol
ORDER BY weekdays_covered DESC, dated_expiries DESC, symbol
LIMIT 15
Run this yourself

GLD heads the table with dated expirations on 5 of the five weekdays and 20 distinct expiration dates inside the window. The Monday through Friday columns each count distinct expiration dates that fell on that weekday and traded. For the leading fund, Monday shows 3 dated expirations and Tuesday 4. The calendar sets those ceilings: September 2026 holds four Mondays, one of them a market holiday with no session and no expiration on it, against five Tuesdays.

Four conditions decide where a fund lands:

  • The count runs over expiration dates rather than sessions, and a contract dated for a Tuesday is a 0DTE contract on that Tuesday.
  • Contract volume was above zero, which keeps listed-but-untraded expirations out of the tally.
  • Expiration dates outside the month are dropped, and so are weekend-dated expirations.
  • The screen starts from a fixed list of funds, and where each one lands is settled by the count alone.

The fourth condition is what separates a chain-derived answer from a copied one. Nothing in the query knows which funds are supposed to qualify.

Where this list differs from the five-symbol lists circulating elsewhere

Short lists of 'the five 0DTE symbols' are easy to find, and they diverge from the panel above in two specific ways.

The first is a category mix-up. Those lists usually fold cash-settled index options, SPX and XSP among them, in with funds. An index option is not an option on fund shares. It settles to a cash amount against an index level and never delivers anything, and the contract size and tax treatment differ too, all of which is the subject of SPX vs SPY options. Counting index products as ETFs pads the list and mislabels the instrument a reader would actually be holding.

The second is staleness. Expirations are added and withdrawn by exchange programme, one weekday and one product at a time. A roster typed into an article describes the season it was typed in. A count run over the chain describes the month it covered and names that window on the panel. When the two disagree, the count is the one with receipts underneath it: 15 funds sit on the screen above, ordered by weekday coverage, and the per-weekday columns show how each one got there. For the clock-time half of the same question, which hours a same-day contract actually trades, see when 0DTE options trade.

Which funds cover the fewest weekdays

Partial coverage is the more common pattern among funds, and the thin end of the screen teaches more than the leaders do on their own. The panel below sorts the same screen the other way, thinnest coverage first.

QueryThe thin end of the screen: funds with the fewest covered weekdays (September 2026)
symbolweekdays_covereddated_expiries
INDA11
MDY11
VTI11
ARKK14
EWJ14
GDX14
HYG14
IEF14
IVV14
KWEB14
LQD14
RSP14
The exact SQL behind every number
SELECT
    underlying_symbol                       AS symbol,
    uniqExact(toDayOfWeek(expiration_date)) AS weekdays_covered,
    uniqExact(expiration_date)              AS dated_expiries
FROM global_markets.options_greeks
WHERE date BETWEEN '2026-09-01' AND '2026-09-30'
  AND expiration_date BETWEEN '2026-09-01' AND '2026-09-30'
  AND toDayOfWeek(expiration_date) <= 5
  AND volume > 0
  AND underlying_symbol IN ('SPY','QQQ','IWM','DIA','VOO','IVV','VTI','RSP','MDY',
                            'EEM','EFA','FXI','EWZ','EWJ','KWEB','INDA',
                            'GLD','SLV','GDX','USO','UNG',
                            'TLT','IEF','LQD','HYG',
                            'XLF','XLE','XLK','XLV','XLU','XLI','XLP','XLY','XLB','XRT','KRE',
                            'SMH','XBI','ARKK','IBIT','TQQQ','SQQQ','SOXL','VXX','UVXY')
  AND underlying_symbol NOT IN ('SPCX')
GROUP BY underlying_symbol
ORDER BY weekdays_covered ASC, dated_expiries ASC, symbol
LIMIT 12
Run this yourself

INDA sits at the thin end with dated expirations on 1 of the five weekdays, 1 dates in all. The last row of the panel, RSP, covers 1. A fund sitting at one weekday is carrying the standard Friday weekly cycle and nothing else. Funds further up have had one or two extra weekdays layered onto that cycle. Someone who reads 'this fund has 0DTE options' and then works a Tuesday order against a fund with no Tuesday expiration finds no contract to trade, so the weekday column, rather than the fund name, is the practical answer.

The same exercise run on individual companies gives a shorter answer again. which stocks have daily options runs that count, and why only some stocks carry daily expirations covers the listing tests a single name has to pass.

Why these funds and not other ETFs

The spread across the two panels lines up with four features of these products.

  • Broad-based index exposure. Daily expirations have been extended on funds tracking broad, diversified indexes rather than narrow baskets. A broad underlying carries no single-company event landing inside the contract's one-day life.
  • Exchange listing programmes. Expirations arrive on a schedule the exchange sets and widens one weekday at a time, so a fund can sit at three or four weekdays for a long stretch before a fifth is listed.
  • Volume and open-interest tests. Activity thresholds form part of the test an exchange applies when it extends a cycle, and a fund trading a few hundred contracts a day does not meet them.
  • Continuous two-sided quotes. A same-day contract lives entirely inside one session, and a market in it needs quotes present all day, which concentrates in the names already carrying the heaviest volume.

That last point is measurable, so here it is measured.

QueryBusiest screened funds by option contract volume (September 2026)
symbolavg_daily_contract_volume_k
SPY3538.6
QQQ2557.4
IWM1100.8
TLT870.8
IBIT656.3
HYG568.4
EWZ443.3
GLD365.6
SLV312.8
SOXL260.6
TQQQ255.4
USO239.4
The exact SQL behind every number
SELECT
    underlying_symbol                                                 AS symbol,
    round(sum(volume) / uniqExact(date) / 1000, 1)                    AS avg_daily_contract_volume_k
FROM global_markets.options_greeks
WHERE date BETWEEN '2026-09-01' AND '2026-09-30'
  AND volume > 0
  AND underlying_symbol IN ('SPY','QQQ','IWM','DIA','VOO','IVV','VTI','RSP','MDY',
                            'EEM','EFA','FXI','EWZ','EWJ','KWEB','INDA',
                            'GLD','SLV','GDX','USO','UNG',
                            'TLT','IEF','LQD','HYG',
                            'XLF','XLE','XLK','XLV','XLU','XLI','XLP','XLY','XLB','XRT','KRE',
                            'SMH','XBI','ARKK','IBIT','TQQQ','SQQQ','SOXL','VXX','UVXY')
  AND underlying_symbol NOT IN ('SPCX')
GROUP BY underlying_symbol
ORDER BY avg_daily_contract_volume_k DESC
LIMIT 12
Run this yourself

SPY averaged 3538.6 thousand option contracts a day across all expirations in the window, the heaviest on the screen. By the bottom of the twelve, USO averaged 239.4 thousand a day. Set this ranking beside the first panel and the same handful of names recurs near the top of both: wide weekday coverage and heavy volume sit together.

A month of dated expirations, date by date

The weekday count is a tally. The trace below is the same fact drawn out in time: every expiration date the screen leader carried inside the window, with the contract volume that traded into each of them across the month.

QueryEvery dated expiration for the leading screened fund (September 2026)
expiry_dateexpiry_labelweekdaysymbolcontract_volume_k
2026-09-02Sep 2WedSPY1378.5
2026-09-03Sep 3ThuSPY1215.3
2026-09-04Sep 4FriSPY2490.5
2026-09-08Sep 8TueSPY1600.2
2026-09-09Sep 9WedSPY1717.2
2026-09-10Sep 10ThuSPY1655
2026-09-11Sep 11FriSPY3521.3
2026-09-14Sep 14MonSPY1674.6
2026-09-15Sep 15TueSPY1967.3
2026-09-16Sep 16WedSPY1406.5
2026-09-17Sep 17ThuSPY1925.6
2026-09-18Sep 18FriSPY8648.4
2026-09-21Sep 21MonSPY1808.2
2026-09-22Sep 22TueSPY2109.2
2026-09-23Sep 23WedSPY2052
2026-09-24Sep 24ThuSPY1828.4
2026-09-25Sep 25FriSPY5352.7
2026-09-28Sep 28MonSPY2308.3
2026-09-29Sep 29TueSPY2018.1
2026-09-30Sep 30WedSPY5981.2
The exact SQL behind every number
WITH dated AS
(
    SELECT
        underlying_symbol,
        expiration_date,
        sum(volume) AS contracts
    FROM global_markets.options_greeks
    WHERE date BETWEEN '2026-09-01' AND '2026-09-30'
      AND expiration_date BETWEEN '2026-09-01' AND '2026-09-30'
      AND toDayOfWeek(expiration_date) <= 5
      AND volume > 0
      AND underlying_symbol IN ('SPY','QQQ','IWM','DIA','VOO','IVV','VTI','RSP','MDY',
                                'EEM','EFA','FXI','EWZ','EWJ','KWEB','INDA',
                                'GLD','SLV','GDX','USO','UNG',
                                'TLT','IEF','LQD','HYG',
                                'XLF','XLE','XLK','XLV','XLU','XLI','XLP','XLY','XLB','XRT','KRE',
                                'SMH','XBI','ARKK','IBIT','TQQQ','SQQQ','SOXL','VXX','UVXY')
      AND underlying_symbol NOT IN ('SPCX')
    GROUP BY underlying_symbol, expiration_date
),
leader AS
(
    SELECT
        underlying_symbol,
        uniqExact(toDayOfWeek(expiration_date)) AS weekdays_covered,
        sum(contracts)                          AS contracts
    FROM dated
    GROUP BY underlying_symbol
    ORDER BY weekdays_covered DESC, contracts DESC, underlying_symbol
    LIMIT 1
)
SELECT
    toString(expiration_date)                AS expiry_date,
    formatDateTime(expiration_date, '%b %e') AS expiry_label,
    formatDateTime(expiration_date, '%a')    AS weekday,
    any(underlying_symbol)                   AS symbol,
    round(sum(contracts) / 1000, 1)          AS contract_volume_k
FROM dated
WHERE underlying_symbol IN (SELECT underlying_symbol FROM leader)
GROUP BY expiration_date
ORDER BY expiration_date
Run this yourself

That is 20 dated expirations, from Sep 2 through Sep 30, carrying 1378.5 thousand contracts into the first and 5981.2 thousand into the last. The weekday column beside each date answers the original question date by date rather than by assertion. Run the same block against a fund from the second panel and the gaps appear on the weekdays it does not list, visible at a glance.

FAQ

What does 0DTE mean for an ETF option?

Zero days to expiration: the contract's last trading day is the current session, and it ceases to exist after the close. The mechanics match a 0DTE option on any other underlying, set out in what 0DTE options are.

Which ETF trades the most option volume?

Over the window counted here, SPY averaged 3538.6 thousand option contracts a day across all expirations, the highest figure on the screen.

Do all ETFs with weekly options have a 0DTE option every weekday?

No. The second panel lists 12 funds at the thin end of the screen, the last of them carrying dated expirations on 1 of the five weekdays. Weekly options and daily expirations are separate listings.

Can the list of ETFs with 0DTE options change?

Yes. Exchanges list and withdraw expirations by programme, and activity thresholds form part of the test. The durable form of this answer is a dated count over the chain, which is what the panels above hold.

Are index 0DTE options the same as ETF 0DTE options?

No. An index option settles to a cash amount measured against an index level, while a fund option delivers shares of the fund. SPX vs SPY options walks through the settlement, sizing and exercise differences.

Full data notes

The option chain used here carries one row per contract per session, with volume, strike and expiration date on each row. The counting rule in every panel is the expiration date: a contract dated for a given weekday is a 0DTE contract on that weekday, and a fund carrying dated expirations across all five weekdays carries a same-day contract on each of them. Rows are filtered to traded volume above zero, and both the observation date and the expiration date sit inside one completed calendar month, named in the caption. Chain rows are recorded while a contract is live, so the volume figures are contract counts accumulated over the sessions a contract was quoted in, divided by one thousand in SQL for readability. One reused ticker symbol that tags two different companies in vendor feeds is excluded in the SQL of every panel, so no busiest-name callout can land on an ambiguous entity. The counts describe that month rather than a standing roster.


Every panel on this page ships with the exact SQL that produced it, so the counting rules are inspectable instead of asserted. To run the same weekday count over a different month or a wider screen of funds, ask for it in plain English on the Strasmore terminal.