Microstructure deep-dive: Hunyo 29, 2026
Sa ilalim ng Hunyo 29, 2026: buong trade at quote tape, dictionary-derived volume correction, nanosecond receipts, at truncatged FINRA file.
Ito ang kasamang nasa ilalim ng buod ng merkado noong Hunyo 29, 2026: ang raw feed sa ilalim ng minute bars — 156.1 milyong indibidwal na trades at 505.38 milyong NBBO quote updates sa isang karaniwang session ng Lunes. Bawat numero ay naka-imbak na resulta ng query (palawakin ang anumang panel para sa eksaktong SQL), at ang dalawang natuklasang forensic ng araw ay may kumpletong sulatin: isang pagwawastong volume na hinihingi ng sariling code dictionary ng tape, at isang vendor file na tahimik na nagtatapos sa titik S.
Ang trade tape, bawat print
Ang session check ang una, hindi ina-assume: naglalaman ang holiday calendar ng exchange ng 0 row para sa Hunyo 29, 2026, at nag-print ang SPY ng eksaktong 390 minute bar sa loob ng regular na window — isang buong session, mula 9:30 am hanggang 4:00 pm New York time. Sa kabuuan ng extended day, nag-record ang consolidated tape ng 156.1 milyong indibidwal na trade.
Ang eksaktong SQL sa likod ng bawat numero
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'Ang 72.61% sa lahat ng print ay odd lot — mga trade na wala pang 100 share — ngunit ang inilipat lang nila ay 8.79% ng raw share — ang uncorrected total na tine-trim ng volume-forensics section sa ibaba. Ang median print ay 21 share, sinusukat gamit ang self-verifying bracket probe — cumulative count mula 19 hanggang 23 share — na nagbabalik ng 0 kung mag-miss ang bracket, at bounded kaya hindi nababago ang post sa isang miss. 17.9 milyong print ay para sa eksaktong isang share at 4.73% ay may fractional size — isang pattern naaayon sa mga retail app na tumatama sa tape ng paisa-isa, kasama ang mga market maker na kumukuha ng kabilang side.
Forensic sa volume: pagkuha ng "matched volume" mula sa dictionary
Idagdag ang size field sa bawat print at nagpapakita ang June 29 ng 24.79 bilyong shares na na-trade. Mali ang numerong iyon, at sinasabi ito ng tape mismo. Ang bawat print ay may kasamang condition codes,at ang SIP — ang Securities Information Processor na nagko-consolidate ng bawat venue sa iisang stream — ay nagpapakabg ng dictionary na nagsasabi, code por code, kung ang isang print ay nag-uupdate ng consolidated volume. Ang ilang mensahe ay administrative re-broadcasts ng volume na nabilang na nang isang beses. Sa halip na ihardcode ang isang listahan ng "kilalang" codes, inii-derive ng post na ito ang exclusion set mula sa dictionary mismo:
Ang eksaktong SQL sa likod ng bawat numero
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') = 0May 3 sale conditions na may updates_volume = false sa consolidated feed: 15 Market Center Official Close · 16 Market Center Official Open · 38 Corrected Consolidated Close (per listing market). Narito ang aral: ang isang mas maagang draft ng daily recap ay naghardcode ng codes 15 at 16 — ang dalawang opisyal na open/close message na binabanggit ng bawat data guide — at na-miss ang code 38 nang buo. Ang dictionary, hindi isang natatandaang listahan ng code, ang source of truth.
Dalawang block ang sinadya: ang isang scalar subquery sa dictionary sa loob ng 156.1-million-row scan ay lumalampas sa 30-second cap natin. Kaya inirer-derive ng block sa itaas ang set bilang isang row — na may sanity bound sa code count at isang id checksum (69) — at ina-apply ng block sa baba ang mga nakahandang literals. Kung mag-drift ang dictionary, ang checksum bound ay magho-hold sa post na ito para sa review; ang mga literals ay hindi maaaring tahimik na mag-stale.
Ang eksaktong SQL sa likod ng bawat numero
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'Ang tamang accounting: 24.79 bilyong shares na raw, 20.66 bilyong SIP-counted, 4.13 bilyong hindi kasama sa 91175 administrative prints. Isang depinsiyon, na sinabi nang tama: ang "matched volume" ay nangangahulugang ang volume na binibilang ng sariling condition rules ng SIP patungo sa consolidated total — wala nang iba. Hindi natin hinuhusgahan kung aling mga trade ang economically meaningful; ini-a-apply natin ang sariling accounting ng tape.
Ang mga pinakamalaking print, na-decode
Ang pinakamalaking print ng araw ay kung saan ang mga condition code ay tumitigil na maging trivia:
Ang eksaktong SQL sa likod ng bawat numero
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 10Basahin ang mga top row bilang isang worked example. Ang pinakamalaking print ng araw — 61.69 milyong CAG (Conagra) na share sa $13.98, humigit-kumulang $862.5 milyon, na na-stamp ng 16:04:53 ET sa ilalim ng mga code na 8, 41 (8 Closing Prints, 41 Trade Thru Exempt) — ay ang resulta ng NYSE closing auction na na-publish pagkatapos ng 4:00 pm. Ito ay binibilang sa volume nang eksaktong isang beses. Ang parehong 61.69 milyong share ay muling lumalabas sa ilalim ng code 15, Market Center Official Close: isang re-report na hindi kasama sa dictionary, bahagi ng 4.13 bilyon na na-strip sa itaas. Ang code-15 row na iyon ay na-strip sa table sa itaas nang sagrado, kaya ang receipt nito ay nakakakuha ng sarili nitong cheap na one-row panel:
Ang eksaktong SQL sa likod ng bawat numero
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'Ang pinakamalaki sa 6 na official-close na mensahe sa CAG ay nagdadala ng 61.69 milyong share — eksaktong 61.69 milyon ng auction (kaibahan: 0) — na na-stamp ng 16:04:53 ET mula sa exchange id na 10, NYSE sa stocks directory: ang listing market na muling nagdedeklara ng sarili nitong auction.
Ang iba pang CAG na row ay ibang hayop — ang 15.17 milyong-share na print sa ilalim ng mga code na 12, 2 (12 Form T / extended hours, 2 Average Price Trade) at dalawa pang nasa ilalim ng code 12 ay mga post-auction print na na-report sa pamamagitan ng FINRA na ang mga condition ay nagdadala ng updates_volume = true. Binibilang ng SIP ang mga ito bilang tunay na print, at gayon din ang aming matched figure.
Sa ibang lugar, ang code 9 ay nagmamarka sa mga Nasdaq closing cross — ang $3389.5 milyong cross ng NVDA ay ang pinakamalaking print sa table sa dolyar — at ang mga code sa SNAP print (53, 41) ay kinabibilangan ng 53, isang Qualified Contingent Trade.
Ang orasan: sampung minuto ang nagmamay-ari ng araw
Sa minuto-resolusyon, ang trade tape halos puro sa mga dulo ng sesyon nagkukumpol:
Ang eksaktong SQL sa likod ng bawat numero
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 10Ang 15:59 ET na minuto ay nakapag-print ng 3.98 milyong trades — mahigit sa animnapu’t libo kada segundo. Kung ang natitirang top ten ay yumakap ba sa open at sa close ay isang one-row na pagsusuri rin:
Ang eksaktong SQL sa likod ng bawat numero
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 sa sampu ay nasa loob ng unang sampung minuto ng pagbubukas o sa huling sampung minuto bago ang pagsara. Ang isang pagbubukod — 10:15 ET, isang pagputok na 0.88 milyong prints — ay isang tunay na mid-morning anomaly; ang sanhi nito ay hindi malaman mula sa datos na ito, at hindi kami magsasalin-lahi ng dahilan. Ang parehong oras ay babalik sa ibaba.
Ang quote stream: kalahating bilyong update
Ang National Best Bid and Offer — ang pinakamainam na bid at ask na presyo sa bawat exchange, na ini-re-publish kapag may pagbabago sa alinman — ay nag-update ng 505.38 milyong beses noong Hunyo 29, laban sa 156.1 milyong trades.
Ang eksaktong SQL sa likod ng bawat numero
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'Ang mga index product ang nangingibabaw sa pag-quote: ang QQQ lang ay nag-log ng 5.23 milyong update laban sa 1.8 milyon para sa NVDA, ang pinaka-quote na solong stock na tiningnan namin — 0.67 milyong update ang kalamangan sa susunod na solong pangalan. Ang buong per-ticker census ng bawat listing ay hindi kasya sa 30-segundong cap, kaya ang leaderboard sa ibaba ay isang checked set, hindi isang exhaustive ranking:
Ang eksaktong SQL sa likod ng bawat numero
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 DESCAng QQQ ang nanguna sa checked set na may 5.23 milyong update; ang tuktok ng board ay mga index fund at ang kanilang leveraged na pinsan, hindi mga pamilyar na stock.
SPY sa ilalim ng mikroskopyo: resibo sa nanosecond, at ang spread sa dalawang paraan
Ang eksaktong SQL sa likod ng bawat numero
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 orderedAng quote ng SPY ay nagbago 3.98 milyong beses sa regular hours lamang. Ang pinaka-abalang segundo nito — 10:15:43 ET, sa loob ng 10:15 minutong na-flag sa itaas — nagdala ng 1461 na update. Ang pinakamaliit na agwat sa pagitan ng magkasunod na update ay 1375 nanosecond, ang median ay 245.6 microsecond, at 75138 magkasunod na pares ang nagdala ng magkatulad na nanosecond stamp — kahit ang nanosecond resolution ay hindi ganap na maaaring i-order ang modernong tape.
Ang mga nanosecond na iyon ay nagkakahalaga sa pagsusukat ng bid-ask spread. Sa pagbibilang ng bawat update nang pantay-pantay, ang average spread ng SPY ay 2.72 cents; sa pag-weight ng bawat quote ayon sa kung gaano katagal ito tumayo, 2.34 cents. Ang per-update na figure ay nagbabasa ng 0.38 cents na mas malawak nang mekanikal: ang mga update ay nagkukumpol sa eksaktong mga sandali kung kailan ang spread ay malawak at gumagalaw, habang ang isang resting order ay nabubuhay sa orasan. Sa tuwing makakita ka ng spread statistic, tanungin kung aling orasan ang sumukat nito. Ang census ay isinisiwalat, hindi nakatago: 1544 regular-hours na update ay pansamantalang crossed (ask sa ibaba ng bid, isang interleaving ng mga quote mula sa iba't ibang venue) at 0 ang nagdala ng zero bid o ask; ang mga spread statistic ay hindi kasama ang dalawa at binibilang ang mga hindi kasama.
Ang spread ay may oras
Ang pagbu-bucket sa quoted spread ng SPY sa kalahating oras ay ginagawang kurba ang microstructure na maaaring gamitin ng kahit sinumang trader:
Ang eksaktong SQL sa likod ng bawat numero
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_timeMedian na 8 cents sa 04:00 ET premarket bucket, 3 cents sa 09:30 opening bucket, at 2 cents sa 14:00 — ang pag-trade ng parehong share sa premarket open ay nagbabayad ng halos apat na beses kumpara sa spread ng isang early-afternoon order. Hindi konstante ang spread; ito ay isang iskedyul.
Eksibit na pang-imbestigasyon: ang file na huminto sa S
Bawat pang-araw na vendor file ay sumasailalim sa completeness probe bago kami mag-publish ng numero mula rito: bilangin ang mga ticker, suriin ang alphabetical na saklaw, ihambing ang mga kapitbahay. Ang FINRA off-exchange short-volume file noong Hunyo 29 ay ang eksibit para ipakita kung bakit:
Ang eksaktong SQL sa likod ng bawat numero
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 dateAng file noong Hunyo 26 ay sumasaklaw sa 15052 na ticker, A hanggang ZYME. Ang file noong Hunyo 29 ay sumasaklaw sa 5489, A hanggang SSUS — simpleng humihinto ito sa gitna ng mga pangalang nagsisimula sa S. Ang bawat ticker na alphabetically pagkatapos ng puntong iyon — kasama ang TSLA, na may 0 na row para sa Hunyo 29 kumpara sa 1 noong Hunyo 26 — ay nawawala; sa Hunyo 30 ang file ay bumalik na sa 15362 na ticker. Ang completeness probe ay walang iba kundi ang one-row-per-day na resibong ito — ang pagkakaiba sa pag-publish ng istatistika at pag-publish ng isang artifact.
Kapag ang disclosure na iyon ay naka-inline — at tanging sa ganoon — narito ang ratio: ang marked-short volume ay nakakalkula sa 45.85% ng reported off-exchange volume noong Hunyo 29, kasama ang 46.89% noong Hunyo 26 at 48.82% noong Hunyo 30. Ang numero noong Hunyo 29 ay sumasaklaw lamang sa A-hanggang-S na hiwa, kaya ituring itong isang partial na pagbasa. Ang halos kalahating short share ay ang karaniwang antas na ipinapakita ng bawat kalapit na session — at ang pang-araw na short volume ay hindi short interest.
Mga tala sa datos
Buong mga tala sa datos
- Ang katahimikan ng quote mula 5 hanggang 6 ng gabi. Ang quote stream ng SPY halos tumitigil sa 17:00 ET na kalahating oras (233 na update) at muling nabubuhay sa 18:00 (40608) — isang pattern ng feed/session na tumatawid sa mga ticker, hindi nawawalang datos.
- Ang mga fractional share ay karaniwan. 4.73% ng mga print ay may non-integer na laki; ang volume ay dapat i-sum bilang mga decimal.
- Ang code dictionary ay muling gumagamit ng mga id sa iba't ibang uri. Ang id 15 ay parehong sale condition (Market Center Official Close) at quote condition (Closed); ang bawat dictionary query dito ay nagfi-filter ng asset_class = 'stocks' AND type = 'sale_condition'. Ang isang simpleng lookup ayon sa id ay mali ang pag-label ng mga code.
- Ang mga pagbubukod sa kalidad ng quote ay binibilang in-line. Ang mga bilang ng crossed at zero-bid-or-ask ay nasa SPY microscope panel sa itaas; walang spread statistic na nagtatago ng mga drop nito.
- Ang mga whole-tape scan ay batch-only na mga panel. Ang market-wide na mga block dito ay sumukat ng humigit-kumulang 30 segundo bawat isa sa isang cold cache (ang isang na-time-out na block ay sinusubukan muli nang isang beses; ang warmed pass ay nililinis ang cap); tumatakbo ang mga ito nang isang beses sa oras ng pag-aauthorship sa pamamagitan ng gated read-only na landas, hindi kailanman live para sa mga mambabasa, at ang mga nakaimbak na resulta ang siyang rekord.
Metodolohiya
- Ang mga timestamp ay nakaimbak sa UTC at sinasala gamit ang mga raw UTC na hangganan (ang regular na oras noong Hunyo 29 ay 13:30 hanggang 20:00 UTC); ang toTimeZone ay lumilitaw lamang sa mga SELECT list.
- Ang uri ng session ay nasuri laban sa holiday calendar at sa na-obserbahang 390-bar na regular na window — hindi kailanman ipinapalagay.
- Ang "SIP-counted (matched) volume" ay ang bolyum na binibilang ng sariling condition rules ng SIP para sa consolidated total; ang exclusion set ay hinango mula sa diksyunaryo, checksum-bounded, hindi kailanman naka-hardcode.
- Ang per-update spread statistics ay nagbibigay ng pantay na timbang sa bawat NBBO update; ang time-weighted statistics ay nagbibigay ng pantay na timbang sa bawat quote batay sa kung gaano katagal ito nanatili. Ipinapakita ng pareho ang kanilang mga pagbubukod.
- Ang mga decimal na price/size column ay sinusuma nang native at ini-cast sa 64-bit floats bago ang anumang ratio o price-times-size arithmetic.
- Ang mga tick table ay nagpapanatili ng buong kasaysayan na walang rolling expiry; ang mga nakaimbak at versioned na resulta na ito ang matibay na rekord anuman ang mangyari. Katayuan ng warehouse mula Hulyo 3, 2026.
Ang bawat panel sa itaas ay isang nakaimbak na object — chart, table, at SQL na magkasama. Magbukas ng alinman sa kanila, kopyahin ang query, at dalhin ito nang higit pa sa Strasmore terminal.