Strasmore Research
Learn Matt ConnorBy Matt Connor

What Happens If an Option Expires In the Money

If an option expires in the money by at least $0.01, the OCC exercises it automatically. See what the long and short sides owe, and what pin risk costs.

An option that expires in the money, by as little as $0.01, is exercised automatically. The Options Clearing Corporation (OCC), the clearinghouse standing behind every listed US option, runs that step under a rule called exercise by exception, and it fires unless the holder files contrary instructions before the cutoff on expiration day. The long side wakes up holding stock and a cash bill. The short side is assigned at random and has to deliver.

What counts as in the money at expiration?

A call is in the money when the underlying closes above its strike price. A put is in the money when the underlying closes below its strike. The only print that settles the question is the closing price on expiration day, not where the stock traded at lunchtime and not where it opens the following Monday.

Two things get mixed up here. First, in the money describes the strike, and it says nothing about your profit: a call bought for $4.00 that finishes $0.30 in the money is still a loss, and it will still be exercised. Second, the threshold is tiny. The OCC applies exercise by exception at $0.01 per contract in the money for equity options in every account type, customer and non-customer alike, and at $0.01 for index options.

Do in-the-money options exercise automatically?

Yes. Under OCC Rule 805, an expiring contract that finishes at least a penny in the money is exercised for the holder with no action required from them. Anyone who wants a different outcome has to submit a contrary exercise instruction. Industry rules give option holders until 5:30 p.m. Eastern on expiration day to make that final decision, and a brokerage firm may impose an earlier internal cutoff, though it may not accept instructions after 5:30 p.m. Eastern.

The firm's cutoff is the one that binds a retail account, and it varies from firm to firm. Any specific clock time quoted on a forum is that firm's policy rather than a market-wide rule. When options expire walks the expiration calendar itself.

What happens to a long call that expires in the money?

Exercise converts the contract into 100 shares of stock, purchased at the strike price. The cash owed is the strike price multiplied by 100. US stock trades settle one business day after the trade date, so a Friday expiration puts the shares and the debit into the account on Monday. That bill tracks the share price and nothing else, which is why two contracts carrying the same premium can produce very different Monday balances.

QueryCash behind one contract: 100 shares at each name's close in the last week of July 2026
The exact SQL behind every number
SELECT ticker,
       round(argMax(toFloat64(close), window_start) * 100 / 1000, 1) AS cash_per_contract_usd_thousands
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'MSFT', 'AAPL', 'NVDA', 'JNJ', 'CVX', 'KO', 'CAG')
  AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-07-27')
  AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-07-31')
  AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
       + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY ticker
ORDER BY cash_per_contract_usd_thousands DESC
Run this yourself

The panel prices one at-the-money contract for eight familiar names, using each stock's own close in the last week of July 2026 as a stand-in for a near-the-money strike. Exercising a single contract on SPY called for roughly $74.7k in cash, and MSFT sat at $46.5k. The same single contract on CAG needed about $1.5k. One contract always means 100 shares of whatever the underlying costs, and the cash follows from that.

A long put that expires in the money works the other way. Exercise sells 100 shares at the strike. A holder who owns the shares delivers them. A holder who does not ends up short 100 shares on Monday, which carries a borrow cost and an open-ended exposure.

What happens when a short option is assigned?

Assignment is the mirror image, allocated by lottery. The OCC assigns exercise notices at random among the clearing members carrying short positions, and each member then allocates to its own customers by a published method, either random selection or first-in-first-out. Nothing about your position size or your entry price enters that draw.

A short call that finishes in the money delivers 100 shares at the strike. Covered call writers hand over shares they already hold. A writer without the shares ends Monday short the stock. A short put that finishes in the money buys 100 shares at the strike, cash due on settlement.

American-style equity options can also be assigned early, at any time before expiration, and those cases cluster around dividend dates. Ex-dividend dates and options covers that case, and American versus European options explains which contracts allow it at all.

What is pin risk?

Pin risk is the situation where the underlying finishes at or within pennies of the strike. The option holder cannot tell whether the contract will be exercised, the writer cannot tell whether they will be assigned, and neither learns the answer until the weekend has already begun.

How often does a stock land that close to a strike? Whole-dollar strikes are standard on the weekly chains of large, liquid names, so the distance from a Friday close to the nearest whole dollar is a workable proxy. Every Friday close for seven household names since January 2023:

QueryHow close Friday closes land to a whole-dollar strike: seven names, 2023 to July 2026
The exact SQL behind every number
WITH friday_bars AS (
    SELECT ticker,
           toDate(toTimeZone(window_start, 'America/New_York')) AS session,
           window_start,
           toFloat64(close) AS px
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('SPY', 'AAPL', 'MSFT', 'NVDA', 'JNJ', 'CVX', 'KO')
      AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2023-01-02')
      AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-07-31')
      AND toDayOfWeek(toDate(toTimeZone(window_start, 'America/New_York'))) = 5
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
),
friday_closes AS (
    SELECT ticker,
           session,
           argMax(px, window_start) AS close_px,
           count() AS session_bars
    FROM friday_bars
    GROUP BY ticker, session
    HAVING session_bars > 300
),
distances AS (
    SELECT abs(close_px - round(close_px)) * 100 AS cents_from_strike
    FROM friday_closes
)
SELECT multiIf(cents_from_strike < 1, 'under 1 cent',
               cents_from_strike < 5, '1 to 5 cents',
               cents_from_strike < 10, '5 to 10 cents',
               cents_from_strike < 25, '10 to 25 cents',
               '25 to 50 cents') AS distance_band,
       count() AS closes_count,
       round(100 * count() / sum(count()) OVER (), 2) AS share_pct
FROM distances
GROUP BY distance_band
ORDER BY min(cents_from_strike)
Run this yourself

The nearest band, under 1 cent, holds 35 of those Friday closes, 2.82% of the sample. Another 9.04% landed in the next band out. The widest band, 25 to 50 cents, takes 50.69%. A true pin on any one name in any one week is uncommon. A chain lists dozens of strikes at once, and each one is its own candidate.

The other half of pin risk is timing. The price that decides exercise by exception is set at the closing bell, and prices are still moving into it:

QueryAbsolute move over the final 30 minutes of Friday sessions, 2023 to July 2026
The exact SQL behind every number
WITH friday_bars AS (
    SELECT ticker,
           toDate(toTimeZone(window_start, 'America/New_York')) AS session,
           toHour(toTimeZone(window_start, 'America/New_York')) * 60
             + toMinute(toTimeZone(window_start, 'America/New_York')) AS et_minute,
           window_start,
           toFloat64(close) AS px
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('SPY', 'AAPL', 'MSFT', 'NVDA', 'JNJ', 'CVX', 'KO', 'T')
      AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2023-01-02')
      AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-07-31')
      AND toDayOfWeek(toDate(toTimeZone(window_start, 'America/New_York'))) = 5
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
),
friday_sessions AS (
    SELECT ticker,
           session,
           argMaxIf(px, window_start, et_minute <= 930) AS px_330,
           argMaxIf(px, window_start, et_minute > 930) AS px_close,
           countIf(et_minute <= 930) AS early_bars,
           countIf(et_minute > 930) AS late_bars
    FROM friday_bars
    GROUP BY ticker, session
    HAVING early_bars > 100 AND late_bars > 10 AND px_330 > 0
)
SELECT ticker,
       count() AS fridays_count,
       round(quantileDeterministic(0.5)(abs(px_close / px_330 - 1) * 100,
                                        cityHash64(toString(session))), 3) AS median_last30_move_pct,
       round(quantileDeterministic(0.9)(abs(px_close / px_330 - 1) * 100,
                                        cityHash64(toString(session))), 3) AS p90_last30_move_pct
FROM friday_sessions
GROUP BY ticker
ORDER BY median_last30_move_pct DESC
Run this yourself

Across the 177 Fridays measured for NVDA, the median move over the final half hour ran 0.272%, against 0.071% on SPY at the quiet end of the panel. The 90th percentile Friday on NVDA moved 0.804% in those thirty minutes. A contract sitting a nickel out of the money at 3:30 p.m. is not settled yet. Max pain looks at the same closing print from the open-interest side.

Cash-settled index options never deliver shares

Options on broad indexes such as the S&P 500 settle in cash. Nothing is bought and nothing is delivered. The in-the-money amount is multiplied by the contract multiplier and paid in cash, and the position disappears. There is no Monday stock delivery and no weekend share exposure.

The catch is which price gets used. Many index contracts settle against a special opening quotation calculated from the opening prints of the index members on expiration morning, a number that can differ from anything printed on the screen the day before. AM settled versus PM settled options sets out which contracts use which.

The weekend you cannot trade

Exercise and assignment are processed after Friday's close and over the weekend. The resulting stock position exists before the market reopens, and it cannot be traded until Monday morning. Whatever the shares do in between belongs to whoever ended up holding them.

QueryFriday close to Monday's first minute: absolute overnight move, 2023 to July 2026
The exact SQL behind every number
WITH session_marks AS (
    SELECT ticker,
           toDate(toTimeZone(window_start, 'America/New_York')) AS session,
           argMax(toFloat64(close), window_start) AS close_px,
           argMin(toFloat64(close), window_start) AS first_minute_px,
           count() AS session_bars
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('SPY', 'AAPL', 'MSFT', 'NVDA', 'JNJ', 'CVX', 'KO', 'T')
      AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2023-01-02')
      AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-07-31')
      AND toDayOfWeek(toDate(toTimeZone(window_start, 'America/New_York'))) IN (1, 5)
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY ticker, session
    HAVING session_bars > 300
),
weekends AS (
    SELECT ticker,
           subtractDays(toMonday(session), if(toDayOfWeek(session) = 1, 7, 0)) AS weekend_id,
           argMaxIf(close_px, session, toDayOfWeek(session) = 5) AS friday_close,
           argMaxIf(first_minute_px, session, toDayOfWeek(session) = 1) AS monday_first_px
    FROM session_marks
    GROUP BY ticker, weekend_id
    HAVING countIf(toDayOfWeek(session) = 5) = 1
       AND countIf(toDayOfWeek(session) = 1) = 1
       AND friday_close > 0
)
SELECT ticker,
       count() AS weekends_count,
       round(quantileDeterministic(0.5)(abs(monday_first_px / friday_close - 1) * 100,
                                        cityHash64(toString(weekend_id))), 2) AS median_weekend_gap_pct,
       round(quantileDeterministic(0.9)(abs(monday_first_px / friday_close - 1) * 100,
                                        cityHash64(toString(weekend_id))), 2) AS p90_weekend_gap_pct
FROM weekends
GROUP BY ticker
ORDER BY median_weekend_gap_pct DESC
Run this yourself

Measured from Friday's closing price to the first minute of Monday's regular session, across the 157 weekends on file for NVDA, the median move ran 1.05%, against 0.28% on SPY. The tail matters more than the median here: one Monday in ten opened 3.04% or further from Friday's close on NVDA. Multiply that by 100 shares per contract to size the exposure an unwatched expiration hands over.

The rule of thumb falls out of the mechanics. Traders who avoid weekend surprises check the moneyness of every expiring position before the close and know their own firm's cutoff, since a position discovered on Saturday morning cannot be traded out of until Monday.

FAQ: options that expire in the money

Do I need to do anything if my option expires in the money?

Under OCC Rule 805 an option that finishes at least $0.01 in the money is exercised automatically, so no action is needed for exercise to occur. Action is needed for the opposite outcome: a holder who does not want exercise must file a contrary instruction before their firm's cutoff, which sits at or before 5:30 p.m. Eastern on expiration day.

What happens if I do not have enough cash to exercise a long call?

Exercising one contract requires the strike price multiplied by 100 in cash, which ranged from about $1.5k to $74.7k across the eight names above. Brokerage firms set their own policies for underfunded accounts, which commonly include closing expiring positions before the bell or liquidating the delivered stock on Monday.

Can I be assigned on a short option that is only a penny in the money?

Yes. A penny in the money clears the OCC's exercise-by-exception threshold, and assignment is allocated at random among clearing members carrying short positions. Being barely in the money offers no protection.

What happens to an option that expires out of the money?

It expires worthless and drops out of the account, with no exercise and no assignment. The buyer's loss is the premium paid, and the seller keeps the premium received.

Do index options turn into shares?

No. Cash-settled index options pay the in-the-money amount in cash and close out, with no shares changing hands. Options on individual stocks and on ETFs deliver shares.


Every panel above is a stored query over real minute bars. Open the SQL behind any of them, or run your own on the Strasmore terminal.