The Lowest-Volatility Stocks
The calmest large caps: annualized realized volatility over the past year, lowest firstranking ·
2026-08-22 · 15×2
Maximum drawdown of the calmest names: the worst peak-to-trough fall over the past yearranking ·
2026-08-22 · 8×2
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
| ticker | annual_vol_pct |
|---|---|
| SPY | 12.8 |
| DUK | 16 |
| SO | 17.2 |
| MCD | 18 |
| JNJ | 18.5 |
| KO | 18.7 |
| PG | 19.5 |
| COST | 19.8 |
| PEP | 21.2 |
| NEE | 21.3 |
| JPM | 22.2 |
| CVX | 23.5 |
| PFE | 23.8 |
| T | 25 |
| VZ | 25.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
More from this analysisThe Lowest-Volatility Stocks
Maximum drawdown of the calmest names: the worst peak-to-trough fall over the past year
ranking 8×2
→
Annualized volatility vs total return, 25 large caps, calmest to wildest (~2 years)
ranking 25×3
→
Growth of $100: a calm name (KO), the market (SPY), a wild name (NVDA), weekly
series 115×4
→
Volatility thirds: median return, and the range from worst to best name in each
table 3×6
→
See all 2,170 queries →