{"slug":"52-week-highs-and-lows","qid":"highs","label":"Stocks at 52-week highs, ordered by year-to-date return","post_title":"Stocks at 52-Week Highs and Lows","post_url":"/blog/52-week-highs-and-lows#q-highs","columns":["ticker","close","ytd_return_pct"],"rows":[{"ticker":"PSX","close":241.96,"ytd_return_pct":87.5},{"ticker":"EAT","close":253.94,"ytd_return_pct":76.9},{"ticker":"TGT","close":169.89,"ytd_return_pct":73.8},{"ticker":"ILMN","close":223.22,"ytd_return_pct":70.2},{"ticker":"HALO","close":108.64,"ytd_return_pct":61.4},{"ticker":"ETSY","close":87.03,"ytd_return_pct":57},{"ticker":"FCX","close":77.8,"ytd_return_pct":53.2},{"ticker":"CRL","close":298.58,"ytd_return_pct":49.7},{"ticker":"ROKU","close":158.18,"ytd_return_pct":45.8},{"ticker":"PAYC","close":229.62,"ytd_return_pct":44.1},{"ticker":"ABNB","close":190.21,"ytd_return_pct":40.1},{"ticker":"AMGN","close":443.84,"ytd_return_pct":35.6}],"shape":"ranking","sql":"WITH universe AS (\n    SELECT ticker\n    FROM global_markets.delayed_stocks_minute_aggs\n    WHERE window_start >= now() - INTERVAL 20 DAY\n      AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570\n      AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960\n      AND ticker IN (SELECT arrayJoin(tickers) FROM global_markets.stocks_income_statements\n                     WHERE period_end >= today() - 400)\n      AND ticker NOT IN ('SPCX','KORU','SOXL','SOXS','TQQQ','SQQQ','NVDL','NVDS','NVD','TSLL','TSLQ','TSLZ','SPXL','SPXS','UPRO','SPXU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','SOXY','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','BITX','ETHU','MSTX','MSTU','CONL','DUST','JNUG','JDST','NUGT')\n      AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits\n                         WHERE execution_date BETWEEN today() - 460 AND today())\n    GROUP BY ticker\n    HAVING sum(toFloat64(close) * toFloat64(volume)) >= 2000000000\n),\nlast_session AS (\n    SELECT max(date) AS d FROM global_markets.stocks_daily_aggs\n    WHERE ticker = 'SPY' AND date >= today() - 12 AND date < today()\n),\ndaily AS (\n    SELECT ticker, date AS dt, toFloat64(close) AS c\n    FROM global_markets.stocks_daily_aggs\n    WHERE date < today()\n      AND ticker IN (SELECT ticker FROM universe)\n      AND date > (SELECT d FROM last_session) - 365\n),\nranged AS (\n    SELECT ticker,\n           argMax(c, dt) AS last_close,\n           max(c) AS hi,\n           min(c) AS lo,\n           argMaxIf(c, dt, dt <= toDate('2025-12-31')) AS base_close,\n           count() AS n_sessions,\n           min(dt) AS first_dt,\n           max(dt) AS last_dt\n    FROM daily\n    GROUP BY ticker\n    HAVING n_sessions >= 200\n       AND countIf(dt <= toDate('2025-12-31')) > 0\n       AND last_dt = (SELECT d FROM last_session)\n       AND first_dt <= (SELECT d FROM last_session) - 350\n)\nSELECT ticker,\n       round(last_close, 2) AS close,\n       round((last_close / base_close - 1) * 100, 1) AS ytd_return_pct\nFROM ranged\nWHERE last_close >= hi * 0.99\nORDER BY ytd_return_pct DESC, ticker ASC\nLIMIT 12","computed_at":"2026-08-25T13:16:04.169157+00:00","elapsed":3.81781835}