{"slug":"weekly-market-recap","qid":"breadth","label":"Daily market breadth: advancers vs decliners each session (names trading $500M+)","post_title":"Weekly Market Recap: The Week in Numbers","post_url":"/blog/weekly-market-recap#q-breadth","columns":["date","advancers","decliners"],"rows":[{"date":"2026-08-13","advancers":151,"decliners":76},{"date":"2026-08-14","advancers":86,"decliners":102},{"date":"2026-08-17","advancers":94,"decliners":127},{"date":"2026-08-18","advancers":91,"decliners":152},{"date":"2026-08-19","advancers":163,"decliners":107}],"shape":"series","sql":"WITH day AS (\n    SELECT ticker, toDate(toTimeZone(window_start, 'America/New_York')) AS d,\n        argMax(toFloat64(close), toTimeZone(window_start, 'America/New_York')) AS c,\n        sum(toFloat64(close) * toFloat64(volume)) AS dv\n    FROM global_markets.delayed_stocks_minute_aggs\n    WHERE window_start >= now() - INTERVAL 14 DAY AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959\n    GROUP BY ticker, d\n),\nchg AS (SELECT ticker, d, c, dv, lagInFrame(c) OVER (PARTITION BY ticker ORDER BY d) AS prev_c FROM day),\nper_day AS (\n    SELECT d,\n        countIf(c > prev_c AND dv >= 500000000 AND prev_c > 3) AS advancers,\n        countIf(c < prev_c AND dv >= 500000000 AND prev_c > 3) AS decliners,\n        countIf(dv >= 500000000 AND prev_c > 3) AS total\n    FROM chg WHERE d >= (SELECT max(d) FROM day) - 12 AND prev_c > 0\n    GROUP BY d HAVING total >= 100\n),\nrecent AS (SELECT d, advancers, decliners FROM per_day ORDER BY d DESC LIMIT 5)\nSELECT d AS date, advancers, decliners FROM recent ORDER BY d ASC","computed_at":"2026-08-25T13:09:12.617017+00:00","elapsed":9.751556903}