Daily put/call volume ratio, SPY against AAPL, July 2026
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.
| session_date | day_label | spy_put_call_ratio | aapl_put_call_ratio |
|---|---|---|---|
| 2026-07-01 | Jul 1 | 1.1 | 0.49 |
| 2026-07-02 | Jul 2 | 1.15 | 0.54 |
| 2026-07-06 | Jul 6 | 1.13 | 0.6 |
| 2026-07-07 | Jul 7 | 1.15 | 0.91 |
| 2026-07-08 | Jul 8 | 1.48 | 0.9 |
| 2026-07-09 | Jul 9 | 1.16 | 0.62 |
| 2026-07-10 | Jul 10 | 1.24 | 0.53 |
| 2026-07-13 | Jul 13 | 1.56 | 0.47 |
| 2026-07-14 | Jul 14 | 1.15 | 0.66 |
| 2026-07-15 | Jul 15 | 1.36 | 0.47 |
| 2026-07-16 | Jul 16 | 1.24 | 0.7 |
| 2026-07-17 | Jul 17 | 1.53 | 0.96 |
| 2026-07-20 | Jul 20 | 1.3 | 0.7 |
| 2026-07-21 | Jul 21 | 1.45 | 0.65 |
| 2026-07-22 | Jul 22 | 1.45 | 0.48 |
| 2026-07-23 | Jul 23 | 1.47 | 0.81 |
| 2026-07-24 | Jul 24 | 1.35 | 0.77 |
| 2026-07-27 | Jul 27 | 1.49 | 0.9 |
| 2026-07-28 | Jul 28 | 1.31 | 0.8 |
| 2026-07-29 | Jul 29 | 1.51 | 1.15 |
| 2026-07-30 | Jul 30 | 1.44 | 0.9 |
| 2026-07-31 | Jul 31 | 2 | 0.55 |
- Rows × columns
- 22 × 4
- Period covered
- to
- Computed
- Completeness
- No missing values
- Source
- US exchange, SIP and OPRA market data
- Licence
- Strasmore terms · free, no signup
What each column holds
| Column | Type | Range | Notes |
|---|---|---|---|
session_date |
date | 2026-07-01 to 2026-07-31 | |
day_label |
text | 22 distinct values (Jul 1, Jul 10, Jul 13…) | |
spy_put_call_ratio |
number | 1.1 to 2 | ratio or rate |
aapl_put_call_ratio |
number | 0.47 to 1.15 | 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.
Run it yourself
This is the exact query behind the result above. Change a ticker, a date or a column and run it against the warehouse — no account, no key. The no-signup tier is smaller than the one this page was computed on; a query that reaches past it comes back saying which plan runs it.
SELECT
toString(d) AS session_date,
concat(formatDateTime(d, '%b '), toString(toDayOfMonth(d))) AS day_label,
round(toFloat64(sumIf(volume, sym = 'SPY' AND right_letter = 'P'))
/ toFloat64(sumIf(volume, sym = 'SPY' AND right_letter = 'C')), 2) AS spy_put_call_ratio,
round(toFloat64(sumIf(volume, sym = 'AAPL' AND right_letter = 'P'))
/ toFloat64(sumIf(volume, sym = 'AAPL' AND right_letter = 'C')), 2) AS aapl_put_call_ratio
FROM
(
SELECT
date AS d,
underlying_symbol AS sym,
volume,
substring(ticker, length(ticker) - 8, 1) AS right_letter
FROM global_markets.options_greeks
WHERE date >= '2026-07-01'
AND date < '2026-08-01'
AND underlying_symbol IN ('SPY', 'AAPL')
AND volume > 0
)
GROUP BY d
HAVING countIf(sym = 'SPY' AND right_letter = 'C') > 0
AND countIf(sym = 'AAPL' AND right_letter = 'C') > 0
ORDER BY d