STRASMORE/EXPLORE 2,170 QUERIES 22Y EQUITIES · 12Y OPTIONS

2,170 answered market questions

every one with its exact SQL, its result and the date it was computed · free, no signup

How the Put/Call Ratio Is Calculated
Daily single stock put/call ratio against its 21 session averageseries · 2026-08-06 · 84×4Preview: a 16-point series, ending lower. Where the daily ratio actually sits, twelve months of sessionsranking · 2026-08-06 · 3×4Preview: 3 ranked values, largest first. Monthly median put/call ratio: broad market ETFs against single stocksseries · 2026-08-06 · 12×4Preview: a 12-point series, roughly flat. Daily put/call volume ratio, SPY against AAPL, July 2026series · 2026-08-06 · 22×4Preview: a 16-point series, ending higher. Put and call volume for eight household names, July 2026ranking · 2026-08-06 · 8×4Preview: 8 ranked values, largest first.
Daily single stock put/call ratio against its 21 session average

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

most recentas 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
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
$