STRASMORE/EXPLORE 2,170 QUERIES

Two breadth measures, same basket: 10-day High-Low Index vs 10-day advancing share

Answered against 22 years of US equities and 12 years of US options data and published with the query that produced it. This result is stored as of 2026-08-04, from What Is the High-Low Index? Market Breadth.

as of series 68×4read in context →
Two breadth measures, same basket: 10-day High-Low Index vs 10-day advancing share — 68 rows by 4 columns, computed from US exchange, SIP and OPRA data.
datesession_labelhigh_low_index_pctadvancing_pct_10d
2026-04-15Apr 1552.552.8
2026-04-17Apr 1757.554.5
2026-04-20Apr 2067.553.8
2026-04-21Apr 2172.552
2026-04-22Apr 2282.555
2026-04-23Apr 2387.552.2
2026-04-24Apr 2492.550
2026-04-27Apr 2710051.5
2026-04-29Apr 2910049
2026-04-30Apr 3010050
2026-05-01May 110050
2026-05-04May 49545.5
2026-05-05May 59548.2
2026-05-06May 693.651
2026-05-07May 788.648.5
2026-05-08May 886.947.2
2026-05-11May 1182.647.8
2026-05-12May 1278.951
2026-05-13May 1375.953
2026-05-14May 1473.951.5
2026-05-15May 1569.950.8
2026-05-18May 1874.954.5
2026-05-19May 1974.951
2026-05-20May 2076.350.5
2026-05-21May 2181.352.5
2026-05-22May 228354.5
2026-05-26May 2687.253
2026-05-27May 279153.2
2026-05-28May 289452.5
2026-05-29May 299650.5
2026-06-01Jun 110050.5
2026-06-02Jun 210048.5
2026-06-03Jun 39048.2
2026-06-04Jun 486.748.2
2026-06-05Jun 581.747
2026-06-08Jun 878.345.5
2026-06-09Jun 978.347.8
2026-06-10Jun 1078.345
2026-06-11Jun 117546
2026-06-12Jun 1271.749.2
2026-06-15Jun 1561.750.8
2026-06-16Jun 1659.251
2026-06-17Jun 1764.949
2026-06-18Jun 1862.247.5
2026-06-22Jun 2262.247.2
2026-06-24Jun 2462.247.5
2026-06-25Jun 2557.846.2
2026-06-26Jun 2656.148.2
2026-06-29Jun 2957.847.2
2026-06-30Jun 3056.143.2
2026-07-01Jul 162.843
2026-07-02Jul 265.345.8
2026-07-06Jul 669.647.8
2026-07-07Jul 775.649.8
2026-07-09Jul 980.649.8
2026-07-13Jul 1381.450.8
2026-07-14Jul 1483.349.5
2026-07-15Jul 158349.8
2026-07-16Jul 1682.251.8
2026-07-17Jul 1787.251.8
2026-07-20Jul 2080.550
2026-07-21Jul 217347
2026-07-22Jul 2266.348
2026-07-23Jul 2360.344.8
2026-07-24Jul 245748.2
2026-07-27Jul 2759.550
2026-07-28Jul 286255.2
2026-07-29Jul 296452.5
Rows × columns
68 × 4
Period covered
to
Computed
Completeness
No missing values
Source
US exchange, SIP and OPRA market data
Licence
Strasmore terms · free, no signup
Formats
JSON · CSV · the SQL below

What each column holds

Column definitions for Two breadth measures, same basket: 10-day High-Low Index vs 10-day advancing share, derived from the stored result.
ColumnTypeRangeNotes
date date 2026-04-15 to 2026-07-29
session_label text 68 distinct values (Apr 15, Apr 17, Apr 20…)
high_low_index_pct number 52.5 to 100 percent
advancing_pct_10d number 43 to 55.2 percent

Computed from Strasmore's warehouse of US exchange, SIP and OPRA market data. Equity prices are delayed; options greeks and implied volatility are end-of-day. This result is stored, not recomputed on load — it is exactly the numbers that were returned on , and the query below is what returned them.

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
),
prior AS (
    SELECT ticker,
           session_date,
           close_px,
           lagInFrame(close_px, 1) OVER (PARTITION BY ticker ORDER BY session_date
                                         ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev_close
    FROM daily_close
),
breadth AS (
    SELECT session_date,
           round(100 * countIf(close_px > prev_close) / count(), 1) AS advancing_pct
    FROM prior
    WHERE session_date >= toDate('2026-04-01')
      AND prev_close > 0
    GROUP BY session_date
    HAVING count() >= 20
),
combined AS (
    SELECT d.session_date AS session_date,
           round(100 * d.new_highs / d.names_at_extreme, 1) AS record_high_pct,
           b.advancing_pct AS advancing_pct
    FROM daily AS d
    INNER JOIN breadth AS b ON d.session_date = b.session_date
),
smoothed AS (
    SELECT session_date,
           round(avg(record_high_pct) OVER (ORDER BY session_date
                                            ROWS BETWEEN 9 PRECEDING AND CURRENT ROW), 1) AS high_low_index_pct,
           round(avg(advancing_pct) OVER (ORDER BY session_date
                                          ROWS BETWEEN 9 PRECEDING AND CURRENT ROW), 1) AS advancing_pct_10d,
           count() OVER (ORDER BY session_date
                         ROWS BETWEEN 9 PRECEDING AND CURRENT ROW) AS sessions_in_window
    FROM combined
)
SELECT session_date AS date,
       formatDateTimeInJodaSyntax(session_date, 'MMM d') AS session_label,
       high_low_index_pct,
       advancing_pct_10d
FROM smoothed
WHERE sessions_in_window = 10
ORDER BY session_date

Run your own version of this

The same 22 years of US equities and 12 years of options data are queryable in SQL or plain English. A free account runs 100 queries a day and takes no card.

More from this analysisWhat Is the High-Low Index? Market Breadth
New 52-week highs and lows each session: 40 large-cap US names, April to July 2026 series 77×4 Record High Percent and its 10-day average (the High-Low Index), 40-name basket series 68×4 How thin the denominator gets: sessions bucketed by names at a 52-week extreme table 3×5 AAPL price vs. running VWAP: July 2, 2026 regular session, sampled every 5 minutes series 78×3 New 52-week highs against new lows, daily, over the past six weeks series 31×4 Excluded from the boards: 2026 splits large enough to fake a year-to-date move series 12×5 See all 2,170 queries →