{"slug":"ai-daily-market-research-reports","qid":"mover_churn","label":"Daily turnover in the top ten movers: fixed 36 name large-cap list, July 2026","post_title":"AI Daily Market Research Reports: What Breaks","post_url":"/blog/ai-daily-market-research-reports#q-mover_churn","columns":["date","carried_over","new_to_the_list"],"rows":[{"date":"2026-07-02","carried_over":3,"new_to_the_list":7},{"date":"2026-07-06","carried_over":4,"new_to_the_list":6},{"date":"2026-07-07","carried_over":5,"new_to_the_list":5},{"date":"2026-07-08","carried_over":2,"new_to_the_list":8},{"date":"2026-07-09","carried_over":2,"new_to_the_list":8},{"date":"2026-07-10","carried_over":4,"new_to_the_list":6},{"date":"2026-07-13","carried_over":3,"new_to_the_list":7},{"date":"2026-07-14","carried_over":3,"new_to_the_list":7},{"date":"2026-07-15","carried_over":5,"new_to_the_list":5},{"date":"2026-07-16","carried_over":2,"new_to_the_list":8},{"date":"2026-07-17","carried_over":2,"new_to_the_list":8},{"date":"2026-07-20","carried_over":4,"new_to_the_list":6},{"date":"2026-07-21","carried_over":5,"new_to_the_list":5},{"date":"2026-07-22","carried_over":4,"new_to_the_list":6},{"date":"2026-07-23","carried_over":3,"new_to_the_list":7},{"date":"2026-07-24","carried_over":5,"new_to_the_list":5},{"date":"2026-07-27","carried_over":4,"new_to_the_list":6},{"date":"2026-07-28","carried_over":2,"new_to_the_list":8},{"date":"2026-07-29","carried_over":4,"new_to_the_list":6},{"date":"2026-07-30","carried_over":3,"new_to_the_list":7},{"date":"2026-07-31","carried_over":3,"new_to_the_list":7}],"shape":"series","sql":"WITH daily AS (\n    SELECT ticker,\n           toDate(toTimeZone(window_start, 'America/New_York')) AS d,\n           round((argMax(close, window_start) / argMin(open, window_start) - 1) * 100, 2) AS move_pct\n    FROM global_markets.delayed_stocks_minute_aggs\n    WHERE ticker IN ('AAPL','MSFT','NVDA','AMZN','GOOGL','META','TSLA','AVGO','JPM','XOM',\n                     'JNJ','WMT','PG','KO','HD','CVX','MRK','PEP','COST','CSCO',\n                     'ORCL','CRM','AMD','NFLX','DIS','BA','CAT','IBM','T','VZ',\n                     'PFE','NKE','MCD','UNH','BAC','QCOM')\n      AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-07-01')\n      AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-07-31')\n      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60\n           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959\n    GROUP BY ticker, d\n),\nranked AS (\n    SELECT d,\n           ticker,\n           row_number() OVER (PARTITION BY d ORDER BY abs(move_pct) DESC, ticker ASC) AS rnk\n    FROM daily\n),\ntop_ten AS (\n    SELECT d, arraySort(groupArray(ticker)) AS names\n    FROM ranked\n    WHERE rnk <= 10\n    GROUP BY d\n),\npaired AS (\n    SELECT d,\n           names,\n           lagInFrame(names) OVER (ORDER BY d ASC ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) AS prior_names\n    FROM top_ten\n)\nSELECT formatDateTime(d, '%Y-%m-%d') AS date,\n       length(arrayIntersect(names, prior_names)) AS carried_over,\n       10 - length(arrayIntersect(names, prior_names)) AS new_to_the_list\nFROM paired\nWHERE length(prior_names) = 10\nORDER BY d ASC","computed_at":"2026-08-01T08:50:18.681651+00:00","elapsed":0.00462331}