Strasmore Research
Learn Matt ConnorBy Matt Connor · data as of July 16, 2026 · refreshed weekly

Which Stocks Have Daily Options?

SPY, QQQ and IWM list a new options expiration every trading day, and the index roots go deeper. See which tickers carry dailies and which only get Fridays.

A handful of tickers list a new options expiration every single trading day: SPY, QQQ, IWM, and the cash-settled index roots behind the S&P 500, Nasdaq-100, and Russell 2000. Most stocks do not. The ordinary single name carries weekly Friday contracts and one monthly third-Friday date, with nothing in between. This page ranks tickers by how many separate expiration dates they carry over the coming weeks, walks the SPY calendar one day at a time, and shows the Monday-Wednesday-Friday pattern that the daily names grew out of. Every number below is read live from the options tape.

Which stocks have daily options?

The option roots carrying the most separate expiration dates over the next six weeks, measured from the most recent week of the options tape:

QueryWhich tickers carry the most upcoming expirations — option roots by distinct expiration dates in the next six weeks
The exact SQL behind every number
SELECT root,
       uniqExact(expiry) AS upcoming_expirations,
       round(sum(vol) / 1e6, 2) AS contracts_mm
FROM (
    SELECT substring(ticker, 3, length(ticker) - 17) AS root,
           toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6))) AS expiry,
           toFloat64(volume) AS vol
    FROM global_markets.options_minute_aggs
    WHERE window_start >= now() - INTERVAL 8 DAY
)
WHERE expiry >= today() - 3
  AND expiry <= today() + INTERVAL 40 DAY
  AND root != 'SPCX'
GROUP BY root
HAVING upcoming_expirations >= 8
ORDER BY upcoming_expirations DESC, contracts_mm DESC, root
LIMIT 20

SPXW leads with 29 distinct upcoming expiration dates, close to one for every trading day in the window. Every root above the single stocks is either a cash-settled index root or one of the three broad-market ETFs. The single stocks sit lower on the list, each topping out near 11 upcoming dates against the 29 at the top of the table. The full list runs 20 roots deep at eight or more upcoming expirations. The takeaway is structural: a contract expiring on every trading day is an index-and-ETF feature, and no ordinary company stock has it.

Daily expirations exist where the demand is heaviest, and almost all of that demand is same-day. A daily-expiring contract is what lets a trader open and close a position inside a single session, the core of the 0DTE options boom. Listing a new expiration every day only makes sense on the products that draw that flow: the S&P 500 in ETF and index form, the Nasdaq-100, the Russell 2000, and a small set of the very largest single names.

SPY lists a new expiration every trading day

Zoom into one name. Here is every SPY expiration date the tape shows across a two-week span, with its weekday and the volume traded against each:

QuerySPY's expiration on every trading day — each near-term SPY expiry date, its weekday and volume
The exact SQL behind every number
SELECT toString(expiry) AS expiry_date,
       formatDateTime(expiry, '%b %e') AS expiry_label,
       dateName('weekday', expiry) AS weekday,
       round(sum(vol) / 1e6, 2) AS contracts_mm
FROM (
    SELECT toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6))) AS expiry,
           toFloat64(volume) AS vol
    FROM global_markets.options_minute_aggs
    WHERE window_start >= now() - INTERVAL 8 DAY
      AND ticker LIKE 'O:SPY2%'
)
WHERE expiry >= today() - 3 AND expiry <= today() + INTERVAL 12 DAY
GROUP BY expiry
ORDER BY expiry

From Jul 13 through Jul 27, SPY carried an expiration on all 11 trading days shown, Monday through Friday, one date after another with no gaps. The volume clusters in the nearest dates, where same-day traders concentrate, and thins out as the calendar runs forward. That forward thinning is the reason SPY counted 15 distinct dates over six weeks in the first table rather than roughly thirty: the exchanges list SPY's daily expirations only a couple of weeks out, and past that the calendar drops back to weekly Fridays. The index root SPXW lists its dailies further into the future, and its count runs higher.

Does my stock have daily options?

Six household tickers, counted the same way over the same six-week window:

QueryDaily options vs weekly options — upcoming expiration dates for six household tickers
The exact SQL behind every number
SELECT root,
       uniqExact(expiry) AS upcoming_expirations,
       round(sum(vol) / 1e6, 2) AS contracts_mm
FROM (
    SELECT substring(ticker, 3, length(ticker) - 17) AS root,
           toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6))) AS expiry,
           toFloat64(volume) AS vol
    FROM global_markets.options_minute_aggs
    WHERE window_start >= now() - INTERVAL 8 DAY
      AND (ticker LIKE 'O:SPY2%' OR ticker LIKE 'O:QQQ2%' OR ticker LIKE 'O:AAPL2%'
           OR ticker LIKE 'O:NVDA2%' OR ticker LIKE 'O:KO2%' OR ticker LIKE 'O:XOM2%')
)
WHERE expiry >= today() - 3
  AND expiry <= today() + INTERVAL 40 DAY
  AND root IN ('SPY', 'QQQ', 'AAPL', 'NVDA', 'KO', 'XOM')
GROUP BY root
ORDER BY upcoming_expirations DESC, contracts_mm DESC, root

SPY and QQQ carry 15 upcoming expiration dates each. The busiest single stocks, NVDA and AAPL, carry 11 apiece: weekly Fridays plus a few extra listings the exchanges add for the most active names. XOM and KO carry 6, a weekly Friday and the monthly third-Friday date and little else. For the vast majority of stocks the answer sits in that last group. A megacap such as NVDA gets weekly Fridays, not a contract every afternoon, and a slower name may carry only the monthly. Daily options are reserved for the index products and the handful of ETFs with the deepest same-day flow.

Monday, Wednesday, Friday: the expiration weekdays

Sort the same forward window by weekday instead of by ticker. The count is how many distinct option roots carry an expiration on each weekday:

QueryMonday, Wednesday, Friday expirations — distinct option roots carrying an expiry on each weekday
The exact SQL behind every number
SELECT weekday,
       uniqExact(root) AS roots_with_expiry,
       round(sum(vol) / 1e6, 1) AS contracts_mm
FROM (
    SELECT substring(ticker, 3, length(ticker) - 17) AS root,
           toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6))) AS expiry,
           multiIf(toDayOfWeek(toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6)))) = 1, '1 Monday',
                   toDayOfWeek(toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6)))) = 2, '2 Tuesday',
                   toDayOfWeek(toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6)))) = 3, '3 Wednesday',
                   toDayOfWeek(toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6)))) = 4, '4 Thursday',
                   '5 Friday') AS weekday,
           toFloat64(volume) AS vol
    FROM global_markets.options_minute_aggs
    WHERE window_start >= now() - INTERVAL 8 DAY
)
WHERE expiry >= today() - 3 AND expiry <= today() + INTERVAL 30 DAY
GROUP BY weekday
ORDER BY weekday

Friday is universal: 4572 roots carry a Friday-dated expiration in the window, essentially every optionable name in the US. The midweek days belong to a small club. 32 roots carry a Wednesday date and 31 a Monday, against 12 on Tuesday and 11 on Thursday. Monday and Wednesday outnumber Tuesday and Thursday, a fossil of listing history: when the exchanges first pushed SPY and the big index products past weekly Fridays, they added Monday and Wednesday expirations, then filled in Tuesday and Thursday to complete the daily schedule. A name that shows a Monday/Wednesday/Friday pattern and no more is one that reached partway into a daily schedule without finishing it.

What daily options mean for 0DTE

Daily expirations are what turn a 0DTE trade into an everyday event rather than a Friday-only one. On any given session, SPY, QQQ, IWM, and the index roots each have a contract expiring that same afternoon: a zero-days-to-expiration position is always on the board for those names. For the rest of the market a 0DTE trade is only possible on the weekly Friday, the one day the whole options universe expires together. If you want the mechanics of settlement, exercise, and how a holiday shifts an expiration, the full expiration calendar covers the monthly cycle and triple witching as well.

Daily options FAQ

Which stocks have daily options?

No individual company stock has options that expire every trading day. Daily expirations exist for the largest ETFs (SPY, QQQ, and IWM) and for the cash-settled index roots behind the S&P 500, Nasdaq-100, and Russell 2000. Every other optionable name tops out at weekly Friday contracts plus the monthly third-Friday date. In the current window the top root carried 29 distinct upcoming expiration dates while the busiest single stocks carried around 11.

Does every stock have weekly options?

No. Weekly Friday options are listed only where there is enough demand, which covers most large and mid-cap names but not every stock. Smaller and thinly traded companies may carry only the monthly third-Friday contract. Even so, Friday remains near-universal: Friday-dated contracts appeared on 4572 separate option roots in the window measured here.

What is the difference between SPY and SPX daily options?

Both track the S&P 500 and both offer daily expirations. SPY options are on the ETF, American-style, and settle into shares. SPX options and its weekly root SPXW are cash-settled against the index level and European-style, so they cannot be exercised early. SPY's contract is roughly one-tenth the notional size of SPX. The expiration guide walks through the settlement mechanics for each.

Why do some stocks only have Monday, Wednesday, and Friday expirations?

Monday and Wednesday were the first non-Friday expirations the exchanges added to the top ETFs and index products, before Tuesday and Thursday filled in the rest of the week. A name showing only a Monday/Wednesday/Friday pattern reached partway into a daily schedule without completing it. In the current window 31 roots carried a Monday date and 32 a Wednesday, against far fewer on Tuesday and Thursday.


Every panel here is a stored, versioned query over the live options tape. Expand the SQL beneath any panel, or check a ticker's expiration calendar yourself on the Strasmore terminal.