{"slug":"is-a-high-put-call-ratio-bullish","qid":"pcr_by_symbol","label":"Put/call volume ratio by underlying: January 1 to July 31, 2026","post_title":"Is a High Put/Call Ratio Bullish?","post_url":"/blog/is-a-high-put-call-ratio-bullish#q-pcr_by_symbol","columns":["symbol","put_call_ratio","above_one_pct","observations"],"rows":[{"symbol":"IWM","put_call_ratio":2.73,"above_one_pct":98.6,"observations":144},{"symbol":"SPY","put_call_ratio":1.44,"above_one_pct":97.9,"observations":144},{"symbol":"QQQ","put_call_ratio":1.31,"above_one_pct":97.2,"observations":144},{"symbol":"TSLA","put_call_ratio":0.69,"above_one_pct":2.1,"observations":144},{"symbol":"JPM","put_call_ratio":0.63,"above_one_pct":22.2,"observations":144},{"symbol":"META","put_call_ratio":0.59,"above_one_pct":3.5,"observations":144},{"symbol":"AAPL","put_call_ratio":0.55,"above_one_pct":2.8,"observations":144},{"symbol":"NVDA","put_call_ratio":0.55,"above_one_pct":0.7,"observations":144},{"symbol":"MSFT","put_call_ratio":0.55,"above_one_pct":16,"observations":144},{"symbol":"GOOGL","put_call_ratio":0.53,"above_one_pct":2.8,"observations":144},{"symbol":"AMZN","put_call_ratio":0.5,"above_one_pct":3.5,"observations":144},{"symbol":"KO","put_call_ratio":0.49,"above_one_pct":7.6,"observations":144},{"symbol":"XOM","put_call_ratio":0.38,"above_one_pct":2.8,"observations":144}],"shape":"ranking","sql":"WITH symbol_days AS (\n    SELECT underlying_symbol AS symbol,\n           date AS day,\n           sumIf(volume, upper(substring(ticker, length(ticker) - 8, 1)) = 'P') AS put_volume,\n           sumIf(volume, upper(substring(ticker, length(ticker) - 8, 1)) = 'C') AS call_volume\n    FROM global_markets.options_greeks\n    WHERE date >= toDate('2026-01-01')\n      AND date <= toDate('2026-07-31')\n      AND volume > 0\n      AND underlying_symbol IN ('SPY', 'QQQ', 'IWM', 'AAPL', 'MSFT', 'NVDA', 'AMZN',\n                                'META', 'TSLA', 'GOOGL', 'JPM', 'KO', 'XOM')\n    GROUP BY symbol, day\n    HAVING call_volume > 0\n)\nSELECT symbol,\n       round(toFloat64(sum(put_volume)) / toFloat64(sum(call_volume)), 2) AS put_call_ratio,\n       round(100 * countIf(put_volume > call_volume) / count(), 1) AS above_one_pct,\n       count() AS observations\nFROM symbol_days\nGROUP BY symbol\nORDER BY put_call_ratio DESC","computed_at":"2026-08-03T08:05:36.315879+00:00","elapsed":0.003095317}