Single-stock bucket vs ETF bucket, session by session
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-22, from Equity vs Index Put/Call Ratio: What's High?.
| session_date | session_label | equity_ratio | index_style_ratio | ratio_gap | etf_share_of_calls_pct |
|---|---|---|---|---|---|
| 2026-07-06 | Jul 6 | 0.47 | 1.19 | 0.72 | 48.9 |
| 2026-07-07 | Jul 7 | 0.65 | 1.17 | 0.52 | 43.5 |
| 2026-07-08 | Jul 8 | 0.5 | 1.55 | 1.05 | 47.1 |
| 2026-07-09 | Jul 9 | 0.44 | 1.23 | 0.79 | 37 |
| 2026-07-10 | Jul 10 | 0.49 | 1.33 | 0.84 | 41.1 |
| 2026-07-13 | Jul 13 | 0.53 | 1.57 | 1.04 | 49 |
| 2026-07-14 | Jul 14 | 0.52 | 1.36 | 0.84 | 37.9 |
| 2026-07-15 | Jul 15 | 0.46 | 1.33 | 0.87 | 47.5 |
| 2026-07-16 | Jul 16 | 0.58 | 1.38 | 0.8 | 41.1 |
| 2026-07-17 | Jul 17 | 0.7 | 1.64 | 0.94 | 54.2 |
| 2026-07-20 | Jul 20 | 0.57 | 1.52 | 0.95 | 54.3 |
| 2026-07-21 | Jul 21 | 0.54 | 1.59 | 1.05 | 42.1 |
| 2026-07-22 | Jul 22 | 0.5 | 1.57 | 1.07 | 42.4 |
| 2026-07-23 | Jul 23 | 0.63 | 1.58 | 0.95 | 40.9 |
| 2026-07-24 | Jul 24 | 0.68 | 1.51 | 0.83 | 49.6 |
| 2026-07-27 | Jul 27 | 0.62 | 1.49 | 0.87 | 51.4 |
| 2026-07-28 | Jul 28 | 0.69 | 1.29 | 0.6 | 46.8 |
| 2026-07-29 | Jul 29 | 0.66 | 1.58 | 0.92 | 60.2 |
| 2026-07-30 | Jul 30 | 0.58 | 1.46 | 0.88 | 38.5 |
| 2026-07-31 | Jul 31 | 0.54 | 2.04 | 1.5 | 40.2 |
| 2026-08-03 | Aug 3 | 0.53 | 1.48 | 0.95 | 50.4 |
| 2026-08-04 | Aug 4 | 0.45 | 1.07 | 0.62 | 53.6 |
| 2026-08-05 | Aug 5 | 0.54 | 1.3 | 0.76 | 49.1 |
| 2026-08-06 | Aug 6 | 0.52 | 1.25 | 0.73 | 39.4 |
| 2026-08-07 | Aug 7 | 0.56 | 1.11 | 0.55 | 53.3 |
| 2026-08-10 | Aug 10 | 0.51 | 1.31 | 0.8 | 48.6 |
| 2026-08-11 | Aug 11 | 0.6 | 1.23 | 0.63 | 41.7 |
| 2026-08-12 | Aug 12 | 0.55 | 1.34 | 0.79 | 49.5 |
| 2026-08-13 | Aug 13 | 0.51 | 1.26 | 0.75 | 44.6 |
| 2026-08-14 | Aug 14 | 0.59 | 1.29 | 0.7 | 46.8 |
| 2026-08-17 | Aug 17 | 0.53 | 1.47 | 0.94 | 46.8 |
| 2026-08-18 | Aug 18 | 0.58 | 1.63 | 1.05 | 41.9 |
| 2026-08-19 | Aug 19 | 0.44 | 1.28 | 0.84 | 44.5 |
- Rows × columns
- 33 × 6
- 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-06 to 2026-08-19 | |
session_label |
text | 33 distinct values (Aug 10, Aug 11, Aug 12…) | |
equity_ratio |
number | 0.44 to 0.7 | ratio or rate |
index_style_ratio |
number | 1.07 to 2.04 | ratio or rate |
ratio_gap |
number | 0.52 to 1.5 | ratio or rate |
etf_share_of_calls_pct |
number | 37 to 60.2 | percent |
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
SELECT
toString(date) AS session_date,
formatDateTime(date, '%b %e') AS session_label,
round(sumIf(volume, startsWith(lower(option_type), 'p') AND underlying_symbol NOT IN ('SPY', 'QQQ', 'IWM', 'DIA'))
/ sumIf(volume, startsWith(lower(option_type), 'c') AND underlying_symbol NOT IN ('SPY', 'QQQ', 'IWM', 'DIA')), 2) AS equity_ratio,
round(sumIf(volume, startsWith(lower(option_type), 'p') AND underlying_symbol IN ('SPY', 'QQQ', 'IWM', 'DIA'))
/ sumIf(volume, startsWith(lower(option_type), 'c') AND underlying_symbol IN ('SPY', 'QQQ', 'IWM', 'DIA')), 2) AS index_style_ratio,
round(index_style_ratio - equity_ratio, 2) AS ratio_gap,
round(100 * sumIf(volume, startsWith(lower(option_type), 'c') AND underlying_symbol IN ('SPY', 'QQQ', 'IWM', 'DIA'))
/ sumIf(volume, startsWith(lower(option_type), 'c')), 1) AS etf_share_of_calls_pct
FROM global_markets.options_greeks
WHERE date >= (SELECT toDate(max(date))
FROM global_markets.options_greeks
WHERE volume > 0) - 45
AND volume > 0
AND underlying_symbol IN ('AAPL', 'MSFT', 'NVDA', 'AMZN', 'TSLA', 'JPM', 'KO', 'JNJ',
'SPY', 'QQQ', 'IWM', 'DIA')
GROUP BY date
HAVING sumIf(volume, startsWith(lower(option_type), 'c') AND underlying_symbol IN ('SPY', 'QQQ', 'IWM', 'DIA')) > 0
AND sumIf(volume, startsWith(lower(option_type), 'c') AND underlying_symbol NOT IN ('SPY', 'QQQ', 'IWM', 'DIA')) > 0
ORDER BY date
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 analysisEquity vs Index Put/Call Ratio: What's High?
The same equity ratio, computed with and without ETF options
series 23×4
→
Put/call volume ratio by underlying, trailing 60 sessions
table 12×5
→
The total is a call-volume-weighted blend of the two buckets
ranking 11×4
→
Daily single stock put/call ratio against its 21 session average
series 84×4
→
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
→
See all 2,170 queries →