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

The Lowest-Volatility Stocks
The calmest large caps: annualized realized volatility over the past year, lowest firstranking · 2026-08-22 · 15×2Preview: 15 ranked values, smallest first. Maximum drawdown of the calmest names: the worst peak-to-trough fall over the past yearranking · 2026-08-22 · 8×2Preview: 8 ranked values, largest first.
The Real Risk of One Stock
Annualized volatility: the S&P 500 index versus six single stocks (last ~250 sessions)ranking · 2026-08-22 · 7×2Preview: 7 ranked values, smallest first. Same $100 invested: one single stock versus the S&P 500 index, indexed to 100series · 2026-08-22 · 14×3Preview: a 14-point series, ending higher. Maximum drawdown: deepest peak-to-trough drop over the last yearranking · 2026-08-22 · 7×2Preview: 7 ranked values, smallest first.
How Long a Losing Streak Is Normal
Chance of at least one losing streak of five, eight or ten in a 200 trade seriesranking · 2026-08-17 · 5×4Preview: 5 ranked values, smallest first. Chance of at least one five loss run at a 70 percent win rate, by series lengthranking · 2026-08-17 · 5×2Preview: 5 ranked values, smallest first. One named window against somewhere in a 200 trade series, at a 70 percent win rateranking · 2026-08-17 · 3×4Preview: 3 ranked values, largest first. How long the worst losing run of a 200 trade series usually is, at a 70 percent win rateranking · 2026-08-17 · 7×3Preview: 7 ranked values, largest first. Drawdown from an eight and a ten loss streak, by risk per traderanking · 2026-08-17 · 4×4Preview: 4 ranked values, smallest first.
What Is Maximum Drawdown? Depth vs Recovery
Same fund, five lookback windows: SPY maximum drawdown by sample length to July 31, 2026ranking · 2026-08-05 · 5×3Preview: 5 ranked values, smallest first. Completed SPY drawdowns since 2016: depth, days falling, days climbing backtable · 2026-08-05 · 8×5 SPY underwater curve: month end close against its running peak, 2016 to 2026series · 2026-08-05 · 127×2Preview: a 16-point series, roughly flat. Maximum drawdown against annualized volatility: eight large caps, five years to July 31, 2026ranking · 2026-08-05 · 8×3Preview: 8 ranked values, largest first.
Kelly Criterion Position Sizing, Measured
Kelly inputs from daily closes, 2016 through 2025: win rate, average gain, average loss, and the fraction the formula returnstable · 2026-07-31 · 6×5 The same Kelly calculation on the S&P 500 tracker, year by year, 2016 through 2025table · 2026-07-31 · 10×5 One decade of S&P 500 daily returns compounded at eight fixed bet sizes: ending wealth and worst drawdownranking · 2026-07-31 · 8×3Preview: 8 ranked values, smallest first.
The calmest large caps: annualized realized volatility over the past year, lowest first

The calmest large caps: annualized realized volatility over the past year, lowest first

most recentas of ranking 15×2read in context →
The calmest large caps: annualized realized volatility over the past year, lowest first — 15 rows by 2 columns, computed from US exchange, SIP and OPRA data.
tickerannual_vol_pct
SPY12.8
DUK16
SO17.2
MCD18
JNJ18.5
KO18.7
PG19.5
COST19.8
PEP21.2
NEE21.3
JPM22.2
CVX23.5
PFE23.8
T25
VZ25.1
the exact SQL behind every number
WITH d AS (
    SELECT ticker,
           toDate(toTimeZone(window_start, 'America/New_York')) AS dt,
           argMax(toFloat64(close), toTimeZone(window_start, 'America/New_York')) AS c
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('SPY','KO','JNJ','PG','PEP','WMT','MCD','MO','VZ','T','XOM','CVX','JPM','HD','COST','UNH','ABBV','MRK','PFE','LLY','CAT','HON','LMT','IBM','ORCL','CSCO','TXN','SO','DUK','NEE','NVDA','TSLA')
      AND window_start >= now() - INTERVAL 400 DAY
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY ticker, dt
),
r AS (
    SELECT ticker, dt,
           c / lagInFrame(c) OVER (PARTITION BY ticker ORDER BY dt) - 1 AS ret
    FROM d
)
SELECT ticker,
       round(stddevSamp(ret) * sqrt(252) * 100, 1) AS annual_vol_pct
FROM r
WHERE ret IS NOT NULL AND dt >= today() - 370
GROUP BY ticker
ORDER BY annual_vol_pct ASC
LIMIT 15
$