{"slug":"biggest-stock-movers-this-month","qid":"index_path","label":"The four major index trackers across the same window, rebased to the first open","post_title":"Biggest Stock Movers This Month","post_url":"/blog/biggest-stock-movers-this-month#q-index_path","columns":["session","sp500_pct","nasdaq100_pct","dow_pct","russell2000_pct"],"rows":[{"session":"2026-07-22","sp500_pct":0.1,"nasdaq100_pct":0.23,"dow_pct":-0.02,"russell2000_pct":-0.65},{"session":"2026-07-23","sp500_pct":-1.12,"nasdaq100_pct":-1.65,"dow_pct":-1.04,"russell2000_pct":-1.22},{"session":"2026-07-24","sp500_pct":-1.04,"nasdaq100_pct":-2.76,"dow_pct":-0.54,"russell2000_pct":-1.52},{"session":"2026-07-27","sp500_pct":-1.02,"nasdaq100_pct":-3.06,"dow_pct":-0.06,"russell2000_pct":-0.94},{"session":"2026-07-28","sp500_pct":-0.78,"nasdaq100_pct":-4,"dow_pct":1.02,"russell2000_pct":-0.79},{"session":"2026-07-29","sp500_pct":-2.29,"nasdaq100_pct":-5.98,"dow_pct":-1.2,"russell2000_pct":-2.4},{"session":"2026-07-30","sp500_pct":-0.65,"nasdaq100_pct":-2.85,"dow_pct":-0.02,"russell2000_pct":-1.07},{"session":"2026-07-31","sp500_pct":0.03,"nasdaq100_pct":-2.23,"dow_pct":0.5,"russell2000_pct":-1.53},{"session":"2026-08-03","sp500_pct":1.48,"nasdaq100_pct":-0.51,"dow_pct":1.84,"russell2000_pct":0.18},{"session":"2026-08-04","sp500_pct":3.3,"nasdaq100_pct":2.85,"dow_pct":3.59,"russell2000_pct":2.02},{"session":"2026-08-05","sp500_pct":3.1,"nasdaq100_pct":1.94,"dow_pct":4.06,"russell2000_pct":1.37},{"session":"2026-08-06","sp500_pct":2.93,"nasdaq100_pct":1.56,"dow_pct":3.18,"russell2000_pct":0.86},{"session":"2026-08-07","sp500_pct":3.56,"nasdaq100_pct":2.75,"dow_pct":3.44,"russell2000_pct":1.97},{"session":"2026-08-10","sp500_pct":3.54,"nasdaq100_pct":2.44,"dow_pct":3.33,"russell2000_pct":1.45},{"session":"2026-08-11","sp500_pct":3.19,"nasdaq100_pct":2.09,"dow_pct":3,"russell2000_pct":1.79},{"session":"2026-08-12","sp500_pct":3.47,"nasdaq100_pct":2.85,"dow_pct":2.96,"russell2000_pct":2.37},{"session":"2026-08-13","sp500_pct":4.18,"nasdaq100_pct":4.04,"dow_pct":3.12,"russell2000_pct":2.63},{"session":"2026-08-14","sp500_pct":3.98,"nasdaq100_pct":3.9,"dow_pct":2.91,"russell2000_pct":3.17},{"session":"2026-08-17","sp500_pct":3.49,"nasdaq100_pct":3.73,"dow_pct":2.42,"russell2000_pct":2.83},{"session":"2026-08-18","sp500_pct":2.78,"nasdaq100_pct":1.99,"dow_pct":2.17,"russell2000_pct":1.54},{"session":"2026-08-19","sp500_pct":3.01,"nasdaq100_pct":1.78,"dow_pct":2.44,"russell2000_pct":2.04}],"shape":"series","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 session,\n       round(anyIf(cum_pct, ticker = 'SPY'), 2) AS sp500_pct,\n       round(anyIf(cum_pct, ticker = 'QQQ'), 2) AS nasdaq100_pct,\n       round(anyIf(cum_pct, ticker = 'DIA'), 2) AS dow_pct,\n       round(anyIf(cum_pct, ticker = 'IWM'), 2) AS russell2000_pct\nFROM (\n    SELECT ticker,\n           formatDateTime(d, '%Y-%m-%d') AS session,\n           100 * (c / first_value(o) OVER (PARTITION BY ticker ORDER BY d) - 1) AS cum_pct\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        FROM global_markets.delayed_stocks_minute_aggs\n        WHERE window_start >= now() - INTERVAL 34 DAY\n          AND ticker IN ('SPY', 'QQQ', 'DIA', 'IWM')\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        GROUP BY ticker, d\n    )\n)\nGROUP BY session\nORDER BY session","computed_at":"2026-08-25T13:01:25.913975+00:00","elapsed":4.538135754}