Strasmore Research
Deep Dives · Matt ConnorBy Matt Connor · · Updated 2026-07-25

Analisis Mikrostruktur Pasar 29 Juni 2026

Bedah teknis sesi 29 Juni 2026 melalui trade dan quote tape lengkap, koreksi volume berbasis kamus, tanda terima nanosecond, serta analisis file FINRA yang terpotong.

Ini adalah pendamping teknis untuk rekap pasar 29 Juni 2026: data mentah di balik bar menit — 156.1 juta perdagangan individu dan 505.38 juta pembaruan kuotasi NBBO dalam satu sesi Senin biasa. Setiap angka adalah hasil kueri tersimpan (perluas panel apa pun untuk SQL tepatnya), dan dua temuan forensik hari itu mendapatkan ulasan lengkap: koreksi volume yang diminta oleh kamus kode tape itu sendiri, dan file vendor yang berhenti secara diam-diam pada huruf S.

Rekaman transaksi, cetakan demi cetakan

Pemeriksaan sesi dilakukan terlebih dahulu dan tidak pernah diasumsikan: kalender hari libur bursa memiliki 0 baris untuk 29 Juni 2026, dan SPY mencetak tepat 390 bar menit di dalam jendela reguler — sesi penuh, pukul 9:30 pagi hingga 4:00 sore waktu New York. Di seluruh hari diperpanjang, consolidated tape mencatat 156.1 juta transaksi individu.

QueryTransaksi satu hari: pengecekan sesi dan ukuran setiap print
SQL tepat di balik setiap angka
WITH
    (SELECT count() FROM global_markets.stocks_market_holidays WHERE date = '2026-06-29') AS holiday_rows,
    (
        SELECT countIf(window_start >= '2026-06-29 13:30:00' AND window_start < '2026-06-29 20:00:00')
        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'
    ) AS spy_bars
SELECT
    holiday_rows AS holiday_rows_jun29,
    spy_bars AS spy_regular_session_bars,
    round(count() / 1e6, 1) AS trades_m,
    round(100.0 * countIf(size < 100) / count(), 2) AS odd_lot_pct_of_trades,
    round(100.0 * toFloat64(sumIf(size, size < 100)) / toFloat64(sum(size)), 2) AS odd_lot_pct_of_shares,
    multiIf(
        countIf(size <= 19) >= 0.5 * count(), 19,
        countIf(size <= 20) >= 0.5 * count(), 20,
        countIf(size <= 21) >= 0.5 * count(), 21,
        countIf(size <= 22) >= 0.5 * count(), 22,
        countIf(size <= 23) >= 0.5 * count(), 23,
        0) AS median_print_shares,
    round(countIf(size = 1) / 1e6, 1) AS one_share_trades_m,
    round(100.0 * countIf(size != round(size)) / count(), 2) AS fractional_pct_of_trades
FROM global_markets.stocks_trades
WHERE sip_timestamp >= '2026-06-29 00:00:00' AND sip_timestamp < '2026-06-30 00:00:00'

72.61% dari semua cetakan adalah odd lots — transaksi kurang dari seratus saham — namun mereka hanya menggerakkan 8.79% dari raw shares — total tidak terkoreksi yang dipangkas oleh bagian forensik volume di bawah ini. Median cetakan adalah 21 saham, diukur dengan self-verifying bracket probe — hitungan kumulatif pada sembilan belas hingga dua puluh tiga saham — yang mengembalikan nilai 0 jika bracket meleset, dan dibatasi sehingga kegagalan tetap mempertahankan posisi. 17.9 juta cetakan adalah untuk tepat satu saham dan 4.73% membawa ukuran fraksional — pola yang konsisten dengan aplikasi ritel yang masuk ke tape satu irisan demi satu irisan, dengan market maker mengambil sisi lainnya.

Forensik volume: menurunkan "matched volume" dari kamus

Jumlahkan kolom size pada setiap print dan tanggal 29 Juni menunjukkan 24.79 miliar saham diperdagangkan. Angka tersebut salah, dan data tape itu sendiri membuktikannya. Setiap print membawa kode kondisi, dan SIP — Securities Information Processor yang mengonsolidasikan setiap venue menjadi satu aliran — menerbitkan kamus yang menyatakan, kode demi kode, apakah sebuah print memperbarui volume konsolidasi. Beberapa pesan adalah siaran ulang administratif dari volume yang sudah dihitung sekali. Daripada menulis daftar kode "terkenal" secara hardcoded, postingan ini menurunkan set pengecualian dari kamus itu sendiri:

QuerySet eksklusi, diturunkan dari kamus kode tape (satu baris)
SQL tepat di balik setiap angka
SELECT
    count() AS excluded_codes,
    sum(id) AS excluded_id_checksum,
    arrayStringConcat(arraySort(groupArray(concat(toString(id), ' ', name))), ' · ') AS codes
FROM global_markets.stocks_condition_codes
WHERE asset_class = 'stocks'
  AND type = 'sale_condition'
  AND JSONExtractBool(update_rules, 'consolidated', 'updates_volume') = 0

3 kondisi penjualan membawa updates_volume = false pada feed konsolidasi: 15 Market Center Official Close · 16 Market Center Official Open · 38 Corrected Consolidated Close (per listing market). Berikut adalah pelajaran yang dipetik: draf awal rekap harian menulis secara hardcoded kode 15 dan 16 — dua pesan open/close resmi yang disebutkan setiap panduan data — dan melewatkan kode 38 sepenuhnya. Kamus, bukan daftar kode yang diingat, adalah sumber kebenaran.

Penggunaan dua blok adalah disengaja: subquery skalar pada kamus di dalam pemindaian 156.1 juta baris melampaui batas waktu tiga puluh detik kami. Jadi blok di atas menurunkan set sebagai satu baris — dibatasi secara sanity pada jumlah kode dan checksum id (69) — dan blok di bawah menerapkan literal yang diturunkan tersebut. Jika kamus berubah, batas checksum akan menahan postingan ini untuk ditinjau; literal tersebut tidak akan pernah menjadi usang secara diam-diam.

QueryVolume Raw vs SIP-counted, menerapkan set eksklusi yang diturunkan
SQL tepat di balik setiap angka
SELECT
    round(toFloat64(sum(size)) / 1e9, 2) AS raw_shares_bn,
    round(toFloat64(sumIf(size, NOT hasAny(conditions, [15, 16, 38]))) / 1e9, 2) AS matched_shares_bn,
    round(toFloat64(sumIf(size, hasAny(conditions, [15, 16, 38]))) / 1e9, 2) AS excluded_shares_bn,
    countIf(hasAny(conditions, [15, 16, 38])) AS excluded_prints
FROM global_markets.stocks_trades
WHERE sip_timestamp >= '2026-06-29 00:00:00' AND sip_timestamp < '2026-06-30 00:00:00'

Akuntansi yang dikoreksi: 24.79 miliar saham raw, 20.66 miliar hitungan SIP, 4.13 miliar dikecualikan di seluruh 91175 print administratif. Satu definisi, dinyatakan secara tepat: "matched volume" berarti volume yang dihitung oleh aturan kondisi SIP sendiri terhadap total konsolidasi — tidak lebih dari itu. Kami tidak menilai perdagangan mana yang bermakna secara ekonomi; kami menerapkan akuntansi dari tape itu sendiri.

Membedah transaksi terbesar

Transaksi terbesar hari ini adalah saat kode kondisi tidak lagi sekadar informasi tambahan:

QueryPrint tunggal terbesar pada 29 Juni (kode eksklusi kamus dihapus)
SQL tepat di balik setiap angka
SELECT
    ticker,
    formatDateTime(toTimeZone(sip_timestamp, 'America/New_York'), '%H:%i:%S') AS et_time,
    round(toFloat64(size) / 1e6, 2) AS shares_m,
    toFloat64(price) AS price,
    round(toFloat64(size) * toFloat64(price) / 1e6, 1) AS notional_usd_m,
    round(100 * (toFloat64(size) * toFloat64(price)) / max(toFloat64(size) * toFloat64(price)) OVER (), 1) AS pct_of_biggest_dollar_print,
    arrayStringConcat(arrayMap(c -> toString(c), conditions), ', ') AS condition_id
FROM global_markets.stocks_trades
WHERE sip_timestamp >= '2026-06-29 00:00:00' AND sip_timestamp < '2026-06-30 00:00:00'
  AND size >= 10000000
  AND NOT hasAny(conditions, [15, 16, 38])
ORDER BY size DESC
LIMIT 10

Baca baris teratas sebagai contoh kasus. Transaksi terbesar hari ini — 61.69 juta saham CAG (Conagra) pada harga $13.98, sekitar $862.5 juta, tercatat pukul 16:04:53 ET dengan kode 8, 41 (8 Closing Prints, 41 Trade Thru Exempt) — adalah hasil lelang penutupan NYSE yang dipublikasikan setelah pukul 4:00 pm. Transaksi ini dihitung ke dalam volume tepat satu kali. Jumlah yang sama, yaitu 61.69 juta saham, kemudian muncul kembali di bawah kode 15, Market Center Official Close: sebuah laporan ulang yang dikecualikan oleh kamus, bagian dari 4.13 miliar yang dihapus di atas. Baris kode-15 tersebut sengaja dihapus dari tabel di atas, sehingga penerimaannya mendapatkan panel satu baris tersendiri:

QueryTanda terima: closing auction CAG dan re-report kode-15, berdampingan
SQL tepat di balik setiap angka
SELECT
    round(toFloat64(maxIf(size, has(conditions, 8))) / 1e6, 2) AS auction_print_shares_m,
    round(toFloat64(maxIf(size, has(conditions, 15))) / 1e6, 2) AS official_close_reprint_shares_m,
    round(toFloat64(maxIf(size, has(conditions, 8))) - toFloat64(maxIf(size, has(conditions, 15))), 2) AS share_difference,
    formatDateTime(toTimeZone(argMaxIf(sip_timestamp, size, has(conditions, 15)), 'America/New_York'), '%H:%i:%S') AS reprint_et,
    argMaxIf(exchange, size, has(conditions, 15)) AS reprint_exchange_id,
    countIf(has(conditions, 15)) AS cag_code15_prints
FROM global_markets.stocks_trades
WHERE ticker = 'CAG'
  AND sip_timestamp >= '2026-06-29 00:00:00' AND sip_timestamp < '2026-06-30 00:00:00'

Pesan official-close terbesar dari 6 pesan pada CAG membawa 61.69 juta saham — tepat 61.69 juta saham dari lelang (selisih: 0) — tercatat pukul 16:04:53 ET dari id bursa 10, NYSE dalam direktori saham: pasar pencatatan yang menyatakan kembali hasil lelangnya sendiri.

CAG baris lainnya adalah jenis yang berbeda — transaksi 15.17 juta saham di bawah kode 12, 2 (12 Form T / extended hours, 2 Average Price Trade) dan dua lainnya di bawah kode 12 adalah transaksi pasca-lelang yang dilaporkan melalui FINRA yang kondisinya membawa updates_volume = true. SIP menghitungnya sebagai transaksi riil, begitu pula dengan angka pencocokan kami.

Di tempat lain, kode 9 menandai closing crosses Nasdaq — cross senilai $3389.5 juta milik NVDA adalah transaksi terbesar dalam dolar di tabel tersebut — dan kode pada transaksi SNAP (53, 41) mencakup 53, sebuah Qualified Contingent Trade.

Jam: sepuluh menit menguasai hari

Pada resolusi menit, data perdagangan terkonsentrasi hampir sepenuhnya di awal dan akhir sesi:

QuerySepuluh menit tersibuk pada trade tape (jutaan print)
SQL tepat di balik setiap angka
SELECT
    formatDateTime(toTimeZone(toStartOfMinute(sip_timestamp), 'America/New_York'), '%H:%i') AS et_minute,
    round(count() / 1e6, 2) AS trades_m
FROM global_markets.stocks_trades
WHERE sip_timestamp >= '2026-06-29 00:00:00' AND sip_timestamp < '2026-06-30 00:00:00'
GROUP BY et_minute
ORDER BY trades_m DESC
LIMIT 10

Menit 15:59 ET mencatat 3.98 juta perdagangan — lebih dari enam puluh ribu per detik. Apakah sisa dari sepuluh besar tersebut terkumpul di waktu pembukaan dan penutupan dapat dilihat dari satu baris pengukuran:

QueryJumlah dari sepuluh menit tersibuk yang berada di luar open dan close
SQL tepat di balik setiap angka
SELECT
    countIf(NOT (et_minute BETWEEN '09:30' AND '09:39' OR et_minute BETWEEN '15:50' AND '16:00')) AS entries_outside_open_close,
    countIf(et_minute BETWEEN '09:30' AND '09:39' OR et_minute BETWEEN '15:50' AND '16:00') AS entries_in_open_close,
    maxIf(et_minute, NOT (et_minute BETWEEN '09:30' AND '09:39' OR et_minute BETWEEN '15:50' AND '16:00')) AS outside_entry_minute,
    maxIf(trades_m, NOT (et_minute BETWEEN '09:30' AND '09:39' OR et_minute BETWEEN '15:50' AND '16:00')) AS outside_entry_trades_m
FROM (
    SELECT
        formatDateTime(toTimeZone(toStartOfMinute(sip_timestamp), 'America/New_York'), '%H:%i') AS et_minute,
        round(count() / 1e6, 2) AS trades_m
    FROM global_markets.stocks_trades
    WHERE sip_timestamp >= '2026-06-29 00:00:00' AND sip_timestamp < '2026-06-30 00:00:00'
    GROUP BY et_minute
    ORDER BY trades_m DESC
    LIMIT 10
)

9 dari sepuluh besar berada dalam sepuluh menit pertama pembukaan atau sepuluh menit terakhir sebelum penutupan. Satu pengecualian — 10:15 ET, lonjakan 0.88 juta cetakan — adalah anomali tengah pagi yang nyata; penyebabnya tidak diketahui dari data ini, dan kami tidak akan mengada-adanya. Waktu jam yang sama muncul kembali di bawah.

Aliran kuotasi: setengah miliar pembaruan

National Best Bid and Offer — harga beli dan jual terbaik di seluruh bursa, yang dipublikasikan ulang setiap kali terjadi perubahan — diperbarui sebanyak 505.38 juta kali pada tanggal 29 Juni, dibandingkan dengan 156.1 juta transaksi.

QuerySeluruh stream NBBO dalam satu baris — QQQ dan NVDA dipaku berdasarkan nama
SQL tepat di balik setiap angka
WITH
    (
        SELECT (round(countIf(ticker = 'QQQ') / 1e6, 2), round(countIf(ticker = 'NVDA') / 1e6, 2),
                round(countIf(ticker = 'AAPL') / 1e6, 2), round(countIf(ticker = 'TSLA') / 1e6, 2))
        FROM global_markets.cache_stocks_quotes
        WHERE ticker IN ('QQQ', 'NVDA', 'AAPL', 'TSLA')
          AND sip_timestamp >= '2026-06-29 00:00:00' AND sip_timestamp < '2026-06-30 00:00:00'
    ) AS pinned
SELECT
    round(count() / 1e6, 2) AS updates_m,
    pinned.1 AS qqq_updates_m,
    pinned.2 AS nvda_updates_m,
    round(pinned.1 - pinned.2, 2) AS qqq_minus_nvda_updates_m,
    round(pinned.2 - greatest(pinned.3, pinned.4), 2) AS nvda_minus_next_single_m
FROM global_markets.cache_stocks_quotes
WHERE sip_timestamp >= '2026-06-29 00:00:00' AND sip_timestamp < '2026-06-30 00:00:00'

Produk indeks mendominasi kuotasi: QQQ sendiri mencatat 5.23 juta pembaruan dibandingkan dengan 1.8 juta untuk NVDA, saham tunggal yang paling banyak dikuotasi yang kami periksa — selisih 0.67 juta pembaruan dari nama tunggal berikutnya. Sensus lengkap per-ticker untuk setiap listing tidak muat dalam batas waktu tiga puluh detik, sehingga papan peringkat di bawah ini adalah kumpulan yang diperiksa, bukan peringkat menyeluruh:

QueryUpdate quote NBBO untuk delapan ticker dengan quote tinggi (jutaan)
SQL tepat di balik setiap angka
SELECT ticker, round(count() / 1e6, 2) AS updates_m
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('QQQ', 'SPY', 'TQQQ', 'IWM', 'SQQQ', 'NVDA', 'AAPL', 'TSLA')
  AND sip_timestamp >= '2026-06-29 00:00:00' AND sip_timestamp < '2026-06-30 00:00:00'
GROUP BY ticker
ORDER BY updates_m DESC

QQQ memimpin kumpulan yang diperiksa dengan 5.23 juta pembaruan; posisi teratas papan peringkat adalah dana indeks dan varian leveraged mereka, bukan saham populer.

SPY di bawah mikroskop: tanda terima nanodetik, dan spread dua arah

QuerySPY di bawah mikroskop: gap nanodetik, spread dua arah, kualitas quote
SQL tepat di balik setiap angka
WITH
    (
        SELECT (formatDateTime(toTimeZone(toStartOfSecond(sip_timestamp), 'America/New_York'), '%H:%i:%S'), count())
        FROM global_markets.cache_stocks_quotes
        WHERE ticker = 'SPY' AND sip_timestamp >= '2026-06-29 13:30:00' AND sip_timestamp < '2026-06-29 20:00:00'
        GROUP BY toStartOfSecond(sip_timestamp)
        ORDER BY count() DESC, toStartOfSecond(sip_timestamp) ASC
        LIMIT 1
    ) AS busiest_sec,
    ordered AS (
        SELECT
            toFloat64(ask_price - bid_price) AS spread,
            bid_price,
            ask_price,
            toFloat64(sip_timestamp - lagInFrame(sip_timestamp) OVER (ORDER BY sip_timestamp, sequence_number)) AS gap_s,
            greatest(toFloat64(least(leadInFrame(sip_timestamp, 1, toDateTime64('2026-06-29 20:00:00', 9)) OVER (ORDER BY sip_timestamp, sequence_number ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING), toDateTime64('2026-06-29 20:00:00', 9)) - sip_timestamp), 0) AS dwell_s,
            rowNumberInAllBlocks() AS rn
        FROM global_markets.cache_stocks_quotes
        WHERE ticker = 'SPY' AND sip_timestamp >= '2026-06-29 13:30:00' AND sip_timestamp < '2026-06-29 20:00:00'
    )
SELECT
    round(count() / 1e6, 2) AS spy_updates_m,
    busiest_sec.1 AS busiest_second_et,
    toUInt8(startsWith(busiest_sec.1, '10:15')) AS busiest_second_in_1015,
    busiest_sec.2 AS busiest_second_updates,
    round(minIf(gap_s, rn > 0 AND gap_s > 0) * 1e9) AS min_gap_between_updates_ns,
    round(quantileExactIf(0.5)(gap_s, rn > 0) * 1e6, 1) AS median_gap_us,
    countIf(rn > 0 AND gap_s = 0) AS identical_timestamp_pairs,
    round(sumIf(spread * dwell_s, bid_price > 0 AND ask_price >= bid_price) / sumIf(dwell_s, bid_price > 0 AND ask_price >= bid_price) * 100, 2) AS time_weighted_avg_spread_cents,
    round(avgIf(spread, bid_price > 0 AND ask_price >= bid_price) * 100, 2) AS per_update_avg_spread_cents,
    round((avgIf(spread, bid_price > 0 AND ask_price >= bid_price) - sumIf(spread * dwell_s, bid_price > 0 AND ask_price >= bid_price) / sumIf(dwell_s, bid_price > 0 AND ask_price >= bid_price)) * 100, 2) AS per_update_premium_cents,
    countIf(bid_price > 0 AND ask_price > 0 AND ask_price < bid_price) AS crossed_updates,
    countIf(bid_price <= 0 OR ask_price <= 0) AS zero_bid_or_ask_updates
FROM ordered

Kutipan SPY berubah sebanyak 3.98 juta kali pada jam perdagangan reguler saja. Detik tersibuknya — 10:15:43 ET, di dalam menit 10:15 yang ditandai di atas — mencatat 1461 pembaruan. Jarak terkecil antara pembaruan berturut-turut adalah 1375 nanodetik, mediannya 245.6 mikrodetik, dan 75138 pasangan berturut-turut memiliki stempel nanodetik yang identik — bahkan resolusi nanodetik tidak dapat mengurutkan tape modern sepenuhnya.

Nanodetik tersebut berperan penting dalam mengukur bid-ask spread. Dengan menghitung setiap pembaruan secara setara, rata-rata spread SPY adalah 2.72 sen; dengan membobotkan setiap kutipan berdasarkan durasi berlakunya, menjadi 2.34 sen. Angka per pembaruan terbaca 0.38 sen lebih lebar secara mekanis: pembaruan berkumpul tepat pada saat spread melebar dan bergerak, sementara order yang diam dihitung berdasarkan waktu jam. Setiap kali Anda melihat statistik spread, tanyakan jam mana yang mengukurnya. Sensus ini diungkapkan, bukan disembunyikan: 1544 pembaruan jam reguler sempat mengalami crossed (ask di bawah bid, akibat tumpang tindih kutipan dari venue yang berbeda) dan 0 memiliki bid atau ask nol; statistik spread mengecualikan keduanya dan mencatat apa yang dikecualikan tersebut.

Spread memiliki jadwal

Pengelompokan quoted spread SPY per setengah jam mengubah mikrostruktur menjadi kurva yang dapat digunakan oleh setiap trader:

QueryMedian quoted spread SPY per setengah jam, 4:00 am hingga 8:00 pm ET
SQL tepat di balik setiap angka
SELECT
    formatDateTime(toTimeZone(toStartOfInterval(sip_timestamp, INTERVAL 30 MINUTE), 'America/New_York'), '%H:%i') AS et_time,
    round(quantileExactIf(0.5)(toFloat64(ask_price - bid_price), bid_price > 0 AND ask_price >= bid_price) * 100, 1) AS median_spread_cents,
    count() AS quote_updates
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'SPY' AND sip_timestamp >= '2026-06-29 08:00:00' AND sip_timestamp < '2026-06-30 00:00:00'
GROUP BY et_time
ORDER BY et_time

Median sebesar 8 sen pada bucket premarket 04:00 ET, 3 sen pada bucket pembukaan 09:30, dan 2 sen pada 14:00 — memperdagangkan saham yang sama pada pembukaan premarket membutuhkan biaya sekitar empat kali lipat dari spread pesanan sore hari. Spread bukanlah sebuah konstanta; spread adalah sebuah jadwal.

Bukti forensik: berkas yang terhenti di S

Setiap berkas vendor harian menjalani pemeriksaan kelengkapan sebelum kami memublikasikan angka darinya: menghitung ticker, memeriksa rentang alfabetis, dan membandingkan data tetangga. Berkas volume short off-exchange FINRA tanggal 29 Juni adalah buktinya:

QueryProbe kelengkapan: cakupan file short-volume FINRA, 26-30 Juni
SQL tepat di balik setiap angka
SELECT
    date,
    uniqExact(ticker) AS tickers,
    min(ticker) AS first_ticker,
    max(ticker) AS last_ticker,
    countIf(ticker = 'TSLA') AS tsla_rows,
    round(100 * sum(short_volume) / sum(total_volume), 2) AS short_pct_of_reported
FROM global_markets.stocks_short_volume
WHERE date BETWEEN '2026-06-26' AND '2026-06-30'
GROUP BY date
ORDER BY date

Berkas 26 Juni mencakup 15052 ticker, dari A hingga ZYME. Berkas 29 Juni mencakup 5489, dari A hingga SSUS — berkas tersebut terhenti di tengah nama-nama yang dimulai dengan huruf S. Setiap ticker setelah titik tersebut secara alfabetis — termasuk TSLA, dengan 0 baris pada 29 Juni dibandingkan 1 pada 26 Juni — hilang; pada 30 Juni berkas tersebut kembali menjadi 15362 ticker. Pemeriksaan kelengkapan tidak lebih rumit dari tanda terima satu baris per hari ini — perbedaan antara memublikasikan statistik dan memublikasikan artefak.

Dengan pengungkapan tersebut — dan hanya dengan itu — berikut adalah rasionya: volume marked-short tercatat sebesar 45.85% dari volume off-exchange yang dilaporkan pada 29 Juni, bersamaan dengan 46.89% pada 26 Juni dan 48.82% pada 30 Juni. Angka 29 Juni hanya mencakup irisan A hingga S, jadi anggaplah itu sebagai pembacaan parsial. Pangsa short yang mendekati setengah adalah level rutin yang ditunjukkan oleh setiap sesi tetangga — dan volume short harian bukanlah short interest.

Catatan data

Catatan data lengkap
  • Kesenjangan kuotasi pukul lima sampai enam sore. Aliran kuotasi SPY hampir terhenti dalam setengah jam 17:00 ET (233 pembaruan) dan pulih pada 18:00 (40608) — ini adalah pola feed/sesi lintas ticker, bukan data yang hilang.
  • Saham fraksional ada di mana-mana. 4.73% dari cetakan membawa ukuran non-integer; volume harus dijumlahkan sebagai desimal.
  • Kamus kode menggunakan kembali id di berbagai tipe. Id 15 adalah kondisi penjualan (Market Center Official Close) sekaligus kondisi kuotasi (Closed); setiap kueri kamus di sini memfilter asset_class = 'stocks' DAN type = 'sale_condition'. Pencarian hanya berdasarkan id akan salah melabeli kode.
  • Pengecualian kualitas kuotasi dihitung secara in-line. Hitungan crossed dan zero-bid-or-ask berada di panel mikroskop SPY di atas; tidak ada statistik spread yang menyembunyikan pengurangannya.
  • Pemindaian seluruh tape hanya untuk panel batch. Blok seluruh pasar yang diukur di sini memakan waktu hingga sekitar tiga puluh detik masing-masing pada cold cache (blok yang timeout dicoba sekali lagi; pass yang sudah hangat melewati batas tersebut); blok ini dijalankan sekali pada saat penulisan melalui jalur read-only yang dibatasi, tidak pernah live untuk pembaca, dan hasil yang tersimpan adalah rekamannya.

Metodologi

  • Timestamp disimpan dalam UTC dan difilter dengan batas UTC mentah (jam reguler pada tanggal 29 Juni adalah 13:30 hingga 20:00 UTC); toTimeZone hanya muncul dalam daftar SELECT.
  • Tipe sesi diverifikasi terhadap kalender hari libur dan jendela reguler 390-bar yang teramati — tidak pernah diasumsikan.
  • "SIP-counted (matched) volume" adalah volume yang dihitung oleh aturan kondisi SIP sendiri terhadap total konsolidasi; set eksklusi diturunkan dari kamus, dibatasi checksum, dan tidak pernah dikodekan secara keras.
  • Statistik spread per-update memberi bobot yang sama pada setiap update NBBO; statistik time-weighted memberi bobot pada setiap quote berdasarkan durasi berlakunya. Keduanya mengungkapkan eksklusinya.
  • Kolom harga/ukuran desimal dijumlahkan secara native dan dikonversi menjadi float 64-bit sebelum perhitungan rasio atau aritmatika harga-kali-ukuran.
  • Tabel tick menyimpan riwayat lengkap tanpa masa kedaluwarsa bergulir; hasil yang disimpan dan diverversi ini adalah catatan permanen terlepas dari apa pun. Status warehouse per 3 Juli 2026.

Setiap panel di atas adalah satu objek tersimpan — grafik, tabel, dan SQL secara bersamaan. Buka salah satu dari mereka, salin query-nya, dan lanjutkan di terminal Strasmore.