{"slug":"pin-risk-at-options-expiration","qid":"pin_trace","label":"AAPL's final half hour on its tightest monthly expiration close since 2025","post_title":"Pin Risk at Options Expiration Explained","post_url":"/blog/pin-risk-at-options-expiration#q-pin_trace","columns":["et_time","aapl_last","strike_line","gap_spread","expiry_label"],"rows":[{"et_time":"15:30","aapl_last":199.88,"strike_line":201,"gap_spread":1.12,"expiry_label":"Jun 20, 2025"},{"et_time":"15:31","aapl_last":199.84,"strike_line":201,"gap_spread":1.16,"expiry_label":"Jun 20, 2025"},{"et_time":"15:32","aapl_last":199.9,"strike_line":201,"gap_spread":1.1,"expiry_label":"Jun 20, 2025"},{"et_time":"15:33","aapl_last":199.94,"strike_line":201,"gap_spread":1.06,"expiry_label":"Jun 20, 2025"},{"et_time":"15:34","aapl_last":200.15,"strike_line":201,"gap_spread":0.85,"expiry_label":"Jun 20, 2025"},{"et_time":"15:35","aapl_last":200,"strike_line":201,"gap_spread":1,"expiry_label":"Jun 20, 2025"},{"et_time":"15:36","aapl_last":200.04,"strike_line":201,"gap_spread":0.96,"expiry_label":"Jun 20, 2025"},{"et_time":"15:37","aapl_last":200.02,"strike_line":201,"gap_spread":0.99,"expiry_label":"Jun 20, 2025"},{"et_time":"15:38","aapl_last":200.12,"strike_line":201,"gap_spread":0.88,"expiry_label":"Jun 20, 2025"},{"et_time":"15:39","aapl_last":200.08,"strike_line":201,"gap_spread":0.93,"expiry_label":"Jun 20, 2025"},{"et_time":"15:40","aapl_last":200.12,"strike_line":201,"gap_spread":0.88,"expiry_label":"Jun 20, 2025"},{"et_time":"15:41","aapl_last":200.06,"strike_line":201,"gap_spread":0.94,"expiry_label":"Jun 20, 2025"},{"et_time":"15:42","aapl_last":200.07,"strike_line":201,"gap_spread":0.93,"expiry_label":"Jun 20, 2025"},{"et_time":"15:43","aapl_last":200.12,"strike_line":201,"gap_spread":0.88,"expiry_label":"Jun 20, 2025"},{"et_time":"15:44","aapl_last":199.97,"strike_line":201,"gap_spread":1.03,"expiry_label":"Jun 20, 2025"},{"et_time":"15:45","aapl_last":200,"strike_line":201,"gap_spread":1,"expiry_label":"Jun 20, 2025"},{"et_time":"15:46","aapl_last":200.02,"strike_line":201,"gap_spread":0.98,"expiry_label":"Jun 20, 2025"},{"et_time":"15:47","aapl_last":199.98,"strike_line":201,"gap_spread":1.01,"expiry_label":"Jun 20, 2025"},{"et_time":"15:48","aapl_last":199.96,"strike_line":201,"gap_spread":1.04,"expiry_label":"Jun 20, 2025"},{"et_time":"15:49","aapl_last":200,"strike_line":201,"gap_spread":1,"expiry_label":"Jun 20, 2025"},{"et_time":"15:50","aapl_last":200.24,"strike_line":201,"gap_spread":0.75,"expiry_label":"Jun 20, 2025"},{"et_time":"15:51","aapl_last":200.1,"strike_line":201,"gap_spread":0.9,"expiry_label":"Jun 20, 2025"},{"et_time":"15:52","aapl_last":200.42,"strike_line":201,"gap_spread":0.58,"expiry_label":"Jun 20, 2025"},{"et_time":"15:53","aapl_last":200.26,"strike_line":201,"gap_spread":0.74,"expiry_label":"Jun 20, 2025"},{"et_time":"15:54","aapl_last":200.57,"strike_line":201,"gap_spread":0.43,"expiry_label":"Jun 20, 2025"},{"et_time":"15:55","aapl_last":201.35,"strike_line":201,"gap_spread":0.35,"expiry_label":"Jun 20, 2025"},{"et_time":"15:56","aapl_last":201.09,"strike_line":201,"gap_spread":0.09,"expiry_label":"Jun 20, 2025"},{"et_time":"15:57","aapl_last":200.98,"strike_line":201,"gap_spread":0.03,"expiry_label":"Jun 20, 2025"},{"et_time":"15:58","aapl_last":200.95,"strike_line":201,"gap_spread":0.05,"expiry_label":"Jun 20, 2025"},{"et_time":"15:59","aapl_last":200.92,"strike_line":201,"gap_spread":0.08,"expiry_label":"Jun 20, 2025"}],"shape":"series","sql":"WITH pin_day AS\n(\n    SELECT\n        date                    AS session_day,\n        round(toFloat64(close)) AS strike\n    FROM global_markets.stocks_daily_aggs\n    WHERE ticker = 'AAPL'\n      AND date >= '2025-01-01'\n      AND date <  '2026-08-01'\n      AND toDayOfWeek(date) = 5\n      AND toDayOfMonth(date) BETWEEN 15 AND 21\n    ORDER BY abs(toFloat64(close) - round(toFloat64(close))) ASC\n    LIMIT 1\n)\nSELECT\n    formatDateTime(toTimeZone(window_start, 'America/New_York'), '%H:%i') AS et_time,\n    round(toFloat64(close), 2)                                           AS aapl_last,\n    (SELECT strike FROM pin_day)                                         AS strike_line,\n    round(abs(toFloat64(close) - (SELECT strike FROM pin_day)), 2)       AS gap_spread,\n    formatDateTime((SELECT session_day FROM pin_day), '%b %e, %Y')       AS expiry_label\nFROM global_markets.delayed_stocks_minute_aggs\nWHERE ticker = 'AAPL'\n  AND window_start >= '2025-01-01'\n  AND window_start <  '2026-08-01'\n  AND toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT session_day FROM pin_day)\n  AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60\n       + toMinute(toTimeZone(window_start, 'America/New_York'))) >= 930\n  AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60\n       + toMinute(toTimeZone(window_start, 'America/New_York'))) < 960\nORDER BY window_start","computed_at":"2026-08-09T14:47:59.303741+00:00","elapsed":0.004614748}