{"slug":"high-low-index-market-breadth","qid":"rhp_vs_index","label":"Record High Percent and its 10-day average (the High-Low Index), 40-name basket","post_title":"What Is the High-Low Index? Market Breadth","post_url":"/blog/high-low-index-market-breadth#q-rhp_vs_index","columns":["date","session_label","record_high_pct","high_low_index_pct"],"rows":[{"date":"2026-04-15","session_label":"Apr 15","record_high_pct":100,"high_low_index_pct":52.5},{"date":"2026-04-17","session_label":"Apr 17","record_high_pct":100,"high_low_index_pct":57.5},{"date":"2026-04-20","session_label":"Apr 20","record_high_pct":100,"high_low_index_pct":67.5},{"date":"2026-04-21","session_label":"Apr 21","record_high_pct":100,"high_low_index_pct":72.5},{"date":"2026-04-22","session_label":"Apr 22","record_high_pct":100,"high_low_index_pct":82.5},{"date":"2026-04-23","session_label":"Apr 23","record_high_pct":100,"high_low_index_pct":87.5},{"date":"2026-04-24","session_label":"Apr 24","record_high_pct":100,"high_low_index_pct":92.5},{"date":"2026-04-27","session_label":"Apr 27","record_high_pct":100,"high_low_index_pct":100},{"date":"2026-04-29","session_label":"Apr 29","record_high_pct":100,"high_low_index_pct":100},{"date":"2026-04-30","session_label":"Apr 30","record_high_pct":100,"high_low_index_pct":100},{"date":"2026-05-01","session_label":"May 1","record_high_pct":100,"high_low_index_pct":100},{"date":"2026-05-04","session_label":"May 4","record_high_pct":50,"high_low_index_pct":95},{"date":"2026-05-05","session_label":"May 5","record_high_pct":100,"high_low_index_pct":95},{"date":"2026-05-06","session_label":"May 6","record_high_pct":85.7,"high_low_index_pct":93.6},{"date":"2026-05-07","session_label":"May 7","record_high_pct":50,"high_low_index_pct":88.6},{"date":"2026-05-08","session_label":"May 8","record_high_pct":83.3,"high_low_index_pct":86.9},{"date":"2026-05-11","session_label":"May 11","record_high_pct":57.1,"high_low_index_pct":82.6},{"date":"2026-05-12","session_label":"May 12","record_high_pct":62.5,"high_low_index_pct":78.9},{"date":"2026-05-13","session_label":"May 13","record_high_pct":70,"high_low_index_pct":75.9},{"date":"2026-05-14","session_label":"May 14","record_high_pct":80,"high_low_index_pct":73.9},{"date":"2026-05-15","session_label":"May 15","record_high_pct":60,"high_low_index_pct":69.9},{"date":"2026-05-18","session_label":"May 18","record_high_pct":100,"high_low_index_pct":74.9},{"date":"2026-05-19","session_label":"May 19","record_high_pct":100,"high_low_index_pct":74.9},{"date":"2026-05-20","session_label":"May 20","record_high_pct":100,"high_low_index_pct":76.3},{"date":"2026-05-21","session_label":"May 21","record_high_pct":100,"high_low_index_pct":81.3},{"date":"2026-05-22","session_label":"May 22","record_high_pct":100,"high_low_index_pct":83},{"date":"2026-05-26","session_label":"May 26","record_high_pct":100,"high_low_index_pct":87.2},{"date":"2026-05-27","session_label":"May 27","record_high_pct":100,"high_low_index_pct":91},{"date":"2026-05-28","session_label":"May 28","record_high_pct":100,"high_low_index_pct":94},{"date":"2026-05-29","session_label":"May 29","record_high_pct":100,"high_low_index_pct":96},{"date":"2026-06-01","session_label":"Jun 1","record_high_pct":100,"high_low_index_pct":100},{"date":"2026-06-02","session_label":"Jun 2","record_high_pct":100,"high_low_index_pct":100},{"date":"2026-06-03","session_label":"Jun 3","record_high_pct":0,"high_low_index_pct":90},{"date":"2026-06-04","session_label":"Jun 4","record_high_pct":66.7,"high_low_index_pct":86.7},{"date":"2026-06-05","session_label":"Jun 5","record_high_pct":50,"high_low_index_pct":81.7},{"date":"2026-06-08","session_label":"Jun 8","record_high_pct":66.7,"high_low_index_pct":78.3},{"date":"2026-06-09","session_label":"Jun 9","record_high_pct":100,"high_low_index_pct":78.3},{"date":"2026-06-10","session_label":"Jun 10","record_high_pct":100,"high_low_index_pct":78.3},{"date":"2026-06-11","session_label":"Jun 11","record_high_pct":66.7,"high_low_index_pct":75},{"date":"2026-06-12","session_label":"Jun 12","record_high_pct":66.7,"high_low_index_pct":71.7},{"date":"2026-06-15","session_label":"Jun 15","record_high_pct":0,"high_low_index_pct":61.7},{"date":"2026-06-16","session_label":"Jun 16","record_high_pct":75,"high_low_index_pct":59.2},{"date":"2026-06-17","session_label":"Jun 17","record_high_pct":57.1,"high_low_index_pct":64.9},{"date":"2026-06-18","session_label":"Jun 18","record_high_pct":40,"high_low_index_pct":62.2},{"date":"2026-06-22","session_label":"Jun 22","record_high_pct":50,"high_low_index_pct":62.2},{"date":"2026-06-24","session_label":"Jun 24","record_high_pct":66.7,"high_low_index_pct":62.2},{"date":"2026-06-25","session_label":"Jun 25","record_high_pct":55.6,"high_low_index_pct":57.8},{"date":"2026-06-26","session_label":"Jun 26","record_high_pct":83.3,"high_low_index_pct":56.1},{"date":"2026-06-29","session_label":"Jun 29","record_high_pct":83.3,"high_low_index_pct":57.8},{"date":"2026-06-30","session_label":"Jun 30","record_high_pct":50,"high_low_index_pct":56.1},{"date":"2026-07-01","session_label":"Jul 1","record_high_pct":66.7,"high_low_index_pct":62.8},{"date":"2026-07-02","session_label":"Jul 2","record_high_pct":100,"high_low_index_pct":65.3},{"date":"2026-07-06","session_label":"Jul 6","record_high_pct":100,"high_low_index_pct":69.6},{"date":"2026-07-07","session_label":"Jul 7","record_high_pct":100,"high_low_index_pct":75.6},{"date":"2026-07-09","session_label":"Jul 9","record_high_pct":100,"high_low_index_pct":80.6},{"date":"2026-07-13","session_label":"Jul 13","record_high_pct":75,"high_low_index_pct":81.4},{"date":"2026-07-14","session_label":"Jul 14","record_high_pct":75,"high_low_index_pct":83.3},{"date":"2026-07-15","session_label":"Jul 15","record_high_pct":80,"high_low_index_pct":83},{"date":"2026-07-16","session_label":"Jul 16","record_high_pct":75,"high_low_index_pct":82.2},{"date":"2026-07-17","session_label":"Jul 17","record_high_pct":100,"high_low_index_pct":87.2},{"date":"2026-07-20","session_label":"Jul 20","record_high_pct":0,"high_low_index_pct":80.5},{"date":"2026-07-21","session_label":"Jul 21","record_high_pct":25,"high_low_index_pct":73},{"date":"2026-07-22","session_label":"Jul 22","record_high_pct":33.3,"high_low_index_pct":66.3},{"date":"2026-07-23","session_label":"Jul 23","record_high_pct":40,"high_low_index_pct":60.3},{"date":"2026-07-24","session_label":"Jul 24","record_high_pct":66.7,"high_low_index_pct":57},{"date":"2026-07-27","session_label":"Jul 27","record_high_pct":100,"high_low_index_pct":59.5},{"date":"2026-07-28","session_label":"Jul 28","record_high_pct":100,"high_low_index_pct":62},{"date":"2026-07-29","session_label":"Jul 29","record_high_pct":100,"high_low_index_pct":64}],"shape":"series","sql":"WITH daily_close AS (\n    SELECT ticker,\n           toDate(toTimeZone(window_start, 'America/New_York')) AS session_date,\n           argMax(close, window_start) AS close_px\n    FROM global_markets.delayed_stocks_minute_aggs\n    WHERE ticker IN ('AAPL','MSFT','NVDA','AMZN','GOOGL','AVGO','JPM','JNJ','XOM','PG',\n                     'KO','PEP','WMT','HD','CVX','MRK','PFE','ABBV','CSCO','ORCL',\n                     'CRM','ADBE','MCD','NKE','VZ','T','DIS','BA','CAT','GE',\n                     'IBM','MMM','UNH','LLY','COST','TGT','SBUX','GS','MS','LIN')\n      AND window_start >= toDateTime('2025-03-01 00:00:00')\n      AND window_start < toDateTime('2026-08-01 05:00:00')\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, session_date\n),\nextremes AS (\n    SELECT cur.ticker AS ticker,\n           cur.session_date AS session_date,\n           cur.close_px AS close_px,\n           max(hist.close_px) AS high_52w,\n           min(hist.close_px) AS low_52w\n    FROM daily_close AS cur\n    INNER JOIN daily_close AS hist ON cur.ticker = hist.ticker\n    WHERE cur.session_date >= toDate('2026-04-01')\n      AND hist.session_date <= cur.session_date\n      AND hist.session_date > cur.session_date - 364\n    GROUP BY cur.ticker, cur.session_date, cur.close_px\n),\ndaily AS (\n    SELECT session_date,\n           countIf(close_px >= high_52w) AS new_highs,\n           countIf(close_px >= high_52w) + countIf(close_px <= low_52w) AS names_at_extreme\n    FROM extremes\n    GROUP BY session_date\n    HAVING names_at_extreme > 0\n),\nrhp AS (\n    SELECT session_date,\n           round(100 * new_highs / names_at_extreme, 1) AS record_high_pct\n    FROM daily\n),\nsmoothed AS (\n    SELECT session_date,\n           record_high_pct,\n           round(avg(record_high_pct) OVER (ORDER BY session_date\n                                            ROWS BETWEEN 9 PRECEDING AND CURRENT ROW), 1) AS high_low_index_pct,\n           count() OVER (ORDER BY session_date\n                         ROWS BETWEEN 9 PRECEDING AND CURRENT ROW) AS sessions_in_window\n    FROM rhp\n)\nSELECT session_date AS date,\n       formatDateTimeInJodaSyntax(session_date, 'MMM d') AS session_label,\n       record_high_pct,\n       high_low_index_pct\nFROM smoothed\nWHERE sessions_in_window = 10\nORDER BY session_date","computed_at":"2026-08-04T15:02:23.090743+00:00","elapsed":0.005117721}