Strasmore Research
Learn am Matt ConnorBy Matt Connor

Do Most Options Expire Worthless? Wetin Data Show

Most options no dey reach expiration. The 90 percent claim dey mix closed positions, in-the-money and out-of-the-money contracts into one number.

Most options dey expire worthless? No. Most listed option contracts no dey reach their expiration date for the account wey open dem. The position dey get closed for the tape days or weeks earlier. The contracts wey reach the last bell dey split between finishing in the money and finishing out of the money. The 90% figure wey dey circulate for retail options content dey join different outcomes into one number, and no published exchange statistic talk say na so.

Where the 90% claim dey come from

The Options Clearing Corporation, or OCC, na the clearinghouse wey dey between every buyer and seller of listed US equity option. Its public statistics cover contract volume and open interest. No OCC table report say 90% of options expire worthless for any year, and no exchange release talk am too.

The claim also dey move around without denominator. Worthless expirations as share of wetin? The contracts wey still open for the final bell, or every contract wey people open during the year? Those two answers far apart, and the popular version no name either one. When person no fit trace a figure to published clearinghouse or exchange table, the honest thing na to say the data no dey available at that level of detail, then measure wetin dey available.

The three things wey fit happen to an option contract

Every contract dey end in one of three ways, and na only the last one be wetin “expired worthless” describe.

  1. Person close am before expiration. The holder sell the contract wey dem buy, or buy back the one wey dem sell, at any price wey market offer that day. Any statistic about expirations no go show this ending.
  2. Person exercise am. An in the money contract convert to stock at the strike price. Anything wey finish in the money by one penny or more dey exercise automatically under OCC’s exercise by exception rule, unless the holder submit contrary instruction. Our guide to wetin dey happen if option expire ITM explain the process.
  3. Person hold am to expiration and no exercise am. The contract finish out of the money, nobody exercise am, and e stop to exist. Na only this bucket the phrase cover.

Na when dem join all three into one percentage the myth dey start.

So wetin share of options really expire worthless?

Here be one count anybody fit run: take every listed contract wey still dey trade during the final days before expiration, then compare the underlying close for that last session with the strike. The panel below do this for six household names over the twelve months to July 2026.

QueryWhere expiring contracts stand for their last print, six household names, Aug 2025 to Jul 2026
The exact SQL behind every number
WITH final_print AS
(
    SELECT
        underlying_symbol                         AS symbol,
        ticker,
        argMax(option_type, date)                 AS contract_type,
        toFloat64(argMax(strike_price, date))     AS strike,
        toFloat64(argMax(underlying_close, date)) AS spot_last,
        min(days_to_expiry)                       AS final_dte
    FROM global_markets.options_greeks
    WHERE underlying_symbol IN ('SPY', 'AAPL', 'MSFT', 'NVDA', 'AMZN', 'KO')
      AND (lower(toString(option_type)) LIKE 'c%' OR lower(toString(option_type)) LIKE 'p%')
      AND volume > 0
      AND expiration_date >= '2025-08-01'
      AND expiration_date <  '2026-08-01'
      AND date >= '2025-06-01'
      AND date <  '2026-08-01'
    GROUP BY symbol, ticker
    HAVING final_dte <= 3
)
SELECT
    symbol,
    round(100 * countIf(
        (lower(toString(contract_type)) LIKE 'c%' AND spot_last <= strike)
     OR (lower(toString(contract_type)) LIKE 'p%' AND spot_last >= strike)
    ) / count(), 1)   AS pct_expired_otm,
    round(100 * countIf(
        (lower(toString(contract_type)) LIKE 'c%' AND spot_last >  strike)
     OR (lower(toString(contract_type)) LIKE 'p%' AND spot_last <  strike)
    ) / count(), 1)   AS pct_expired_itm,
    count()           AS expiring_contracts
FROM final_print
GROUP BY symbol
ORDER BY pct_expired_otm DESC
Run this yourself

MSFT sit highest, with 57.6% of its expiring contracts out of the money for that final print. KO sit lowest at 47.3%. Read am well before you repeat am anywhere. E count contracts, no be positions and no be dollars. Every expiration list a ladder of strikes wey run far above and far below the share price, and most of that ladder dey out of the money by design. High number here describe how strikes dey get listed. E no tell you how much money dey at risk, or how many of those contracts still dey held by the people wey buy dem.

Worthless for buyer, seller keep the premium

Each of those expirations get two sides. The buyer pay premium wey don disappear. The seller collect that same premium and keep all of am. One event, two ledgers. People quote the statistic to buyers as warning and to sellers as edge, but neither version mention the premium collected or the risk wey seller carry to collect am. Imagine seller wey collect $40 per contract and later pay back $900 on the one wey move against dem. Their worthless rate good well. Their quarter no good.

Early closes make the matter more confusing. Buy a call at $2.00, sell am at $6.00 three weeks later, and you don close the trade with gain. That contract fit continue trading for another person account and fit still finish out of the money. If you count by contract, na one more worthless expiration. If you count by trade, na winner for you. Covered call writers dey position for the contract to finish out of the money, na why people dey repeat this statistic most times.

Most option volume no dey reach expiration

Zero days to expiry, or 0DTE, mean contract wey trade and expire for the same session. SPY, the biggest US equity option market, get expiration every trading day. That volume dominate the modern tape, and e dey distort any count wey mix trades with expirations.

QueryShare of SPY option volume by days wey remain to expiry, Q2 2026
The exact SQL behind every number
WITH
(
    SELECT sum(volume)
    FROM global_markets.options_greeks
    WHERE underlying_symbol = 'SPY'
      AND volume > 0
      AND date >= '2026-04-01'
      AND date <  '2026-07-01'
) AS quarter_volume
SELECT
    multiIf(days_to_expiry = 0,   '0 (expires that day)',
            days_to_expiry <= 5,  '1 to 5 days',
            days_to_expiry <= 21, '6 to 21 days',
            days_to_expiry <= 60, '22 to 60 days',
                                  '61 days or more')  AS days_to_expiry_bucket,
    round(100 * sum(volume) / quarter_volume, 1)      AS share_of_volume_pct,
    countDistinct(ticker)                             AS contracts_with_volume
FROM global_markets.options_greeks
WHERE underlying_symbol = 'SPY'
  AND volume > 0
  AND date >= '2026-04-01'
  AND date <  '2026-07-01'
GROUP BY days_to_expiry_bucket
ORDER BY min(days_to_expiry)
Run this yourself

For second quarter of 2026, the shortest bucket for the board, 1 to 5 days, take 53.8% of SPY option volume, spread across 15612 different contracts. Contracts wey get 61 days or more remaining take 8.9% of the volume.

A 0DTE contract wey person buy at 10:00 and sell at 14:30 no expire at all. Its volume dey inside the same bucket as one wey person carry enter the close and leave to lapse. Any headline percentage wey treat one day of option volume as positions wey dey move toward expiration go count the same contract again and again. The session mechanics dey for when 0DTE options trade.

Strike distance fit change the odds?

“Expires worthless” no be fixed property of options. E dey change based on where the strike dey compared with the price and how much time remain. The next panel take every SPY contract wey trade with about one month remaining, measure how far out of the money e be that day, then check where the underlying dey when that same contract last change hands near expiration.

QueryShare of out-of-the-money SPY contracts wey finish ITM, by distance at 30 days out
The exact SQL behind every number
WITH entry AS
(
    SELECT
        ticker,
        argMin(option_type, date)                 AS contract_type,
        toFloat64(argMin(strike_price, date))     AS strike,
        toFloat64(argMin(underlying_close, date)) AS spot_30d_out
    FROM global_markets.options_greeks
    WHERE underlying_symbol = 'SPY'
      AND (lower(toString(option_type)) LIKE 'c%' OR lower(toString(option_type)) LIKE 'p%')
      AND days_to_expiry BETWEEN 28 AND 32
      AND volume > 0
      AND date >= '2025-07-01'
      AND date <  '2026-07-01'
    GROUP BY ticker
),
last_print AS
(
    SELECT
        ticker,
        toFloat64(argMax(underlying_close, date)) AS spot_at_last_print,
        min(days_to_expiry)                       AS final_dte
    FROM global_markets.options_greeks
    WHERE underlying_symbol = 'SPY'
      AND volume > 0
      AND date >= '2025-07-01'
      AND date <  '2026-08-01'
    GROUP BY ticker
    HAVING final_dte <= 3
)
SELECT
    multiIf(otm_pct < 2,  'under 2% out',
            otm_pct < 5,  '2% to 5% out',
            otm_pct < 10, '5% to 10% out',
            otm_pct < 20, '10% to 20% out',
                          '20% or more out')            AS distance_at_30_days,
    round(100 * countIf(finished_itm) / count(), 1)      AS pct_finished_itm,
    count()                                             AS contracts
FROM
(
    SELECT
        if(lower(toString(e.contract_type)) LIKE 'c%',
           100 * (e.strike / e.spot_30d_out - 1),
           100 * (1 - e.strike / e.spot_30d_out)) AS otm_pct,
        if(lower(toString(e.contract_type)) LIKE 'c%',
           s.spot_at_last_print > e.strike,
           s.spot_at_last_print < e.strike)       AS finished_itm
    FROM entry AS e
    INNER JOIN last_print AS s ON s.ticker = e.ticker
)
WHERE otm_pct > 0
GROUP BY distance_at_30_days
ORDER BY min(otm_pct)
Run this yourself

The nearest bucket, under 2% out, dey in the money for that last print 36.8% of the time across 1629 contracts. The furthest, 20% or more out, dey in the money 0% of the time. One general percentage no fit describe both ends of that curve. For the gap between finishing in the money and touching the strike along the way, see probability of touch vs probability of ITM.

Wetin one expiration cycle look like

Choose one expiration and watch am. SPY contracts wey expire on Friday, May 15, 2026 don dey listed and tradeable long before then. The panel track the final month of that cycle, counting every contract wey carry that expiration date and trade for each session.

QueryDaily trading for SPY contracts wey expire 15 May 2026, final month of the cycle
The exact SQL behind every number
SELECT
    toString(date)               AS date,
    round(sum(volume) / 1000, 1) AS volume_thousands,
    countDistinct(ticker)        AS contracts_with_volume
FROM global_markets.options_greeks
WHERE underlying_symbol = 'SPY'
  AND expiration_date = '2026-05-15'
  AND volume > 0
  AND days_to_expiry <= 30
  AND date >= '2026-04-01'
  AND date <  '2026-05-16'
GROUP BY date
ORDER BY date
Run this yourself

For the first session wey dey show, 448.2 thousand contracts for that expiration change hands across 281 strikes. For the last session wey dey show, 1685.7 thousand trade. The tape remain busy reach the end of the cycle. Na so cycle dey look while holders close and extend positions instead of just sitting down. Rolling an option position na one common example.

Measure your own close versus expire ratio

The number wey describe your account no dey on any statistics page. Na your close versus expire ratio: over one quarter, how many option positions you close with offsetting trade, and how many you carry reach expiration date. Both counts dey inside your broker trade history.

If almost everything dey close early, aggregate statistic about expirations dey describe market wey you hardly participate in. If almost everything reach the final session, assignment mechanics and the pin around heavily traded strikes apply to you directly, and max pain plus early assignment worth reading next. For the wider picture, see how risky is options trading.

How dem measure these panels

Dem measure moneyness against the underlying closing price for the last session wey contract actually trade, and dem only count contracts wey still dey trade within three days of expiration. The settlement print no dey inside this data. The last traded session stand in for am, and contract wey stop trading earlier no enter the sample. AM settled and cash settled index products settle on different print. These panels cover PM settled single name and ETF contracts.

Each panel count contracts wey trade for the session in question. Listed strike wey never trade no enter the sample. Open interest no dey part of this data, so no panel count positions wey people hold. Dem count contracts and volume, na exactly the difference wey the 90% claim ignore.

FAQ

90% of options dey expire worthless?

No published clearinghouse or exchange table talk so. The figure dey circulate without denominator, and e join contracts wey people close before expiration with contracts wey dem exercise and contracts wey dem leave to lapse. Those na separate counts wey answer separate questions.

Wetin percentage of options people exercise?

Precise public figure for any given year no be something wey reader fit pull and verify at that level of detail, so treat any quoted number with suspicion. The mechanic dey verifiable: contract wey finish in the money by one penny or more dey exercise automatically unless the holder instruct otherwise. So the exercised share dey move with the share wey finish in the money.

Option wey expire worthless always mean loss?

Na loss for whoever hold am enter expiration, and gain for whoever dey short am. E no tell you anything about trader wey buy the contract earlier and sell am at profit weeks before. Contract final outcome and one person result no be the same thing.

0DTE options dey expire worthless?

Much of 0DTE volume dey close intraday and no reach the final bell. Contract wey person buy and sell inside the session get no expiration outcome at all. Na why counts wey mix daily volume with expirations dey overstate how many contracts truly reach the close.

How I fit find my own rate?

Pull one quarter of trade history from your broker and count two things: positions wey you close with offsetting trade, and positions wey reach their expiration date. That ratio na the version of this statistic wey apply to your account.


Every panel here get the exact SQL underneath am. Expand one to see wetin dem count. To run the same count on the names wey you dey follow, ask for am in plain English on the Strasmore terminal.