{"slug":"how-the-put-call-ratio-is-calculated","qid":"pcr_smoothed","label":"Daily single stock put/call ratio against its 21 session average","post_title":"How the Put/Call Ratio Is Calculated","post_url":"/blog/how-the-put-call-ratio-is-calculated#q-pcr_smoothed","columns":["session_date","day_label","daily_ratio","ma21_ratio"],"rows":[{"session_date":"2026-04-01","day_label":"Apr 1","daily_ratio":1.04,"ma21_ratio":0.81},{"session_date":"2026-04-02","day_label":"Apr 2","daily_ratio":0.83,"ma21_ratio":0.81},{"session_date":"2026-04-06","day_label":"Apr 6","daily_ratio":0.76,"ma21_ratio":0.81},{"session_date":"2026-04-07","day_label":"Apr 7","daily_ratio":0.82,"ma21_ratio":0.81},{"session_date":"2026-04-08","day_label":"Apr 8","daily_ratio":0.64,"ma21_ratio":0.8},{"session_date":"2026-04-09","day_label":"Apr 9","daily_ratio":0.77,"ma21_ratio":0.8},{"session_date":"2026-04-10","day_label":"Apr 10","daily_ratio":0.64,"ma21_ratio":0.79},{"session_date":"2026-04-13","day_label":"Apr 13","daily_ratio":0.64,"ma21_ratio":0.78},{"session_date":"2026-04-14","day_label":"Apr 14","daily_ratio":0.46,"ma21_ratio":0.76},{"session_date":"2026-04-15","day_label":"Apr 15","daily_ratio":0.41,"ma21_ratio":0.75},{"session_date":"2026-04-16","day_label":"Apr 16","daily_ratio":0.53,"ma21_ratio":0.74},{"session_date":"2026-04-17","day_label":"Apr 17","daily_ratio":0.44,"ma21_ratio":0.72},{"session_date":"2026-04-20","day_label":"Apr 20","daily_ratio":0.54,"ma21_ratio":0.7},{"session_date":"2026-04-21","day_label":"Apr 21","daily_ratio":0.64,"ma21_ratio":0.69},{"session_date":"2026-04-22","day_label":"Apr 22","daily_ratio":0.53,"ma21_ratio":0.68},{"session_date":"2026-04-23","day_label":"Apr 23","daily_ratio":0.58,"ma21_ratio":0.67},{"session_date":"2026-04-24","day_label":"Apr 24","daily_ratio":0.46,"ma21_ratio":0.66},{"session_date":"2026-04-27","day_label":"Apr 27","daily_ratio":0.47,"ma21_ratio":0.64},{"session_date":"2026-04-28","day_label":"Apr 28","daily_ratio":0.44,"ma21_ratio":0.63},{"session_date":"2026-04-29","day_label":"Apr 29","daily_ratio":0.53,"ma21_ratio":0.62},{"session_date":"2026-04-30","day_label":"Apr 30","daily_ratio":0.47,"ma21_ratio":0.6},{"session_date":"2026-05-01","day_label":"May 1","daily_ratio":0.47,"ma21_ratio":0.57},{"session_date":"2026-05-04","day_label":"May 4","daily_ratio":0.5,"ma21_ratio":0.56},{"session_date":"2026-05-05","day_label":"May 5","daily_ratio":0.45,"ma21_ratio":0.54},{"session_date":"2026-05-06","day_label":"May 6","daily_ratio":0.34,"ma21_ratio":0.52},{"session_date":"2026-05-07","day_label":"May 7","daily_ratio":0.38,"ma21_ratio":0.51},{"session_date":"2026-05-08","day_label":"May 8","daily_ratio":0.45,"ma21_ratio":0.49},{"session_date":"2026-05-11","day_label":"May 11","daily_ratio":0.39,"ma21_ratio":0.48},{"session_date":"2026-05-12","day_label":"May 12","daily_ratio":0.41,"ma21_ratio":0.47},{"session_date":"2026-05-13","day_label":"May 13","daily_ratio":0.36,"ma21_ratio":0.47},{"session_date":"2026-05-14","day_label":"May 14","daily_ratio":0.4,"ma21_ratio":0.47},{"session_date":"2026-05-15","day_label":"May 15","daily_ratio":0.47,"ma21_ratio":0.46},{"session_date":"2026-05-18","day_label":"May 18","daily_ratio":0.55,"ma21_ratio":0.47},{"session_date":"2026-05-19","day_label":"May 19","daily_ratio":0.48,"ma21_ratio":0.47},{"session_date":"2026-05-20","day_label":"May 20","daily_ratio":0.43,"ma21_ratio":0.46},{"session_date":"2026-05-21","day_label":"May 21","daily_ratio":0.45,"ma21_ratio":0.45},{"session_date":"2026-05-22","day_label":"May 22","daily_ratio":0.51,"ma21_ratio":0.45},{"session_date":"2026-05-26","day_label":"May 26","daily_ratio":0.43,"ma21_ratio":0.45},{"session_date":"2026-05-27","day_label":"May 27","daily_ratio":0.35,"ma21_ratio":0.44},{"session_date":"2026-05-28","day_label":"May 28","daily_ratio":0.38,"ma21_ratio":0.44},{"session_date":"2026-05-29","day_label":"May 29","daily_ratio":0.4,"ma21_ratio":0.43},{"session_date":"2026-06-01","day_label":"Jun 1","daily_ratio":0.38,"ma21_ratio":0.43},{"session_date":"2026-06-02","day_label":"Jun 2","daily_ratio":0.38,"ma21_ratio":0.42},{"session_date":"2026-06-03","day_label":"Jun 3","daily_ratio":0.4,"ma21_ratio":0.42},{"session_date":"2026-06-04","day_label":"Jun 4","daily_ratio":0.44,"ma21_ratio":0.42},{"session_date":"2026-06-05","day_label":"Jun 5","daily_ratio":0.55,"ma21_ratio":0.43},{"session_date":"2026-06-08","day_label":"Jun 8","daily_ratio":0.51,"ma21_ratio":0.43},{"session_date":"2026-06-09","day_label":"Jun 9","daily_ratio":0.69,"ma21_ratio":0.45},{"session_date":"2026-06-10","day_label":"Jun 10","daily_ratio":0.59,"ma21_ratio":0.46},{"session_date":"2026-06-11","day_label":"Jun 11","daily_ratio":0.64,"ma21_ratio":0.47},{"session_date":"2026-06-12","day_label":"Jun 12","daily_ratio":0.5,"ma21_ratio":0.47},{"session_date":"2026-06-15","day_label":"Jun 15","daily_ratio":0.47,"ma21_ratio":0.48},{"session_date":"2026-06-16","day_label":"Jun 16","daily_ratio":0.64,"ma21_ratio":0.48},{"session_date":"2026-06-17","day_label":"Jun 17","daily_ratio":0.77,"ma21_ratio":0.49},{"session_date":"2026-06-18","day_label":"Jun 18","daily_ratio":0.55,"ma21_ratio":0.5},{"session_date":"2026-06-22","day_label":"Jun 22","daily_ratio":0.54,"ma21_ratio":0.5},{"session_date":"2026-06-23","day_label":"Jun 23","daily_ratio":0.75,"ma21_ratio":0.52},{"session_date":"2026-06-24","day_label":"Jun 24","daily_ratio":0.7,"ma21_ratio":0.53},{"session_date":"2026-06-25","day_label":"Jun 25","daily_ratio":0.7,"ma21_ratio":0.54},{"session_date":"2026-06-26","day_label":"Jun 26","daily_ratio":0.61,"ma21_ratio":0.55},{"session_date":"2026-06-29","day_label":"Jun 29","daily_ratio":0.54,"ma21_ratio":0.56},{"session_date":"2026-06-30","day_label":"Jun 30","daily_ratio":0.48,"ma21_ratio":0.56},{"session_date":"2026-07-01","day_label":"Jul 1","daily_ratio":0.52,"ma21_ratio":0.57},{"session_date":"2026-07-02","day_label":"Jul 2","daily_ratio":0.52,"ma21_ratio":0.58},{"session_date":"2026-07-06","day_label":"Jul 6","daily_ratio":0.48,"ma21_ratio":0.58},{"session_date":"2026-07-07","day_label":"Jul 7","daily_ratio":0.67,"ma21_ratio":0.59},{"session_date":"2026-07-08","day_label":"Jul 8","daily_ratio":0.49,"ma21_ratio":0.59},{"session_date":"2026-07-09","day_label":"Jul 9","daily_ratio":0.44,"ma21_ratio":0.59},{"session_date":"2026-07-10","day_label":"Jul 10","daily_ratio":0.5,"ma21_ratio":0.58},{"session_date":"2026-07-13","day_label":"Jul 13","daily_ratio":0.54,"ma21_ratio":0.57},{"session_date":"2026-07-14","day_label":"Jul 14","daily_ratio":0.53,"ma21_ratio":0.57},{"session_date":"2026-07-15","day_label":"Jul 15","daily_ratio":0.47,"ma21_ratio":0.57},{"session_date":"2026-07-16","day_label":"Jul 16","daily_ratio":0.58,"ma21_ratio":0.57},{"session_date":"2026-07-17","day_label":"Jul 17","daily_ratio":0.73,"ma21_ratio":0.58},{"session_date":"2026-07-20","day_label":"Jul 20","daily_ratio":0.6,"ma21_ratio":0.57},{"session_date":"2026-07-21","day_label":"Jul 21","daily_ratio":0.55,"ma21_ratio":0.57},{"session_date":"2026-07-22","day_label":"Jul 22","daily_ratio":0.5,"ma21_ratio":0.57},{"session_date":"2026-07-23","day_label":"Jul 23","daily_ratio":0.68,"ma21_ratio":0.56},{"session_date":"2026-07-24","day_label":"Jul 24","daily_ratio":0.71,"ma21_ratio":0.56},{"session_date":"2026-07-27","day_label":"Jul 27","daily_ratio":0.63,"ma21_ratio":0.56},{"session_date":"2026-07-28","day_label":"Jul 28","daily_ratio":0.69,"ma21_ratio":0.56},{"session_date":"2026-07-29","day_label":"Jul 29","daily_ratio":0.66,"ma21_ratio":0.57},{"session_date":"2026-07-30","day_label":"Jul 30","daily_ratio":0.59,"ma21_ratio":0.58},{"session_date":"2026-07-31","day_label":"Jul 31","daily_ratio":0.56,"ma21_ratio":0.58}],"shape":"series","sql":"WITH\n    daily AS\n    (\n        SELECT\n            d,\n            toFloat64(sumIf(volume, right_letter = 'P'))\n                / toFloat64(sumIf(volume, right_letter = 'C')) AS raw_ratio\n        FROM\n        (\n            SELECT\n                date                                     AS d,\n                volume,\n                substring(ticker, length(ticker) - 8, 1) AS right_letter\n            FROM global_markets.options_greeks\n            WHERE date >= '2026-01-02'\n              AND date <  '2026-08-01'\n              AND underlying_symbol IN ('AAPL', 'MSFT', 'NVDA', 'TSLA', 'KO')\n              AND volume > 0\n        )\n        GROUP BY d\n        HAVING countIf(right_letter = 'C') > 0\n    )\nSELECT\n    session_date,\n    day_label,\n    daily_ratio,\n    ma21_ratio\nFROM\n(\n    SELECT\n        d,\n        toString(d)                                                 AS session_date,\n        concat(formatDateTime(d, '%b '), toString(toDayOfMonth(d))) AS day_label,\n        round(raw_ratio, 2)                                         AS daily_ratio,\n        round(avg(raw_ratio) OVER (ORDER BY d ROWS BETWEEN 20 PRECEDING AND CURRENT ROW), 2) AS ma21_ratio\n    FROM daily\n)\nWHERE d >= '2026-04-01'\nORDER BY d","computed_at":"2026-08-06T14:39:03.898233+00:00","elapsed":0.00426285}