STRASMORE/EXPLORE 2,170 QUERIES

Advancers, decliners, and new quarterly highs vs lows among tickers with at least $1M traded on July 1

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-07-26, from Market Recap: July 1, 2026, The Day in Numbers.

as of scalar 1×12read in context →
advancers
2,928
decliners
3,465
unchanged
82
advancer pct
45.2
new quarter highs
836
new quarter lows
246
highs per low
3.4
names with a full quarter
6,217
liquid tickers
6,475
tickers traded both sessions
11,910
dropped by liquidity filter
5,435
dropped short quarter history
258
Rows × columns
1 × 12
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 Advancers, decliners, and new quarterly highs vs lows among tickers with at least $1M traded on July 1, derived from the stored result.
ColumnTypeRangeNotes
advancers number every row is 2,928
decliners number every row is 3,465
unchanged number every row is 82
advancer_pct number every row is 45.2 percent
new_quarter_highs number every row is 836
new_quarter_lows number every row is 246
highs_per_low number every row is 3.4 US dollars
names_with_a_full_quarter number every row is 6,217
liquid_tickers number every row is 6,475
tickers_traded_both_sessions number every row is 11,910
dropped_by_liquidity_filter number every row is 5,435
dropped_short_quarter_history number every row is 258

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 per_ticker AS (
    SELECT
        ticker,
        toFloat64(argMaxIf(close, window_start, window_start < '2026-07-01 00:00:00')) AS prior_close,
        toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-01 00:00:00')) AS day_close,
        maxIf(toFloat64(high), window_start < '2026-07-01 00:00:00') AS quarter_high,
        minIf(toFloat64(low), window_start < '2026-07-01 00:00:00') AS quarter_low,
        maxIf(toFloat64(high), window_start >= '2026-07-01 00:00:00') AS day_high,
        minIf(toFloat64(low), window_start >= '2026-07-01 00:00:00') AS day_low,
        sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-01 00:00:00') AS day_dollar_volume,
        countIf(window_start < '2026-07-01 00:00:00') AS quarter_bars
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ((window_start >= '2026-04-01 13:30:00' AND window_start < '2026-06-30 20:00:00')
        OR (window_start >= '2026-07-01 13:30:00' AND window_start < '2026-07-01 20:00:00'))
      AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
    GROUP BY ticker
)
SELECT
    countIf(day_close > prior_close AND day_dollar_volume >= 1000000) AS advancers,
    countIf(day_close < prior_close AND day_dollar_volume >= 1000000) AS decliners,
    countIf(day_close = prior_close AND day_dollar_volume >= 1000000) AS unchanged,
    round(100.0 * countIf(day_close > prior_close AND day_dollar_volume >= 1000000)
        / countIf(day_dollar_volume >= 1000000), 1) AS advancer_pct,
    countIf(day_dollar_volume >= 1000000 AND quarter_bars >= 1000 AND day_high > quarter_high) AS new_quarter_highs,
    countIf(day_dollar_volume >= 1000000 AND quarter_bars >= 1000 AND day_low < quarter_low) AS new_quarter_lows,
    round(countIf(day_dollar_volume >= 1000000 AND quarter_bars >= 1000 AND day_high > quarter_high)
        / countIf(day_dollar_volume >= 1000000 AND quarter_bars >= 1000 AND day_low < quarter_low), 1) AS highs_per_low,
    countIf(day_dollar_volume >= 1000000 AND quarter_bars >= 1000) AS names_with_a_full_quarter,
    countIf(day_dollar_volume >= 1000000) AS liquid_tickers,
    count() AS tickers_traded_both_sessions,
    count() - countIf(day_dollar_volume >= 1000000) AS dropped_by_liquidity_filter,
    countIf(day_dollar_volume >= 1000000 AND quarter_bars < 1000) AS dropped_short_quarter_history
FROM per_ticker
WHERE prior_close > 0 AND day_close > 0

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 analysisMarket Recap: July 1, 2026, The Day in Numbers
Session check: SPY's observed minute-bar span scalar 1×6 One row for the whole options day: volume, same-day expiry, put/call skew, and the busiest contract scalar 1×21 July 1's corporate calendar and information flow, in one row scalar 1×14 SPY's open-to-close move ranked against the trailing month of sessions (rank 1 = biggest absolute move) scalar 1×4 Every quarter-opening session since 2004: SPY's open-to-close move, with July 1 ranked inside it scalar 1×9 The day's last twelve news articles tagging MU, SNDK, STX, WDC or META (one licensed feed) table 12×4 See all 2,170 queries →