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

خلاصه‌ی بازار 29 ژوئن 2026 در اعداد

بررسی عملکرد شاخص‌ها در 29 ژوئن 2026؛ تحلیل رشد QQQ و SPY، وضعیت نقدشوندگی بازار و بررسی دقیق ریزساختار معاملات برای درک روند حرکت قیمت‌ها.

دوشنبه، 29 ژوئن 2026، روزی صعودی با پیشران رشد بود، اما دامنه رهبری محدود بود: QQQ با کسب 2.57% و SPY با رشد 1.62%، در حالی که 3968 نام‌های نقدشونده در برابر 2327 کاهش‌یافته‌ها رشد کردند — با این حال، تقریباً نیمی از سبدهای بخشی با علامت قرمز بسته شدند. تمام اعداد از یک پرس‌وجوی ذخیره‌شده خوانده می‌شوند؛ برای مشاهده SQL، هر پنل را باز کنید. لایه لحظه‌ای (tick-by-tick) از همان جلسه معاملاتی: بررسی دقیق ریزساختار 29 ژوئن.

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

هر تغییر با آخرین کندل زمانی جلسات عادی در 29 ژوئن در مقایسه با جمعه 26 ژوئن سنجیده شده است.

پرس‌وجوSPY / QQQ / DIA / IWM — ۲۹ ژوئن در مقایسه با بسته‌ شدن ۲۶ ژوئن، ساعات رسمی
کد دقیق SQL پشت هر عدد
WITH friday AS (
    SELECT ticker, argMax(close, window_start) AS friday_close
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('SPY', 'QQQ', 'DIA', 'IWM')
      AND window_start >= '2026-06-26 13:30:00' AND window_start < '2026-06-26 20:00:00'
    GROUP BY ticker
),
monday AS (
    SELECT ticker,
           argMin(open, window_start) AS monday_open,
           argMax(close, window_start) AS monday_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-06-29 13:30:00' AND window_start < '2026-06-29 20:00:00'
    GROUP BY ticker
)
SELECT
    m.ticker AS ticker,
    toFloat64(f.friday_close) AS jun26_close,
    toFloat64(m.monday_open) AS jun29_open,
    toFloat64(m.monday_close) AS jun29_close,
    round((toFloat64(m.monday_close) / toFloat64(f.friday_close) - 1) * 100, 2) AS pct_change,
    round(100 * (toFloat64(m.monday_close) / toFloat64(f.friday_close) - 1) / max(toFloat64(m.monday_close) / toFloat64(f.friday_close) - 1) OVER (), 1) AS pct_of_best_change,
    toFloat64(m.day_high) AS day_high,
    toFloat64(m.day_low) AS day_low,
    m.shares_traded_m AS shares_traded_m
FROM monday m
JOIN friday f ON m.ticker = f.ticker
ORDER BY m.ticker

ETF با نماد SPY در قیمت $736.525 نسبت به قیمت بسته‌شده‌ی جمعه در $729.09 باز شد و در قیمت $740.88، پایین‌تر از سقف $741.56 خود، معاملات را به پایان رساند. رشد 2.57% در QQQ در مقابل رشد 0.81% در DIA، نشان‌دهنده روزی با تمرکز بر بخش‌های رشد و تکنولوژی است؛ IWM در بخش شرکت‌های با ارزش بازار کم، 0.45% رشد داشت.

آیا این روز غیرمعمول بود؟

میزان تغییرات درصدی بدون داشتن یک معیار سنجش، اهمیت چندانی ندارد. این پنل، روز 29 ژوئن را بر اساس اندازه مطلق تغییر قیمت بسته‌ شدن نسبت به روز قبل، در مقایسه با ماه گذشته رتبه‌بندی می‌کند.

پرس‌وجوQQQ و SPY: رتبه‌بندی ۲۹ ژوئن نسبت به جلسات ماه گذشته (رتبه ۱ = بزرگترین تغییر مطلق)
کد دقیق SQL پشت هر عدد
SELECT
    round(anyIf(cc_pct, ticker = 'QQQ' AND d = toDate('2026-06-29')), 2) AS qqq_close_over_close_pct,
    arrayCount(x -> x > abs(anyIf(cc_pct, ticker = 'QQQ' AND d = toDate('2026-06-29'))), groupArrayIf(abs(cc_pct), ticker = 'QQQ' AND d != toDate('2026-06-29'))) + 1 AS qqq_abs_move_rank,
    countIf(ticker = 'QQQ') AS qqq_sessions_compared,
    round(max(if(ticker = 'QQQ', abs(cc_pct), 0)), 2) AS qqq_biggest_move_of_month_pct,
    countIf(ticker = 'QQQ' AND cc_pct > 0) AS qqq_up_sessions,
    round(anyIf(cc_pct, ticker = 'SPY' AND d = toDate('2026-06-29')), 2) AS spy_close_over_close_pct,
    arrayCount(x -> x > abs(anyIf(cc_pct, ticker = 'SPY' AND d = toDate('2026-06-29'))), groupArrayIf(abs(cc_pct), ticker = 'SPY' AND d != toDate('2026-06-29'))) + 1 AS spy_abs_move_rank,
    countIf(ticker = 'SPY') AS spy_sessions_compared,
    round(anyIf(oc_pct, ticker = 'SPY' AND d = toDate('2026-06-29')), 2) AS spy_open_to_close_pct,
    concat(monthName(min(d)), ' ', toString(toDayOfMonth(min(d))), ', ', toString(toYear(min(d)))) AS first_session
FROM (
    SELECT ticker, d,
           (close_px / lagInFrame(close_px) OVER (PARTITION BY ticker ORDER BY d) - 1) * 100 AS cc_pct,
           oc_pct
    FROM (
        SELECT ticker,
               toDate(toTimeZone(window_start, 'America/New_York')) AS d,
               argMax(toFloat64(close), window_start) AS close_px,
               (argMax(toFloat64(close), window_start) / argMin(toFloat64(open), window_start) - 1) * 100 AS oc_pct
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker IN ('SPY', 'QQQ')
          AND window_start >= toDateTime('2026-05-28 00:00:00')
          AND window_start < toDateTime('2026-06-30 00:00:00')
          AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
        GROUP BY ticker, d
    )
)
WHERE isFinite(cc_pct)

تغییرات بزرگ، اما نه بی‌سابقه: حرکت 2.57% در QQQ در ردیف 5 از جلسات 21 از زمان May 29, 2026 قرار دارد؛ در ماهی که بزرگترین حرکت تک‌روزه آن 4.76% بود. رتبه 1.62% در SPY برابر با 4 از 21 است. منشأ این حرکت اهمیت دارد: روند صعودی SPY از بازگشایی تا بسته‌ شدن تنها 0.59% بود، بنابراین بیشتر سود از طریق شکاف قیمتی (gap) شبانه و پیش از ثبت اولین کندل در ساعات معاملاتی عادی حاصل شد. QQQ در 10 از آن جلسات با قیمت بالاتر بسته شد: ماهی که احتمال صعود و نزول در آن تقریباً برابر بود.

وسعت بازار: روند صعودی تا چه اندازه گسترده بود؟

یک نماد صعودی، نمادی است که قیمت بسته‌شدن آن در روز دوشنبه نسبت به جمعه بیشتر بوده و حداقل 1 میلیون دلار معامله شده باشد؛ این فیلتر باعث حذف 5,108 از 11,475 نمادهای دارای نوسان در هر دو جلسه معاملاتی می‌شود.

پرس‌وجوتعداد سهام‌های صعودی در مقابل نزولی در میان نمادهای با حجم معاملات حداقل $1M در ۲۹ ژوئن
کد دقیق SQL پشت هر عدد
WITH per_ticker AS (
    SELECT
        ticker,
        toFloat64(argMaxIf(close, window_start, window_start < '2026-06-27 00:00:00')) AS friday_close,
        toFloat64(argMaxIf(close, window_start, window_start >= '2026-06-29 00:00:00')) AS monday_close,
        sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-06-29 00:00:00') AS monday_dollar_volume
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE (window_start >= '2026-06-26 13:30:00' AND window_start < '2026-06-26 20:00:00')
       OR (window_start >= '2026-06-29 13:30:00' AND window_start < '2026-06-29 20:00:00')
    GROUP BY ticker
)
SELECT
    countIf(monday_close > friday_close AND monday_dollar_volume >= 1000000) AS advancers,
    countIf(monday_close < friday_close AND monday_dollar_volume >= 1000000) AS decliners,
    countIf(monday_close = friday_close AND monday_dollar_volume >= 1000000) AS unchanged,
    countIf(monday_dollar_volume >= 1000000) AS liquid_tickers,
    count() AS tickers_traded_both_sessions,
    reverse(arrayStringConcat(extractAll(reverse(toString(count())), '[0-9]{1,3}'), ',')) AS tickers_traded_both_sessions_label,
    count() - countIf(monday_dollar_volume >= 1000000) AS dropped_by_liquidity_filter,
    reverse(arrayStringConcat(extractAll(reverse(toString(count() - countIf(monday_dollar_volume >= 1000000))), '[0-9]{1,3}'), ',')) AS dropped_by_liquidity_filter_label,
    round(100.0 * countIf(monday_close > friday_close AND monday_dollar_volume >= 1000000)
        / countIf(monday_dollar_volume >= 1000000), 1) AS advancer_pct
FROM per_ticker
WHERE friday_close > 0 AND monday_close > 0

3968 نماد صعودی، 2327 نماد نزولی، 72 نماد بدون تغییر: 62.3% از نمادهای پرحجم افزایش یافتند — با شمارش تک‌تک نمادها، شاهد یک روز با وسعت بازار بالا بودیم.

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

شمارش برابر تعداد شرکت‌ها یک دیدگاه است؛ وزن‌دهی بر اساس اندازه شرکت، دیدگاهی دیگر است. یازده ETF بخش‌بندی شده SPDR، نمایش کوتاهی از روش دوم هستند؛ هر کدام یک سبد وزن‌دهی شده بر اساس ارزش بازار برای هر بخش از S&P 500 هستند. این شاخص‌ها با شمارش تعداد شرکت‌ها، تفاوت فاحشی دارند.

پرس‌وجویازده سبد بخشی: ۲۹ ژوئن در مقایسه با بسته‌ شدن ۲۶ ژوئن، ساعات رسمی
کد دقیق SQL پشت هر عدد
WITH per_etf AS (
    SELECT
        ticker,
        toFloat64(argMaxIf(close, window_start, window_start < '2026-06-27 00:00:00')) AS friday_close,
        toFloat64(argMaxIf(close, window_start, window_start >= '2026-06-29 00:00:00')) AS monday_close,
        maxIf(toFloat64(high), window_start >= '2026-06-29 00:00:00') AS day_high,
        minIf(toFloat64(low), window_start >= '2026-06-29 00:00:00') AS day_low,
        round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-06-29 00:00:00') / 1e6, 0) AS dollar_volume_m
    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-06-26 13:30:00' AND window_start < '2026-06-26 20:00:00')
        OR (window_start >= '2026-06-29 13:30:00' AND window_start < '2026-06-29 20:00:00'))
    GROUP BY ticker
)
SELECT
    sector,
    ticker,
    round((monday_close / friday_close - 1) * 100, 2) AS pct_change,
    round((day_high / day_low - 1) * 100, 2) AS range_pct,
    dollar_volume_m,
    round((monday_close / friday_close - 1) * 100 - min((monday_close / friday_close - 1) * 100) OVER (), 2) AS pct_above_worst_sector
FROM (
    SELECT *,
        multiIf(ticker = 'XLB', 'Materials',
                ticker = 'XLC', 'Communication services',
                ticker = 'XLE', 'Energy',
                ticker = 'XLF', 'Financials',
                ticker = 'XLI', 'Industrials',
                ticker = 'XLK', 'Technology',
                ticker = 'XLP', 'Consumer staples',
                ticker = 'XLRE', 'Real estate',
                ticker = 'XLU', 'Utilities',
                ticker = 'XLV', 'Health care',
                'Consumer discretionary') AS sector
    FROM per_etf
)
ORDER BY pct_change DESC

بخش فناوری با 2.52% پیشتاز بود و کالاهای مصرفی اختیاری با 2.37% در رده بعدی قرار گرفت؛ بخش مواد اولیه با -1.82% و بخش املاک و مستغلات با -0.64% بسته شدند. بیشترین تفاوت میان بهترین و بدترین بخش — یعنی پراکندگی روزانه بخش‌ها — 4.34 واحد درصد بود؛ در حالی که شاخص اصلی صعودی بود، بخش‌های خدمات عمومی، کالاهای اساسی، انرژی، املاک و مستغلات و مواد اولیه همگی در وضعیت قرمز بودند. رشد یک صندوق شاخصی می‌تواند پراکندگی گسترده در تعداد شرکت‌ها را پنهان کند، در حالی که از نظر وزن، بازار محدود بوده است.

نقطه عطف روز: حافظه و ذخیره‌سازی

چهار نام تجاری با موضوعی مشابه اما با نتایج بسیار متفاوت معامله شدند؛ داده‌ها تنها نشان‌دهنده هم‌حرکتی و میزان تغییرات هستند و علت آن را بیان نمی‌کنند.

پرس‌وجوسهام بخش حافظه/ذخیره‌سازی: تغییر نسبت به بسته‌ شدن جمعه و محدوده درون‌روزی
کد دقیق SQL پشت هر عدد
WITH per_name AS (
    SELECT
        ticker,
        toFloat64(argMaxIf(close, window_start, window_start < '2026-06-27 00:00:00')) AS friday_close,
        toFloat64(argMaxIf(close, window_start, window_start >= '2026-06-29 00:00:00')) AS monday_close,
        maxIf(toFloat64(high), window_start >= '2026-06-29 00:00:00') AS day_high,
        minIf(toFloat64(low), window_start >= '2026-06-29 00:00:00') AS day_low,
        argMinIf(window_start, toFloat64(low), window_start >= '2026-06-29 00:00:00') AS low_bar,
        argMaxIf(window_start, toFloat64(high), window_start >= '2026-06-29 00:00:00') AS high_bar
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('MU', 'SNDK', 'STX', 'WDC')
      AND ((window_start >= '2026-06-26 13:30:00' AND window_start < '2026-06-26 20:00:00')
        OR (window_start >= '2026-06-29 13:30:00' AND window_start < '2026-06-29 20:00:00'))
    GROUP BY ticker
)
SELECT
    ticker,
    round(friday_close, 2) AS jun26_close,
    round(monday_close, 2) AS jun29_close,
    round((monday_close / friday_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
FROM per_name
ORDER BY ticker

شرکت MU نمونه‌ای کلاسیک از تفاوت محدوده نوسان با تغییر خالص قیمت است: یک محدوده نوسان درون‌روزی به میزان 12.22% — با کمترین قیمت $1023.65 در ساعت 10:18 ET و بیشترین قیمت $1148.79 در ساعت 15:59 — اما قیمت پایانی 1.97% بالاتر از روز جمعه بود. سهام Western Digital به میزان 11.15% و Seagate به میزان 8.17% افزایش یافت؛ SanDisk در یک محدوده نوسان 10.33% با قیمت پایانی -1.9% بسته شد که تنها کاهش قیمت در این گروه بود. قیمت پایانی، نوسانات شدیدی را که دارندگان سهام تجربه کرده‌اند، پنهان می‌کند.

محل جریان معاملات

از نظر ارزش دلاری معاملات، Micron (MU) از همه، از جمله صندوق‌های شاخصی، پیشی گرفت: 58.47 میلیارد دلار در برابر 33.97 میلیارد دلار SPY. از نظر تعداد سهام، وضعیت متفاوت بود.

پرس‌وجوپیشتازان حجم معاملات به دو روش: ۶ مورد برتر بر اساس دلار، ۴ مورد برتر بر اساس تعداد سهام
کد دقیق 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-06-29 13:30:00' AND window_start < '2026-06-29 20:00:00'
    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-06-29 13:30:00' AND window_start < '2026-06-29 20:00:00'
    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

تابلوهای تعداد سهام ممکن است گمراه‌کننده باشند: پیشتازان از نظر تعداد سهام، SOXS (یک ETF معکوس با اهرم 3 برابری در حوزه نیمه‌هادی با 695.3 میلیون سهم) و INLF (یک penny stock که 353.8 میلیون سهم آن در طول روز حدود 23 میلیون دلار ارزش داشت) بودند. حجم دلاری نشان می‌دهد پول به کجا حرکت کرده است؛ حجم نسبی نشان می‌دهد که آیا فعالیت یک نماد نسبت به وضعیت معمول خود غیرعادی است یا خیر.

در بازه‌های 30 دقیقه‌ای بازار نیویورک، تاریخ 29 ژوئن الگوی کلاسیک «لبخند» حجم معاملات را دنبال می‌کند:

پرس‌وجوتعداد سهام معامله شده در بازه‌های ۳۰ دقیقه‌ای، ساعات رسمی (میلیارد)
کد دقیق 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,
    round(100 * (sum(toFloat64(volume)) / min(sum(toFloat64(volume))) OVER () - 1), 1) AS pct_above_trough
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= '2026-06-29 13:30:00' AND window_start < '2026-06-29 20:00:00'
GROUP BY et_time
ORDER BY et_time

2.3 میلیارد سهم در نیم‌ساعت اول، یک نقطه حضیض به میزان 0.77 میلیارد در ساعت 13:30، و بزرگترین بازه — 2.39 میلیارد — در نیم‌ساعت پایانی، جایی که مزایده‌های پایانی و جریان‌های دنبال‌کننده شاخص متمرکز می‌شوند.

نوار معاملات اختیار معامله

تعداد قراردادهای معامله شده در بخش اختیار معامله 66.33 میلیون قرارداد در قالب 11.04 میلیون ثبت معامله بود.

پرس‌وجویک ردیف برای کل روز معاملات اختیار معامله: حجم، 0DTE، هفته جابه‌جا شده به دلیل تعطیلات
کد دقیق 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-06-29 00:00:00' AND sip_timestamp < '2026-06-30 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-06-29 13:30:00' AND window_start < '2026-06-29 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) = '260629') / 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,
    countIf(sip_timestamp < '2026-06-29 13:30:00') AS premarket_prints,
    reverse(arrayStringConcat(extractAll(reverse(toString(countIf(sip_timestamp < '2026-06-29 13:30:00'))), '[0-9]{1,3}'), ',')) AS premarket_prints_label,
    countIf(sip_timestamp < '2026-06-29 13:30:00'
        AND underlying_symbol NOT IN ('SPX', 'SPXW', 'XSP', 'RUTW', 'VIX', 'VIXW')) AS premarket_non_index_prints,
    arrayStringConcat(arraySort(groupUniqArrayIf(underlying_symbol, sip_timestamp < '2026-06-29 13:30:00')), ', ') AS premarket_underlyings,
    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_label,
    round(top_contract.7, 3) AS top_contract_avg_price,
    round(top_contract.2 - spy_regular_close, 2) AS top_strike_minus_spy_close
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-06-29 00:00:00' AND sip_timestamp < '2026-06-30 00:00:00'

قراردادهای Call بخش 55.7% از حجم قراردادها را به خود اختصاص دادند و 35.8% از کل معاملات در همان دوشنبه منقضی شدند — سهام مربوط به قراردادهای با انقضای روزانه (0DTE). پرکارترین قرارداد تک‌محصولی در هر بازاری، قرارداد Call مربوط به SPY با قیمت اعمال $741 بود: 788,133 قرارداد با میانگات پرمیوم $0.474؛ در حالی که قیمت پایانی SPY 0.12 دلار کمتر از قیمت اعمال بود — پرمعامله‌ترین اختیار معامله روز، در وضعیت Out of the money بسته شد. حجم معاملات SPY به عنوان دارایی پایه 12.01 میلیون قرارداد و QQQ برابر با 7.32 میلیون قرارداد بود.

این پنل همچنین 40,621 ثبت معامله اختیار معامله را پیش از بازگشایی بازار سهام در ساعت 9:30 محاسبه می‌کند — تمام این موارد مربوط به شاخص‌های با تسویه نقدی (RUTW, SPX, SPXW, VIX, VIXW, XSP) هستند، در حالی که 0 معامله مربوط به اختیار معامله سهام یا ETF در همان بازه زمانی ثبت شده است. این یک قاعده است و نه تصادف: لیست اختیار معامله شاخص‌ها شامل جلسات معاملاتی ساعات جهانی است، اما اختیار معامله سهام و ETF همزمان با بازار سهام باز می‌شود. سهام‌ها زودتر معامله می‌شوند — معاملات پیش‌بازگشایی و پس‌بازگشایی را ببینید — اما اختیار معامله آن‌ها این‌گونه نیست.

هیچ قراردادی با کد انقضای جمعه، 3 جولای در طول روز ثبت نشد (0 ثبت معامله) — بازار در آن جمعه بسته است — در حالی که قراردادهای با انقضای پنجشنبه، 2 جولای، 10.73 میلیون قرارداد معامله شدند.

نوار قیمت: هزینه معاملات در طول روز

هر قیمتی در این صفحه بر پایه یک جریان قیمت‌گذاری استوار است؛ یعنی بهترین قیمت خرید و فروش ملی (NBBO) که به‌طور مداوم برای هر نماد فهرست‌شده بازنشر می‌شود. فاصله بین بهترین قیمت خرید و بهترین قیمت فروش، یعنی bid-ask spread، هزینه‌ای است که یک سفارش برای انجام معامله پرداخت می‌کند.

پرس‌وجوهزینه عبور از اسپرد: به‌روزرسانی‌های NBBO و میانگین عرض قیمت، ساعات رسمی
کد دقیق SQL پشت هر عدد
SELECT
    ticker,
    round(count() / 1e6, 2) AS nbbo_updates_m,
    round(quantileExactIf(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000, bid_price > 0 AND ask_price >= bid_price), 2) AS median_spread_bps,
    round(quantileExactIf(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000, bid_price > 0 AND ask_price >= bid_price AND sip_timestamp >= '2026-06-29 13:30:00' AND sip_timestamp < '2026-06-29 14:00:00'), 2) AS open_30min_spread_bps,
    round(quantileExactIf(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000, bid_price > 0 AND ask_price >= bid_price AND sip_timestamp >= '2026-06-29 17:00:00' AND sip_timestamp < '2026-06-29 17:30:00'), 2) AS midday_spread_bps,
    round(quantileExactIf(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000, bid_price > 0 AND ask_price >= bid_price AND sip_timestamp >= '2026-06-29 13:30:00' AND sip_timestamp < '2026-06-29 14:00:00')
        - quantileExactIf(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000, bid_price > 0 AND ask_price >= bid_price AND sip_timestamp >= '2026-06-29 17:00:00' AND sip_timestamp < '2026-06-29 17:30:00'), 2) AS open_minus_midday_bps,
    countIf(NOT (bid_price > 0 AND ask_price >= bid_price)) AS dropped_invalid_quotes
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'QQQ', 'MU', 'WDC')
  AND sip_timestamp >= '2026-06-29 13:30:00' AND sip_timestamp < '2026-06-29 20:00:00'
GROUP BY ticker
ORDER BY ticker

میانه عرض قیمت (width) در SPY معادل 0.41 واحد پایه (basis points) از قیمت میانی بود؛ در مقابل 0.84 برای QQQ، 4.6 برای Micron و 8.2 برای Western Digital که بیشترین میزان را در میان این چهار مورد داشت. هر واحد پایه در یک سفارش 10,000 دلاری معادل یک دلار است؛ بنابراین خرید و فروش فوری 10,000 دلار از SPY با قیمت استعلام شده، حدود $0.41 هزینه دارد؛ همین چرخه معاملاتی در Western Digital معادل $8.2 هزینه خواهد بود. حجم معاملات تغییر نکرد، بلکه نماد تغییر کرد.

عرض قیمت برای هر چهار مورد در نیم ساعت اول بازار، بیشتر از بازه کنترل زمان میانی بود؛ SPY با 0.41 واحد پایه در برابر 0.27، Western Digital با 14.33 در برابر 7.55، که نشان‌دهنده اختلاف 6.78 واحدی در قیمت بازگشایی برای پرعرض‌ترین نماد است. بخش دیگر مربوط به حجم معاملات است: 3.98 میلیون به‌روزرسانی NBBO برای SPY در ساعات عادی و 4.42 میلیون برای QQQ.

نرخ‌ها: منحنی بازدهی تغییر محسوسی نداشت

بازار اوراق قرضه دولتی (Treasuries) روز دوشنبه آرام بود. بازدهی‌ها بر اساس قیمت‌های بسته‌شده در پایان روز و نسبت به 26 ژوئن تغییر کرده‌اند.

پرس‌وجومنحنی Treasury، بسته‌ شدن ۲۹ ژوئن در مقایسه با ۲۶ ژوئن (فقط سررسیدهای موجود)
کد دقیق SQL پشت هر عدد
SELECT
    t.1 AS curve_point,
    round(t.2, 2) AS jun29_yield_pct,
    round((t.2 - t.3) * 100) AS one_day_change_bp
FROM (
    SELECT arrayJoin([
        ('1 month',  toFloat64(mon.yield_1_month),  toFloat64(fri.yield_1_month)),
        ('3 month',  toFloat64(mon.yield_3_month),  toFloat64(fri.yield_3_month)),
        ('1 year',   toFloat64(mon.yield_1_year),   toFloat64(fri.yield_1_year)),
        ('2 year',   toFloat64(mon.yield_2_year),   toFloat64(fri.yield_2_year)),
        ('5 year',   toFloat64(mon.yield_5_year),   toFloat64(fri.yield_5_year)),
        ('10 year',  toFloat64(mon.yield_10_year),  toFloat64(fri.yield_10_year)),
        ('30 year',  toFloat64(mon.yield_30_year),  toFloat64(fri.yield_30_year)),
        ('2s10s spread', toFloat64(mon.yield_10_year - mon.yield_2_year), toFloat64(fri.yield_10_year - fri.yield_2_year))
    ]) AS t
    FROM (SELECT * FROM global_markets.treasury_yields WHERE date = '2026-06-29') AS mon,
         (SELECT * FROM global_markets.treasury_yields WHERE date = '2026-06-26') AS fri
)

اوراق 10 ساله با نرخ 4.38% بسته شد که نسبت به روز قبل بدون تغییر بود (0 bp). در همین حال، اوراق 3 ماهه با اضافه شدن 4 bp به نرخ 3.87% بسته شد. اختلاف بازدهی 2 ساله و 10 ساله — یعنی تفاضل اوراق 10 ساله از 2 ساله — در سطح 0.28 واحد درصد (-3 bp) بسته شد: این رقم همچنان مثبت است، اما کمی تخت‌تر شده است.

تقویم روز جاری

پرس‌وجوتقویم شرکتی و جریان اطلاعات ۲۹ ژوئن، در یک ردیف
کد دقیق SQL پشت هر عدد
WITH
    (
        SELECT (argMax(d, n), max(n))
        FROM (
            SELECT ex_dividend_date AS d, count() AS n
            FROM global_markets.stocks_dividends
            WHERE ex_dividend_date BETWEEN '2026-06-22' AND '2026-07-02'
            GROUP BY d
        )
    ) AS peak_ex_div,
    (
        SELECT (countIf(form_type = '424B2'), countIf(form_type = '4'), countIf(form_type = '8-K'), count())
        FROM global_markets.stocks_sec_edgar_index
        WHERE filing_date = '2026-06-29'
    ) AS filings,
    (
        SELECT (count(), uniqExact(publisher), countIf(has(tickers, 'NVDA')))
        FROM global_markets.stocks_news
        WHERE toDate(toTimeZone(published_utc, 'America/New_York')) = '2026-06-29'
    ) AS news,
    (
        SELECT 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-06-29'
            )
            WHERE t NOT IN ('NVDA', 'SPCX')
            GROUP BY t
        )
    ) AS runner_up_articles,
    (
        SELECT (any(split_from), any(split_to), count())
        FROM global_markets.stocks_splits
        WHERE ticker = 'HON' AND execution_date = '2026-06-29'
    ) AS hon_split,
    (
        SELECT (
            round(toFloat64(argMaxIf(close, window_start, window_start < '2026-06-27 00:00:00')), 2),
            round(toFloat64(argMaxIf(close, window_start, window_start >= '2026-06-29 00:00:00')), 2)
        )
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'HON'
          AND ((window_start >= '2026-06-26 13:30:00' AND window_start < '2026-06-26 20:00:00')
            OR (window_start >= '2026-06-29 13:30:00' AND window_start < '2026-06-29 20:00:00'))
    ) AS hon_close
SELECT
    (SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date = '2026-06-29') AS ex_dividend_records_jun29,
    (SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date = '2026-06-29'
        AND ticker IN ('AAPL', 'MSFT', 'NVDA', 'AMZN', 'GOOGL', 'GOOG', 'META', 'TSLA', 'JPM', 'JNJ',
                       'XOM', 'KO', 'PG', 'V', 'MA', 'HD', 'WMT', 'CVX', 'MRK', 'PEP',
                       'SPY', 'QQQ', 'DIA', 'IWM', 'VTI')) AS household_name_ex_dividends,
    length(['AAPL', 'MSFT', 'NVDA', 'AMZN', 'GOOGL', 'GOOG', 'META', 'TSLA', 'JPM', 'JNJ',
            'XOM', 'KO', 'PG', 'V', 'MA', 'HD', 'WMT', 'CVX', 'MRK', 'PEP',
            'SPY', 'QQQ', 'DIA', 'IWM', 'VTI']) AS household_names_checked,
    concat(monthName(peak_ex_div.1), ' ', toString(toDayOfMonth(peak_ex_div.1))) AS busiest_ex_div_day_of_window,
    peak_ex_div.2 AS busiest_ex_div_day_records,
    (SELECT count() FROM global_markets.stocks_splits WHERE execution_date = '2026-06-29') AS splits_executed,
    (SELECT count() FROM global_markets.stocks_ipos WHERE listing_date = '2026-06-29') AS ipos_listed_jun29,
    (SELECT arrayStringConcat(groupArray(ticker), ', ') FROM (
        SELECT ticker FROM global_markets.stocks_ipos WHERE listing_date = '2026-07-01' ORDER BY ticker
    )) AS jul1_ipo_debuts,
    filings.4 AS sec_filings,
    filings.1 AS prospectus_424b2_filings,
    filings.2 AS insider_form4_filings,
    filings.3 AS filings_8k,
    news.1 AS news_articles,
    news.2 AS news_publishers,
    news.3 AS nvda_articles,
    runner_up_articles AS next_most_covered_articles,
    news.3 - runner_up_articles AS nvda_minus_next_most_covered,
    hon_split.3 AS hon_split_records,
    hon_split.1 AS hon_split_from,
    hon_split.2 AS hon_split_to,
    hon_close.1 AS hon_close_jun26,
    hon_close.2 AS hon_close_jun29

رکورد‌های سود سهام 449 در تاریخ 29 ژوئن به وضعیت ex-dividend رسیدند؛ برای دریافت سود، باید پیش از تاریخ ex-dividend مالک سهام باشید. با این حال، از میان 25 نام شناخته‌شده‌ای که بررسی کردیم، تنها 0 مورد مشاهده شد. موج پایان فصل در تاریخ July 1 با 745 رکورد به اوج خود رسید. 23 تقسیم سهام انجام شد و 0 IPO در بازار لیست شدند؛ همچنین debuts روز چهارشنبه (BSP, ITG, LIME) از پیش در تقویم ثبت شده‌اند.

کمیسیون بورس و اوراق بهادار (SEC) تعداد 6173 گزارش با تاریخ 29 ژوئن را ثبت کرد: 1473 مکمل قیمت‌گذاری محصول ساختاریافته (فرم 424B2) و 1277 گزارش‌های معاملات افراد داخل شرکت (فرم 4) بسیار بیشتر از 231 گزارش 8-K هستند که در تیتر اخبار ظاهر می‌شوند. فید خبری ما شامل 170 مقاله از 3 ناشر بود؛ با حذف یک نماد تکراری با برچسب مبهم (که از پرس‌وجو حذف شد)، پربحث‌ترین نام NVDA با 14 مقاله بود، در حالی که رتبه دوم با 12 مقاله قرار داشت.

Data notes

Weird data gets a note, never silent exclusion — these four touch headline numbers.

  • The sector baskets are a declared method. "Sector" means the eleven SPDR sector ETFs, market-value-weighted — the same names every session, not a vendor's per-ticker classification.
  • Dollar volume is a per-minute proxy — close × volume summed per minute bar, near but not identical to the sum of print values.
  • Quoted spreads exclude invalid quotes (one-sided or crossed NBBO records); the panel counts what it dropped (1544 on SPY). A median quoted width is a quoting statistic, not a per-trade cost — orders often execute inside the quote.
  • A lone print can contaminate a minute bar's high or low. QQQ's 11:07 ET bar carries a $709.58 low while no surrounding bar dipped below $715.09 — one print $5.51 under the concurrent market. Every high and low above was cross-checked against adjacent bars; QQQ's $705.172 session low passed.
Full data notes
  • Treasury coverage is thinner than the schema. Four advertised maturities (6-month, 3-, 7- and 20-year) have never been populated; the curve shows the seven that exist, plus the 2s10s row.
  • A Honeywell "reverse split" the tape contradicts. The feed carries 1 HON record dated June 29: a reverse split converting 2 old shares into 1 new. HON closed $231.3 Friday and $227.71 Monday — no doubling. We did not apply it.
  • The news count is one vendor's feed, the 3 publishers we carry — not "all market news".
  • The tick-level receipts — crossed quotes, the phantom-volume correction, the truncated FINRA short-volume file (and why short volume is not short interest) — sit in the deep dive.

جلسه معاملاتی، تایید شده

پرس‌وجوبررسی جلسه: بازه زمانی دقیقه‌ای مشاهده شده برای SPY، و بسته‌ شدن جمعه در تِپ
کد دقیق SQL پشت هر عدد
WITH
    (
        SELECT (
            round(toFloat64(minIf(low, formatDateTime(toTimeZone(window_start, 'America/New_York'), '%H:%i') = '11:07')), 2),
            round(toFloat64(minIf(low, formatDateTime(toTimeZone(window_start, 'America/New_York'), '%H:%i') IN ('11:04', '11:05', '11:06', '11:08', '11:09', '11:10'))), 2)
        )
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'QQQ' AND window_start >= '2026-06-29 13:30:00' AND window_start < '2026-06-29 20:00:00'
    ) AS qqq_lone
SELECT
    (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,
    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-06-29 13:30:00' AND window_start < '2026-06-29 20:00:00') AS regular_session_bars,
    qqq_lone.1 AS qqq_1107_lone_low,
    qqq_lone.2 AS qqq_1107_adjacent_bars_low,
    round(qqq_lone.2 - qqq_lone.1, 2) AS qqq_lone_print_below_adjacent
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2026-06-29 00:00:00' AND window_start < '2026-06-30 00:00:00'

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

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

عملکرد بازار سهام در 29 ژوئن 2026 چگونه بود؟

بازار با رشد مثبت بسته شد: QQQ با 2.57% افزایش نسبت به جمعه، SPY با 1.62%، DIA با 0.81% و IWM با 0.45% افزایش داشت؛ همچنین 62.3% از نمادهای معاملاتی با حجم بیش از 1 میلیون دلار، در سطح بالاتری بسته شدند.

آیا 29 ژوئن 2026 روز مهمی برای Nasdaq بود؟

روز پرتحرکی بود اما نه استثنایی: تغییرات بسته شدن نسبت به بسته شدن قبلی در QQQ با 2.57%، در رتبه 5 از نظر اندازه مطلق در میان 21 جلسه معاملاتی ماه گذشته قرار گرفت؛ این در حالی است که بالاترین میزان تغییر ماهانه 4.76% بود.

کدام بخش‌ها در 29 ژوئن 2026 پیشتاز بودند؟

بخش فناوری (2.52%) و کالاهای مصرفی اختیاری (2.37%) در میان یازده سبد بخشی SPDR پیشتاز بودند؛ بخش مواد اولیه با -1.82% در آخرین جایگاه قرار گرفت که نشان‌دهنده اختلاف 4.34 واحد درصدی است. بخش‌های برق و گاز، کالاهای اساسی، انرژی و املاک و مستغلات نیز کاهش داشتند.

سهم قراردادهای 0DTE از حجم معاملات اختیار معامله در 29 ژوئن 2026 چقدر بود؟

قراردادهای با انقضای همان روز، 35.8% از مجموع 66.33 میلیون قرارداد معامله شده بودند؛ پرتحرک‌ترین قرارداد واحد، یک قرارداد Call برای SPY با قیمت پایه $741 (با حجم 788,133 قرارداد) بود که در وضعیت Out of the money بسته شد.

چرا معاملات اختیار معامله پیش از بازگشایی بازار سهام انجام می‌شود؟

فقط اختیار معامله شاخص‌ها (Index options) این ویژگی را دارند. تمام 40,621 ثبت معامله اختیار معامله پیش از ساعت 9:30 صبح به وقت ET در 29 ژوئن، مربوط به شاخص‌های با تسویه نقدی (RUTW, SPX, SPXW, VIX, VIXW, XSP) بودند که شامل جلسات معاملاتی با ساعات گسترده جهانی می‌شوند؛ تعداد معاملات اختیار معامله سهام و ETF در آن بازه زمانی 0 مورد ثبت قرار گرفت.

روش‌شناسی

  • زمان‌بندی‌ها در قالب UTC ذخیره شده و در داخل پرس‌وجوها به زمان نیویورک تبدیل می‌شوند. عبارت "Close" به معنای آخرین میله زمانی در جلسه معاملاتی عادی است، نه قیمت حراج؛ تغییرات روزانه با مقایسه 29 ژوئن و 26 ژوئن محاسبه شده و محدوده زمانی جلسه بر اساس بازه میله‌های مشاهده‌شده تأیید شده است.
  • رتبه‌بندی ماه گذشته بر اساس تغییرات قیمت بسته‌شدن در ساعات عادی محاسبه می‌شود؛ اولین جلسه معاملاتی حذف شده است (به دلیل عدم وجود قیمت بسته‌شدن قبلی در بازه زمانی). تاریخ انقضای اختیار معامله از تیکر OCC بازخوانی شده است (ستون انقضا در خود جدول دچار خطا است).
  • هر پنل در زمان نگارش، تنها یک‌بار و از طریق مسیر دسترسی محدودِ فقط-خواندنی، خوانده می‌شود. وضعیت انبار داده‌ها مربوط به 13 ژوئیه 2026 است.

هر پنل نتیجه یک پرس‌وجوی ذخیره‌شده است که شامل نمودار، جدول و SQL در یک شیء واحد می‌باشد. می‌توانید هر یک از آن‌ها را در ترمینال Strasmore کپی کنید. جلسه بعدی: 30 ژوئن.