{"slug":"stop-orders-on-options","qid":"spy_put_trace","label":"spy_put_trace","post_title":"stop-orders-on-options","post_url":"/blog/stop-orders-on-options#q-spy_put_trace","columns":["session_date","calendar_label","put_close","put_move_pct","spy_move_pct"],"rows":[{"session_date":"2026-07-06","calendar_label":"Jul 6","put_close":8.79,"put_move_pct":-41.3,"spy_move_pct":0.66},{"session_date":"2026-07-07","calendar_label":"Jul 7","put_close":11.21,"put_move_pct":27.5,"spy_move_pct":-0.6},{"session_date":"2026-07-08","calendar_label":"Jul 8","put_close":12.03,"put_move_pct":7.3,"spy_move_pct":-0.11},{"session_date":"2026-07-09","calendar_label":"Jul 9","put_close":8.31,"put_move_pct":-30.9,"spy_move_pct":0.82},{"session_date":"2026-07-10","calendar_label":"Jul 10","put_close":6.5,"put_move_pct":-21.8,"spy_move_pct":0.45},{"session_date":"2026-07-13","calendar_label":"Jul 13","put_close":9.28,"put_move_pct":42.8,"spy_move_pct":-0.88},{"session_date":"2026-07-14","calendar_label":"Jul 14","put_close":7.49,"put_move_pct":-19.3,"spy_move_pct":0.66},{"session_date":"2026-07-15","calendar_label":"Jul 15","put_close":5.92,"put_move_pct":-21,"spy_move_pct":0.21},{"session_date":"2026-07-16","calendar_label":"Jul 16","put_close":7.94,"put_move_pct":34.1,"spy_move_pct":-0.74},{"session_date":"2026-07-17","calendar_label":"Jul 17","put_close":11.5,"put_move_pct":44.8,"spy_move_pct":-0.88}],"shape":"series","sql":"WITH pick AS\n(\n    SELECT ticker\n    FROM global_markets.options_greeks\n    WHERE underlying_symbol = 'SPY'\n      AND lower(toString(option_type)) IN ('put', 'p')\n      AND date = toDate('2026-07-06')\n      AND days_to_expiry BETWEEN 25 AND 35\n      AND volume > 0\n    ORDER BY abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) ASC,\n             expiration_date ASC,\n             ticker ASC\n    LIMIT 1\n),\ndaily AS\n(\n    SELECT\n        date,\n        max(toFloat64(option_close))     AS put_close_raw,\n        max(toFloat64(underlying_close)) AS spy_close_raw\n    FROM global_markets.options_greeks\n    WHERE ticker IN (SELECT ticker FROM pick)\n      AND date >= toDate('2026-07-02')\n      AND date <  toDate('2026-07-18')\n      AND volume > 0\n    GROUP BY date\n),\nchained AS\n(\n    SELECT\n        date,\n        put_close_raw,\n        spy_close_raw,\n        lagInFrame(put_close_raw, 1) OVER (ORDER BY date ASC ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS prev_put,\n        lagInFrame(spy_close_raw, 1) OVER (ORDER BY date ASC ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS prev_spy\n    FROM daily\n)\nSELECT\n    toString(date)                                                        AS session_date,\n    concat(formatDateTime(date, '%b'), ' ', toString(toDayOfMonth(date))) AS calendar_label,\n    round(put_close_raw, 2)                                               AS put_close,\n    round(100 * (put_close_raw / prev_put - 1), 1)                        AS put_move_pct,\n    round(100 * (spy_close_raw / prev_spy - 1), 2)                        AS spy_move_pct\nFROM chained\nWHERE prev_put > 0\n  AND prev_spy > 0\n  AND date >= toDate('2026-07-06')\nORDER BY date","computed_at":"2026-09-11T14:31:51.156992+00:00","elapsed":0.006531277}