{"slug":"what-is-the-put-call-ratio","qid":"spy_history","label":"A decade of SPY put-call ratios: median, low and high of the daily reading by year","post_title":"What Is the Put-Call Ratio? A Data Guide","post_url":"/blog/what-is-the-put-call-ratio#q-spy_history","columns":["year","sessions","median_ratio","low","high"],"rows":[{"year":2015,"sessions":252,"median_ratio":1.754,"low":0.987,"high":2.96},{"year":2016,"sessions":252,"median_ratio":1.508,"low":0.503,"high":2.508},{"year":2017,"sessions":251,"median_ratio":1.597,"low":0.581,"high":3.541},{"year":2018,"sessions":250,"median_ratio":1.438,"low":0.611,"high":2.362},{"year":2019,"sessions":252,"median_ratio":1.524,"low":0.693,"high":2.351},{"year":2020,"sessions":253,"median_ratio":1.431,"low":0.59,"high":2.282},{"year":2021,"sessions":252,"median_ratio":1.314,"low":0.656,"high":2.167},{"year":2022,"sessions":251,"median_ratio":1.361,"low":0.983,"high":1.927},{"year":2023,"sessions":250,"median_ratio":1.242,"low":0.693,"high":1.716},{"year":2024,"sessions":252,"median_ratio":1.175,"low":0.829,"high":1.897},{"year":2025,"sessions":250,"median_ratio":1.168,"low":0.587,"high":1.793},{"year":2026,"sessions":150,"median_ratio":1.234,"low":0.729,"high":1.751}],"shape":"table","sql":"WITH daily AS (\n    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS day,\n           sumIf(toFloat64(volume), substring(ticker, length(ticker) - 8, 1) = 'P')\n           / sumIf(toFloat64(volume), substring(ticker, length(ticker) - 8, 1) = 'C') AS ratio\n    FROM global_markets.options_minute_aggs\n    WHERE ticker LIKE 'O:SPY%'\n    GROUP BY day\n    HAVING sumIf(toFloat64(volume), substring(ticker, length(ticker) - 8, 1) = 'C') > 0\n)\nSELECT toYear(day) AS year,\n       count() AS sessions,\n       round(quantileDeterministic(0.5)(ratio, cityHash64(toString(day))), 3) AS median_ratio,\n       round(min(ratio), 3) AS low,\n       round(max(ratio), 3) AS high\nFROM daily\nWHERE toYear(day) >= 2015\nGROUP BY year\nORDER BY year","computed_at":"2026-08-11T14:21:17.667446+00:00","elapsed":0.002846077}