{"slug":"biggest-stock-movers-this-month","qid":"spread","label":"Where every screened company landed: monthly returns by bucket","post_title":"Biggest Stock Movers This Month","post_url":"/blog/biggest-stock-movers-this-month#q-spread","columns":["return_bucket","stocks"],"rows":[{"return_bucket":"down 20% or more","stocks":36},{"return_bucket":"down 10% to 20%","stocks":96},{"return_bucket":"down 0% to 10%","stocks":324},{"return_bucket":"up 0% to 10%","stocks":384},{"return_bucket":"up 10% to 20%","stocks":184},{"return_bucket":"up 20% or more","stocks":123}],"shape":"ranking","sql":"WITH window_days AS (\n    SELECT d\n    FROM (\n        SELECT d, max(d) OVER () AS last_full\n        FROM (\n            SELECT d\n            FROM (\n                SELECT d, bars, medianExact(bars) OVER () AS typical_bars\n                FROM (\n                    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d, count() AS bars\n                    FROM global_markets.delayed_stocks_minute_aggs\n                    WHERE window_start >= now() - INTERVAL 34 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                    GROUP BY d\n                    HAVING d < toDate(toTimeZone(now(), 'America/New_York'))\n                )\n            )\n            WHERE bars >= 0.85 * typical_bars\n        )\n    )\n    WHERE d > last_full - 30\n)\nSELECT tup.1 AS return_bucket,\n       tup.3 AS stocks\nFROM (\n    SELECT arrayJoin(arrayZip(\n               ['down 20% or more', 'down 10% to 20%', 'down 0% to 10%',\n                'up 0% to 10%', 'up 10% to 20%', 'up 20% or more'],\n               [1, 2, 3, 4, 5, 6],\n               [countIf(r <= -20), countIf(r > -20 AND r <= -10), countIf(r > -10 AND r < 0),\n                countIf(r >= 0 AND r < 10), countIf(r >= 10 AND r < 20), countIf(r >= 20)])) AS tup\n    FROM (\n        SELECT ticker,\n               (argMax(c, d) / argMin(o, d) - 1) * 100 AS r\n        FROM (\n            SELECT ticker,\n                   toDate(toTimeZone(window_start, 'America/New_York')) AS d,\n                   argMin(toFloat64(open), window_start) AS o,\n                   argMax(toFloat64(close), window_start) AS c,\n                   sum(toFloat64(close) * toFloat64(volume)) AS dollars\n            FROM global_markets.delayed_stocks_minute_aggs\n            WHERE window_start >= now() - INTERVAL 34 DAY\n              AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT d FROM window_days)\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 NOT IN ('SPCX')\n              AND ticker NOT IN ('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 IN (SELECT ticker FROM global_markets.stocks_ratios\n                             WHERE market_cap > 0)\n              AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits\n                                 WHERE execution_date BETWEEN today() - 45 AND today())\n            GROUP BY ticker, d\n        )\n        GROUP BY ticker\n        HAVING sum(dollars) >= 1000000000 AND argMin(o, d) >= 10 AND count() >= 15\n    )\n)\nORDER BY tup.2","computed_at":"2026-08-25T13:01:46.588172+00:00","elapsed":16.56344458}