{"slug":"what-is-the-put-call-ratio","qid":"index_vs_equity","label":"Index-linked vs single-stock options: put-call ratio by population, June 2026","post_title":"What Is the Put-Call Ratio? A Data Guide","post_url":"/blog/what-is-the-put-call-ratio#q-index_vs_equity","columns":["population","put_call_ratio","contracts_mm","pct_of_volume"],"rows":[{"population":"Broad-market ETFs (SPY, QQQ, IWM, DIA)","put_call_ratio":1.175,"contracts_mm":476.3,"pct_of_volume":32.2},{"population":"Index options (SPX, VIX, NDX)","put_call_ratio":1.096,"contracts_mm":115.7,"pct_of_volume":7.8},{"population":"Single stocks and other ETFs","put_call_ratio":0.588,"contracts_mm":885.8,"pct_of_volume":59.9}],"shape":"ranking","sql":"WITH substring(ticker, 3, length(ticker) - 17) AS root\nSELECT multiIf(root IN ('SPX', 'SPXW', 'XSP', 'NDX', 'NDXP', 'RUT', 'RUTW', 'VIX', 'VIXW', 'DJX', 'OEX', 'XEO'), 'Index options (SPX, VIX, NDX)',\n               root IN ('SPY', 'QQQ', 'IWM', 'DIA'), 'Broad-market ETFs (SPY, QQQ, IWM, DIA)',\n               'Single stocks and other ETFs') AS population,\n       round(sumIf(toFloat64(volume), substring(ticker, length(ticker) - 8, 1) = 'P')\n             / sumIf(toFloat64(volume), substring(ticker, length(ticker) - 8, 1) = 'C'), 3) AS put_call_ratio,\n       round(sum(toFloat64(volume)) / 1e6, 1) AS contracts_mm,\n       round(100 * sum(toFloat64(volume)) / sum(sum(toFloat64(volume))) OVER (), 1) AS pct_of_volume\nFROM global_markets.options_minute_aggs\nWHERE window_start >= '2026-06-01 04:00:00'\n  AND window_start < '2026-07-01 04:00:00'\nGROUP BY population\nORDER BY put_call_ratio DESC","computed_at":"2026-08-11T14:21:17.338339+00:00","elapsed":0.003045054}