Strasmore Research
Market Recap

Rekap Pasar Minggu 29 Juni 2026

Matt ConnorBy Matt Connor Updated 2026-07-25

Minggu terakhir Juni adalah minggu dengan empat sesi perdagangan: pasar diperdagangkan dari Senin 29 Juni hingga Kamis 2 Juli, kemudian tutup pada Jumat 3 Juli untuk Hari Kemerdekaan — 4 Juli jatuh pada hari Sabtu, sehingga hari libur diperingati pada hari Jumat sebelumnya. Bukti untuk penutupan tersebut, dan untuk semua data lainnya di sini, tersedia di dalam panel. Fakta terukur yang paling menonjol minggu ini terdapat dalam tabel volume: satu produsen chip memori mencatatkan transaksi sebesar $190.2 miliar dalam empat hari — satu setengah kali lebih besar dari SPY itu sendiri. Setiap angka di halaman ini adalah hasil kueri tersimpan; perluas panel apa pun untuk melihat SQL tepatnya.

Rekap mingguan

Apakah pasar memulihkan penurunan minggu sebelumnya, atau justru memperdalamnya? Data menunjukkan pemulihan: panel ini menghitung perubahan mingguan setiap ETF indeks, dan sebagai perbandingan, perubahan minggu sebelumnya — keduanya berasal dari kueri yang sama.

QueryWeek-over-week: empat index ETF terhadap close Jumat sebelumnya
SQL tepat di balik setiap angka
SELECT ticker,
    round(argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-26') AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199), 2) AS prior_friday_close,
    round(argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-06-29') AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199), 2) AS week_close,
    round((argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-06-29') AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199)
         / argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-26') AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) - 1) * 100, 1) AS week_change_pct,
    round((argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-26') AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199)
         / argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-18') AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) - 1) * 100, 1) AS prior_week_change_pct
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'QQQ', 'DIA', 'IWM')
  AND window_start >= toDateTime('2026-06-15 00:00:00') AND window_start < toDateTime('2026-07-03 00:00:00')
GROUP BY ticker
ORDER BY ticker

SPY mengakhiri pekan di level $744.8, naik 2.2% dari Jumat sebelumnya — setelah pekan sebelumnya yang -2.3%. QQQ naik 1% setelah pekan sebelumnya yang -4.6%, DIA naik 2%, dan IWM ditutup pada 297.530% dalam sepekan, stagnan sementara indeks large-cap naik.

Minggu ini dibandingkan satu tahun terakhir

QueryMinggu ini terhadap trailing year of weeks: SPY, open-to-close setiap minggu (rank 1 = terbaik; short weeks dikecualikan)
SQL tepat di balik setiap angka
SELECT round(anyIf(ret, wk = toDate('2026-06-29')), 2) AS week_2026_pct,
       arrayCount(x -> x > anyIf(ret, wk = toDate('2026-06-29')), groupArrayIf(ret, wk != toDate('2026-06-29'))) + 1 AS rank_best,
       count() AS weeks_compared,
       toString(min(wk)) AS first_week,
       anyIf(sessions, wk = toDate('2026-06-29')) AS sessions_this_week
FROM (
    SELECT toStartOfWeek(toDate(toTimeZone(window_start, 'America/New_York')), 1) AS wk,
           uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS sessions,
           (argMax(toFloat64(close), window_start) / argMin(toFloat64(open), window_start) - 1) * 100 AS ret
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND window_start >= toDateTime('2025-06-29 00:00:00')
      AND window_start < toDateTime('2026-07-03 00:00:00')
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY wk
    HAVING sessions >= 3
)

Diukur dari pembukaan hingga penutupan dalam satu minggu — bar jam reguler pertama hari Senin hingga bar terakhir hari Kamis, sudut pandang yang sedikit berbeda dari papan skor penutupan hari Jumat di atas, dan catatan tersebut menyatakannya — peringkat minggu SPY adalah 14 dari 53 minggu terakhir (peringkat satu = terbaik): berada di tengah-tengah, dalam satu tahun terakhir yang mencakup aksi jual maupun pemulihan. Minggu dengan kurang dari tiga sesi dikecualikan oleh penjaga sesi; minggu ini memiliki 4. Konteks historis menyesuaikan dengan jendela waktu — rekap bulan, kuartal, dan setengah tahun memeringkatkan periode mereka terhadap setiap tahun dari data menit.

Empat sesi, lalu hari libur

Minggu perdagangan lima hari adalah sebuah asumsi, bukan fakta — minggu ini hanya memiliki empat sesi. Panel penerimaan memeriksa penutupan dari tape itu sendiri: nol bar SPY tercetak pada tanggal tiga Juli dibandingkan dengan 1560 bar sesi reguler selama empat hari perdagangan.

QueryPenerimaan sesi: empat hari perdagangan, satu penutupan Jumat, terverifikasi dari tape
SQL tepat di balik setiap angka
SELECT
    (SELECT uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) FROM global_markets.delayed_stocks_minute_aggs
     WHERE ticker = 'SPY' AND window_start >= toDateTime('2026-06-29 00:00:00') AND window_start < toDateTime('2026-07-03 00:00:00')) AS sessions_in_week,
    (SELECT countIf((toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) FROM global_markets.delayed_stocks_minute_aggs
     WHERE ticker = 'SPY' AND window_start >= toDateTime('2026-06-29 00:00:00') AND window_start < toDateTime('2026-07-03 00:00:00')) AS regular_bars_week,
    (SELECT count() FROM global_markets.delayed_stocks_minute_aggs
     WHERE ticker = 'SPY' AND window_start >= toDateTime('2026-07-03 00:00:00') AND window_start < toDateTime('2026-07-04 00:00:00')) AS jul3_spy_bars
QuerySesi demi sesi: SPY close, change, dan full-day volume
SQL tepat di balik setiap angka
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS et_date,
    round(argMaxIf(toFloat64(close), window_start, (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199), 2) AS spy_close,
    round((argMaxIf(toFloat64(close), window_start, (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) / any(prev) - 1) * 100, 1) AS change_pct,
    round(toFloat64(sum(volume)) / 1e6, 1) AS shares_m
FROM global_markets.delayed_stocks_minute_aggs
INNER JOIN (
    SELECT d, lagInFrame(c) OVER (ORDER BY d ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev
    FROM (
        SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d, argMaxIf(toFloat64(close), window_start, (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) AS c
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'SPY' AND window_start >= toDateTime('2026-06-26 00:00:00') AND window_start < toDateTime('2026-07-03 00:00:00')
        GROUP BY d
    )
) AS p ON toDate(toTimeZone(window_start, 'America/New_York')) = p.d
WHERE ticker = 'SPY' AND window_start >= toDateTime('2026-06-29 00:00:00') AND window_start < toDateTime('2026-07-03 00:00:00')
GROUP BY et_date
ORDER BY et_date

Keempat sesi berjalan sesuai jadwal reguler penuh — 1560 bar reguler setara dengan tepat empat sesi tiga ratus sembilan puluh menit. Minggu ini ditutup hampir datar (-0.1%) pada 2026-07-02, menjelang hari libur — keuntungan minggu ini diperoleh pada tiga sesi pertamanya.

Breadth: seberapa banyak pasar yang naik

Satu indeks yang naik dapat menyembunyikan pasar yang sedang turun. Panel ini menghitung setiap ticker dengan harga penutupan di kedua sisi minggu tersebut, dengan kumpulan yang dikecualikan diungkapkan dan tidak dihapus secara diam-diam.

QueryAdvancers dan decliners pada minggu ini, dengan liquidity filter yang diungkapkan
SQL tepat di balik setiap angka
SELECT
    countIf(chg > 0 AND NOT dropped) AS advancers,
    countIf(chg < 0 AND NOT dropped) AS decliners,
    countIf(chg = 0 AND NOT dropped) AS unchanged,
    countIf(dropped) AS dropped_by_liquidity_filter,
    count() AS tickers_with_both_closes
FROM (
    SELECT ticker,
        argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-06-29') AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199)
      - argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-26') AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) AS chg,
        sumIf(toFloat64(close) * toFloat64(volume), toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-06-29')) < 1e6 AS dropped
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE window_start >= toDateTime('2026-06-26 00:00:00') AND window_start < toDateTime('2026-07-03 00:00:00')
    GROUP BY ticker
    HAVING countIf(toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-26') AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) > 0
       AND countIf(toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-06-29') AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) > 0
)

5047 ticker naik pada minggu ini dibandingkan dengan 3525 yang turun (39 tidak berubah) — kenaikan ini bersifat luas, tidak hanya pada level indeks. Filter likuiditas menyisihkan 3163 ticker yang diperdagangkan di bawah $1M sepanjang minggu; ticker tersebut dihitung di sini, bukan disembunyikan.

Pemimpin perdagangan: satu saham melampaui ETF

QueryDollar volume jam reguler, minggu 29 Juni (satu listing reused-symbol dikecualikan menunggu verifikasi entitas)
SQL tepat di balik setiap angka
SELECT ticker,
    round(sum(toFloat64(close) * toFloat64(volume)) / 1e9, 1) AS dollar_bn,
    round(100 * sum(toFloat64(close) * toFloat64(volume)) / max(sum(toFloat64(close) * toFloat64(volume))) OVER (), 1) AS pct_of_leader
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= toDateTime('2026-06-29 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
  AND ticker NOT IN ('SPCX')
GROUP BY ticker
ORDER BY dollar_bn DESC
LIMIT 8

MU memimpin seluruh perdagangan dengan volume dolar jam reguler sebesar $190.2 miliar — SPY, ETF terbesar, mencatat 66.4% dari jumlah tersebut. Satu perusahaan yang volume perdagangannya melampaui dana indeks utama pasar selama satu minggu penuh adalah fakta terukur yang paling menonjol minggu ini; halaman ini melaporkan besaran aliran dana, bukan alasannya. Basis: jam reguler 29 Juni–2 Juli; satu pencatatan Juni dengan simbol yang digunakan kembali dikecualikan menunggu verifikasi entitas — penerimaannya tersedia di analisis mendalamnya sendiri.

Hari libur menggeser jadwal mingguan

Ke mana perginya expiry mingguan hari Jumat ketika hari Jumat libur? Data opsi menjawabnya secara langsung: panel ini mengurai tanggal expiry dari setiap kontrak yang diperdagangkan selama seminggu dan mengurutkannya.

QueryKontrak yang diperdagangkan selama minggu ini, berdasarkan expiry date (single-pass scan; batch-generated)
SQL tepat di balik setiap angka
SELECT concat('20', substring(expiry_raw, 1, 2), '-', substring(expiry_raw, 3, 2), '-', substring(expiry_raw, 5, 2)) AS expiry,
    round(sum(size) / 1e6, 1) AS contracts_m,
    round(100 * sum(size) / max(sum(size)) OVER (), 1) AS pct_of_biggest
FROM (
    SELECT substring(ticker, length(ticker) - 14, 6) AS expiry_raw, size
    FROM global_markets.options_trades
    WHERE sip_timestamp >= toDateTime64('2026-06-29 00:00:00', 9) AND sip_timestamp < toDateTime64('2026-07-03 00:00:00', 9)
)
GROUP BY expiry
ORDER BY contracts_m DESC
LIMIT 6

Expiry tersibuk minggu ini adalah 2026-07-02 — hari Kamis — dengan 74.1 juta kontrak, 42.2% di atas tanggal berikutnya. Karena tanggal tiga Juli libur, expiration "Jumat" minggu ini ditetapkan pada hari Kamis; expiry harian Senin hingga Rabu dan monthly tujuh belas Juli melengkapi tabel tersebut. Tanggal expiry diurai ulang dari simbol OCC setiap kontrak (kolom expiry pada data asli tidak dapat diandalkan); mekanisme minggu expiry seperti ini dijelaskan dalam penjelasan hari libur.

Suku Bunga: Tenor 10-tahun meningkat

QueryTreasury yields sepanjang minggu (print 2 Juli belum masuk saat pembuatan)
SQL tepat di balik setiap angka
SELECT toString(date) AS d,
    round(yield_10_year, 2) AS y10,
    round(yield_2_year, 2) AS y2,
    round((yield_10_year - yield_2_year) * 100, 0) AS spread_2s10s_bp
FROM global_markets.treasury_yields
WHERE date >= toDate('2026-06-26') AND date <= toDate('2026-07-02')
ORDER BY date

Tenor 10-tahun bergerak dari 4.38% pada Jumat sebelumnya menjadi 4.48% pada 2026-07-01, sementara spread 2s10s bertahan di dekat 31 basis point. Satu pengungkapan: data yield 2 Juli belum dimasukkan saat halaman ini dibuat (4 baris hingga 1 Juli) — panel akan menyertakannya pada regenerasi berikutnya.

Kalender: akhir kuartal, hari pelaporan hilang

QueryKalender korporasi minggu ini — dengan gap filing-index 30 Juni ditampilkan
SQL tepat di balik setiap angka
SELECT
    (SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date >= toDate('2026-06-29') AND ex_dividend_date <= toDate('2026-07-02')) AS ex_div_events,
    (SELECT count() FROM global_markets.stocks_splits WHERE execution_date >= toDate('2026-06-29') AND execution_date <= toDate('2026-07-02')) AS splits,
    (SELECT count() FROM global_markets.stocks_ipos WHERE listing_date >= toDate('2026-06-29') AND listing_date <= toDate('2026-07-02')) AS ipos,
    (SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = toDate('2026-06-29')) AS filings_jun29,
    (SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = toDate('2026-06-30')) AS filings_jun30,
    (SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = toDate('2026-07-01')) AS filings_jul1,
    (SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = toDate('2026-07-02')) AS filings_jul2,
    (SELECT count() FROM global_markets.stocks_news WHERE published_utc >= toDateTime('2026-06-29 00:00:00') AND published_utc < toDateTime('2026-07-03 00:00:00')) AS news_articles

Minggu ini mencakup 2217 peristiwa ex-dividend, 48 split, dan 7 pencatatan baru saat pergantian kuartal. Kolom pelaporan memuat temuan kualitas data minggu ini: indeks pelaporan SEC menunjukkan 4439 pelaporan pada dua puluh sembilan Juni dan 4282 pada satu Juli, tetapi hanya 31 pada tiga puluh Juni — hari terakhir kuartal tersebut. Hari akhir kuartal tahun sebelumnya mencatat ribuan pelaporan. Kesenjangan ini terjadi pada feed data, bukan pada apa yang dilaporkan perusahaan; setiap hitungan pelaporan Juni atau Q2 yang menyertakan tiga puluh Juni akan terhitung lebih rendah sampai indeks melakukan backfill. Ini adalah bagian dari pola akhir bulan dua ribu dua puluh enam — catatan diagnostik menyertakan buktinya — yang diungkapkan di sini serta dalam rekap Juni dan Q2.

Posisi short: satu berkas terpotong, tiga berkas lengkap

QueryFINRA off-exchange short volume per sesi: coverage dan marked-short share
SQL tepat di balik setiap angka
SELECT toString(date) AS d,
    uniqExact(ticker) AS tickers_on_file,
    max(ticker) AS alphabetical_end,
    round(100 * sum(toFloat64(short_volume)) / sum(toFloat64(total_volume)), 1) AS marked_short_pct
FROM (
    SELECT date, ticker, any(short_volume) AS short_volume, any(total_volume) AS total_volume
    FROM global_markets.stocks_short_volume
    WHERE date >= toDate('2026-06-29') AND date <= toDate('2026-07-02')
    GROUP BY date, ticker
)
GROUP BY date
ORDER BY date

Volume off-exchange ditandai sebagai short sekitar 48.8% pada pertengahan minggu — ini adalah mekanisme market-maker rutin, bukan sinyal squeeze. Kolom coverage menyertakan peringatan: berkas 29 Juni terpotong di seluruh pasar (5489 ticker berakhir di "SSUS" dibandingkan ~15.000 yang berakhir di "ZYME" pada hari-hari lengkap), sehingga 45.8% untuk 29 Juni dihitung dari berkas parsial. Analisis mendalam 29 Juni memuat pemeriksaan lengkap di seluruh pasar.

Catatan data

Catatan data lengkap
  • 3 Juli adalah penutupan PENUH, bukan penutupan lebih awal. 4 Juli 2026 jatuh pada hari Sabtu; NYSE dan Nasdaq mengamati hari libur pada Jumat 3 Juli — 0 bar SPY tercetak pada hari itu. Catatan dataset ditemukan saat halaman ini diregenerasi: tabel kalender-bursa adalah feed hari libur mendatang yang bergulir, dan baris 3 Juli terhapus setelah hari libur berlalu (baris tersebut ada pada edisi pertama halaman ini), sehingga bukti penutupan adalah hari tanpa bar pada tape; mekanismenya ada di penjelasan hari libur.
  • Short interest berakhir pada penyelesaian 15 Juni. Penyelesaian dua bulanan akhir Juni belum dipublikasikan saat halaman ini dibuat; tidak ada bagian di sini yang menggunakannya, dan rekap Juni memuat pengungkapan lengkapnya. Postingan ini akan diregenerasi setelah data tersebut tersedia.
  • Kesenjangan indeks-pelaporan 30 Juni diungkapkan secara inline di atas; cetakan treasury 2 Juli sedang menunggu proses ingestion.
  • Berkas short-volume FINRA 29 Juni terpotong di seluruh pasar; rasionya ditampilkan bersama cakupannya secara inline.
  • Pengecualian pemimpin volume: satu listing Juni diperdagangkan di bawah simbol yang digunakan kembali dan dikecualikan dari leaderboard menunggu verifikasi entitas (postingan tersendiri memuat buktinya).

Metodologi

  • Periode yang digunakan adalah 29 Juni hingga 2 Juli 2026 — empat sesi perdagangan dalam minggu tersebut; 3 Juli adalah hari libur pasar. Batasan sesi diverifikasi dari bar yang teramati, tidak pernah diasumsikan (dataset kalender bursa hanya memuat hari libur mendatang — lihat catatan data).
  • Timestamp disimpan dalam UTC dan difilter dengan batasan UTC mentah; jam reguler pada minggu (EDT) ini adalah 13:30–20:00 UTC. Harga penutupan adalah bar menit terakhir pada jam reguler; volume dolar adalah harga penutupan menit dikali volume menit, yang dijumlahkan selama jam reguler.
  • Angka week-over-week dibandingkan dengan harga penutupan Jumat sebelumnya, yang dihitung ulang dalam kueri yang sama dengan minggu ini — tidak pernah dibaca dari nilai yang tersimpan. Peringkat trailing-year dihitung ulang setiap minggu secara identik (jam reguler waktu Eastern, pengamanan sesi minimum, batas atas dipatok pada akhir minggu ini).
  • Pembuatan laporan berjalan melalui jalur read-only yang terbatas; halaman publik tidak pernah melakukan kueri secara live. Status warehouse per 5 Juli 2026.

Ini adalah edisi pertama dari rekap mingguan rutin — edisi minggu depan akan mencakup 6–10 Juli dan akan memberikan tautan kembali ke sini. Rekap harian 29 Juni mencakup hari Senin dengan detail tingkat harian.