Strasmore Research
تحلیل بازار Matt Connorتوسط Matt Connor · به‌روزرسانی شده در 2026-07-24

خلاصه وضعیت بازار 2 جولای 2026

چرخش سرمایه در آستانه تعطیلات؛ رشد وسعت بازار در مقابل کاهش Nasdaq و فشار فروش در بخش تکنولوژی و حافظه. تحلیل دقیق عملکرد صندوق‌های بخشی و شاخص‌ها.

پنجشنبه، 2 جولای 2026 — آخرین جلسه معاملاتی پیش از تعطیلات روز استقلال — روزی برای چرخش سرمایه بود که با عنوان یک موج فروش همراه شد. شاخص QQQ با ثبت میزان -1.71% بسته شد، در حالی که DIA با رشد 1.04% همراه بود و وسعت بازار مثبت بود: 3398 نام‌های پرنوسان صعودی بودند در حالی که 2758، درصد 54.6% از معاملات در محدوده سبز قرار داشت و شاخص رشد کاهش یافت. هشت مورد از یازده صندوق بخشی با مثبت شدن قیمت بسته شدند؛ فشار فروش در بخش تکنولوژی و مجموعه حافظه که روز قبل شکسته شده بود، متمرکز بود.

جدول امتیازات

پرس‌وجوSPY / QQQ / DIA / IWM — ۲ جولای در مقایسه با بسته‌شدن ۱ جولای، ساعات عادی
کد دقیق SQL پشت هر عدد
WITH prior AS (
    SELECT ticker, argMax(close, window_start) AS prior_close
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('SPY', 'QQQ', 'DIA', 'IWM')
      AND window_start >= '2026-07-01 13:30:00' AND window_start < '2026-07-01 20:00:00'
    GROUP BY ticker
),
sess AS (
    SELECT ticker,
           argMin(open, window_start) AS day_open,
           argMax(close, window_start) AS day_close,
           max(high) AS day_high,
           min(low) AS day_low,
           round(toFloat64(sum(volume)) / 1e6, 1) AS shares_traded_m
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('SPY', 'QQQ', 'DIA', 'IWM')
      AND window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00'
    GROUP BY ticker
)
SELECT
    s.ticker AS ticker,
    round(toFloat64(p.prior_close), 2) AS prior_close,
    round(toFloat64(s.day_open), 2) AS day_open,
    round(toFloat64(s.day_close), 2) AS day_close,
    round((toFloat64(s.day_close) / toFloat64(p.prior_close) - 1) * 100, 2) AS pct_change,
    round(toFloat64(s.day_high), 2) AS day_high,
    round(toFloat64(s.day_low), 2) AS day_low,
    s.shares_traded_m AS shares_traded_m
FROM sess s
JOIN prior p ON s.ticker = p.ticker
ORDER BY s.ticker

خلاصه‌ی وضعیت بازار در یک خط: اختلاف بازدهی روزانه میان DIA در سطح 1.04% و QQQ در سطح -1.71%، تقریباً سه واحد است؛ SPY با ثبت -0.12%، میان این دو قرار گرفت؛ و IWM در سطح -0.59% بسته شد.

Was the day unusual?

Two lenses in one panel: SPY's open-to-close move and QQQ's close-over-close move, each ranked against the trailing month by absolute size (rank 1 = biggest).

پرس‌وجورتبه‌بندی SPY و QQQ نسبت به جلسات ماه گذشته (رتبه ۱ = بزرگترین تغییر مطلق)
کد دقیق SQL پشت هر عدد
WITH per_day AS (
    SELECT ticker,
           toDate(toTimeZone(window_start, 'America/New_York')) AS d,
           (argMax(toFloat64(close), window_start) / argMin(toFloat64(open), window_start) - 1) * 100 AS oc_pct,
           argMax(toFloat64(close), window_start) AS rth_close
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('SPY', 'QQQ')
      AND window_start >= toDateTime('2026-06-02 00:00:00')
      AND window_start < toDateTime('2026-07-03 00:00:00')
      AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
    GROUP BY ticker, d
),
with_prev AS (
    SELECT ticker, d, oc_pct,
           lagInFrame(rth_close) OVER (PARTITION BY ticker ORDER BY d) AS prev_close,
           (rth_close / lagInFrame(rth_close) OVER (PARTITION BY ticker ORDER BY d) - 1) * 100 AS cc_pct
    FROM per_day
)
SELECT
    round(anyIf(oc_pct, ticker = 'SPY' AND d = toDate('2026-07-02')), 2) AS spy_open_to_close_pct,
    arrayCount(x -> x > abs(anyIf(oc_pct, ticker = 'SPY' AND d = toDate('2026-07-02'))),
               groupArrayIf(abs(oc_pct), ticker = 'SPY' AND d != toDate('2026-07-02'))) + 1 AS spy_abs_move_rank,
    countIf(ticker = 'SPY') AS spy_sessions_compared,
    round(anyIf(cc_pct, ticker = 'QQQ' AND d = toDate('2026-07-02')), 2) AS qqq_close_over_close_pct,
    arrayCount(x -> x > abs(anyIf(cc_pct, ticker = 'QQQ' AND d = toDate('2026-07-02'))),
               groupArrayIf(abs(cc_pct), ticker = 'QQQ' AND d != toDate('2026-07-02') AND isFinite(cc_pct) AND prev_close > 0)) + 1 AS qqq_abs_move_rank,
    countIf(ticker = 'QQQ' AND isFinite(cc_pct) AND prev_close > 0) AS qqq_sessions_compared,
    toString(minIf(d, ticker = 'SPY')) AS first_session
FROM with_prev

At the index level, no. SPY's -0.35% open-to-close ranks 15 of 22 trailing sessions — the bottom half. QQQ was louder but still not extreme: its -1.71% close-over-close ranks 9 of 21 sessions with a defined prior close, back to 2026-06-02 — a mid-pack bad day for the growth index. The single-name tape is where July 2 was loud.

وسعت بازار: وضعیت مثبت در تعداد سهام، رشد منفی در شاخص‌ها

پرس‌وجوتعداد سهام صعودی در برابر نزولی در میان نمادهای با حجم معاملات حداقل $1M در ۲ جولای
کد دقیق SQL پشت هر عدد
WITH per_ticker AS (
    SELECT
        ticker,
        toFloat64(argMaxIf(close, window_start, window_start < '2026-07-02 00:00:00')) AS prior_close,
        toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-02 00:00:00')) AS day_close,
        sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-02 00:00:00') AS day_dollar_volume
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE (window_start >= '2026-07-01 13:30:00' AND window_start < '2026-07-01 20:00:00')
       OR (window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00')
    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,
    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,
    round(100.0 * countIf(day_close > prior_close AND day_dollar_volume >= 1000000)
        / countIf(day_dollar_volume >= 1000000), 1) AS advancer_pct,
    reverse(arrayStringConcat(extractAll(reverse(toString(countIf(day_close > prior_close AND day_dollar_volume >= 1000000))), '[0-9]{1,3}'), ',')) AS advancers_fmt,
    reverse(arrayStringConcat(extractAll(reverse(toString(countIf(day_close < prior_close AND day_dollar_volume >= 1000000))), '[0-9]{1,3}'), ',')) AS decliners_fmt,
    reverse(arrayStringConcat(extractAll(reverse(toString(count() - countIf(day_dollar_volume >= 1000000))), '[0-9]{1,3}'), ',')) AS dropped_by_liquidity_filter_fmt,
    reverse(arrayStringConcat(extractAll(reverse(toString(count())), '[0-9]{1,3}'), ',')) AS tickers_traded_both_sessions_fmt
FROM per_ticker
WHERE prior_close > 0 AND day_close > 0

3,398 سهام صعودی، 2,758 سهام نزولی و 63 بدون تغییر — 54.6% از سهام پرحجم افزایش قیمت داشت، در حالی که QQQ کاهش یافت. شاخص‌های با وزن بازار و شاخص‌های با وزن برابر، پاسخ‌های متفاوتی دادند؛ روزهایی از این دست دلیل اصلی تفاوت در تحلیل این دو شاخص هستند. این فیلتر شامل 5,317 از 11,536 نماد با حجم معاملات کمتر از یک میلیون دلار در دو جلسه معاملاتی است.

بررسی بخش‌ها: محل تمرکز رشد

گستره بازار به تعداد نمادها بستگی دارد، اما نوع آن‌ها را مشخص نمی‌کند. یازده صندوق بخش‌بندی شده SPDR جلسه معاملاتی را بر اساس صنایع بررسی کردند؛ فاصله میان بهترین و بدترین عملکرد، نشان‌دهنده میزان پراکندگی روزانه در یک عدد واحد است.

پرس‌وجویازده ETF بخش‌های SPDR — بسته‌شدن ۲ جولای در مقایسه با ۱ جولای، ساعات عادی
کد دقیق SQL پشت هر عدد
WITH per_etf AS (
    SELECT
        ticker,
        toFloat64(argMaxIf(close, window_start, window_start < '2026-07-02 00:00:00')) AS prior_close,
        toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-02 00:00:00')) AS day_close,
        round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-02 00:00:00') / 1e9, 2) AS day_dollar_bn
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('XLB', 'XLC', 'XLE', 'XLF', 'XLI', 'XLK', 'XLP', 'XLRE', 'XLU', 'XLV', 'XLY')
      AND ((window_start >= '2026-07-01 13:30:00' AND window_start < '2026-07-01 20:00:00')
        OR (window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00'))
    GROUP BY ticker
)
SELECT
    ticker,
    round(prior_close, 2) AS prior_close,
    round(day_close, 2) AS day_close,
    round((day_close / prior_close - 1) * 100, 2) AS pct_chg,
    round((day_close / prior_close - 1) * 100 - min((day_close / prior_close - 1) * 100) OVER (), 2) AS pts_above_worst_sector,
    day_dollar_bn
FROM per_etf
ORDER BY ticker

بخش مراقبت‌های بهداشتی (XLV) با 2.63% در صدر قرار گرفت، سپس بخش خدمات عمومی با 2.23%، کالاهای مصرفی ضروری با 2% و مواد اولیه با 1.94%. بخش فناوری (XLK) با -2.71% در جایگاه آخر قرار گرفت و تنها بخشی بود که بیش از یک واحد کاهش داشت؛ کالاهای مصرفی غیرضروری (-0.81%) و خدمات ارتباطی (-0.13%) دیگر صندوق‌های قرمز بودند و هشت بخش دیگر در محدوده سبز قرار گرفتند. پراکندگی از بهترین به بدترین: 5.34 واحد درصد. تفاوت صعودی DIA و نزولی QQQ در کل بازار مشاهده شد و تنها محدود به چهار شرکت بزرگ (megacaps) نبود؛ به همین دلیل، صعودی بودن خط پیشرو-پس‌رو (advance-decline line) همزمان با نزولی بودن Nasdaq، تناقضی ندارد.

برجسته‌ترین اتفاق روز: ریزش بازار حافظه، روز دوم

بخش‌های آسیب‌دیده‌ای که روز چهارشنبه فرو ریختند، در روز پنجشنبه با شدت بیشتری سقوط کردند؛ این موضوع به بزرگی و هم‌حرکتی بازار مربوط است، نه علت سقوط.

پرس‌وجوسهام حافظه و ذخیره‌سازی: تغییر نسبت به بسته‌شدن چهارشنبه، بازه زمانی و حجم دلاری
کد دقیق SQL پشت هر عدد
WITH per_name AS (
    SELECT
        ticker,
        toFloat64(argMaxIf(close, window_start, window_start < '2026-07-02 00:00:00')) AS prior_close,
        toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-02 00:00:00')) AS day_close,
        maxIf(toFloat64(high), window_start >= '2026-07-02 00:00:00') AS day_high,
        minIf(toFloat64(low), window_start >= '2026-07-02 00:00:00') AS day_low,
        argMinIf(window_start, toFloat64(low), window_start >= '2026-07-02 00:00:00') AS low_bar,
        argMaxIf(window_start, toFloat64(high), window_start >= '2026-07-02 00:00:00') AS high_bar,
        round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-02 00:00:00') / 1e9, 2) AS day_dollar_bn
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('MU', 'SNDK', 'STX', 'WDC')
      AND ((window_start >= '2026-07-01 13:30:00' AND window_start < '2026-07-01 20:00:00')
        OR (window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00'))
    GROUP BY ticker
)
SELECT
    ticker,
    round(prior_close, 2) AS prior_close,
    round(day_close, 2) AS day_close,
    round((day_close / prior_close - 1) * 100, 2) AS pct_chg,
    round(day_high, 2) AS day_high,
    formatDateTime(toTimeZone(high_bar, 'America/New_York'), '%H:%i') AS day_high_et,
    round(day_low, 2) AS day_low,
    formatDateTime(toTimeZone(low_bar, 'America/New_York'), '%H:%i') AS day_low_et,
    round((day_high / day_low - 1) * 100, 2) AS range_pct,
    day_dollar_bn
FROM per_name
ORDER BY ticker

گزارش‌ها نشان داد SanDisk با -14.32%، Seagate با -10.38%، Western Digital با -9.92% و MU با -5.57% ثبت شدند — این در حالی است که حجم معاملات MU به $51.4 میلیارد رسید که تقریباً یک‌ونیم برابر حجم معاملات SPY است. MU و SanDisk در اواخر بازار (15:26، 15:26 ET) به پایین‌ترین سطح خود رسیدند؛ Seagate و Western Digital نیز زودتر (14:23، 13:59) این وضعیت را ثبت کردند. پیش‌زمینه: چهارشنبه و تحلیل دقیق MU.

نیمه دیگر این چرخش سرمایه در شرکت‌های بزرگ (megacaps):

پرس‌وجوچرخش سهام Megacap: تغییر نسبت به بسته‌شدن چهارشنبه، بازه زمانی و حجم دلاری
کد دقیق SQL پشت هر عدد
WITH per_name AS (
    SELECT
        ticker,
        toFloat64(argMaxIf(close, window_start, window_start < '2026-07-02 00:00:00')) AS prior_close,
        toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-02 00:00:00')) AS day_close,
        maxIf(toFloat64(high), window_start >= '2026-07-02 00:00:00') AS day_high,
        minIf(toFloat64(low), window_start >= '2026-07-02 00:00:00') AS day_low,
        argMinIf(window_start, toFloat64(low), window_start >= '2026-07-02 00:00:00') AS low_bar,
        argMaxIf(window_start, toFloat64(high), window_start >= '2026-07-02 00:00:00') AS high_bar,
        round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-02 00:00:00') / 1e9, 2) AS day_dollar_bn
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'TSLA')
      AND ((window_start >= '2026-07-01 13:30:00' AND window_start < '2026-07-01 20:00:00')
        OR (window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00'))
    GROUP BY ticker
)
SELECT
    ticker,
    round(prior_close, 2) AS prior_close,
    round(day_close, 2) AS day_close,
    round((day_close / prior_close - 1) * 100, 2) AS pct_chg,
    round(day_high, 2) AS day_high,
    formatDateTime(toTimeZone(high_bar, 'America/New_York'), '%H:%i') AS day_high_et,
    round(day_low, 2) AS day_low,
    formatDateTime(toTimeZone(low_bar, 'America/New_York'), '%H:%i') AS day_low_et,
    round((day_high / day_low - 1) * 100, 2) AS range_pct,
    day_dollar_bn
FROM per_name
ORDER BY ticker

AAPL با یک روند صعودی یک‌طرفه 4.75% رشد کرد — کمترین میزان در ساعت 09:30 ET و بیشترین میزان در ساعت 15:57، سه دقیقه پیش از بسته شدن بازار ثبت شد؛ در حالی که TSLA روند معکوس را در ساعت -7.65% طی کرد. MSFT میزان 1.41% را اضافه کرد؛ NVDA نیز با -1.55% بسته شد. شاخص یکسان، اما روزهای کاملاً متفاوت.

حجم معاملات در بازار

پرس‌وجوپیشتازان حجم معاملات به دو روش: ۶ مورد برتر از نظر حجم دلاری، ۴ مورد برتر از نظر تعداد سهام
کد دقیق SQL پشت هر عدد
SELECT ticker, leaderboard, dollar_volume_bn, if(dollar_volume_bn < 1, dollar_volume_m, NULL) AS dollar_value_m, shares_m,
    round(100 * if(leaderboard = 'by dollars traded', dollar_volume_bn, shares_m)
        / max(if(leaderboard = 'by dollars traded', dollar_volume_bn, shares_m)) OVER (PARTITION BY leaderboard), 1) AS pct_of_board_leader
FROM (
    SELECT
        'by dollars traded' AS leaderboard,
        ticker,
        round(sum(toFloat64(close) * toFloat64(volume)) / 1e9, 2) AS dollar_volume_bn,
        round(sum(toFloat64(close) * toFloat64(volume)) / 1e6, 0) AS dollar_volume_m,
        round(sum(toFloat64(volume)) / 1e6, 1) AS shares_m
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00'
      AND ticker NOT IN ('SPCX')
    GROUP BY ticker
    ORDER BY dollar_volume_bn DESC
    LIMIT 6
    UNION ALL
    SELECT
        'by shares traded' AS leaderboard,
        ticker,
        round(sum(toFloat64(close) * toFloat64(volume)) / 1e9, 2) AS dollar_volume_bn,
        round(sum(toFloat64(close) * toFloat64(volume)) / 1e6, 0) AS dollar_volume_m,
        round(sum(toFloat64(volume)) / 1e6, 1) AS shares_m
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00'
      AND ticker NOT IN ('SPCX')
    GROUP BY ticker
    ORDER BY shares_m DESC
    LIMIT 4
)
ORDER BY leaderboard ASC, if(leaderboard = 'by dollars traded', dollar_volume_bn, shares_m) DESC

معاملات $51.4 میلیارد دلاری MU برای چهار جلسه متوالی در صدر لیست قرار گرفت (دوشنبه، سه‌شنبه، چهارشنبه) و در مقابل SPY با $32.7 میلیارد دلار قرار گرفت. همچنین SanDisk با $26.57 میلیارد دلار، دومین نام از حوزه حافظه را در میان چهار شرکت برتر قرار داد. SOXS — که یک ETF معکوس 3 برابری در حوزه نیمه‌هادی است — با 748.2 میلیون دلار در صدر جدول حجم معاملات قرار گرفت: سهام ارزان‌قیمت بر تعداد سهام و سهام گران‌قیمت بر ارزش دلاری تسلط دارند و حجم نسبی هر مورد را با میانگین معمول همان نماد مقایسه می‌کند. مبنا: ساعات معاملاتی عادی در 2 جولای، با حذف یک لیست با نماد تکراری (رسیدها).

پرس‌وجوتعداد سهام معامله شده در بازه‌های ۳۰ دقیقه‌ای، ساعات عادی (میلیارد)
کد دقیق SQL پشت هر عدد
SELECT
    formatDateTime(toStartOfInterval(toTimeZone(window_start, 'America/New_York'), INTERVAL 30 MINUTE), '%H:%i') AS et_time,
    round(sum(toFloat64(volume)) / 1e9, 2) AS shares_bn,
    round(100 * sum(toFloat64(volume)) / max(sum(toFloat64(volume))) OVER (), 1) AS pct_of_biggest_bucket
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00'
GROUP BY et_time
ORDER BY et_time

2.13 میلیارد سهم در نیم ساعت اول بازار، کف قیمتی 0.81 میلیارد دلاری در ساعت 14:30، و 2.3 میلیارد دلار در زمان بسته شدن بازار در شب تعطیل — دسته آخر بزرگترین حجم روز بود، زیرا مزایده بستن بازار سفارش‌های باقی‌مانده را در قالب یک قیمت نهایی ادغام می‌کند.

The options tape: the shifted weekly lands

پرس‌وجویک ردیف برای کل روز معاملات اختیار معامله: حجم، انقضای همان روز، هفته جابه‌جا شده به دلیل تعطیلات و ماه جولای
کد دقیق SQL پشت هر عدد
WITH
    (
        SELECT (any(underlying_symbol), any(toFloat64(strike_price)), any(option_type),
                any(toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6)))),
                sum(size), count(), round(avg(toFloat64(price)), 3))
        FROM global_markets.options_trades
        WHERE sip_timestamp >= '2026-07-02 00:00:00' AND sip_timestamp < '2026-07-03 00:00:00'
        GROUP BY ticker
        ORDER BY sum(size) DESC
        LIMIT 1
    ) AS top_contract,
    (
        SELECT round(toFloat64(argMax(close, window_start)), 2)
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'SPY' AND window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00'
    ) AS spy_regular_close
SELECT
    round(count() / 1e6, 2) AS option_prints_m,
    round(toFloat64(sum(size)) / 1e6, 2) AS contracts_m,
    round(100.0 * sumIf(size, option_type = 'C') / sum(size), 1) AS call_pct_of_volume,
    round(100.0 * sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260702') / sum(size), 1) AS same_day_expiry_pct,
    round(toFloat64(sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260702')) / 1e6, 2) AS thu_jul2_expiry_contracts_m,
    countIf(substring(ticker, length(ticker) - 14, 6) = '260703') AS fri_jul3_expiry_prints,
    round(toFloat64(sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260710')) / 1e6, 2) AS jul10_weekly_contracts_m,
    round(toFloat64(sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260717')) / 1e6, 2) AS jul17_monthly_contracts_m,
    round(toFloat64(sumIf(size, underlying_symbol = 'SPY')) / 1e6, 2) AS spy_contracts_m,
    round(toFloat64(sumIf(size, underlying_symbol = 'QQQ')) / 1e6, 2) AS qqq_contracts_m,
    top_contract.1 AS top_contract_underlying,
    top_contract.2 AS top_contract_strike,
    top_contract.3 AS top_contract_type,
    top_contract.4 AS top_contract_expiry,
    top_contract.5 AS top_contract_volume,
    reverse(arrayStringConcat(extractAll(reverse(toString(assumeNotNull(top_contract.5))), '[0-9]{1,3}'), ',')) AS top_contract_volume_fmt,
    round(top_contract.7, 3) AS top_contract_avg_price,
    round(top_contract.2 - spy_regular_close, 2) AS top_strike_minus_spy_close,
    round(spy_regular_close - top_contract.2, 2) AS spy_close_minus_strike
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-02 00:00:00' AND sip_timestamp < '2026-07-03 00:00:00'

Options traded 80.96 million contracts across 13.15 million prints, and 47.4% of that volume expired the same Thursday. No contract with a July 3 expiration code printed all day (0 prints), so Thursday carried the daily expiry and the week's shifted weekly at once. The busiest contract was the same-day SPY $740 put — 540,403 contracts at an average $0.499 premium, SPY closing 4.8 dollars above the strike: out of the money, and a put atop a board where Tuesday and Wednesday had calls. Calls still took 58.4% of volume; the next weekly drew 9.64 million contracts, the July monthly 8.82 million (expiry mechanics).

The quote tape: what it cost to trade

Prices say what happened; quotes say what it cost. The bid-ask spread is the toll on every round trip, in basis points of the mid-price (a basis point is a hundredth of a percent). We measure it every session, ordinary or not — which is what makes "spreads blew out" a falsifiable claim.

پرس‌وجوتعداد به‌روزرسانی‌های NBNO سهام: ۲ جولای در مقایسه با ۱ جولای، همراه با به‌روزرسانی نمادهای مشخص (میلیون)
کد دقیق SQL پشت هر عدد
SELECT
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-02')) / 1e6, 2) AS jul2_updates_m,
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-01')) / 1e6, 2) AS jul1_updates_m,
    round((countIf(toDate(sip_timestamp) = toDate('2026-07-02')) / countIf(toDate(sip_timestamp) = toDate('2026-07-01')) - 1) * 100, 1) AS day_over_day_pct,
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-02') AND ticker = 'SPY') / 1e6, 2) AS jul2_spy_updates_m,
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-02') AND ticker = 'QQQ') / 1e6, 2) AS jul2_qqq_updates_m,
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-02') AND ticker = 'MU') / 1e6, 2) AS jul2_mu_updates_m
FROM global_markets.cache_stocks_quotes
WHERE sip_timestamp >= '2026-07-01 00:00:00' AND sip_timestamp < '2026-07-03 00:00:00'

The national best bid and offer — the top of the consolidated book — was rewritten 597.22 million times on July 2 against 449.15 million on July 1: a 33% jump into the closure. QQQ took 7.56 million, above SPY's 5.42 million; MU 1.01 million.

پرس‌وجومیانه شکاف قیمت (Spread) بر حسب basis points، ساعات عادی — ETFهای شاخص، Megacapها و سهام حافظه
کد دقیق SQL پشت هر عدد
SELECT
    ticker,
    round(med_bps, 2) AS median_spread_bps,
    round(med_dollars * 100, 1) AS median_spread_cents,
    round(med_bps / min(med_bps) OVER (), 1) AS times_the_spy_spread,
    round(quote_updates / 1e6, 2) AS rth_updates_m,
    invalid_quotes_dropped
FROM (
    SELECT
        ticker,
        quantileExactIf(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000,
                             toFloat64(bid_price) > 0 AND toFloat64(ask_price) > toFloat64(bid_price)) AS med_bps,
        quantileExactIf(0.5)(toFloat64(ask_price) - toFloat64(bid_price),
                             toFloat64(bid_price) > 0 AND toFloat64(ask_price) > toFloat64(bid_price)) AS med_dollars,
        count() AS quote_updates,
        countIf(NOT (toFloat64(bid_price) > 0 AND toFloat64(ask_price) > toFloat64(bid_price))) AS invalid_quotes_dropped
    FROM global_markets.cache_stocks_quotes
    WHERE ticker IN ('SPY', 'QQQ', 'AAPL', 'TSLA', 'NVDA', 'MU', 'SNDK', 'WDC')
      AND sip_timestamp >= '2026-07-02 13:30:00' AND sip_timestamp < '2026-07-02 20:00:00'
    GROUP BY ticker
)
ORDER BY median_spread_bps ASC

SPY quoted a median 0.27 basis points wide: about 2 cents on a $744.8 ETF. QQQ came in at 0.83 bps, NVDA 1.03. The names doing the falling were the expensive ones to trade: MU 5.52 bps, SanDisk 10.4, Western Digital 10.7940x SPY's spread. Crossing a basket of memory names cost multiples of crossing the index, before any price impact. Invalid quotes (one-sided, crossed) are counted per name, not hidden.

پرس‌وجوآیا نقدینگی غیرمعمول بود؟ میانه شکاف قیمت ساعات عادی SPY در مقایسه با جلسات ماه گذشته
کد دقیق SQL پشت هر عدد
WITH per_day AS (
    SELECT toDate(sip_timestamp) AS d,
           quantileExact(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000) AS med_bps
    FROM global_markets.cache_stocks_quotes
    WHERE ticker = 'SPY'
      AND sip_timestamp >= '2026-06-02 00:00:00' AND sip_timestamp < '2026-07-03 00:00:00'
      AND (toHour(sip_timestamp) * 60 + toMinute(sip_timestamp)) BETWEEN 810 AND 1199
      AND toFloat64(bid_price) > 0 AND toFloat64(ask_price) > toFloat64(bid_price)
    GROUP BY d
)
SELECT
    round(anyIf(med_bps, d = toDate('2026-07-02')), 3) AS jul2_median_spread_bps,
    round(quantileExact(0.5)(med_bps), 3) AS trailing_median_bps,
    round(anyIf(med_bps, d = toDate('2026-07-02')) - quantileExact(0.5)(med_bps), 3) AS jul2_minus_trailing_bps,
    arrayCount(x -> x > anyIf(med_bps, d = toDate('2026-07-02')), groupArrayIf(med_bps, d != toDate('2026-07-02'))) + 1 AS wider_rank,
    count() AS sessions_compared,
    round(max(med_bps), 3) AS widest_session_bps
FROM per_day

An ordinary day for liquidity, and that is the finding: SPY's median spread of 0.27 bps sits 0 bps from the trailing month's median (0.27 bps), ranking 11 of 22 sessions by wideness — nowhere near the month's widest at 0.409 bps. A concentrated rout under a green tape did not stress the plumbing.

نرخ‌ها: داده‌های 2 جولای منتشر شد

پرس‌وجوگزارش خزانه‌داری: داده‌های خزانه‌داری ۲ جولای ثبت شده است
کد دقیق SQL پشت هر عدد
SELECT
    (SELECT count() FROM global_markets.treasury_yields WHERE date = '2026-07-02') AS jul2_rows,
    (SELECT count() FROM global_markets.treasury_yields WHERE date = '2026-07-01') AS jul1_rows

فید خزانه‌داری با یک یا دو روز تأخیر نسبت به بازار ثبت می‌شود: در زمان انتشار اولیه، هیچ ردیفی برای قیمت بسته‌شدن 2 جولای در فایل‌ها موجود نبود و این صفحه به جای حدس زدن، این موضوع را اعلام کرد. داده‌ها اکنون منتشر شده‌اند — 1 ردیف برای 2 جولای و 1 ردیف برای 1 جولای — بنابراین جدول زیر منحنی مربوط به همان جلسه معاملاتی را نشان می‌دهد.

پرس‌وجونمودار منحنی جلسه: ۲ جولای در مقایسه با ۱ جولای (فقط سررسیدهای موجود)
کد دقیق SQL پشت هر عدد
SELECT
    t.1 AS curve_point,
    round(t.2, 2) AS jul2_yield_pct,
    round((t.2 - t.3) * 100) AS one_day_change_bp
FROM (
    SELECT arrayJoin([
        ('1 month',  toFloat64(d.yield_1_month),  toFloat64(p.yield_1_month)),
        ('3 month',  toFloat64(d.yield_3_month),  toFloat64(p.yield_3_month)),
        ('1 year',   toFloat64(d.yield_1_year),   toFloat64(p.yield_1_year)),
        ('2 year',   toFloat64(d.yield_2_year),   toFloat64(p.yield_2_year)),
        ('5 year',   toFloat64(d.yield_5_year),   toFloat64(p.yield_5_year)),
        ('10 year',  toFloat64(d.yield_10_year),  toFloat64(p.yield_10_year)),
        ('30 year',  toFloat64(d.yield_30_year),  toFloat64(p.yield_30_year)),
        ('2s10s spread', toFloat64(d.yield_10_year - d.yield_2_year), toFloat64(p.yield_10_year - p.yield_2_year))
    ]) AS t
    FROM (SELECT * FROM global_markets.treasury_yields WHERE date = '2026-07-02') AS d,
         (SELECT * FROM global_markets.treasury_yields WHERE date = '2026-07-01') AS p
)

در زمان بسته شدن بازار، نرخ 10 ساله در سطح 4.49% قرار داشت و spread 2s10s در سطح 0.35 واحد بود.

The calendar behind the day

پرس‌وجوتقویم شرکتی و جریان اطلاعات ۲ جولای در یک ردیف (شامل هشت مورد split)
کد دقیق SQL پشت هر عدد
WITH
    (
        SELECT (count(), uniqExact(publisher))
        FROM global_markets.stocks_news
        WHERE toDate(toTimeZone(published_utc, 'America/New_York')) = '2026-07-02'
    ) AS news,
    (
        SELECT (argMax(t, n), max(n))
        FROM (
            SELECT t, count() AS n
            FROM (
                SELECT arrayJoin(tickers) AS t
                FROM global_markets.stocks_news
                WHERE toDate(toTimeZone(published_utc, 'America/New_York')) = '2026-07-02'
            )
            WHERE t != 'SPCX'
            GROUP BY t
        )
    ) AS top_news,
    (
        SELECT (count(), countIf(split_to > split_from), countIf(split_to < split_from),
                arrayStringConcat(groupArray(concat(ticker, ' ', toString(split_to), '-for-', toString(split_from))), '; '))
        FROM global_markets.stocks_splits
        WHERE execution_date = '2026-07-02' AND ticker NOT IN ('SPCX')
    ) AS splits
SELECT
    (SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date = '2026-07-02') AS ex_dividend_records,
    splits.1 AS splits_executed,
    splits.2 AS forward_splits,
    splits.3 AS reverse_splits,
    splits.4 AS split_records,
    (SELECT count() FROM global_markets.stocks_ipos WHERE listing_date = '2026-07-02') AS ipos_listed,
    (SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-02') AS sec_filings,
    (SELECT uniqExactIf(accession_number, form_type = '4') FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-02') AS insider_form4_filings,
    (SELECT uniqExactIf(accession_number, form_type = '8-K') FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-02') AS filings_8k,
    (SELECT arrayStringConcat(groupArray(concat(ticker, ' — ', issuer_name)), '; ') FROM (
        SELECT ticker, issuer_name FROM global_markets.stocks_ipos WHERE listing_date = '2026-07-02' ORDER BY ticker
    )) AS ipo_names,
    news.1 AS news_articles,
    news.2 AS news_publishers,
    top_news.1 AS most_covered_ticker,
    top_news.2 AS most_covered_articles,
    (SELECT any(split_from) FROM global_markets.stocks_splits WHERE ticker = 'CRWD' AND execution_date = '2026-07-02') AS crwd_split_from,
    (SELECT any(split_to) FROM global_markets.stocks_splits WHERE ticker = 'CRWD' AND execution_date = '2026-07-02') AS crwd_split_to,
    (SELECT round(toFloat64(argMax(close, window_start)), 2) FROM global_markets.delayed_stocks_minute_aggs
     WHERE ticker = 'CRWD' AND window_start >= '2026-07-01 13:30:00' AND window_start < '2026-07-01 20:00:00') AS crwd_prev_close,
    (SELECT round(toFloat64(argMax(close, window_start)), 2) FROM global_markets.delayed_stocks_minute_aggs
     WHERE ticker = 'CRWD' AND window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00') AS crwd_day_close,
    (SELECT round(sum(toFloat64(close) * toFloat64(volume)) / 1e6, 2) FROM global_markets.delayed_stocks_minute_aggs
     WHERE ticker = 'CRWD' AND window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00') AS crwd_dollar_m,
    (SELECT count() FROM (
        SELECT ticker FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker IN (SELECT ticker FROM global_markets.stocks_splits WHERE execution_date = '2026-07-02')
          AND window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00'
        GROUP BY ticker
    )) AS split_names_with_bars

319 dividend records went ex-dividend, 2 new listings arrived (MIACU — Meridian3 Industrials Acquisition Corp.; VIIU — Viking Acquisition Corp. II), and the SEC index logged 5200 filings into the holiday — 2109 Form 4s, 258 8-Ks. The news feed carried 201 articles from 3 publishers (NVDA most-covered, 18 of them).

The splits trap anyone reading raw closes. CRWD ran a 4-for-1 forward split, so the unadjusted tape shows $772.45 on Wednesday and $193.67 on Thursday — a fake decline that is really four new shares for each old one. It was not alone: 8 split records executed, 5 forward and 3 reverse (the split_records column lists them), and a reverse split fakes the opposite artifact — a raw price that leaps overnight. Only 2 of those names traded on our tape; CRWD's $1473.51 million of turnover is the one big enough to contaminate a screen, and every mover screen here excludes it.

در صف انتظار

واقعیت‌های تقویمی، نه پیش‌بینی — آنچه جداول درباره جلسات بعدی نشان می‌دهند.

پرس‌وجوپس از تعطیلات: جلسه بعد، تاریخ‌های ex-dividend و split، بسته‌شدن بعدی و تأخیر short-interest
کد دقیق SQL پشت هر عدد
SELECT
    (SELECT count() FROM global_markets.delayed_stocks_minute_aggs
     WHERE ticker = 'SPY' AND window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-06 20:00:00') AS jul6_spy_regular_bars,
    (SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date = '2026-07-06') AS exdiv_records_jul6,
    (SELECT arrayStringConcat(groupArray(ticker), ', ') FROM global_markets.stocks_dividends
     WHERE ex_dividend_date = '2026-07-06'
       AND ticker IN ('AAPL', 'MSFT', 'JPM', 'JNJ', 'XOM', 'KO', 'PG', 'WMT', 'CVX', 'HD')) AS household_exdivs_jul6,
    (SELECT count() FROM global_markets.stocks_splits WHERE execution_date = '2026-07-06') AS splits_jul6,
    (SELECT toString(min(date)) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-02') AS next_scheduled_closure,
    (SELECT any(name) FROM global_markets.stocks_market_holidays
     WHERE date = (SELECT min(date) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-02')) AS next_closure_name,
    (SELECT any(status) FROM global_markets.stocks_market_holidays
     WHERE date = (SELECT min(date) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-02')) AS next_closure_status,
    (SELECT toString(max(settlement_date)) FROM global_markets.stocks_short_interest
     WHERE settlement_date <= '2026-07-02') AS latest_si_settlement,
    (SELECT dateDiff('day', max(settlement_date), toDate('2026-07-02')) FROM global_markets.stocks_short_interest
     WHERE settlement_date <= '2026-07-02') AS si_settlement_age_days

روز دوشنبه 6 جولای با یک جلسه کامل با میله 390 بازگشایی شد که از میله‌های اختصاصی خود تایید شده است. این روز شامل 118 رکورد بدون سود تقسیمی بود — از جمله ده نام شناخته‌شده‌ای که بررسی می‌کنیم (JPM) — و 15 اجرای تقسیم سهام داشت. بسته‌شدن بعدی برنامه‌ریزی شده: Labor Day، 2026-09-07 (closed). میزان فروش استقراضی، طبق معمول، اخبار قدیمی بود — جدیدترین تسویه ثبت شده 2026-06-30، 2 روز پیش بود؛ انتشار اطلاعات معمولاً حدود دو هفته پس از تسویه صورت می‌گیرد (چرا).

جلسه معاملاتی تایید شد — و جمعه‌ای که برگزار نشد

پرس‌وجوبررسی جلسه: بازه زمانی دقیقه‌ای مشاهده شده برای SPY و بسته‌شدن ۳ جولای در تابلوی قیمت
کد دقیق SQL پشت هر عدد
SELECT
    formatDateTime(min(toTimeZone(window_start, 'America/New_York')), '%H:%i') AS first_spy_bar_et,
    formatDateTime(max(toTimeZone(window_start, 'America/New_York')), '%H:%i') AS last_spy_bar_et,
    count() AS spy_minute_bars,
    countIf(window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00') AS regular_session_bars,
    uniqExactIf(toDate(toTimeZone(window_start, 'America/New_York')), window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00') AS day_sessions,
    (SELECT count() FROM global_markets.delayed_stocks_minute_aggs
     WHERE ticker = 'SPY' AND window_start >= '2026-07-03 00:00:00' AND window_start < '2026-07-04 00:00:00') AS jul3_spy_bars
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2026-07-02 00:00:00' AND window_start < '2026-07-03 00:00:00'

2 جولای یک جلسه کامل بود، نه بستن زودهنگام بازار: نمودارهای SPY از ساعت 04:00 تا 19:59 به وقت نیویورک ادامه داشت (شامل نمودارهای پیش‌بازار و پس‌بازار)، و دقیقاً 390 کندل در بازه زمانی عادی ثبت شد. جمعه 3 جولای شاهد 0 کندل در SPY بود — یک بستن کامل بازار، چرا که روز استقلال (4 جولای) مصادف با شنبه بود. خلاصه چهار جلسه هفته: خلاصه هفته.

سوالات متداول

چرا در 2 جولای 2026، Dow برخلاف Nasdaq رشد کرد؟

این دو شاخص شامل شرکت‌های متفاوتی هستند: DIA در سطح 1.04% و QQQ در سطح -1.71% بسته شدند. ساختار بخش‌های بازار نیز دارای همین تفاوت است؛ بخش‌های مراقبت‌های بهداشتی، خدمات عمومی و کالاهای اساسی در صدر قرار دارند و بخش فناوری با اختلاف 5.34 واحد از بهترین به بدترین وضعیت، در سطح -2.71% قرار گرفته است.

آیا بازار سهام در جمعه هفته روز استقلال باز بود؟

خیر. روز استقلال مصادف با شنبه بود و بورس‌ها با تعطیلی کامل در روز جمعه، یعنی یک روز پس از این جلسه معاملاتی، این مناسبت را رعایت کردند: داده‌های ما 0 کندل یک دقیقه‌ای SPY را برای آن نشان می‌دهد.

تقسیم سهام آتی چه تأثیری بر قیمت هر سهم دارد؟

این اقدام تعداد سهام را در چهار ضرب و قیمت را بر چهار تقسیم می‌کند؛ ارزش کل موقعیت بدون تغییر باقی می‌ماند. در مورد CRWD در 2 جولای: قیمت بسته شده اصلاح‌نشده در روز چهارشنبه $772.45 و در روز پنجشنبه $193.67 بود؛ این یک کاهش کاذب در هر ابزار تحلیلگری است که تقسیم سهام را لحاظ نکرده باشد.

میزان شکاف قیمت خرید و فروش (bid-ask spread) در 2 جولای 2026 چقدر بود؟

میانه شکاف قیمت اعلام شده برای SPY در ساعات عادی معاملاتی 0.27 واحد پایه از قیمت میانی بود که معادل 11 از 22 جلسات گذشته از نظر میزان پهنا بود؛ یک روز عادی. در مورد سهام انفرادی، این شکاف بیشتر بود: MU در سطح 5.52 bps و WDC در سطح 10.79.

یادداشت‌های داده‌ها

  • حجم دلاری یک شاخص بر پایه دقیقه است — حاصل‌ضرب قیمت پایانی در حجم، جمع‌شده در هر کندل.
  • گزارش 2 جولای خزانه‌داری پس از انتشار اولیه منتشر شد — یادداشت اصلی عدم وجود این داده را با رسید تعداد ردیف‌ها اعلام کرده بود؛ این نسخه اصلاح‌شده شامل گزارش مذکور است و رسید آن نیز ارائه شده است.
  • تغییر قیمت پایانی خام CRWD ناشی از تجزیه سهام است — این مورد از لیست‌های تغییرات قیمتی (mover screens) حذف شده است.
یادداشت‌های کامل داده‌ها
  • برد بخش‌ها شامل یازده صندوق SPDR Select Sector (XLB, XLC, XLE, XLF, XLI, XLK, XLP, XLRE, XLU, XLV, XLY) است — این یک سبد ثابت و اعلام‌شده است، نه یک فیلد بخش از سمت تامین‌کننده داده.
  • شمارش Quote-tape بر اساس تاریخ UTC از برچسب زمانی SIP انجام می‌شود؛ یک جلسه معاملاتی تابستانی در قالب یک روز UTC قرار می‌گیرد.
  • یک مورد از لیست‌های ژوئن با نماد تکراری از جدول امتیازات حذف شده است (رسیدها)؛ تحلیل‌های دقیق تراکنش‌ها در بخش بررسی‌های عمیق موجود است.

روش‌شناسی

  • این بازه زمانی شامل یک جلسه معاملاتی است (1 جلسه، که از طریق کندل‌های مشاهده‌شده تأیید شده است). زمان‌بندی‌ها در قالب UTC ذخیره شده و در داخل پرس‌وجوها به زمان نیویورک تبدیل می‌شوند؛ عبارت "close" به معنای آخرین کندل دقیقه‌ای در جلسه عادی است و تغییرات روزانه با مقایسه 2 جولای و 1 جولای انجام می‌شود. وضعیت بسته شدن بازار در 3 جولای از طریق کندل‌ها تأیید شده و صرفاً فرض نشده است.
  • اسپردها (تفاوت قیمت خرید و فروش) بر حسب واحد basis point نسبت به قیمت میانه، بر اساس میانه به‌روزرسانی‌های NBBO در ساعات عادی و بر روی یک چندک معین، اعلام می‌شوند. اعداد اعشاری پیش از محاسبات نسبتی به float تبدیل می‌شوند؛ تاریخ‌های سررسید اختیار معامله نیز از طریق تیکر OCC بازخوانی می‌شوند. هر پنل در زمان نگارش، تنها یک‌بار و از طریق مسیر محدود و فقط‌خواندنی استخراج می‌شود.

نمودار، جدول و SQL یک واحد یکپارچه هستند. هر پنلی را می‌توانید در ترمینال Strasmore کپی کرده و از آن استفاده کنید. جلسه قبل: 1 جولای. هفته جاری: هفته تعطیلات چهار جلسه‌ای.