2026년 7월 2일 뉴욕증시 마감 숫자로 보기
휴장 전야 로테이션: Nasdaq(나스닥) 하락 속에도 시장 폭은 긍정적이었고, 기술주는 열한 개 섹터 펀드 중 최하위를 기록했으며, 메모리 반도체는 급락 이틀째를 맞았고, 주식분할이 급락처럼 보이는 효과를 냈다.
2026년 7월 2일 목요일은 독립기념일 휴장을 하루 앞둔 마지막 거래일이었다. 헤드라인은 매도세를 전했지만, 실제로는 섹터 로테이션이 나타난 날이었다. QQQ는 -1.71%를 기록했고, DIA는 1.04% 상승했다. 시장 폭은 긍정적이었다: 유동성이 높은 종목 중 3398개가 상승한 반면 2758개가 하락했으며, 성장주 지수가 하락하는 가운데서도 전체 종목의 54.6%는 상승(녹색)을 기록했다. 열한 개 섹터 펀드 중 여덟 개가 상승 마감했다. 매도세는 기술주와, 전날 급락했던 메모리 반도체 섹터에 집중됐다.
성적표
| 티커 | 전일 종가 | 당일 시가 | 당일 종가 | 변동률(%) | 당일 고가 | 당일 저가 | 거래량(백만 주) |
|---|---|---|---|---|---|---|---|
| DIA | 522.41 | 525.49 | 527.83 | 1.04 | 528.26 | 523.73 | 3 |
| IWM | 299.31 | 300.54 | 297.53 | -0.59 | 302.23 | 294.98 | 18.5 |
| QQQ | 725.16 | 725.58 | 712.74 | -1.71 | 730.83 | 707.56 | 43.7 |
| SPY | 745.69 | 747.4 | 744.8 | -0.12 | 751.31 | 740.03 | 43.9 |
모든 수치 뒤에 숨겨진 정확한 SQL
WITH prior AS (
SELECT ticker, argMax(close, window_start) AS prior_close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'QQQ', 'DIA', 'IWM')
AND window_start >= '2026-07-01 13:30:00' AND window_start < '2026-07-01 20:00:00'
GROUP BY ticker
),
sess AS (
SELECT ticker,
argMin(open, window_start) AS day_open,
argMax(close, window_start) AS day_close,
max(high) AS day_high,
min(low) AS day_low,
round(toFloat64(sum(volume)) / 1e6, 1) AS shares_traded_m
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'QQQ', 'DIA', 'IWM')
AND window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00'
GROUP BY ticker
)
SELECT
s.ticker AS ticker,
round(toFloat64(p.prior_close), 2) AS prior_close,
round(toFloat64(s.day_open), 2) AS day_open,
round(toFloat64(s.day_close), 2) AS day_close,
round((toFloat64(s.day_close) / toFloat64(p.prior_close) - 1) * 100, 2) AS pct_change,
round(toFloat64(s.day_high), 2) AS day_high,
round(toFloat64(s.day_low), 2) AS day_low,
s.shares_traded_m AS shares_traded_m
FROM sess s
JOIN prior p ON s.ticker = p.ticker
ORDER BY s.tickerDIA가 1.04%, QQQ가 -1.71%를 기록했다는 것이 오늘 하루를 한 줄로 보여준다. 산업주와 성장주의 일간 수익률이 거의 세 포인트 차이로 벌어졌다. SPY는 -0.12%로 그 중간에서 마감했고, IWM은 -0.59%로 마감했다.
그날은 이례적이었나?
하나의 패널에 두 가지 관점을 담았다: SPY의 시가 대비 종가 변동과 QQQ의 전일 종가 대비 종가 변동을 각각 절대 변동폭 기준으로 최근 한 달 거래일과 비교해 순위를 매겼다(1위가 가장 큰 변동).
| SPY 시가-종가 변동률(%) | SPY 절대 변동 순위 | SPY 비교 거래일수 | QQQ 종가-종가 변동률(%) | QQQ 절대 변동 순위 | QQQ 비교 거래일수 | 최초 거래일 |
|---|---|---|---|---|---|---|
| -0.35 | 15 | 22 | -1.71 | 9 | 21 | 2026-06-02 |
모든 수치 뒤에 숨겨진 정확한 SQL
WITH per_day AS (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
(argMax(toFloat64(close), window_start) / argMin(toFloat64(open), window_start) - 1) * 100 AS oc_pct,
argMax(toFloat64(close), window_start) AS rth_close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'QQQ')
AND window_start >= toDateTime('2026-06-02 00:00:00')
AND window_start < toDateTime('2026-07-03 00:00:00')
AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
GROUP BY ticker, d
),
with_prev AS (
SELECT ticker, d, oc_pct,
lagInFrame(rth_close) OVER (PARTITION BY ticker ORDER BY d) AS prev_close,
(rth_close / lagInFrame(rth_close) OVER (PARTITION BY ticker ORDER BY d) - 1) * 100 AS cc_pct
FROM per_day
)
SELECT
round(anyIf(oc_pct, ticker = 'SPY' AND d = toDate('2026-07-02')), 2) AS spy_open_to_close_pct,
arrayCount(x -> x > abs(anyIf(oc_pct, ticker = 'SPY' AND d = toDate('2026-07-02'))),
groupArrayIf(abs(oc_pct), ticker = 'SPY' AND d != toDate('2026-07-02'))) + 1 AS spy_abs_move_rank,
countIf(ticker = 'SPY') AS spy_sessions_compared,
round(anyIf(cc_pct, ticker = 'QQQ' AND d = toDate('2026-07-02')), 2) AS qqq_close_over_close_pct,
arrayCount(x -> x > abs(anyIf(cc_pct, ticker = 'QQQ' AND d = toDate('2026-07-02'))),
groupArrayIf(abs(cc_pct), ticker = 'QQQ' AND d != toDate('2026-07-02') AND isFinite(cc_pct) AND prev_close > 0)) + 1 AS qqq_abs_move_rank,
countIf(ticker = 'QQQ' AND isFinite(cc_pct) AND prev_close > 0) AS qqq_sessions_compared,
toString(minIf(d, ticker = 'SPY')) AS first_session
FROM with_prev지수 차원에서는 그렇지 않았다. SPY의 -0.35% 시가 대비 종가 변동은 최근 22 거래일 중 15위로, 하위 절반에 해당한다. QQQ는 더 크게 움직였지만 그래도 극단적이지는 않았다: QQQ의 -1.71% 전일 종가 대비 종가 변동은 전일 종가가 확인되는 21 거래일(2026-06-02까지 소급) 중 9위로, 성장주 지수 기준으로는 중간 정도로 나쁜 하루였다. 개별 종목 장세에서는 7월 2일이 유독 시끄러운 하루였다.
시황: 상승 지표는 녹색, 성장주 지수는 적색
| 상승 종목수 | 하락 종목수 | 보합 종목수 | 유동성 종목 | 양일 거래 종목수 | 유동성 필터 제외 종목수 | 상승 비율(%) | 상승 종목수 | 하락 종목수 | 유동성 필터 제외 종목수 | 양일 거래 종목수 |
|---|---|---|---|---|---|---|---|---|---|---|
| 3398 | 2758 | 63 | 6219 | 11536 | 5317 | 54.6 | 3,398 | 2,758 | 5,317 | 11,536 |
모든 수치 뒤에 숨겨진 정확한 SQL
WITH per_ticker AS (
SELECT
ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-07-02 00:00:00')) AS prior_close,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-02 00:00:00')) AS day_close,
sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-02 00:00:00') AS day_dollar_volume
FROM global_markets.delayed_stocks_minute_aggs
WHERE (window_start >= '2026-07-01 13:30:00' AND window_start < '2026-07-01 20:00:00')
OR (window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00')
GROUP BY ticker
)
SELECT
countIf(day_close > prior_close AND day_dollar_volume >= 1000000) AS advancers,
countIf(day_close < prior_close AND day_dollar_volume >= 1000000) AS decliners,
countIf(day_close = prior_close AND day_dollar_volume >= 1000000) AS unchanged,
countIf(day_dollar_volume >= 1000000) AS liquid_tickers,
count() AS tickers_traded_both_sessions,
count() - countIf(day_dollar_volume >= 1000000) AS dropped_by_liquidity_filter,
round(100.0 * countIf(day_close > prior_close AND day_dollar_volume >= 1000000)
/ countIf(day_dollar_volume >= 1000000), 1) AS advancer_pct,
reverse(arrayStringConcat(extractAll(reverse(toString(countIf(day_close > prior_close AND day_dollar_volume >= 1000000))), '[0-9]{1,3}'), ',')) AS advancers_fmt,
reverse(arrayStringConcat(extractAll(reverse(toString(countIf(day_close < prior_close AND day_dollar_volume >= 1000000))), '[0-9]{1,3}'), ',')) AS decliners_fmt,
reverse(arrayStringConcat(extractAll(reverse(toString(count() - countIf(day_dollar_volume >= 1000000))), '[0-9]{1,3}'), ',')) AS dropped_by_liquidity_filter_fmt,
reverse(arrayStringConcat(extractAll(reverse(toString(count())), '[0-9]{1,3}'), ',')) AS tickers_traded_both_sessions_fmt
FROM per_ticker
WHERE prior_close > 0 AND day_close > 0상승 종목 3,398개, 하락 종목 2,758개, 보합 63개로, QQQ가 하락하는 동안 유동성 상위 종목의 54.6%는 상승했다. 시가총액 가중 지수와 종목 수 기준 상승폭 지표가 서로 다른 신호를 냈다. 이런 날이 바로 두 지표를 함께 봐야 하는 이유다. 필터는 거래액 100만 달러 미만인 양일 거래 종목 11,536개 중 5,317개를 제외한다.
섹터별 점검: 상승세는 어디에 있었나
시장 폭(breadth)은 종목수만 집계할 뿐, 그 상승·하락의 성격까지는 말해주지 않는다. 11개 SPDR 섹터 펀드는 이날 거래를 업종별로 쪼개 보여주며, 최고 섹터와 최저 섹터 간 격차는 하루치 분산도를 하나의 숫자로 압축해 보여준다.
| 티커 | 전일 종가 | 당일 종가 | 변동률(%) | 최저 섹터 대비 포인트 | 당일 거래금액(10억$) |
|---|---|---|---|---|---|
| XLB | 51 | 51.99 | 1.94 | 4.65 | 0.57 |
| XLC | 109.74 | 109.6 | -0.13 | 2.58 | 0.83 |
| XLE | 52.82 | 53.23 | 0.78 | 3.48 | 1.46 |
| XLF | 54.79 | 55.61 | 1.5 | 4.2 | 2.36 |
| XLI | 183.41 | 183.91 | 0.27 | 2.98 | 1.15 |
| XLK | 185.54 | 180.52 | -2.71 | 0 | 2.43 |
| XLP | 83.33 | 85 | 2 | 4.71 | 1.33 |
| XLRE | 44.18 | 44.69 | 1.15 | 3.86 | 0.22 |
| XLU | 44.76 | 45.76 | 2.23 | 4.94 | 1.05 |
| XLV | 159.57 | 163.77 | 2.63 | 5.34 | 2.01 |
| XLY | 118.07 | 117.11 | -0.81 | 1.89 | 1.2 |
모든 수치 뒤에 숨겨진 정확한 SQL
WITH per_etf AS (
SELECT
ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-07-02 00:00:00')) AS prior_close,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-02 00:00:00')) AS day_close,
round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-02 00:00:00') / 1e9, 2) AS day_dollar_bn
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('XLB', 'XLC', 'XLE', 'XLF', 'XLI', 'XLK', 'XLP', 'XLRE', 'XLU', 'XLV', 'XLY')
AND ((window_start >= '2026-07-01 13:30:00' AND window_start < '2026-07-01 20:00:00')
OR (window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00'))
GROUP BY ticker
)
SELECT
ticker,
round(prior_close, 2) AS prior_close,
round(day_close, 2) AS day_close,
round((day_close / prior_close - 1) * 100, 2) AS pct_chg,
round((day_close / prior_close - 1) * 100 - min((day_close / prior_close - 1) * 100) OVER (), 2) AS pts_above_worst_sector,
day_dollar_bn
FROM per_etf
ORDER BY ticker헬스케어(XLV)가 2.63%로 1위를 차지했고, 유틸리티 2.23%, 필수소비재 2%, 소재 1.94%가 뒤를 이었다. 기술(XLK)은 -2.71%로 최하위를 기록했으며, 한 포인트 넘게 하락한 유일한 섹터였다. 임의소비재(-0.81%)와 커뮤니케이션서비스(-0.13%)도 하락한 나머지 두 섹터였고, 남은 여덟 개 섹터는 모두 상승했다. 최고-최저 분산도는 5.34퍼센트포인트였다. DIA 상승·QQQ 하락의 분리는 단 4개 대형 기술주에 국한되지 않고 시장 전반에서 나타났으며, 이것이 나스닥 지수가 하락하는 가운데서도 상승-하락 종목수 지표(advance-decline line)가 양(+)의 흐름을 보인 것이 모순이 아닌 이유다.
오늘의 핵심: 메모리 반도체 폭락, 이틀째
수요일 꺾였던 메모리 섹터는 목요일 더 크게 무너졌다. 여기서 짚는 것은 하락의 규모와 종목 간 동반성이며, 원인 분석은 다루지 않는다.
| 티커 | 전일 종가 | 당일 종가 | 변동률(%) | 당일 고가 | 당일 고가 시각(ET, 동부시간) | 당일 저가 | 당일 저가 시각(ET) | 변동폭(%) | 당일 거래금액(10억$) |
|---|---|---|---|---|---|---|---|---|---|
| MU | 1033.29 | 975.77 | -5.57 | 1064.64 | 10:03 | 950.28 | 15:26 | 12.03 | 51.4 |
| SNDK | 2035.07 | 1743.59 | -14.32 | 2052.54 | 09:35 | 1693 | 15:26 | 21.24 | 26.57 |
| STX | 915.25 | 820.25 | -10.38 | 923.06 | 09:53 | 795.66 | 14:23 | 16.01 | 4.74 |
| WDC | 598.37 | 538.99 | -9.92 | 609.46 | 09:35 | 525.84 | 13:59 | 15.9 | 4.31 |
모든 수치 뒤에 숨겨진 정확한 SQL
WITH per_name AS (
SELECT
ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-07-02 00:00:00')) AS prior_close,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-02 00:00:00')) AS day_close,
maxIf(toFloat64(high), window_start >= '2026-07-02 00:00:00') AS day_high,
minIf(toFloat64(low), window_start >= '2026-07-02 00:00:00') AS day_low,
argMinIf(window_start, toFloat64(low), window_start >= '2026-07-02 00:00:00') AS low_bar,
argMaxIf(window_start, toFloat64(high), window_start >= '2026-07-02 00:00:00') AS high_bar,
round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-02 00:00:00') / 1e9, 2) AS day_dollar_bn
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('MU', 'SNDK', 'STX', 'WDC')
AND ((window_start >= '2026-07-01 13:30:00' AND window_start < '2026-07-01 20:00:00')
OR (window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00'))
GROUP BY ticker
)
SELECT
ticker,
round(prior_close, 2) AS prior_close,
round(day_close, 2) AS day_close,
round((day_close / prior_close - 1) * 100, 2) AS pct_chg,
round(day_high, 2) AS day_high,
formatDateTime(toTimeZone(high_bar, 'America/New_York'), '%H:%i') AS day_high_et,
round(day_low, 2) AS day_low,
formatDateTime(toTimeZone(low_bar, 'America/New_York'), '%H:%i') AS day_low_et,
round((day_high / day_low - 1) * 100, 2) AS range_pct,
day_dollar_bn
FROM per_name
ORDER BY tickerSanDisk는 -14.32%, Seagate는 -10.38%, Western Digital은 -9.92%, MU는 -5.57%를 기록했다. MU 거래액은 51.4십억 달러로 SPY 거래액의 약 한 배 반에 달했다. MU와 SanDisk는 장중 저점을 늦게 찍었고(15:26, 15:26 ET), Seagate와 Western Digital은 더 일찍 저점을 기록했다(14:23, 13:59). 참고: 수요일 및 MU 심층 분석.
로테이션의 나머지 절반은 초대형주에서 나타났다:
| 티커 | 전일 종가 | 당일 종가 | 변동률(%) | 당일 고가 | 당일 고가 시각(ET, 동부시간) | 당일 저가 | 당일 저가 시각(ET) | 변동폭(%) | 당일 거래금액(10억$) |
|---|---|---|---|---|---|---|---|---|---|
| AAPL | 294.25 | 308.22 | 4.75 | 309.42 | 15:57 | 293.68 | 09:30 | 5.36 | 18.36 |
| MSFT | 384.22 | 389.62 | 1.41 | 392.2 | 15:11 | 383.7 | 09:35 | 2.22 | 12.58 |
| NVDA | 197.58 | 194.51 | -1.55 | 200.06 | 10:03 | 192.35 | 13:40 | 4.01 | 21.18 |
| TSLA | 425.34 | 392.81 | -7.65 | 432.35 | 09:31 | 389.3 | 15:23 | 11.06 | 25.41 |
모든 수치 뒤에 숨겨진 정확한 SQL
WITH per_name AS (
SELECT
ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-07-02 00:00:00')) AS prior_close,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-02 00:00:00')) AS day_close,
maxIf(toFloat64(high), window_start >= '2026-07-02 00:00:00') AS day_high,
minIf(toFloat64(low), window_start >= '2026-07-02 00:00:00') AS day_low,
argMinIf(window_start, toFloat64(low), window_start >= '2026-07-02 00:00:00') AS low_bar,
argMaxIf(window_start, toFloat64(high), window_start >= '2026-07-02 00:00:00') AS high_bar,
round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-02 00:00:00') / 1e9, 2) AS day_dollar_bn
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'TSLA')
AND ((window_start >= '2026-07-01 13:30:00' AND window_start < '2026-07-01 20:00:00')
OR (window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00'))
GROUP BY ticker
)
SELECT
ticker,
round(prior_close, 2) AS prior_close,
round(day_close, 2) AS day_close,
round((day_close / prior_close - 1) * 100, 2) AS pct_chg,
round(day_high, 2) AS day_high,
formatDateTime(toTimeZone(high_bar, 'America/New_York'), '%H:%i') AS day_high_et,
round(day_low, 2) AS day_low,
formatDateTime(toTimeZone(low_bar, 'America/New_York'), '%H:%i') AS day_low_et,
round((day_high / day_low - 1) * 100, 2) AS range_pct,
day_dollar_bn
FROM per_name
ORDER BY tickerAAPL은 4.75% 상승하며 하루 종일 한 방향으로만 움직였다. 저점은 09:30 ET, 고점은 마감 세 분 전인 15:57였다. 반면 TSLA는 정반대 양상을 보이며 -7.65%를 기록했다. MSFT는 1.41% 상승했고, NVDA는 -1.55%로 마감했다. 같은 지수, 상반된 하루.
자금이 거래된 곳
| 티커 | 리더보드 | 달러 거래량(십억) | 달러 가치(백만) | 주식 수(백만) | 리더보드 선두 대비 비율(%) |
|---|---|---|---|---|---|
| MU | by dollars traded | 51.4 | None | 51.9 | 100 |
| SPY | by dollars traded | 32.7 | None | 43.9 | 63.6 |
| QQQ | by dollars traded | 31.3 | None | 43.7 | 60.9 |
| SNDK | by dollars traded | 26.57 | None | 14.6 | 51.7 |
| TSLA | by dollars traded | 25.41 | None | 63.6 | 49.4 |
| NVDA | by dollars traded | 21.18 | None | 108.6 | 41.2 |
| SOXS | by shares traded | 3.24 | None | 748.2 | 100 |
| TZA | by shares traded | 1.27 | None | 325.7 | 43.5 |
| LIMN | by shares traded | 0.04 | 42 | 245.7 | 32.8 |
| BITO | by shares traded | 1.71 | None | 204.9 | 27.4 |
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT ticker, leaderboard, dollar_volume_bn, if(dollar_volume_bn < 1, dollar_volume_m, NULL) AS dollar_value_m, shares_m,
round(100 * if(leaderboard = 'by dollars traded', dollar_volume_bn, shares_m)
/ max(if(leaderboard = 'by dollars traded', dollar_volume_bn, shares_m)) OVER (PARTITION BY leaderboard), 1) AS pct_of_board_leader
FROM (
SELECT
'by dollars traded' AS leaderboard,
ticker,
round(sum(toFloat64(close) * toFloat64(volume)) / 1e9, 2) AS dollar_volume_bn,
round(sum(toFloat64(close) * toFloat64(volume)) / 1e6, 0) AS dollar_volume_m,
round(sum(toFloat64(volume)) / 1e6, 1) AS shares_m
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00'
AND ticker NOT IN ('SPCX')
GROUP BY ticker
ORDER BY dollar_volume_bn DESC
LIMIT 6
UNION ALL
SELECT
'by shares traded' AS leaderboard,
ticker,
round(sum(toFloat64(close) * toFloat64(volume)) / 1e9, 2) AS dollar_volume_bn,
round(sum(toFloat64(close) * toFloat64(volume)) / 1e6, 0) AS dollar_volume_m,
round(sum(toFloat64(volume)) / 1e6, 1) AS shares_m
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00'
AND ticker NOT IN ('SPCX')
GROUP BY ticker
ORDER BY shares_m DESC
LIMIT 4
)
ORDER BY leaderboard ASC, if(leaderboard = 'by dollars traded', dollar_volume_bn, shares_m) DESCMU는 51.4억 달러로, SPY의 32.7억 달러를 제치고 나흘 연속(월요일, 화요일, 수요일에 이어) 거래액 집계에서 1위를 지켰다. SanDisk도 26.57억 달러를 기록하며 메모리 관련 종목으로는 두 번째로 상위 4위 안에 들었다. 3배 인버스 반도체 ETF인 SOXS는 748.2백만 주로 거래 주식 수 기준 1위에 올랐다. 주가가 낮은 종목은 거래 주식 수 집계에서 강세를 보이고, 주가가 높은 종목은 거래액 집계에서 강세를 보인다. 상대 거래량은 두 지표 모두를 해당 종목 자체의 평소 수준과 비교한 값이다. 기준: 7월 2일 정규장 거래이며, 종목코드가 재사용된 상장 종목 1건은 제외했다(증빙자료).
| 동부시간(ET) | 주식 수(십억) | 최대 구간 대비 비율(%) |
|---|---|---|
| 09:30 | 2.13 | 60.5 |
| 10:00 | 1.64 | 46.4 |
| 10:30 | 1.64 | 46.5 |
| 11:00 | 1.41 | 40 |
| 11:30 | 1.05 | 29.7 |
| 12:00 | 1.03 | 29.2 |
| 12:30 | 0.96 | 27.3 |
| 13:00 | 0.87 | 24.7 |
| 13:30 | 0.85 | 24.2 |
| 14:00 | 0.89 | 25.3 |
| 14:30 | 0.81 | 23.1 |
| 15:00 | 1.05 | 29.8 |
| 15:30 | 3.53 | 100 |
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT
et_time,
round(sum(shares) / 1e9, 2) AS shares_bn,
round(100 * sum(shares) / max(sum(shares)) OVER (), 1) AS pct_of_biggest_bucket
FROM
(
SELECT
formatDateTime(toStartOfInterval(toTimeZone(window_start, 'America/New_York'), INTERVAL 30 MINUTE), '%H:%i') AS et_time,
toFloat64(volume) AS shares
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00'
UNION ALL
SELECT
'15:30' AS et_time,
toFloat64(size) AS shares
FROM global_markets.stocks_trades
WHERE sip_timestamp >= '2026-07-02 20:00:00' AND sip_timestamp < '2026-07-02 20:15:00'
AND has(conditions, 8)
)
GROUP BY et_time
ORDER BY et_time개장 후 첫 30분 동안 거래된 주식은 2.13억 주였다. 0.81억 주로 14:30에 거래량이 가장 적었다. 휴장 전날 마감 무렵에는 3.53억 주가 거래되며 마지막 구간이 하루 중 거래량이 가장 많았다. 이는 마감 단일가매매가 대기 주문들을 하나의 체결로 모으기 때문이다.
옵션 체결 기록: 조정된 위클리옵션 만기의 도래
| 옵션 체결 건수(백만) | 계약 수(백만) | 콜 비율(%) | 당일 만기 비율(%) | 7월2일(목) 만기 계약 수(백만) | 7월3일(금) 만기 체결 건수 | 7월10일 주간 계약 수(백만) | 7월17일 월간 계약 수(백만) | SPY 계약 수(백만) | QQQ 계약 수(백만) | 최다 계약 기초자산 | 최다 계약 행사가 | 최다 계약 유형 | 최다 계약 만기 | 최다 계약 거래량 | 최다 계약 거래량(표시) | 최다 계약 평균가 | 행사가-SPY 종가 차이 | SPY 종가-행사가 차이 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 13.15 | 80.96 | 58.4 | 47.4 | 38.38 | 0 | 9.64 | 8.82 | 13.96 | 8.5 | SPY | 740 | P | 2026-07-02 | 540403 | 540,403 | 0.499 | -4.8 | 4.8 |
모든 수치 뒤에 숨겨진 정확한 SQL
WITH
(
SELECT (any(underlying_symbol), any(toFloat64(strike_price)), any(option_type),
any(toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6)))),
sum(size), count(), round(avg(toFloat64(price)), 3))
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-02 00:00:00' AND sip_timestamp < '2026-07-03 00:00:00'
GROUP BY ticker
ORDER BY sum(size) DESC
LIMIT 1
) AS top_contract,
(
SELECT round(toFloat64(argMax(close, window_start)), 2)
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00'
) AS spy_regular_close
SELECT
round(count() / 1e6, 2) AS option_prints_m,
round(toFloat64(sum(size)) / 1e6, 2) AS contracts_m,
round(100.0 * sumIf(size, option_type = 'C') / sum(size), 1) AS call_pct_of_volume,
round(100.0 * sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260702') / sum(size), 1) AS same_day_expiry_pct,
round(toFloat64(sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260702')) / 1e6, 2) AS thu_jul2_expiry_contracts_m,
countIf(substring(ticker, length(ticker) - 14, 6) = '260703') AS fri_jul3_expiry_prints,
round(toFloat64(sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260710')) / 1e6, 2) AS jul10_weekly_contracts_m,
round(toFloat64(sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260717')) / 1e6, 2) AS jul17_monthly_contracts_m,
round(toFloat64(sumIf(size, underlying_symbol = 'SPY')) / 1e6, 2) AS spy_contracts_m,
round(toFloat64(sumIf(size, underlying_symbol = 'QQQ')) / 1e6, 2) AS qqq_contracts_m,
top_contract.1 AS top_contract_underlying,
top_contract.2 AS top_contract_strike,
top_contract.3 AS top_contract_type,
top_contract.4 AS top_contract_expiry,
top_contract.5 AS top_contract_volume,
reverse(arrayStringConcat(extractAll(reverse(toString(assumeNotNull(top_contract.5))), '[0-9]{1,3}'), ',')) AS top_contract_volume_fmt,
round(top_contract.7, 3) AS top_contract_avg_price,
round(top_contract.2 - spy_regular_close, 2) AS top_strike_minus_spy_close,
round(spy_regular_close - top_contract.2, 2) AS spy_close_minus_strike
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-02 00:00:00' AND sip_timestamp < '2026-07-03 00:00:00'옵션은 80.96백만 계약이 13.15백만 건의 체결을 통해 거래되었으며, 이 거래량 중 47.4%가 같은 목요일에 만기되었다. 7월 3일 만기 코드를 가진 계약은 하루 종일 단 한 건도 체결되지 않았다(체결 0건). 따라서 목요일은 일일 만기와 해당 주의 조정된 위클리옵션 만기를 동시에 떠안게 되었다. 가장 활발히 거래된 계약은 당일 만기 SPY 740달러 풋옵션이었다. 540,403 계약이 평균 0.499달러 프리미엄에 거래되었다. SPY는 행사가격보다 4.8달러 높은 가격에 마감해 외가격으로 끝났으며, 화요일과 수요일에는 콜옵션이 최다 거래 계약 자리를 차지했던 것과 달리 이번에는 풋옵션이 그 자리에 올랐다. 콜옵션은 여전히 전체 거래량의 58.4%를 차지했다. 다음 위클리옵션은 9.64백만 계약, 7월 월물옵션은 8.82백만 계약이 거래되었다(만기 메커니즘).
호가 테이프: 거래 비용은 얼마였나
가격은 무슨 일이 일어났는지를 보여주고, 호가는 그 대가로 얼마가 들었는지를 보여준다. 매수-매도 스프레드는 모든 왕복 거래에 부과되는 통행료로, 중간가격 대비 베이시스포인트(1베이시스포인트는 1퍼센트의 100분의 1이다)로 측정한다. 우리는 평범한 날이든 그렇지 않은 날이든 매 거래일마다 이를 측정하며, 바로 이 때문에 "스프레드가 폭넓게 벌어졌다"는 주장은 반증 가능한 명제가 된다.
| 7월2일 업데이트 수(백만) | 7월1일 업데이트 수(백만) | 전일 대비 변화율(%) | 7월2일 SPY 업데이트 수(백만) | 7월2일 QQQ 업데이트 수(백만) | 7월2일 MU 업데이트 수(백만) |
|---|---|---|---|---|---|
| 597.22 | 449.15 | 33 | 5.42 | 7.56 | 1.01 |
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT
round(countIf(toDate(sip_timestamp) = toDate('2026-07-02')) / 1e6, 2) AS jul2_updates_m,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-01')) / 1e6, 2) AS jul1_updates_m,
round((countIf(toDate(sip_timestamp) = toDate('2026-07-02')) / countIf(toDate(sip_timestamp) = toDate('2026-07-01')) - 1) * 100, 1) AS day_over_day_pct,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-02') AND ticker = 'SPY') / 1e6, 2) AS jul2_spy_updates_m,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-02') AND ticker = 'QQQ') / 1e6, 2) AS jul2_qqq_updates_m,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-02') AND ticker = 'MU') / 1e6, 2) AS jul2_mu_updates_m
FROM global_markets.cache_stocks_quotes
WHERE sip_timestamp >= '2026-07-01 00:00:00' AND sip_timestamp < '2026-07-03 00:00:00'통합 호가창 최상단에 해당하는 전미 최우선매수·매도호가(NBBO, National Best Bid and Offer)는 7월 2일 597.22백만 회 갱신되어, 7월 1일의 449.15백만 회 대비 33% 급증했다. 장 마감을 향해 가는 구간에서 나타난 변화다. QQQ는 7.56백만 회로 SPY의 5.42백만 회를 상회했고, MU는 1.01백만 회였다.
| 티커 | 스프레드 중간값(bps) | 스프레드 중간값(센트) | SPY 스프레드 대비 배수 | RTH 업데이트(백만) | 무효 호가 제외 |
|---|---|---|---|---|---|
| SPY | 0.27 | 2 | 1 | 4.98 | 19064 |
| QQQ | 0.83 | 6 | 3.1 | 6.03 | 5934 |
| NVDA | 1.03 | 2 | 3.8 | 2.55 | 20398 |
| AAPL | 1.62 | 5 | 6 | 1.91 | 5193 |
| TSLA | 2.29 | 9 | 8.5 | 0.85 | 2699 |
| MU | 5.52 | 55 | 20.4 | 0.92 | 2442 |
| SNDK | 10.4 | 189 | 38.5 | 0.26 | 163 |
| WDC | 10.79 | 60 | 40 | 0.14 | 83 |
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT
ticker,
round(med_bps, 2) AS median_spread_bps,
round(med_dollars * 100, 1) AS median_spread_cents,
round(med_bps / min(med_bps) OVER (), 1) AS times_the_spy_spread,
round(quote_updates / 1e6, 2) AS rth_updates_m,
invalid_quotes_dropped
FROM (
SELECT
ticker,
quantileExactIf(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000,
toFloat64(bid_price) > 0 AND toFloat64(ask_price) > toFloat64(bid_price)) AS med_bps,
quantileExactIf(0.5)(toFloat64(ask_price) - toFloat64(bid_price),
toFloat64(bid_price) > 0 AND toFloat64(ask_price) > toFloat64(bid_price)) AS med_dollars,
count() AS quote_updates,
countIf(NOT (toFloat64(bid_price) > 0 AND toFloat64(ask_price) > toFloat64(bid_price))) AS invalid_quotes_dropped
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'QQQ', 'AAPL', 'TSLA', 'NVDA', 'MU', 'SNDK', 'WDC')
AND sip_timestamp >= '2026-07-02 13:30:00' AND sip_timestamp < '2026-07-02 20:00:00'
GROUP BY ticker
)
ORDER BY median_spread_bps ASCSPY의 중간값 호가 스프레드는 0.27베이시스포인트였다. 이는 약 2센트로, $744.8 ETF 기준이다. QQQ는 0.83bp, NVDA는 1.03bp였다. 이번 하락을 주도한 종목들은 거래 비용이 비싼 종목들이었다: MU 5.52bp, SanDisk 10.4bp, Western Digital 10.79bp로, SPY 스프레드의 40배였다. 가격 영향을 따지기도 전에, 메모리 관련 종목 바스켓을 매매하는 비용은 지수를 매매하는 비용의 몇 배에 달했다. 무효 호가(편측 호가, 역전 호가)는 종목별로 집계될 뿐, 숨겨지지 않는다.
| 7/2 스프레드 중간값(bps) | 후행 중간값(bps) | 7/2−후행 차이(bps) | 확대 순위 | 비교 세션 수 | 최대폭 세션(bps) |
|---|---|---|---|---|---|
| 0.27 | 0.27 | 0 | 11 | 22 | 0.409 |
모든 수치 뒤에 숨겨진 정확한 SQL
WITH per_day AS (
SELECT toDate(sip_timestamp) AS d,
quantileExact(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000) AS med_bps
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'SPY'
AND sip_timestamp >= '2026-06-02 00:00:00' AND sip_timestamp < '2026-07-03 00:00:00'
AND (toHour(sip_timestamp) * 60 + toMinute(sip_timestamp)) BETWEEN 810 AND 1199
AND toFloat64(bid_price) > 0 AND toFloat64(ask_price) > toFloat64(bid_price)
GROUP BY d
)
SELECT
round(anyIf(med_bps, d = toDate('2026-07-02')), 3) AS jul2_median_spread_bps,
round(quantileExact(0.5)(med_bps), 3) AS trailing_median_bps,
round(anyIf(med_bps, d = toDate('2026-07-02')) - quantileExact(0.5)(med_bps), 3) AS jul2_minus_trailing_bps,
arrayCount(x -> x > anyIf(med_bps, d = toDate('2026-07-02')), groupArrayIf(med_bps, d != toDate('2026-07-02'))) + 1 AS wider_rank,
count() AS sessions_compared,
round(max(med_bps), 3) AS widest_session_bps
FROM per_day유동성 측면에서는 평범한 하루였다는 것이 이번 분석의 결론이다. SPY의 중간값 스프레드 0.27bp는 최근 한 달 중간값과 0bp밖에 차이가 나지 않았다(해당 월간 중간값은 0.27bp였다). 스프레드 폭 기준으로는 11위(전체 22개 거래일 중)에 그쳤으며, 월중 최대치인 0.409bp와는 거리가 멀었다. 지수가 상승한 가운데 일부 종목에 집중된 급락이 있었지만, 시장 인프라에는 부담을 주지 않았다.
금리: 7월 2일 지표, 발표되다
| 7/2 행 수 | 7/1 행 수 |
|---|---|
| 1 | 1 |
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT
(SELECT count() FROM global_markets.treasury_yields WHERE date = '2026-07-02') AS jul2_rows,
(SELECT count() FROM global_markets.treasury_yields WHERE date = '2026-07-01') AS jul1_rows재무부 데이터 피드는 테이프보다 하루 이틀 늦게 반영된다. 최초 게시 시점에는 7월 2일 종가 데이터가 전혀 없었고, 이 페이지는 추측 대신 그 사실을 그대로 밝혔다. 이후 해당 지표가 발표되어 7월 2일에는 1 행, 7월 1일에는 1 행이 채워졌으며, 아래 패널은 해당 거래일의 커브를 그대로 담고 있다.
| 커브 포인트 | 7/2 수익률(%) | 1일 변동(bp) |
|---|---|---|
| 1 month | 3.7 | 3 |
| 3 month | 3.82 | -3 |
| 1 year | 3.96 | -4 |
| 2 year | 4.14 | -3 |
| 5 year | 4.23 | -1 |
| 10 year | 4.49 | 1 |
| 30 year | 4.98 | 1 |
| 2s10s spread | 0.35 | 4 |
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT
t.1 AS curve_point,
round(t.2, 2) AS jul2_yield_pct,
round((t.2 - t.3) * 100) AS one_day_change_bp
FROM (
SELECT arrayJoin([
('1 month', toFloat64(d.yield_1_month), toFloat64(p.yield_1_month)),
('3 month', toFloat64(d.yield_3_month), toFloat64(p.yield_3_month)),
('1 year', toFloat64(d.yield_1_year), toFloat64(p.yield_1_year)),
('2 year', toFloat64(d.yield_2_year), toFloat64(p.yield_2_year)),
('5 year', toFloat64(d.yield_5_year), toFloat64(p.yield_5_year)),
('10 year', toFloat64(d.yield_10_year), toFloat64(p.yield_10_year)),
('30 year', toFloat64(d.yield_30_year), toFloat64(p.yield_30_year)),
('2s10s spread', toFloat64(d.yield_10_year - d.yield_2_year), toFloat64(p.yield_10_year - p.yield_2_year))
]) AS t
FROM (SELECT * FROM global_markets.treasury_yields WHERE date = '2026-07-02') AS d,
(SELECT * FROM global_markets.treasury_yields WHERE date = '2026-07-01') AS p
)종가 기준 10년물은 4.49%을 기록했고, 2s10s 스프레드는 0.35 포인트였다.
그날을 움직인 일정
| 배당제외 기록 | 실행된 분할 | 주식분할 | 주식병합 | 분할 기록 | IPO 상장 | SEC 공시 | 내부자 Form 4 공시 | 8-K 공시 | IPO 종목명 | 뉴스 기사 | 뉴스 발행사 | 최다 보도 종목 | 최다 보도 기사 수 | CRWD 분할 전 | CRWD 분할 후 | CRWD 전일 종가 | CRWD 당일 종가 | CRWD 금액($M) | 바 표시 분할 종목명 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 322 | 8 | 5 | 3 | CRWD 4-for-1; FBIP 4-for-1; FNCSF 110-for-100; GMEX 1-for-9; GTCDF 1-for-5; SMTOY 8-for-1; UBYH 1-for-10; VLNT 10-for-1 | 2 | 5203 | 2109 | 258 | MIACU — Meridian3 Industrials Acquisition Corp.; VIIU — Viking Acquisition Corp. II | 201 | 3 | NVDA | 18 | 1 | 4 | 772.45 | 193.67 | 1473.51 | 2 |
모든 수치 뒤에 숨겨진 정확한 SQL
WITH
(
SELECT (count(), uniqExact(publisher))
FROM global_markets.stocks_news
WHERE toDate(toTimeZone(published_utc, 'America/New_York')) = '2026-07-02'
) AS news,
(
SELECT (argMax(t, n), max(n))
FROM (
SELECT t, count() AS n
FROM (
SELECT arrayJoin(tickers) AS t
FROM global_markets.stocks_news
WHERE toDate(toTimeZone(published_utc, 'America/New_York')) = '2026-07-02'
)
WHERE t != 'SPCX'
GROUP BY t
)
) AS top_news,
(
SELECT (count(), countIf(split_to > split_from), countIf(split_to < split_from),
arrayStringConcat(groupArray(concat(ticker, ' ', toString(split_to), '-for-', toString(split_from))), '; '))
FROM global_markets.stocks_splits
WHERE execution_date = '2026-07-02' AND ticker NOT IN ('SPCX')
) AS splits
SELECT
(SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date = '2026-07-02') AS ex_dividend_records,
splits.1 AS splits_executed,
splits.2 AS forward_splits,
splits.3 AS reverse_splits,
splits.4 AS split_records,
(SELECT count() FROM global_markets.stocks_ipos WHERE listing_date = '2026-07-02') AS ipos_listed,
(SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-02') AS sec_filings,
(SELECT uniqExactIf(accession_number, form_type = '4') FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-02') AS insider_form4_filings,
(SELECT uniqExactIf(accession_number, form_type = '8-K') FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-02') AS filings_8k,
(SELECT arrayStringConcat(groupArray(concat(ticker, ' — ', issuer_name)), '; ') FROM (
SELECT ticker, issuer_name FROM global_markets.stocks_ipos WHERE listing_date = '2026-07-02' ORDER BY ticker
)) AS ipo_names,
news.1 AS news_articles,
news.2 AS news_publishers,
top_news.1 AS most_covered_ticker,
top_news.2 AS most_covered_articles,
(SELECT any(split_from) FROM global_markets.stocks_splits WHERE ticker = 'CRWD' AND execution_date = '2026-07-02') AS crwd_split_from,
(SELECT any(split_to) FROM global_markets.stocks_splits WHERE ticker = 'CRWD' AND execution_date = '2026-07-02') AS crwd_split_to,
(SELECT round(toFloat64(argMax(close, window_start)), 2) FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'CRWD' AND window_start >= '2026-07-01 13:30:00' AND window_start < '2026-07-01 20:00:00') AS crwd_prev_close,
(SELECT round(toFloat64(argMax(close, window_start)), 2) FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'CRWD' AND window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00') AS crwd_day_close,
(SELECT round(sum(toFloat64(close) * toFloat64(volume)) / 1e6, 2) FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'CRWD' AND window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00') AS crwd_dollar_m,
(SELECT count() FROM (
SELECT ticker FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN (SELECT ticker FROM global_markets.stocks_splits WHERE execution_date = '2026-07-02')
AND window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00'
GROUP BY ticker
)) AS split_names_with_bars322건의 배당 기록이 배당락을 맞았고, 2건의 신규 상장이 이루어졌으며(MIACU — Meridian3 Industrials Acquisition Corp.; VIIU — Viking Acquisition Corp. II), SEC 인덱스에는 휴장을 앞두고 5203건의 공시가 접수되었다. 이 중 2109건은 Form 4, 258건은 8-K였다. 뉴스 피드에는 기사 201건이 올라왔고, 이는 3개 매체에서 나온 것이었다(가장 많이 다뤄진 것은 NVDA, 관련 기사는 18건).
분할은 조정 전 종가만 보는 사람이라면 누구나 빠지기 쉬운 함정이다. CRWD는 4대 1 비율로 주식분할을 실시했고, 그 결과 미조정 시세에는 수요일 772.45달러, 목요일 193.67달러로 표시되었다. 이는 사실 기존 주식 한 주당 새 주식 네 주가 배정된 것일 뿐인 가짜 하락이다. CRWD만 그런 것은 아니었다. 분할 기록은 총 8건 집행되었고, 이 중 5건은 주식분할, 3건은 주식병합이었다(split_records 열에 목록이 있다). 주식병합은 반대의 왜곡을 낳는데, 미조정 가격이 하룻밤 사이 급등한 것처럼 보이게 만든다. 이 종목들 가운데 실제로 우리 시세에서 거래된 것은 2건뿐이었다. CRWD의 1473.51백만 달러 거래액은 스크리닝 결과를 왜곡할 만큼 규모가 큰 유일한 사례이며, 이곳의 모든 급등락 종목 화면에서는 이를 제외하고 있다.
다음 일정
예측이 아니라 달력상의 사실로, 표에 담긴 다음 거래일 정보를 그대로 전달한다.
| 7월 6일 SPY 정규장 바 | 7월 6일 배당락 기록 | 가계 배당락(7월 6일) | 7월 6일 분할 | 다음 예정 휴장일 | 다음 휴장명 | 다음 휴장 상태 | 최신 SI(공매도 잔고) 정산일 | SI 정산 경과일수(일) |
|---|---|---|---|---|---|---|---|---|
| 390 | 119 | JPM | 15 | 2026-09-07 | Labor Day | closed | 2026-06-30 | 2 |
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT
(SELECT count() FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-06 20:00:00') AS jul6_spy_regular_bars,
(SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date = '2026-07-06') AS exdiv_records_jul6,
(SELECT arrayStringConcat(groupArray(ticker), ', ') FROM global_markets.stocks_dividends
WHERE ex_dividend_date = '2026-07-06'
AND ticker IN ('AAPL', 'MSFT', 'JPM', 'JNJ', 'XOM', 'KO', 'PG', 'WMT', 'CVX', 'HD')) AS household_exdivs_jul6,
(SELECT count() FROM global_markets.stocks_splits WHERE execution_date = '2026-07-06') AS splits_jul6,
(SELECT toString(min(date)) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-02') AS next_scheduled_closure,
(SELECT any(name) FROM global_markets.stocks_market_holidays
WHERE date = (SELECT min(date) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-02')) AS next_closure_name,
(SELECT any(status) FROM global_markets.stocks_market_holidays
WHERE date = (SELECT min(date) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-02')) AS next_closure_status,
(SELECT toString(max(settlement_date)) FROM global_markets.stocks_short_interest
WHERE settlement_date <= '2026-07-02') AS latest_si_settlement,
(SELECT dateDiff('day', max(settlement_date), toDate('2026-07-02')) FROM global_markets.stocks_short_interest
WHERE settlement_date <= '2026-07-02') AS si_settlement_age_days7월 6일 월요일은 390개 바(bar) 전체가 기록된 정규 거래일로 재개되었으며, 이는 해당 바 데이터로 직접 검증된 것이다. 이날은 119건의 배당락(ex-dividend) 기록을 남겼고, 우리가 추적하는 10개 종목 중 하나인 널리 알려진 대형주(JPM)가 포함되었으며, 15건의 주식분할 체결이 있었다. 다음 예정된 휴장일은 Labor Day, 2026-09-07(closed)이다. 공매도 잔고(short interest)는 늘 그렇듯 이미 지난 정보였다. 보유 중인 최신 결제일 자료는 2026-06-30로 2일 전 수치이며, 공시는 결제일보다 약 2주 늦게 이루어진다(이유).
검증된 세션, 그리고 열리지 않은 금요일
| SPY 첫 바(ET, 동부시간) | SPY 마지막 바(ET) | SPY 분봉 | 정규장 바 | 주간 세션 | 7월 3일 SPY 바 |
|---|---|---|---|---|---|
| 04:00 | 19:59 | 886 | 390 | 1 | 0 |
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT
formatDateTime(min(toTimeZone(window_start, 'America/New_York')), '%H:%i') AS first_spy_bar_et,
formatDateTime(max(toTimeZone(window_start, 'America/New_York')), '%H:%i') AS last_spy_bar_et,
count() AS spy_minute_bars,
countIf(window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00') AS regular_session_bars,
uniqExactIf(toDate(toTimeZone(window_start, 'America/New_York')), window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00') AS day_sessions,
(SELECT count() FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2026-07-03 00:00:00' AND window_start < '2026-07-04 00:00:00') AS jul3_spy_bars
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2026-07-02 00:00:00' AND window_start < '2026-07-03 00:00:00'7월 2일은 조기 폐장이 아닌 정규 세션 전체였다: SPY의 바(bar)는 뉴욕 시간 기준 04:00부터 19:59까지 이어졌으며(프리마켓 및 애프터마켓 바 포함), 정규 거래시간 바는 정확히 390개였다. 7월 3일 금요일에는 SPY 바가 0개 기록되었는데, 이는 독립기념일로 인한 전일 휴장 때문이다. 7월 4일이 토요일이었기 때문이다. 세션 네 번으로 마감된 한 주: 주간 리뷰.
FAQ
2026년 7월 2일 다우지수는 오르고 나스닥지수는 하락한 이유는 무엇인가?
두 지수는 구성 종목이 서로 다르다. DIA는 1.04%로 마감했고, QQQ는 -1.71%로 마감했다. 업종별 현황도 같은 흐름을 보였는데, 헬스케어와 유틸리티, 필수소비재가 상위권을 차지했고 기술주는 -2.71%로 최하위를 기록해 상위와 하위 업종 간 격차가 5.34포인트에 달했다.
독립기념일 주간 금요일에 증시는 개장했는가?
아니다. 독립기념일이 토요일이었기 때문에 거래소는 그 전날인 금요일 하루를 휴장으로 지정해 이를 기렸다. 당사 데이터에는 해당일의 SPY 1분봉이 0건으로 기록되어 있다.
순방향 주식분할(forward stock split)은 주가에 어떤 영향을 미치는가?
주식 수를 네 배로 늘리고 주가를 4분의 1로 나누는 것으로, 보유 포지션의 가치 자체는 변하지 않는다. CRWD의 경우 7월 2일, 분할 미반영 기준으로 수요일 종가는 772.45달러였고 목요일 종가는 193.67달러였는데, 분할을 반영하지 않는 스크리너에서는 이것이 실제로는 존재하지 않는 하락으로 잘못 표시된다.
2026년 7월 2일 매도-매수 호가 스프레드(bid-ask spread)는 어느 정도로 벌어졌는가?
SPY의 정규장 중 호가 스프레드 중간값은 중간가(mid-price) 대비 0.27bp였으며, 이는 직전 22거래일 가운데 스프레드가 넓은 쪽에서 11위에 해당해 평범한 수준이었다. 개별 종목은 스프레드가 더 넓었는데, MU는 5.52bp, WDC는 10.79bp를 기록했다.
데이터 참고 사항
- 달러 거래량은 분당 단위의 근사치로서, 종가 × 거래량을 바(bar)별로 합산한 값이다.
- 거래량 패널의 마지막 30분 구간은 종가 경매(closing auction) 체결을 포함해 집계한다. 1분 단위 바(bar)에는 모든 경매 체결이 빠져 있으므로, 30분 패널은 통합 테이프(consolidated tape)에서 미국 동부시간(ET) 오후 4시부터 4시 15분까지로 타임스탬프가 찍힌 종가 체결 매매조건(sale condition)이 붙은 거래를 모두 마지막 버킷에 더한다.
- 7월 2일 국채(treasury) 체결 데이터는 최초 게재 이후에 입수되었다. 원래 노트에서는 행 수 확인 내역(row-count receipt)으로 이 데이터의 누락 사실을 밝혔으며, 이번 수정본에는 해당 체결 데이터가 반영되었고 확인 내역도 함께 제시한다.
- CRWD의 원시 종가 변동률은 주식분할(split)에 따른 왜곡값으로, 급등락 종목 스크리닝(mover screen)에서 제외된다.
전체 데이터 참고 사항
- 섹터 보드는 열한 개의 SPDR Select Sector 펀드(XLB, XLC, XLE, XLF, XLI, XLK, XLP, XLRE, XLU, XLV, XLY)로 구성된, 고정되고 공개된 바스켓이며, 벤더가 제공하는 섹터 필드가 아니다.
- 호가 테이프(quote tape) 집계는 SIP 타임스탬프의 UTC 날짜를 기준으로 구간을 나눈다. 서머타임 적용 기간의 거래일은 UTC 기준 하루 안에 모두 들어온다.
- 심볼이 재사용된 6월 상장 종목 한 건은 리더보드에서 제외된다(확인 내역); 정밀 틱 데이터 분석은 심층 분석(deep-dive) 자료에서 다룬다.
방법론
- 기간은 하나의 거래 세션(1 세션, 실제 바 데이터로 확인됨)이다. 타임스탬프는 UTC로 저장되며 쿼리 내에서 뉴욕 시간으로 변환된다. '종가(close)'는 정규장 마지막 1분봉을 의미하며, 일간 변동은 7월 2일과 7월 1일을 비교한 것이다. 7월 3일 휴장은 바 데이터로 확인된 것이며, 임의로 가정한 것이 아니다.
- 스프레드는 (매도호가에서 매수호가를 뺀 값을) 중간가 대비 베이시스포인트로 표시하며, 정규장 중 NBBO(전미 최우선 매수·매도호가, National Best Bid and Offer) 업데이트 전체에 대해 결정론적 분위수 기준 중앙값으로 산출한다. 비율 연산에 앞서 소수값은 float 형으로 변환되며, 옵션 만기일은 OCC 티커에서 다시 파싱된다. 모든 패널은 작성 시점에 게이트 처리된 읽기 전용 경로를 통해 단 한 번만 읽힌다.
차트, 표, SQL은 하나의 객체다. 어떤 패널이든 Strasmore 터미널에 붙여 넣어 자신만의 것으로 만들 수 있다. 이전 세션: 7월 1일. 이번 주: 네 세션으로 이루어진 휴일 주간.