Why Only Some Stocks Have Daily Options
Why only some stocks have daily options: the listing rules, liquidity thresholds and quote width math that keep Monday through Friday expirations rare.
Only some stocks have daily options, and the gate has little to do with how big the company is. Two separate approvals stand in front of every Monday through Friday expiration cycle. An exchange has to file a rule change to list it, and the market makers who quote that chain have to be willing to post a two sided price on every strike, every session. Most listed names clear neither gate, and the roster stays short: a small set of index and ETF underlyings alongside a handful of very high volume single stocks. For the current names, see the list of stocks with daily options. This page covers the machinery that decides who is on that list.
What counts as a daily option
Every option contract expires on a fixed date. For decades that date was the third Friday of the month, and monthly expirations are still the spine of every chain. Weekly expirations, called weeklys, added a Friday in the other weeks of the month, and weeklys now cover several hundred names. Daily expirations go one step further and put an expiration on every weekday. A contract with zero days left to run then exists in every session rather than once a week, which is the foundation under the 0DTE trade. If the vocabulary is new, when options expire walks through each expiration type in order.
The difference shows up plainly in a snapshot of the forward calendar.
| symbol | expirations_next_45d | non_friday_expirations | as_of_label |
|---|---|---|---|
| IWM | 15 | 8 | Sep 24, 2026 |
| QQQ | 15 | 8 | Sep 24, 2026 |
| SPY | 15 | 8 | Sep 24, 2026 |
| AAPL | 11 | 4 | Sep 24, 2026 |
| MSFT | 11 | 4 | Sep 24, 2026 |
| NVDA | 11 | 4 | Sep 24, 2026 |
| KO | 7 | 0 | Sep 24, 2026 |
The exact SQL behind every number
WITH (SELECT max(date) FROM global_markets.options_greeks) AS asof
SELECT
underlying_symbol AS symbol,
countDistinct(expiration_date) AS expirations_next_45d,
countDistinctIf(expiration_date, toDayOfWeek(expiration_date) != 5) AS non_friday_expirations,
formatDateTime(max(date), '%b %e, %Y') AS as_of_label
FROM global_markets.options_greeks
WHERE date = asof
AND underlying_symbol IN ('SPY', 'QQQ', 'IWM', 'NVDA', 'AAPL', 'MSFT', 'KO')
AND volume > 0
AND expiration_date > asof
AND expiration_date <= asof + 45
GROUP BY underlying_symbol
ORDER BY expirations_next_45d DESC, symbol ASCAs of Sep 24, 2026, IWM had 15 distinct expiration dates trading inside the next 45 days, and 8 of them land on a weekday other than Friday. The narrowest calendar in the same comparison, KO, carried 7 dates, of which 0 sit off Friday. Every name in that panel is large and heavily traded. The distance between the top row and the bottom row is the whole subject of this post.
Why most stocks do not have daily options
The first gate is the rulebook. Weekly and daily expirations are listed under the Short Term Option Series Program, the exchange rule that sets how many classes an exchange may select and which expiration days it may add to them. Widening it is a filing, not a switch. Cboe's change permitting Tuesday and Thursday expirations on SPY and QQQ took effect on November 14, 2022, in SR-CBOE-2022-059, the same filing that capped Monday and Wednesday expirations at two at a time for SPY, QQQ and IWM. Each exchange files separately, each filing names the classes it covers, and the program holds a cap on how many classes any one exchange may pick. The roster grows in steps, one filing at a time.
The second gate is the quote. A class has to carry weekly expirations before daily ones are even a question, and the existing chain has to look capable of supporting another cycle. Four numbers carry that decision:
- the contract volume the current expirations already trade
- the open interest that survives from one session to the next
- how wide the quotes on the existing chain already sit
- what it costs to hedge and carry the new contracts overnight
The first two are easy to mix up, and volume versus open interest separates them. A single session shows the size of the quoting job.
| symbol | lines_traded | pct_under_10_lots |
|---|---|---|
| SPY | 1566 | 10.5 |
| QQQ | 1294 | 17.8 |
| IWM | 492 | 25.2 |
| MSFT | 345 | 27.5 |
| AAPL | 297 | 29.6 |
| NVDA | 289 | 21.1 |
| KO | 67 | 23.9 |
The exact SQL behind every number
WITH (SELECT max(date) FROM global_markets.options_greeks) AS asof
SELECT
underlying_symbol AS symbol,
count() AS lines_traded,
round(100 * countIf(volume < 10) / count(), 1) AS pct_under_10_lots
FROM global_markets.options_greeks
WHERE date = asof
AND underlying_symbol IN ('SPY', 'QQQ', 'IWM', 'NVDA', 'AAPL', 'MSFT', 'KO')
AND volume > 0
AND days_to_expiry BETWEEN 0 AND 10
GROUP BY underlying_symbol
ORDER BY lines_traded DESCOn that session SPY traded 1566 separate contract lines inside ten days of expiry, and 10.5% of them moved fewer than ten contracts all day. The quoted chain is larger still: a line that never trades leaves no row here at all, and it was quoted anyway. At the other end of the panel, KO traded 67 lines. Both chains have to be priced continuously through the session, and only one of them has the flow to pay for it.
The spread arithmetic behind the short list
Here is the arithmetic, with hypothetical round numbers. Suppose a contract is quoted 1.05 bid, 1.06 ask. That is a one cent wide market. An option covers 100 shares, so half of that spread is 50 cents per contract. A market maker capturing half the spread on 4,000 contracts collects about $2,000 from that one line, against the cost of running the quote: the hedging, the overnight inventory, the systems repricing it every time the underlying moves.
Now put the same line on a stock whose entire daily option volume is four contracts. The one cent market collects $2. To earn that same $2,000 on four contracts, the quote would have to be roughly ten dollars wide on a contract worth about a dollar. Nobody trades against that price, and that is the point: a wide quote is what a thin line looks like when it is priced honestly.
Adding a daily expiration multiplies lines instead of adding one. A chain with 60 strikes and one weekly expiration is 120 quoted lines once calls and puts are counted. Give it five expirations a week and the same strikes become 600 lines. The volume does not multiply alongside them. It divides. That division is the everyday version of an options order that sits unfilled.
Where the volume goes on a daily chain
A daily chain creates no new demand. It spreads the demand that already exists across more dates. The panel below measures the split: for each expiration date in the coming month, the share of each name's total contract volume that landed on it.
The nearest date in view, Sep 25, took 46.2% of SPY's volume across the whole 30 day window and 75.1% of AAPL's. The three series draw different shapes. SPY prints volume on every weekday in the window, since every weekday is an expiration. AAPL and KO print volume only on the dates their chains actually list, and their series sit at zero in between. A stock with four expiration dates a month concentrates its flow onto four points. Give it twenty one dates and each point holds a fifth of what it held before, on the same strikes, quoted by the same firms.
How the daily expiration roster grew
The tape dates the expansion better than any summary. The panel counts, for each calendar month, how many separate dates inside that month actually had options trade.
| month | spy_expiry_days | aapl_expiry_days |
|---|---|---|
| 2021-09 | 13 | 4 |
| 2021-10 | 13 | 5 |
| 2021-11 | 13 | 4 |
| 2021-12 | 14 | 5 |
| 2022-01 | 13 | 4 |
| 2022-02 | 12 | 4 |
| 2022-03 | 14 | 4 |
| 2022-04 | 13 | 5 |
| 2022-05 | 13 | 4 |
| 2022-06 | 14 | 4 |
| 2022-07 | 13 | 5 |
| 2022-08 | 14 | 4 |
| 2022-09 | 13 | 5 |
| 2022-10 | 13 | 4 |
| 2022-11 | 17 | 4 |
| 2022-12 | 21 | 5 |
| 2023-01 | 20 | 4 |
| 2023-02 | 19 | 4 |
| 2023-03 | 23 | 5 |
| 2023-04 | 19 | 4 |
The exact SQL behind every number
SELECT
formatDateTime(toStartOfMonth(expiration_date), '%Y-%m') AS month,
countDistinctIf(expiration_date, underlying_symbol = 'SPY') AS spy_expiry_days,
countDistinctIf(expiration_date, underlying_symbol = 'AAPL') AS aapl_expiry_days
FROM global_markets.options_greeks
WHERE underlying_symbol IN ('SPY', 'AAPL')
AND volume > 0
AND date >= '2021-09-01'
AND expiration_date >= '2021-09-01'
AND expiration_date < toStartOfMonth(today())
AND days_to_expiry BETWEEN 0 AND 45
GROUP BY month
ORDER BY monthIn 2021-09, SPY traded options expiring on 13 separate dates inside that month. By 2026-08 the count stood at 21, close to one for every weekday the market was open. AAPL moved from 4 to 13 over the same stretch. The SPY line steps rather than drifts, and the steps sit where the rule filings landed. The AAPL line climbs too, and it still ends the stretch below the SPY line: the busiest single stock option market in the country runs fewer expiration dates in its latest month than the ETF does. More dates on a big single name is not the same thing as a date every weekday, and the distance between the two lines is the second gate in picture form.
Keep the durable part in mind and check the roster separately. Rules change slowly, in filings. Names change faster.
FAQ
Which stocks have daily options?
The set is short and it moves as exchanges file for new classes. Index products and the largest ETFs carry the fullest Monday through Friday calendars, with a small number of very high volume single stocks alongside them. The current roster lives in our list of stocks with daily options, which tracks the names rather than the rules.
Why does my stock not have daily options?
Almost every listed stock stops at one of two gates. Either no exchange has filed to list daily expirations in that class, or the existing weekly chain does not trade enough contracts per strike to support another cycle at a quotable width. A stock can be large and well known and still fail the second test.
Are daily options the same as 0DTE options?
No. A daily expiration is a listing, a date the exchange has placed on the calendar. 0DTE describes a contract on the day it expires. Daily expirations make a 0DTE contract available in every session instead of once a week. See what 0DTE options are for the mechanics.
Can an exchange add daily options to any stock?
No. The Short Term Option Series Program limits how many classes each exchange may select, and adding an expiration day takes a rule filing with the SEC that names the classes it covers. A class also has to carry weekly expirations before daily ones are on the table.
Do daily options cost more to trade?
A contract trades where it trades, but the cost of crossing the spread tracks how much that specific line trades. Thin expirations quote wider, and a wider quote means a larger gap between the price paid and the price at which the position could be closed again. Volume and open interest on the exact strike are the two figures that describe how thin a line really is.
Every panel above ships with the SQL that produced it, so the strike filters and the underlying list are visible and editable. Swap the ticker list for the names you follow and ask the same question on the Strasmore terminal.