{"slug":"what-happens-if-an-option-expires-itm","qid":"pin_bands","label":"How close Friday closes land to a whole-dollar strike: seven names, 2023 to July 2026","post_title":"What Happens If an Option Expires In the Money","post_url":"/blog/what-happens-if-an-option-expires-itm#q-pin_bands","columns":["distance_band","closes_count","share_pct"],"rows":[{"distance_band":"under 1 cent","closes_count":35,"share_pct":2.82},{"distance_band":"1 to 5 cents","closes_count":112,"share_pct":9.04},{"distance_band":"5 to 10 cents","closes_count":117,"share_pct":9.44},{"distance_band":"10 to 25 cents","closes_count":347,"share_pct":28.01},{"distance_band":"25 to 50 cents","closes_count":628,"share_pct":50.69}],"shape":"ranking","sql":"WITH friday_bars AS (\n    SELECT ticker,\n           toDate(toTimeZone(window_start, 'America/New_York')) AS session,\n           window_start,\n           toFloat64(close) AS px\n    FROM global_markets.delayed_stocks_minute_aggs\n    WHERE ticker IN ('SPY', 'AAPL', 'MSFT', 'NVDA', 'JNJ', 'CVX', 'KO')\n      AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2023-01-02')\n      AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-07-31')\n      AND toDayOfWeek(toDate(toTimeZone(window_start, 'America/New_York'))) = 5\n      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60\n           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959\n),\nfriday_closes AS (\n    SELECT ticker,\n           session,\n           argMax(px, window_start) AS close_px,\n           count() AS session_bars\n    FROM friday_bars\n    GROUP BY ticker, session\n    HAVING session_bars > 300\n),\ndistances AS (\n    SELECT abs(close_px - round(close_px)) * 100 AS cents_from_strike\n    FROM friday_closes\n)\nSELECT multiIf(cents_from_strike < 1, 'under 1 cent',\n               cents_from_strike < 5, '1 to 5 cents',\n               cents_from_strike < 10, '5 to 10 cents',\n               cents_from_strike < 25, '10 to 25 cents',\n               '25 to 50 cents') AS distance_band,\n       count() AS closes_count,\n       round(100 * count() / sum(count()) OVER (), 2) AS share_pct\nFROM distances\nGROUP BY distance_band\nORDER BY min(cents_from_strike)","computed_at":"2026-08-04T12:41:32.616156+00:00","elapsed":0.003954003}