STRASMORE/EXPLORE 2,170 QUERIES

Daily single stock put/call ratio against its 21 session average

Answered against 22 years of US equities and 12 years of US options data and published with the query that produced it. This result is stored as of 2026-08-06, from How the Put/Call Ratio Is Calculated.

as of series 84×4read in context →
Daily single stock put/call ratio against its 21 session average — 84 rows by 4 columns, computed from US exchange, SIP and OPRA data.
session_dateday_labeldaily_ratioma21_ratio
2026-04-01Apr 11.040.81
2026-04-02Apr 20.830.81
2026-04-06Apr 60.760.81
2026-04-07Apr 70.820.81
2026-04-08Apr 80.640.8
2026-04-09Apr 90.770.8
2026-04-10Apr 100.640.79
2026-04-13Apr 130.640.78
2026-04-14Apr 140.460.76
2026-04-15Apr 150.410.75
2026-04-16Apr 160.530.74
2026-04-17Apr 170.440.72
2026-04-20Apr 200.540.7
2026-04-21Apr 210.640.69
2026-04-22Apr 220.530.68
2026-04-23Apr 230.580.67
2026-04-24Apr 240.460.66
2026-04-27Apr 270.470.64
2026-04-28Apr 280.440.63
2026-04-29Apr 290.530.62
2026-04-30Apr 300.470.6
2026-05-01May 10.470.57
2026-05-04May 40.50.56
2026-05-05May 50.450.54
2026-05-06May 60.340.52
2026-05-07May 70.380.51
2026-05-08May 80.450.49
2026-05-11May 110.390.48
2026-05-12May 120.410.47
2026-05-13May 130.360.47
2026-05-14May 140.40.47
2026-05-15May 150.470.46
2026-05-18May 180.550.47
2026-05-19May 190.480.47
2026-05-20May 200.430.46
2026-05-21May 210.450.45
2026-05-22May 220.510.45
2026-05-26May 260.430.45
2026-05-27May 270.350.44
2026-05-28May 280.380.44
2026-05-29May 290.40.43
2026-06-01Jun 10.380.43
2026-06-02Jun 20.380.42
2026-06-03Jun 30.40.42
2026-06-04Jun 40.440.42
2026-06-05Jun 50.550.43
2026-06-08Jun 80.510.43
2026-06-09Jun 90.690.45
2026-06-10Jun 100.590.46
2026-06-11Jun 110.640.47
2026-06-12Jun 120.50.47
2026-06-15Jun 150.470.48
2026-06-16Jun 160.640.48
2026-06-17Jun 170.770.49
2026-06-18Jun 180.550.5
2026-06-22Jun 220.540.5
2026-06-23Jun 230.750.52
2026-06-24Jun 240.70.53
2026-06-25Jun 250.70.54
2026-06-26Jun 260.610.55
2026-06-29Jun 290.540.56
2026-06-30Jun 300.480.56
2026-07-01Jul 10.520.57
2026-07-02Jul 20.520.58
2026-07-06Jul 60.480.58
2026-07-07Jul 70.670.59
2026-07-08Jul 80.490.59
2026-07-09Jul 90.440.59
2026-07-10Jul 100.50.58
2026-07-13Jul 130.540.57
2026-07-14Jul 140.530.57
2026-07-15Jul 150.470.57
2026-07-16Jul 160.580.57
2026-07-17Jul 170.730.58
2026-07-20Jul 200.60.57
2026-07-21Jul 210.550.57
2026-07-22Jul 220.50.57
2026-07-23Jul 230.680.56
2026-07-24Jul 240.710.56
2026-07-27Jul 270.630.56
2026-07-28Jul 280.690.56
2026-07-29Jul 290.660.57
2026-07-30Jul 300.590.58
2026-07-31Jul 310.560.58
Rows × columns
84 × 4
Period covered
to
Computed
Completeness
No missing values
Source
US exchange, SIP and OPRA market data
Licence
Strasmore terms · free, no signup
Formats
JSON · CSV · the SQL below

What each column holds

Column definitions for Daily single stock put/call ratio against its 21 session average, derived from the stored result.
ColumnTypeRangeNotes
session_date date 2026-04-01 to 2026-07-31
day_label text 84 distinct values (Apr 1, Apr 10, Apr 13…)
daily_ratio number 0.34 to 1.04 ratio or rate
ma21_ratio number 0.42 to 0.81 ratio or rate

Computed from Strasmore's warehouse of US exchange, SIP and OPRA market data. Equity prices are delayed; options greeks and implied volatility are end-of-day. This result is stored, not recomputed on load — it is exactly the numbers that were returned on , and the query below is what returned them.

the exact SQL behind every number
WITH
    daily AS
    (
        SELECT
            d,
            toFloat64(sumIf(volume, right_letter = 'P'))
                / toFloat64(sumIf(volume, right_letter = 'C')) AS raw_ratio
        FROM
        (
            SELECT
                date                                     AS d,
                volume,
                substring(ticker, length(ticker) - 8, 1) AS right_letter
            FROM global_markets.options_greeks
            WHERE date >= '2026-01-02'
              AND date <  '2026-08-01'
              AND underlying_symbol IN ('AAPL', 'MSFT', 'NVDA', 'TSLA', 'KO')
              AND volume > 0
        )
        GROUP BY d
        HAVING countIf(right_letter = 'C') > 0
    )
SELECT
    session_date,
    day_label,
    daily_ratio,
    ma21_ratio
FROM
(
    SELECT
        d,
        toString(d)                                                 AS session_date,
        concat(formatDateTime(d, '%b '), toString(toDayOfMonth(d))) AS day_label,
        round(raw_ratio, 2)                                         AS daily_ratio,
        round(avg(raw_ratio) OVER (ORDER BY d ROWS BETWEEN 20 PRECEDING AND CURRENT ROW), 2) AS ma21_ratio
    FROM daily
)
WHERE d >= '2026-04-01'
ORDER BY d

Run your own version of this

The same 22 years of US equities and 12 years of options data are queryable in SQL or plain English. A free account runs 100 queries a day and takes no card.

More from this analysisHow the Put/Call Ratio Is Calculated
Daily put/call volume ratio, SPY against AAPL, July 2026 series 22×4 Monthly median put/call ratio: broad market ETFs against single stocks series 12×4 Put and call volume for eight household names, July 2026 ranking 8×4 Where the daily ratio actually sits, twelve months of sessions ranking 3×4 Single-stock bucket vs ETF bucket, session by session series 33×6 Market-wide options volume by session, with monthly expirations labelled series 25×5 See all 2,170 queries →