2026년 7월 20일 주간 시장 요약 및 지수 현황
7월 옵션 만기일 이후 첫 주간 시장을 분석합니다. SPY를 포함한 주요 지수 변동폭과 섹터별 분산도 및 시장 폭을 점검하고 자금 흐름을 확인합니다. 모든 데이터는 저장된 쿼리를 통해 산출되었으며 과거 기록과 비교하여 시장의 위치를 객관적으로 평가합니다.
5 2026년 7월 20일 주간은 7월 월간 옵션 만기일 이후 첫 번째 온전한 한 주였으며, 휴장일 없이 5 거래일 동안 진행되었습니다. SPY의 주간 종가 대비 종가 변동폭은 -0.59%을 기록하였으며, 지난 1년간의 주간 단위 시가 대비 종가 변동폭과 비교했을 때 53주 중 43위에 해당하였습니다. 아래의 모든 수치는 저장된 쿼리에서 산출되었으며, 각 기간은 명시된 날짜에 고정되어 있어 SQL을 재실행하더라도 동일한 수치가 반환됩니다.
주간 시장 현황
주간 변동은 7월 17일 금요일 정규장 마감부터 7월 24일 금요일 마감까지를 기준으로 합니다. 마지막 열에는 직전 주의 수치가 기재되어 두 수치를 나란히 비교할 수 있습니다. 행은 알파벳순으로 정렬되었습니다.
| ticker | 전주 종가 | 금주 종가 | 금주 변동률(%) | 전주 변동률(%) |
|---|---|---|---|---|
| DIA | 520.76 | 518.79 | -0.38 | -0.95 |
| IWM | 294.09 | 291.2 | -0.98 | -0.63 |
| QQQ | 695.3 | 684.22 | -1.59 | -4.17 |
| SPY | 743.2 | 738.85 | -0.59 | -1.55 |
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT ticker,
round(argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-17 13:30:00' AND window_start < '2026-07-17 20:00:00'), 2) AS prior_week_close,
round(argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-24 13:30:00' AND window_start < '2026-07-24 20:00:00'), 2) AS week_close,
round((argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-24 13:30:00' AND window_start < '2026-07-24 20:00:00')
/ argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-17 13:30:00' AND window_start < '2026-07-17 20:00:00') - 1) * 100, 2) AS week_change_pct,
round((argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-17 13:30:00' AND window_start < '2026-07-17 20:00:00')
/ argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-10 13:30:00' AND window_start < '2026-07-10 20:00:00') - 1) * 100, 2) AS prior_week_change_pct
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'QQQ', 'DIA', 'IWM')
AND ((window_start >= '2026-07-10 13:30:00' AND window_start < '2026-07-10 20:00:00')
OR (window_start >= '2026-07-17 13:30:00' AND window_start < '2026-07-17 20:00:00')
OR (window_start >= '2026-07-24 13:30:00' AND window_start < '2026-07-24 20:00:00'))
GROUP BY ticker
ORDER BY ticker금주 현황: DIA는 -0.38%, IWM은 -0.98%, QQQ는 -1.59%, SPY는 -0.59% 변동을 기록하며 $738.85에 마감했습니다. 동일한 알파벳순으로 나열한 직전 주의 수치는 각각 -0.95%, -0.63%, -4.17%, -1.55%였습니다. 네 지수 간의 격차를 확인하는 것은 스코어보드가 측정하는 첫 번째 지표이며, 이 격차는 항상 작지만은 않습니다.
지난 1년간의 성과와 비교한 금주 실적
일주일간의 수치는 그 이면에 있는 분포를 고려하지 않으면 의미가 적습니다. 본 패널은 동일한 논리를 적용하여 지난 모든 주간의 성과를 재산출하며, 정규 장의 시가부터 종가까지를 기준으로 하여 금주 성과를 그 안에서 순위화합니다.
| 주간 시가 대비 종가(%) | 최고 순위 | 비교 주차 | 첫 주 | 금주 거래일수 |
|---|---|---|---|---|
| -1.1 | 43 | 53 | 2025-07-21 | 5 |
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT round(anyIf(ret, wk = toDate('2026-07-20')), 2) AS week_open_to_close_pct,
arrayCount(x -> x > anyIf(ret, wk = toDate('2026-07-20')), groupArrayIf(ret, wk != toDate('2026-07-20'))) + 1 AS rank_best,
count() AS weeks_compared,
toString(min(wk)) AS first_week,
anyIf(sessions_measured, wk = toDate('2026-07-20')) 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_measured,
(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-07-21 00:00:00')
AND window_start < toDateTime('2026-07-25 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_measured >= 3
)이러한 방식으로 측정했을 때, SPY는 -1.1%의 수익률을 기록했으며, 2025-07-21까지 거슬러 올라가는 총 53주 중 43위를 차지했습니다. 정의상의 차이에 유의하십시오. 이 수치는 해당 주간의 첫 정규 장 시가부터 시작되지만, 상단의 스코어보드는 이전 주간의 종가부터 시작됩니다. 두 수치 모두 표기되는 모든 곳에 관련 정의가 명시되어 있습니다.
오거래일의 흐름
| 날짜 | SPY 종가 | 변동률(%) | SPY 거래량(백만주) |
|---|---|---|---|
| 2026-07-20 | 742.1 | -0.15 | 40.1 |
| 2026-07-21 | 748.32 | 0.84 | 25.6 |
| 2026-07-22 | 747.39 | -0.12 | 26.6 |
| 2026-07-23 | 738.24 | -1.22 | 48 |
| 2026-07-24 | 738.85 | 0.08 | 40.1 |
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT toString(d) AS date,
round(c, 2) AS spy_close,
round((c / prev_c - 1) * 100, 2) AS change_pct,
round(shares_m, 1) AS spy_shares_m
FROM (
SELECT d, c, shares_m,
lagInFrame(c) OVER (ORDER BY d ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev_c
FROM (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,
argMax(toFloat64(close), window_start) AS c,
toFloat64(sum(volume)) / 1e6 AS shares_m
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND ((window_start >= '2026-07-17 13:30:00' AND window_start < '2026-07-17 20:00:00')
OR (window_start >= '2026-07-20 13:30:00' AND window_start < '2026-07-24 20:00:00'))
AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
GROUP BY d
)
)
WHERE d >= '2026-07-20'
ORDER BY dateSPY의 일별 변동 폭은 월요일 -0.15%, 화요일 0.84%, 수요일 -0.12%, 목요일 -1.22%, 금요일 0.08%를 기록하였으며, 최종적으로 40.1백만 주의 거래량을 동반하여 738.85달러로 마감하였다. 월요일의 수치는 해당 기간 직전 거래일인 7월 17일 종가를 기준으로 산정되었다.
세션별 시장 폭(Breadth)
지수 레벨은 하나의 숫자에 불과합니다. 시장 폭은 얼마나 많은 종목이 지수와 같은 방향으로 움직였는지를 측정하며, 주간 상승세가 광범위했는지 아니면 일부 종목에 국한되었는지를 결정하는 지표입니다.
| 날짜 | 상승 종목 | 하락 종목 | 보합 종목 | 측정 대상 |
|---|---|---|---|---|
| 2026-07-20 | 1268 | 2632 | 45 | 3945 |
| 2026-07-21 | 2516 | 1450 | 41 | 4007 |
| 2026-07-22 | 1595 | 2332 | 33 | 3960 |
| 2026-07-23 | 1232 | 2815 | 30 | 4077 |
| 2026-07-24 | 2273 | 1635 | 42 | 3950 |
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT toString(d) AS date, advancers, decliners, unchanged, measured_names
FROM (
SELECT d,
countIf(c > prev_c) AS advancers,
countIf(c < prev_c) AS decliners,
countIf(c = prev_c) AS unchanged,
count() AS measured_names
FROM (
SELECT d, c, dv,
lagInFrame(c) OVER (PARTITION BY ticker ORDER BY d ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev_c
FROM (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
argMax(toFloat64(close), window_start) AS c,
sum(toFloat64(close) * toFloat64(volume)) AS dv
FROM global_markets.delayed_stocks_minute_aggs
WHERE ((window_start >= '2026-07-17 13:30:00' AND window_start < '2026-07-17 20:00:00')
OR (window_start >= '2026-07-20 13:30:00' AND window_start < '2026-07-24 20:00:00'))
AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
GROUP BY ticker, d
)
)
WHERE d >= '2026-07-20' AND prev_c > 0 AND dv >= 5000000
GROUP BY d
)
ORDER BY date월요일에는 측정 대상 종목 3945개 중 1268개가 상승했고 2632개가 하락했습니다. 금요일 기준으로는 전체 3950개 종목 중 2273개가 상승하고 1635개가 하락했습니다. 양일 모두 종가를 기록하지 않은 종목은 제외되므로, 측정 대상 종목 수는 매일 조금씩 변동됩니다.
한 주 전체를 대상으로 동일한 질문을 던져보겠습니다.
| 상승 종목 | 하락 종목 | 보합 종목 | 측정 대상 | 유동성 필터 제외 | 상승 종목 비율(%) |
|---|---|---|---|---|---|
| 2437 | 3630 | 33 | 6100 | 5099 | 40 |
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT
countIf(cw > cp AND liquid) AS advancers,
countIf(cw < cp AND liquid) AS decliners,
countIf(cw = cp AND liquid) AS unchanged,
countIf(liquid) AS measured_names,
countIf(NOT liquid) AS dropped_by_liquidity_filter,
round(100.0 * countIf(cw > cp AND liquid) / countIf(liquid), 1) AS advancer_pct
FROM (
SELECT ticker, cp, cw, dv >= 5000000 AS liquid
FROM (
SELECT ticker,
argMaxIf(toFloat64(close), window_start, window_start < '2026-07-18 00:00:00') AS cp,
argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-24 13:30:00') AS cw,
sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-20 13:30:00') AS dv
FROM global_markets.delayed_stocks_minute_aggs
WHERE ((window_start >= '2026-07-17 13:30:00' AND window_start < '2026-07-17 20:00:00')
OR (window_start >= '2026-07-20 13:30:00' AND window_start < '2026-07-25 00:00:00'))
AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
GROUP BY ticker
HAVING cp > 0 AND cw > 0
)
)정규장 거래대금 500만 달러 기준을 충족한 6100개 종목 중, 2437개 종목은 7월 17일 종가보다 높게 마감했고 3630개 종목은 낮게 마감하여 상승 종목 비율은 40%를 기록했습니다. 유동성 필터에 의해 해당 기준 미만으로 거래된 5099개 종목은 별도로 분류되었습니다. 이 종목들은 단순히 제외된 것이 아니라 이곳에 집계되었습니다.
섹터 스코어보드
7월 17일 종가부터 7월 24일까지 11개 SPDR 섹터 ETF의 수익률 순위입니다.
| 섹터 | 주간 변동률(%) | 최고점 대비 차이 |
|---|---|---|
| Energy | 3.33 | 0 |
| Utilities | 2.5 | 0.83 |
| Industrials | 1.78 | 1.55 |
| Materials | 1.47 | 1.86 |
| Real Estate | 1.12 | 2.21 |
| Health Care | 0.91 | 2.42 |
| Technology | 0.18 | 3.15 |
| Financials | 0.13 | 3.2 |
| Staples | -1.27 | 4.6 |
| Communications | -3.96 | 7.29 |
| Consumer Discretionary | -5.2 | 8.53 |
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT sector, week_pct, round(max(week_pct) OVER () - week_pct, 2) AS points_behind_best
FROM (
SELECT multiIf(ticker = 'XLK', 'Technology', ticker = 'XLC', 'Communications', ticker = 'XLE', 'Energy',
ticker = 'XLF', 'Financials', ticker = 'XLI', 'Industrials', ticker = 'XLB', 'Materials',
ticker = 'XLP', 'Staples', ticker = 'XLRE', 'Real Estate', ticker = 'XLU', 'Utilities',
ticker = 'XLV', 'Health Care', 'Consumer Discretionary') AS sector,
round((cw / cp - 1) * 100, 2) AS week_pct
FROM (
SELECT ticker,
argMaxIf(toFloat64(close), window_start, window_start < '2026-07-18 00:00:00') AS cp,
argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-24 13:30:00') AS cw
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-17 13:30:00' AND window_start < '2026-07-17 20:00:00')
OR (window_start >= '2026-07-24 13:30:00' AND window_start < '2026-07-24 20:00:00'))
GROUP BY ticker
HAVING cp > 0 AND cw > 0
)
)
ORDER BY week_pct DESCEnergy가 3.33%의 수익률로 선두를 차지했습니다. Consumer Discretionary은 8.53 퍼센트포인트 뒤처진 -5.2%로 최하위를 기록했습니다. 이 격차는 해당 주의 섹터 분산도를 나타내며, 그 자체로 의미 있는 지표입니다. 11개 섹터 모두가 1퍼센트포인트 이내에 머무는 시장과 스프레드(spread)가 두 자릿수에 달하는 시장은 완전히 다른 성격을 띱니다.
자금의 흐름
| ticker | 주간 거래대금(십억 달러) | 선두 대비 비율(%) |
|---|---|---|
| MU | 158.1 | 100 |
| SPY | 133.9 | 84.7 |
| QQQ | 101.5 | 64.2 |
| NVDA | 93.9 | 59.4 |
| SNDK | 81.4 | 51.5 |
| TSLA | 79.1 | 50 |
| AMD | 57.9 | 36.6 |
| AAPL | 54.6 | 34.5 |
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT ticker, week_dollar_bn, round(100 * week_dollar_bn / max(week_dollar_bn) OVER (), 1) AS pct_of_leader
FROM (
SELECT ticker,
round(sum(toFloat64(close) * toFloat64(volume)) / 1e9, 1) AS week_dollar_bn
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= '2026-07-20 13:30:00' AND window_start < '2026-07-24 20:00:00'
AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
AND ticker NOT IN ('SPCX')
GROUP BY ticker
ORDER BY week_dollar_bn DESC
LIMIT 8
)
ORDER BY week_dollar_bn DESCMU은 5거래일 동안 정규장 거래대금으로 158.1십억 달러를 기록하며, 133.9십억 달러를 기록한 SPY와 101.5십억 달러를 기록한 QQQ를 앞섰습니다. 거래대금 순위 8위인 AAPL은 선두 종목 거래대금의 34.5% 수준을 기록했습니다. 거래대금은 시장이 한 주 동안 치열하게 공방을 벌인 지점을 기록하며, 반드시 가격 방향성과 일치할 필요는 없습니다. 종목별로 측정한 이 지표는 상대 거래량(relative volume)입니다.
금주의 주요 등락 종목
주식 분할은 기업 가치 변동 없이 거래 가격(print)만을 조정합니다. 주식 병합(reverse split)은 인위적으로 네 자릿수의 상승을 만들어내며, 액면 분할(forward split)은 동일한 규모의 가짜 급락을 유발합니다. 이번 주에는 26 건의 주식 병합과 12 건의 액면 분할이 발생했습니다. 아래 두 표는 측정 기간인 7월 17일 종가부터 7월 24일 종가 사이에 주식 분할이 실행된 종목을 모두 제외했습니다. 또한 두 표 모두 정규장 거래 대금 500만 달러 이상을 조건으로 합니다.
| ticker | 보드 | 주간 변동률(%) | 주간 거래대금(백만 달러) | 거래일수 | 최대 거래대금 대비 비율(%) |
|---|---|---|---|---|---|
| STAK | gainers | 383.7 | 251.6 | 5 | 26 |
| ADVB | gainers | 277.1 | 875.7 | 5 | 90.3 |
| WLDS | gainers | 157.2 | 104.6 | 5 | 10.8 |
| ZYBT | gainers | 123.8 | 294.6 | 5 | 30.4 |
| CJMB | gainers | 111.3 | 131.8 | 5 | 13.6 |
| LVWR | gainers | 107.8 | 131.6 | 5 | 13.6 |
| OMH | gainers | 99.8 | 436.6 | 5 | 45 |
| PN | gainers | 97.5 | 89.7 | 5 | 9.3 |
| UTZ | gainers | 95.4 | 969.5 | 5 | 100 |
| GORO | gainers | 92.3 | 50.3 | 5 | 5.2 |
| LBGJ | decliners | -98.8 | 47.7 | 5 | 4.9 |
| SXTC | decliners | -97.4 | 40.6 | 5 | 4.2 |
| WETO | decliners | -86.4 | 8.8 | 5 | 0.9 |
| GVH | decliners | -78.8 | 17.2 | 5 | 1.8 |
| VEEE | decliners | -66.6 | 65.2 | 5 | 6.7 |
| CLBK | decliners | -53.5 | 953.7 | 5 | 98.4 |
| BIYA | decliners | -53.4 | 266.9 | 5 | 27.5 |
| LESL | decliners | -52.2 | 6.8 | 5 | 0.7 |
| QMLS | decliners | -48.7 | 37.2 | 5 | 3.8 |
| VCIG | decliners | -47.8 | 9.5 | 5 | 1 |
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT ticker, board, week_pct, week_dollar_m, sessions_traded,
round(100 * week_dollar_m / max(week_dollar_m) OVER (), 1) AS pct_of_dollar_max
FROM (
SELECT 'gainers' AS board, ticker, round((cw / cp - 1) * 100, 1) AS week_pct,
round(dv / 1e6, 1) AS week_dollar_m, sessions_traded
FROM (
SELECT ticker,
argMaxIf(toFloat64(close), window_start, window_start < '2026-07-18 00:00:00') AS cp,
argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-24 13:30:00') AS cw,
sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-20 13:30:00') AS dv,
uniqExactIf(toDate(toTimeZone(window_start, 'America/New_York')), window_start >= '2026-07-20 13:30:00') AS sessions_traded
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker NOT IN ('SPCX')
AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits WHERE execution_date > '2026-07-17' AND execution_date <= '2026-07-24')
AND ((window_start >= '2026-07-17 13:30:00' AND window_start < '2026-07-17 20:00:00')
OR (window_start >= '2026-07-20 13:30:00' AND window_start < '2026-07-25 00:00:00'))
AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
GROUP BY ticker
HAVING cp > 0 AND cw > 0 AND dv >= 5000000
)
ORDER BY week_pct DESC
LIMIT 10
UNION ALL
SELECT 'decliners' AS board, ticker, round((cw / cp - 1) * 100, 1) AS week_pct,
round(dv / 1e6, 1) AS week_dollar_m, sessions_traded
FROM (
SELECT ticker,
argMaxIf(toFloat64(close), window_start, window_start < '2026-07-18 00:00:00') AS cp,
argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-24 13:30:00') AS cw,
sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-20 13:30:00') AS dv,
uniqExactIf(toDate(toTimeZone(window_start, 'America/New_York')), window_start >= '2026-07-20 13:30:00') AS sessions_traded
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker NOT IN ('SPCX')
AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits WHERE execution_date > '2026-07-17' AND execution_date <= '2026-07-24')
AND ((window_start >= '2026-07-17 13:30:00' AND window_start < '2026-07-17 20:00:00')
OR (window_start >= '2026-07-20 13:30:00' AND window_start < '2026-07-25 00:00:00'))
AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
GROUP BY ticker
HAVING cp > 0 AND cw > 0 AND dv >= 5000000
)
ORDER BY week_pct ASC
LIMIT 10
)
ORDER BY board DESC, abs(week_pct) DESC두 표에 이름을 올린 종목들은 모두 실질적인 주가 변동을 보였습니다. 가장 낮은 상승률을 기록한 종목은 92.3% 상승했으며, 가장 낮은 하락률을 기록한 종목은 -47.8% 하락했습니다. 극단적인 사례로, STAK는 251.6백만 달러의 거래 대금을 동반하며 383.7% 변동했고, LBGJ는 47.7백만 달러의 거래 대금과 함께 -98.8% 변동했습니다. 해당 하락 폭은 해당 종목의 전체 시가총액에 근접한 수준이므로, 이 표는 자체적인 검증을 포함합니다. 즉, LBGJ은 측정 기간 5거래일 중 5일 동안 정규장 거래가 발생했으며, 측정 기준이 되는 두 종가 사이에서 주식 분할은 실행되지 않았습니다.
회차별 호가 스프레드
가격은 시장의 핵심 지표입니다. 거래를 체결하는 데 드는 비용인 호가 스프레드(quoted spread)는 요약 데이터가 아닌 원천 NBBO(National Best Bid and Offer, 최우선 매수·매도 호가) 테이프에서 직접 추출하여 SPY를 기준으로 매 세션 측정하였습니다.
| 날짜 | 중앙값 스프레드(bps) | 호가 업데이트(백만) | 단방향 호가 수 | 교차 호가 수 |
|---|---|---|---|---|
| 2026-07-20 | 0.27 | 3.89 | 0 | 1084 |
| 2026-07-21 | 0.27 | 2.29 | 0 | 333 |
| 2026-07-22 | 0.27 | 2.51 | 0 | 747 |
| 2026-07-23 | 0.27 | 5.1 | 0 | 5906 |
| 2026-07-24 | 0.27 | 4.4 | 0 | 2777 |
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT toString(toDate(sip_timestamp)) AS date,
round(quantileExactIf(0.5)(
10000 * (toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2),
bid_price > 0 AND ask_price > 0 AND ask_price >= bid_price), 2) AS median_spread_bps,
round(count() / 1e6, 2) AS quote_updates_m,
countIf(bid_price <= 0 OR ask_price <= 0) AS one_sided_quote_count,
countIf(bid_price > ask_price AND bid_price > 0 AND ask_price > 0) AS crossed_quote_count
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'SPY'
AND sip_timestamp >= '2026-07-20 13:30:00'
AND sip_timestamp < '2026-07-24 20:00:00'
AND (toHour(sip_timestamp) * 60 + toMinute(sip_timestamp)) BETWEEN 810 AND 1199
GROUP BY toDate(sip_timestamp)
HAVING countIf(bid_price > 0 AND ask_price > 0 AND ask_price >= bid_price) > 0
ORDER BY toDate(sip_timestamp)SPY의 중간가 대비 중앙값 호가 스프레드는 월요일 0.27 베이시스 포인트(bp), 금요일 0.27 베이시스 포인트를 기록했으며, 이는 각각 3.89백만 건과 4.4백만 건의 NBBO 업데이트를 기반으로 합니다. 마지막 두 열은 분석 결과가 아닌 공시 데이터로, 월요일 중앙값 산출 시 0건의 일방향 호가와 1084건의 교차 호가가 누락되지 않고 포함되었습니다. 매수 호가가 매도 호가보다 높은 교차 호가는 나노초 단위로 여러 거래소의 데이터를 통합하는 과정에서 발생하는 일반적인 현상입니다.
월간 만기 이후의 옵션 주간
7월의 월간 만기는 이번 주가 시작되기 전 금요일에 도래했으므로, 이번 5거래일 동안 거래된 모든 계약은 만기를 넘긴 잔존 계약입니다. 만기 시점은 당일 매매를 주로 하는 투자자들의 거래 리듬을 결정합니다.
| 날짜 | 계약 수(백만) | 0DTE(당일 만기) 비중(%) | 콜옵션 비중(%) | 7월 24일 만기 비중(%) |
|---|---|---|---|---|
| 2026-07-20 | 64 | 40.2 | 55.3 | 15.1 |
| 2026-07-21 | 57.3 | 29.5 | 53.9 | 17 |
| 2026-07-22 | 55.8 | 36.1 | 56.4 | 19.9 |
| 2026-07-23 | 66.2 | 26.4 | 53.4 | 26.4 |
| 2026-07-24 | 71.1 | 49 | 53.5 | 49 |
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT toString(toDate(sip_timestamp)) AS date,
round(toFloat64(sum(size)) / 1e6, 1) AS contracts_m,
round(100.0 * sumIf(size, substring(ticker, length(ticker) - 14, 6) = formatDateTime(toDate(sip_timestamp), '%y%m%d')) / sum(size), 1) AS pct_0dte,
round(100.0 * sumIf(size, substring(ticker, length(ticker) - 8, 1) = 'C') / sum(size), 1) AS pct_call,
round(100.0 * sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260724') / sum(size), 1) AS pct_expiring_jul24
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-20 00:00:00' AND sip_timestamp < '2026-07-25 00:00:00'
GROUP BY toDate(sip_timestamp)
ORDER BY toDate(sip_timestamp)계약 거래량은 월요일 64백만 건, 금요일 71.1백만 건을 기록했습니다. 당일 만기 계약(거래 당일에 만기가 도래하는 계약)이 전체 거래량에서 차지하는 비중은 월요일 40.2%에서 금요일(이번 주의 만기 세션) 49%로 나타났습니다. 금요일 전체 계약 거래량 중 콜옵션(call option)이 차지하는 비중은 53.5%였습니다. 금요일 만기에 대한 영향력은 주 초반부터 확인되었습니다. 월요일 거래량의 15.1%가 이미 해당 금요일에 만기가 도래하는 계약에 집중되어 있었습니다. 이처럼 대규모 미결제약정(open interest)이 존재하는 만기를 앞두고 일부 투자자들은 맥스 페인(max pain)을 주시합니다. 이는 만기 시 옵션 보유자들에게 가장 적은 수익을 안겨주는 행사가격(strike price)을 의미하지만, 실제 결제 가격이 그 부근에서 형성될지는 가정하기보다 확인이 필요한 사안입니다.
주간 금리 동향
| 날짜 | 2년물 수익률(%) | 10년물 수익률(%) | 30년물 수익률(%) | 2년-10년물 스프레드(bp) | 10년물 전일 종가 대비 변동(bp) |
|---|---|---|---|---|---|
| 2026-07-17 | 4.18 | 4.55 | 5.06 | 37 | 0 |
| 2026-07-20 | 4.21 | 4.6 | 5.11 | 39 | 5 |
| 2026-07-21 | 4.26 | 4.63 | 5.13 | 37 | 8 |
| 2026-07-22 | 4.31 | 4.67 | 5.15 | 36 | 12 |
| 2026-07-23 | 4.37 | 4.71 | 5.17 | 34 | 16 |
| 2026-07-24 | 4.33 | 4.69 | 5.16 | 36 | 14 |
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT toString(date) AS date,
round(toFloat64(yield_2_year), 2) AS yield_2y_pct,
round(toFloat64(yield_10_year), 2) AS yield_10y_pct,
round(toFloat64(yield_30_year), 2) AS yield_30y_pct,
round((toFloat64(yield_10_year) - toFloat64(yield_2_year)) * 100) AS spread_2s10s_bp,
round((toFloat64(yield_10_year) - (SELECT toFloat64(any(yield_10_year)) FROM global_markets.treasury_yields WHERE date = '2026-07-17')) * 100) AS chg_10y_from_prior_close_bp
FROM global_markets.treasury_yields
WHERE date >= '2026-07-17' AND date <= '2026-07-24'
ORDER BY date7월 17일 체결된 거래를 기준으로 10년물 국채 금리는 14 베이시스 포인트(bp) 변동하여 마지막 기록 시점 4.69%를 기록하였으며, 2년물은 4.33%, 30년물은 5.16%를 나타냈습니다. 2년물-10년물 금리 스프레드는 해당 기간 36 bp로 마감되었습니다. 재무부의 데이터는 시장 거래보다 대략 한 세션 정도 늦게 반영되므로, 본 표에는 각각 날짜가 명시된 6건의 거래 기록이 포함되어 있습니다.
공매도: 일일 파일
FINRA(미국금융산업규제기구)는 매일 공매도 거래량 파일을 게시합니다. 공매도 거래량은 포지션이 아닌 일일 총 유입량을 의미하며, 해당 파일은 간혹 데이터가 누락된 채 제공되기도 하므로 비율을 산출하기 전에 반드시 데이터의 포괄 범위를 먼저 측정해야 합니다.
| 날짜 | 등록 티커(Ticker) 수 | 공매도 주식 수(십억) | 최대 파일 대비 비중(%) |
|---|---|---|---|
| 2026-07-20 | 15098 | 4.71 | 100 |
| 2026-07-21 | 15102 | 5.28 | 100 |
| 2026-07-22 | 14984 | 4.59 | 99.2 |
| 2026-07-23 | 4816 | 1.74 | 31.9 |
| 2026-07-24 | 15062 | 4.27 | 99.7 |
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT date, tickers_on_file, short_shares_bn,
round(100.0 * tickers_on_file / max(tickers_on_file) OVER (), 1) AS pct_of_fullest_file
FROM (
SELECT toString(date) AS date,
uniqExact(ticker) AS tickers_on_file,
round(sum(short_shares) / 1e9, 2) AS short_shares_bn
FROM (
SELECT date, ticker, max(short_volume) AS short_shares
FROM global_markets.stocks_short_volume
WHERE date >= '2026-07-20' AND date <= '2026-07-24'
GROUP BY date, ticker
)
GROUP BY date
)
ORDER BY date5개의 일일 파일이 이번 주에 확보되었습니다. 첫 번째 파일에는 15098개의 티커(ticker)와 4.71십억 주의 공매도 표시 주식이 포함되어 있으며, 마지막 파일에는 15062개의 티커가 포함되어 있는데 이는 가장 데이터가 많은 파일의 티커 수 대비 99.7% 수준입니다. 인접한 파일들에 비해 현저히 적은 데이터가 담긴 파일에서 추출한 특정 종목의 공매도 거래량 수치는 해당 파일이 재게시되기 전까지는 검증이 불가능합니다.
이번 주의 일정
| 날짜 | 공시 | Form 4(임원 지분 변동 보고) | Form 8-K(주요 경영 사항 보고) | F-424B2(증권 발행 공시) |
|---|---|---|---|---|
| 2026-07-20 | 3013 | 632 | 166 | 663 |
| 2026-07-21 | 3275 | 503 | 250 | 1083 |
| 2026-07-22 | 3461 | 549 | 279 | 569 |
| 2026-07-23 | 3551 | 545 | 369 | 626 |
| 2026-07-24 | 3844 | 644 | 223 | 623 |
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT toString(filing_date) AS date,
count() AS filings,
countIf(form_type = '4') AS form4,
countIf(form_type = '8-K') AS form8k,
countIf(form_type = '424B2') AS f424b2
FROM global_markets.stocks_sec_edgar_index
WHERE filing_date >= '2026-07-20' AND filing_date <= '2026-07-24'
GROUP BY filing_date
ORDER BY date기록상 첫 번째 세션에는 3013건의 공시가 있었으며, 그중 632건은 내부자 Form 4 보고서였고 166건은 8-K 보고서였습니다. 마지막 세션에는 3844건의 공시가 있었으며, 그중 644건은 Form 4 보고서, 223건은 8-K 보고서였습니다. 해당 주 세션 중 5건에 대해 EDGAR 일일 지수가 기록되어 있습니다. 해당 지수는 별도의 일정에 따라 산출되므로 때때로 시장 데이터보다 늦게 반영되기도 합니다.
| 주간 공시 | 공시 등록 일수 | 주간 배당락 | 주간 가계 배당락 | 주간 주식 병합 | 주간 주식 분할 | 주간 상장 | 주간 뉴스 | 주간 뉴스 발행사 |
|---|---|---|---|---|---|---|---|---|
| 17144 | 5 | 594 | 1 | 26 | 12 | 4 | 852 | 2 |
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT
(SELECT count() FROM global_markets.stocks_sec_edgar_index WHERE filing_date >= '2026-07-20' AND filing_date <= '2026-07-24') AS filings_week,
(SELECT uniqExact(filing_date) FROM global_markets.stocks_sec_edgar_index WHERE filing_date >= '2026-07-20' AND filing_date <= '2026-07-24') AS filing_days_on_file,
(SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date >= '2026-07-20' AND ex_dividend_date <= '2026-07-24') AS ex_dividends_week,
(SELECT countIf(ticker IN ('AAPL', 'MSFT', 'JPM', 'KO', 'JNJ', 'XOM', 'CVX', 'PG', 'WMT', 'HD')) FROM global_markets.stocks_dividends WHERE ex_dividend_date >= '2026-07-20' AND ex_dividend_date <= '2026-07-24') AS household_ex_dividends_week,
(SELECT countIf(toFloat64(split_from) > toFloat64(split_to)) FROM global_markets.stocks_splits WHERE execution_date >= '2026-07-20' AND execution_date <= '2026-07-24') AS reverse_splits_week,
(SELECT countIf(toFloat64(split_to) > toFloat64(split_from)) FROM global_markets.stocks_splits WHERE execution_date >= '2026-07-20' AND execution_date <= '2026-07-24') AS forward_splits_week,
(SELECT count() FROM global_markets.stocks_ipos WHERE listing_date >= '2026-07-20' AND listing_date <= '2026-07-24') AS listings_week,
(SELECT count() FROM global_markets.stocks_news WHERE published_utc >= '2026-07-20 04:00:00' AND published_utc < '2026-07-25 04:00:00') AS news_week,
(SELECT uniqExact(JSONExtractString(publisher, 'name')) FROM global_markets.stocks_news WHERE published_utc >= '2026-07-20 04:00:00' AND published_utc < '2026-07-25 04:00:00') AS news_publishers_week그 외 이번 주 서류 작업 현황은 다음과 같습니다. 5일의 지수 산출 기간 동안 총 17144건의 SEC 공시가 있었으며, 594건의 배당락일(ex-dividend date) 기록이 있었습니다. 이 중 1건은 본 패널이 확인하는 10대 주요 기업에서 발생했습니다. 또한 26건의 주식 병합(reverse split)과 12건의 주식 분할(forward split), 4건의 신규 상장, 그리고 2개 발행사로부터 나온 852건의 기사가 있었습니다. 마지막 수치는 전 세계 미디어가 아닌 특정 피드의 주목도를 측정한 것입니다.
검증된 세션
| 주간 세션 수 | 첫 세션 | 마지막 세션 | 주간 정규 바(Bar) 수 | 주간 휴장일 수 | 상승 세션 | 하락 세션 | 다음 휴장일 | 다음 휴장 명칭 |
|---|---|---|---|---|---|---|---|---|
| 5 | 2026-07-20 | 2026-07-24 | 1950 | 0 | 2 | 3 | 2026-09-07 | Labor Day |
모든 수치 뒤에 숨겨진 정확한 SQL
WITH spy AS (
SELECT d, c, lagInFrame(c) OVER (ORDER BY d ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS p
FROM (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,
argMax(toFloat64(close), window_start) AS c
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND ((window_start >= '2026-07-17 13:30:00' AND window_start < '2026-07-17 20:00:00')
OR (window_start >= '2026-07-20 13:30:00' AND window_start < '2026-07-24 20:00:00'))
AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
GROUP BY d
)
)
SELECT
uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS sessions_in_week,
toString(min(toDate(toTimeZone(window_start, 'America/New_York')))) AS first_session,
toString(max(toDate(toTimeZone(window_start, 'America/New_York')))) AS last_session,
count() AS regular_bars_in_week,
(SELECT count() FROM global_markets.stocks_market_holidays WHERE date >= '2026-07-20' AND date <= '2026-07-24') AS holiday_rows_in_week,
(SELECT countIf(c > p) FROM spy WHERE d >= '2026-07-20') AS up_sessions,
(SELECT countIf(c < p) FROM spy WHERE d >= '2026-07-20') AS down_sessions,
(SELECT toString(min(date)) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-24' AND date <= '2026-12-31' AND status = 'closed') AS next_closure_date,
(SELECT argMin(name, date) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-24' AND date <= '2026-12-31' AND status = 'closed') AS next_closure_name
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= '2026-07-20 13:30:00' AND window_start < '2026-07-24 20:00:00'
AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 11995 세션은 2026-07-20부터 2026-07-24까지이며, 해당 기간 내 0개의 휴장일이 포함되어 있습니다. SPY는 이 기간 동안 1950개의 정규 세션 분봉을 기록했습니다. 2개의 세션은 전일 종가보다 높은 가격으로 마감되었고, 3개의 세션은 낮은 가격으로 마감되었습니다. 다음 예정된 휴장일은 Labor Day이며, 날짜는 2026-09-07입니다.
향후 일정
다음 주, 당사 테이블에서 확인할 내용은 다음과 같습니다.
| 다음 주 휴장일 | 차주 배당락 종목 | 차주 가계 배당락 | 차주 주식분할 | 7월 31일 만기 금요일 거래량 비중(%) | 최신 공매도 잔고 결제 |
|---|---|---|---|---|---|
| 0 | 934 | 0 | 26 | 14.2 | 2026-07-15 |
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT
(SELECT count() FROM global_markets.stocks_market_holidays WHERE date >= '2026-07-27' AND date <= '2026-07-31' AND status != 'open') AS closures_next_week,
(SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date >= '2026-07-27' AND ex_dividend_date <= '2026-07-31') AS ex_dividends_next_week,
(SELECT countIf(ticker IN ('AAPL', 'MSFT', 'JPM', 'KO', 'JNJ', 'XOM', 'CVX', 'PG', 'WMT', 'HD')) FROM global_markets.stocks_dividends WHERE ex_dividend_date >= '2026-07-27' AND ex_dividend_date <= '2026-07-31') AS household_ex_div_next_week,
(SELECT count() FROM global_markets.stocks_splits WHERE execution_date >= '2026-07-27' AND execution_date <= '2026-07-31') AS splits_next_week,
(SELECT round(100.0 * sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260731') / sum(size), 1) FROM global_markets.options_trades WHERE sip_timestamp >= '2026-07-24 00:00:00' AND sip_timestamp < '2026-07-25 00:00:00') AS jul31_expiry_pct_of_friday_volume,
(SELECT toString(max(settlement_date)) FROM global_markets.stocks_short_interest WHERE settlement_date <= '2026-07-24') AS latest_short_interest_settlement휴일 테이블에 따르면 다음 주에는 0건의 휴장이 예정되어 있습니다. 934건의 배당락일(ex-dividend date) 기록이 해당 기간에 포함되며, 이 중 0건은 가계 부문 종목입니다. 또한 26건의 주식 분할이 예정되어 있습니다. 금요일 옵션 거래량 중 14.2%건은 다음 주 금요일에 만기가 도래하는 계약에 집중되었습니다. 가장 최근의 공매도 잔고(short-interest) 결제일은 2026-07-15입니다. 해당 데이터는 시차를 두고 발표되므로 별도의 설명이 필요합니다.
자주 묻는 질문(FAQ)
2026년 7월 20일 주간 주식 시장은 어떤 성과를 보였습니까?
SPY는 7월 17일부터 7월 24일까지 종가 기준 -0.59% 변동했으며, QQQ는 -1.59%, DIA는 -0.38%, IWM은 -0.98%를 기록했습니다. 유동성이 높은 종목 중에서는 2437가 상승했고 3630가 하락했습니다.
2026년 7월 20일 주간에 가장 높은 성과를 낸 섹터는 무엇입니까?
Energy이며, 수익률은 3.33%입니다. 11개 SPDR 섹터 ETF 중 가장 부진했던 종목은 Consumer Discretionary로 -5.2%를 기록했으며, 이는 8.53 퍼센트포인트 뒤처진 수치입니다.
2026년 7월 20일 주간에는 총 몇 번의 거래 세션이 있었습니까?
총 5회이며, 2026-07-20부터 2026-07-24까지 진행되었습니다. 해당 기간 중 휴장일은 0일입니다. 다음 예정된 휴장일은 Labor Day입니다.
2026년 7월 20일 주간에 가장 많은 거래 대금을 기록한 티커는 무엇입니까?
MU이며, 정규장 거래 대금은 158.1십억 달러입니다. 그 뒤를 이어 SPY가 133.9십억 달러를 기록했습니다.
데이터 참고 사항
모든 저장된 타임스탬프는 UTC 기준입니다. 정규 거래 시간은 세션당 13:30-20:00 UTC이며, 주간 범위는 7월 17일 정규장 마감부터 7월 24일까지입니다. 모든 종가 대비 종가(close-over-close) 패널은 각 비교 시점의 마지막 정규 거래 시간 분봉을 기준으로 하므로, 시간 외 거래(extended-hours) 체결가는 주간 종가를 결정할 수 없습니다. 최근 1년 수익률 순위는 시가 대비 종가(open-to-close) 주간 수익률을 사용하므로 종가 대비 종가 스코어보드와 일치하지 않으며, 두 정의 모두 해당 항목에 표기되어 있습니다. 주간 시장 폭(breadth) 및 등락률 상위 종목 보드는 500만 달러의 정규 거래 시간 거래대금 필터를 적용하며, 시장 폭 지표는 해당 필터에서 제외된 종목 수를 함께 게시합니다. 등락률 상위 종목 보드는 7월 17일 종가 이후부터 7월 24일까지 주식 분할이 실행된 종목을 제외합니다. 이는 변화가 측정되는 정확한 구간으로, 주말에 발생한 분할과 세션 중 발생한 분할을 모두 포함합니다. 다만 방향성 장세에서 상위권을 독점할 수 있는 레버리지 및 인버스 ETF는 제외하지 않습니다. 하락 종목 보드 하단은 해당 주간의 호가 가치가 거의 전액 손실된 종목을 포함할 수 있으며, 각 종목이 5개 세션 중 며칠 동안 거래되었는지 함께 게시합니다. SPY 스프레드(spread) 패널은 일방향 호가나 교차 호가를 단순히 제외하지 않고 집계하며, 중앙값은 유효한 나머지 호가를 기준으로 산출합니다. 재무부 데이터는 테이프(거래 기록)보다 약 1세션 뒤처지며, EDGAR 일일 지수는 자체 일정에 따라 업데이트되므로 금리 및 공시 패널은 실제 보유하고 있는 데이터의 일수를 보고합니다. 내재변동성(implied-volatility) 지수는 본 데이터베이스에 라이선스가 제공되지 않아 포함되지 않았습니다. 따라서 변동성은 가격 범위, 당일 옵션 거래 비중, 호가 움직임을 통해 테이프에서 직접 파악합니다.
방법론
- 시장 데이터 출처: 통합 테이프(consolidated tape). 가격 및 거래량은
delayed_stocks_minute_aggs, NBBO(최우선 매수·매도 호가) 패널은cache_stocks_quotes, 옵션 위크는options_trades을 사용합니다. - 종가: 정규 거래 시간의 마지막 1분 봉을 기준으로 하며, 16:00 체결가나 시간 외 거래 체결가는 포함하지 않습니다.
- 거래 세션: 휴장일 테이블과 실제 관측된 봉 데이터를 대조하여 검증하며, 달력상 날짜를 임의로 가정하지 않습니다.
- 시간대 처리: WHERE 절에는 원시 UTC 리터럴을 사용하며,
toTimeZone는 ET(동부 표준시) 표기를 위한 SELECT 리스트에만 사용합니다. - 소수점: 가격, 규모, 거래량 열은 나눗셈이나 곱셈 연산 전 Float64로 형 변환합니다.
- 결정론적 집계: 전 구간에 걸쳐 정확한 분위수를 산출하며, 본문에 언급된 모든 순서나 부호 관련 주장은 검증 가능한 범위 내에서 산정합니다.
- 데이터 웨어하우스 기준일: 2026년 7월 26일.
관련 링크: 본 주간 시리즈의 이전 판, 매수-매도 스프레드란 무엇인가, 옵션 만기 시점, 공매도 잔고와 공매도 거래량의 차이, 그리고 2년물-10년물 스프레드.
위의 모든 쿼리는 Strasmore 터미널에서 수정 없이 실행 가능하며, 다른 주차로 윈도우를 재설정할 수 있습니다.