{"slug":"lowest-volatility-stocks","qid":"calm_drawdowns","label":"Maximum drawdown of the calmest names: the worst peak-to-trough fall over the past year","post_title":"The Lowest-Volatility Stocks","post_url":"/blog/lowest-volatility-stocks#q-calm_drawdowns","columns":["ticker","max_drawdown_pct"],"rows":[{"ticker":"KO","max_drawdown_pct":-8.5},{"ticker":"SPY","max_drawdown_pct":-9.1},{"ticker":"JNJ","max_drawdown_pct":-10.9},{"ticker":"DUK","max_drawdown_pct":-11.7},{"ticker":"SO","max_drawdown_pct":-15.7},{"ticker":"PG","max_drawdown_pct":-16.1},{"ticker":"COST","max_drawdown_pct":-16.6},{"ticker":"MCD","max_drawdown_pct":-22.9}],"shape":"ranking","sql":"WITH d AS (\n    SELECT ticker,\n           toDate(toTimeZone(window_start, 'America/New_York')) AS dt,\n           argMax(toFloat64(close), toTimeZone(window_start, 'America/New_York')) AS c\n    FROM global_markets.delayed_stocks_minute_aggs\n    WHERE ticker IN ('SPY','KO','JNJ','PG','MCD','COST','SO','DUK')\n      AND window_start >= now() - INTERVAL 400 DAY\n      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959\n    GROUP BY ticker, dt\n),\nm AS (\n    SELECT ticker, dt, c,\n           max(c) OVER (PARTITION BY ticker ORDER BY dt ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS peak\n    FROM d\n    WHERE dt >= today() - 370\n)\nSELECT ticker,\n       round(min(c / peak - 1) * 100, 1) AS max_drawdown_pct\nFROM m\nGROUP BY ticker\nORDER BY max_drawdown_pct DESC\nLIMIT 15","computed_at":"2026-08-22T04:16:14.484259+00:00","elapsed":2.888550954}