STRASMORE/EXPLORE 2,170 QUERIES 22Y EQUITIES · 12Y OPTIONS

2,170 answered market questions

every one with its exact SQL, its result and the date it was computed · free, no signup

What Is the High-Low Index? Market Breadth
Record High Percent and its 10-day average (the High-Low Index), 40-name basketseries · 2026-08-04 · 68×4Preview: a 16-point series, ending higher. New 52-week highs and lows each session: 40 large-cap US names, April to July 2026series · 2026-08-04 · 77×4Preview: a 16-point series, ending lower. How thin the denominator gets: sessions bucketed by names at a 52-week extremetable · 2026-08-04 · 3×5 Two breadth measures, same basket: 10-day High-Low Index vs 10-day advancing shareseries · 2026-08-04 · 68×4Preview: a 16-point series, ending lower.
Record High Percent and its 10-day average (the High-Low Index), 40-name basket

Record High Percent and its 10-day average (the High-Low Index), 40-name basket

most recentas of series 68×4read in context →
Record High Percent and its 10-day average (the High-Low Index), 40-name basket — 68 rows by 4 columns, computed from US exchange, SIP and OPRA data.
datesession_labelrecord_high_pcthigh_low_index_pct
2026-04-15Apr 1510052.5
2026-04-17Apr 1710057.5
2026-04-20Apr 2010067.5
2026-04-21Apr 2110072.5
2026-04-22Apr 2210082.5
2026-04-23Apr 2310087.5
2026-04-24Apr 2410092.5
2026-04-27Apr 27100100
2026-04-29Apr 29100100
2026-04-30Apr 30100100
2026-05-01May 1100100
2026-05-04May 45095
2026-05-05May 510095
2026-05-06May 685.793.6
2026-05-07May 75088.6
2026-05-08May 883.386.9
2026-05-11May 1157.182.6
2026-05-12May 1262.578.9
2026-05-13May 137075.9
2026-05-14May 148073.9
2026-05-15May 156069.9
2026-05-18May 1810074.9
2026-05-19May 1910074.9
2026-05-20May 2010076.3
2026-05-21May 2110081.3
2026-05-22May 2210083
2026-05-26May 2610087.2
2026-05-27May 2710091
2026-05-28May 2810094
2026-05-29May 2910096
2026-06-01Jun 1100100
2026-06-02Jun 2100100
2026-06-03Jun 3090
2026-06-04Jun 466.786.7
2026-06-05Jun 55081.7
2026-06-08Jun 866.778.3
2026-06-09Jun 910078.3
2026-06-10Jun 1010078.3
2026-06-11Jun 1166.775
2026-06-12Jun 1266.771.7
2026-06-15Jun 15061.7
2026-06-16Jun 167559.2
2026-06-17Jun 1757.164.9
2026-06-18Jun 184062.2
2026-06-22Jun 225062.2
2026-06-24Jun 2466.762.2
2026-06-25Jun 2555.657.8
2026-06-26Jun 2683.356.1
2026-06-29Jun 2983.357.8
2026-06-30Jun 305056.1
2026-07-01Jul 166.762.8
2026-07-02Jul 210065.3
2026-07-06Jul 610069.6
2026-07-07Jul 710075.6
2026-07-09Jul 910080.6
2026-07-13Jul 137581.4
2026-07-14Jul 147583.3
2026-07-15Jul 158083
2026-07-16Jul 167582.2
2026-07-17Jul 1710087.2
2026-07-20Jul 20080.5
2026-07-21Jul 212573
2026-07-22Jul 2233.366.3
2026-07-23Jul 234060.3
2026-07-24Jul 2466.757
2026-07-27Jul 2710059.5
2026-07-28Jul 2810062
2026-07-29Jul 2910064
the exact SQL behind every number
WITH daily_close AS (
    SELECT ticker,
           toDate(toTimeZone(window_start, 'America/New_York')) AS session_date,
           argMax(close, window_start) AS close_px
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('AAPL','MSFT','NVDA','AMZN','GOOGL','AVGO','JPM','JNJ','XOM','PG',
                     'KO','PEP','WMT','HD','CVX','MRK','PFE','ABBV','CSCO','ORCL',
                     'CRM','ADBE','MCD','NKE','VZ','T','DIS','BA','CAT','GE',
                     'IBM','MMM','UNH','LLY','COST','TGT','SBUX','GS','MS','LIN')
      AND window_start >= toDateTime('2025-03-01 00:00:00')
      AND window_start < toDateTime('2026-08-01 05:00:00')
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY ticker, session_date
),
extremes AS (
    SELECT cur.ticker AS ticker,
           cur.session_date AS session_date,
           cur.close_px AS close_px,
           max(hist.close_px) AS high_52w,
           min(hist.close_px) AS low_52w
    FROM daily_close AS cur
    INNER JOIN daily_close AS hist ON cur.ticker = hist.ticker
    WHERE cur.session_date >= toDate('2026-04-01')
      AND hist.session_date <= cur.session_date
      AND hist.session_date > cur.session_date - 364
    GROUP BY cur.ticker, cur.session_date, cur.close_px
),
daily AS (
    SELECT session_date,
           countIf(close_px >= high_52w) AS new_highs,
           countIf(close_px >= high_52w) + countIf(close_px <= low_52w) AS names_at_extreme
    FROM extremes
    GROUP BY session_date
    HAVING names_at_extreme > 0
),
rhp AS (
    SELECT session_date,
           round(100 * new_highs / names_at_extreme, 1) AS record_high_pct
    FROM daily
),
smoothed AS (
    SELECT session_date,
           record_high_pct,
           round(avg(record_high_pct) OVER (ORDER BY session_date
                                            ROWS BETWEEN 9 PRECEDING AND CURRENT ROW), 1) AS high_low_index_pct,
           count() OVER (ORDER BY session_date
                         ROWS BETWEEN 9 PRECEDING AND CURRENT ROW) AS sessions_in_window
    FROM rhp
)
SELECT session_date AS date,
       formatDateTimeInJodaSyntax(session_date, 'MMM d') AS session_label,
       record_high_pct,
       high_low_index_pct
FROM smoothed
WHERE sessions_in_window = 10
ORDER BY session_date
$