STRASMORE/EXPLORE 2,170 QUERIES

New 52-week highs and lows each session: 40 large-cap US names, April to July 2026

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 77×4read in context →
New 52-week highs and lows each session: 40 large-cap US names, April to July 2026 — 77 rows by 4 columns, computed from US exchange, SIP and OPRA data.
datesession_labelnew_highsnew_lows
2026-04-01Apr 111
2026-04-02Apr 201
2026-04-06Apr 611
2026-04-07Apr 702
2026-04-08Apr 811
2026-04-09Apr 922
2026-04-10Apr 1013
2026-04-13Apr 1310
2026-04-14Apr 1410
2026-04-15Apr 1510
2026-04-17Apr 1720
2026-04-20Apr 2030
2026-04-21Apr 2130
2026-04-22Apr 2240
2026-04-23Apr 2310
2026-04-24Apr 2450
2026-04-27Apr 2730
2026-04-29Apr 2910
2026-04-30Apr 3040
2026-05-01May 140
2026-05-04May 422
2026-05-05May 550
2026-05-06May 661
2026-05-07May 711
2026-05-08May 851
2026-05-11May 1143
2026-05-12May 1253
2026-05-13May 1373
2026-05-14May 1441
2026-05-15May 1532
2026-05-18May 1820
2026-05-19May 1930
2026-05-20May 2030
2026-05-21May 2140
2026-05-22May 2250
2026-05-26May 2610
2026-05-27May 2710
2026-05-28May 2840
2026-05-29May 2940
2026-06-01Jun 150
2026-06-02Jun 260
2026-06-03Jun 301
2026-06-04Jun 442
2026-06-05Jun 511
2026-06-08Jun 821
2026-06-09Jun 910
2026-06-10Jun 1010
2026-06-11Jun 1121
2026-06-12Jun 1221
2026-06-15Jun 1501
2026-06-16Jun 1631
2026-06-17Jun 1743
2026-06-18Jun 1823
2026-06-22Jun 2233
2026-06-24Jun 2421
2026-06-25Jun 2554
2026-06-26Jun 2651
2026-06-29Jun 2951
2026-06-30Jun 3011
2026-07-01Jul 121
2026-07-02Jul 260
2026-07-06Jul 620
2026-07-07Jul 750
2026-07-09Jul 920
2026-07-13Jul 1331
2026-07-14Jul 1431
2026-07-15Jul 1541
2026-07-16Jul 1631
2026-07-17Jul 1710
2026-07-20Jul 2001
2026-07-21Jul 2113
2026-07-22Jul 2212
2026-07-23Jul 2323
2026-07-24Jul 2421
2026-07-27Jul 2730
2026-07-28Jul 2870
2026-07-29Jul 2930
Rows × columns
77 × 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 New 52-week highs and lows each session: 40 large-cap US names, April to July 2026, derived from the stored result.
ColumnTypeRangeNotes
date date 2026-04-01 to 2026-07-29
session_label text 77 distinct values (Apr 1, Apr 10, Apr 13…)
new_highs number 0 to 7
new_lows number 0 to 4

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 <= low_52w) AS new_lows,
           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
)
SELECT session_date AS date,
       formatDateTimeInJodaSyntax(session_date, 'MMM d') AS session_label,
       new_highs,
       new_lows
FROM daily
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
Record High Percent and its 10-day average (the High-Low Index), 40-name basket series 68×4 Two breadth measures, same basket: 10-day High-Low Index vs 10-day advancing share 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 →