Strasmore Research
Market Recap

2026년 상반기 시장 요약

Matt ConnorBy Matt Connor Updated 2026-07-24

2026년 상반기는 서로 다른 두 시장이 결합된 형태였습니다. 1분기에는 모든 주요 지수 ETF(Exchange Traded Fund)가 하락하거나 정체된 모습을 보였으나, 2분기에는 이를 충분히 회복했습니다. SPY는 상반기 동안 8.8% 상승하며 마감했습니다. QQQ는 18.7% 상승했습니다. IWM의 21.3%는 당사가 보유한 기록 중 소형주 ETF로서 가장 우수한 상반기 성적을 기록했습니다. 상세 내역은 아래와 같으며, 단일 쿼리를 통해 모든 이전 연도와 비교 재계산되었습니다. 금리 시장은 별도의 양상을 보였습니다. 2s10s spread(2년물과 10년물 금리 차이)는 상반기 동안 역전되지 않은 상태에서 72 basis points(bp)에서 30로 평탄화되었습니다. 본 페이지는 상반기의 전체 장부를 제공합니다. 여기에는 점수판, 역사적 순위, 월별 변동 추이, 만기별 전체 수익률 곡선(yield curve), 11개 섹터, 옵션 시장의 월별 변화, 그리고 상반기 주요 개별 종목이 포함됩니다. 모든 수치는 저장된 쿼리 결과입니다. SQL 코드를 확인하려면 각 패널을 확장하십시오.

시장의 절반

조회2026년 상반기(H1): 4개 지수 ETF의 상반기, Q1 및 Q2 수익률 — 단일 쿼리로 계산됨
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT ticker,
    round((argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-30') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)
         / argMinIf(toFloat64(open), window_start, toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-01-01') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) - 1) * 100, 1) AS h1_return_pct,
    round((argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-03-31') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)
         / argMinIf(toFloat64(open), window_start, toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-01-01') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) - 1) * 100, 1) AS q1_return_pct,
    round((argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-30') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)
         / argMinIf(toFloat64(open), window_start, toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-04-01') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) - 1) * 100, 1) AS q2_return_pct,
    round(argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-30') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959), 2) AS h1_close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'QQQ', 'DIA', 'IWM')
  AND window_start >= toDateTime('2026-01-01 00:00:00') AND window_start < toDateTime('2026-07-01 00:00:00')
GROUP BY ticker
ORDER BY ticker

두 분기로 나뉜 구성이 이번 상반기의 특징입니다. SPY는 -5.2%를 기록한 후 14.1%를 기록했습니다. QQQ는 -6.9%를 기록한 후 26.5%를 기록했습니다. 21.3%에는 IWM가 조용한 상승을 주도했습니다. 소형주가 6개월 동안 모든 대형주 지수를 앞질렀습니다. 분기별 세부 사항은 Q2 요약에서 확인할 수 있습니다. 상반기 수익률 계산에 관한 참고 사항: SPY의 6개월간 8.8%은 Q2 단독 수익률보다 훨씬 낮습니다. 이는 상반기에 하락과 회복이 모두 포함되었기 때문입니다. -5.2%과 14.1%의 복리 계산 결과는 표의 수치와 일치하며, 모든 '상반기 수익률' 헤드라인에는 이러한 전체 변동 과정이 포함되어 있습니다.

모든 상반기 대비 해당 상반기의 성과

8.8% 상반기 성과가 이례적인가? 아래 패널은 모든 연도의 분 단위 데이터에 대해 동일한 상반기 수익률을 재계산한다. 수익률은 정규 거래 시간의 시가부터 종가까지를 기준으로 하며, 1월부터 6월까지의 기간을 대상으로 한다. 각 ETF 쌍에 대해 연도별로 동일한 산식을 적용하여 하나의 쿼리로 계산한 후, 해당 상반기 성과를 나머지 기간과 비교하여 순위를 매긴다. 분 단위 데이터의 가장 이른 날짜는 아래 방법론에서 확인된다. 기록된 첫 번째 완전한 상반기는 영수증에 명시된 기간이다.

조회역대 모든 상반기 기록: SPY 및 QQQ, 연도별 동일 재계산(연간 세션 수 표시)
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT toYear(toTimeZone(window_start, 'America/New_York')) AS y,
       ticker,
       uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS sessions,
       round((argMax(toFloat64(close), window_start) / argMin(toFloat64(open), window_start) - 1) * 100, 1) AS h1_return_pct
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'QQQ')
  AND window_start >= toDateTime('2003-01-01 00:00:00')
  AND window_start < toDateTime('2026-07-01 00:00:00')
  AND toMonth(toTimeZone(window_start, 'America/New_York')) <= 6
  AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY y, ticker
HAVING sessions >= 100
ORDER BY y ASC, ticker ASC
조회순위 기록: 해당 상반기와 역대 모든 상반기 비교 (SPY 및 QQQ; 1위가 최상위; 자기 자신 제외)
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT ticker,
       round(anyIf(ret, y = 2026), 1) AS h1_2026_pct,
       arrayCount(x -> x > anyIf(ret, y = 2026), groupArrayIf(ret, y != 2026)) + 1 AS rank_best,
       count() AS halves_compared,
       min(y) AS first_year,
       anyIf(sessions, y = 2026) AS sessions_2026
FROM (
    SELECT toYear(toTimeZone(window_start, 'America/New_York')) AS y,
           ticker,
           uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS sessions,
           (argMax(toFloat64(close), window_start) / argMin(toFloat64(open), window_start) - 1) * 100 AS ret
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('SPY', 'QQQ')
      AND window_start >= toDateTime('2003-01-01 00:00:00')
      AND window_start < toDateTime('2026-07-01 00:00:00')
      AND toMonth(toTimeZone(window_start, 'America/New_York')) <= 6
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY y, ticker
    HAVING sessions >= 100
)
GROUP BY ticker
ORDER BY ticker ASC

SPY의 8.8%는 2004 이후 23개의 상반기 중 6위를 기록했다 (1위가 최상위). 상위 3분의 1 수준이며 기록적인 수치는 아니다. QQQ의 18.7%는 16개의 유사한 상반기 중 3위를 기록했다. QQQ 시리즈는 기간이 더 짧다. 해당 펀드는 수년간 다른 종목 코드로 거래되었다. 또한 표에 표시된 세션 수 제한 규칙에 따라, 특정 종목의 상반기 세션 수가 백 개 미만인 연도는 제외된다. 따라서 제외된 데이터는 별도의 설명 없이 표에 나타난다.

조회역대 모든 상반기 기록: DIA 및 IWM, 동일 산식 적용
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT toYear(toTimeZone(window_start, 'America/New_York')) AS y,
       ticker,
       uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS sessions,
       round((argMax(toFloat64(close), window_start) / argMin(toFloat64(open), window_start) - 1) * 100, 1) AS h1_return_pct
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('DIA', 'IWM')
  AND window_start >= toDateTime('2003-01-01 00:00:00')
  AND window_start < toDateTime('2026-07-01 00:00:00')
  AND toMonth(toTimeZone(window_start, 'America/New_York')) <= 6
  AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY y, ticker
HAVING sessions >= 100
ORDER BY y ASC, ticker ASC
조회순위 기록: DIA 및 IWM의 역대 모든 상반기 대비 순위 (1위가 최상위; 자기 자신 제외)
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT ticker,
       round(anyIf(ret, y = 2026), 1) AS h1_2026_pct,
       arrayCount(x -> x > anyIf(ret, y = 2026), groupArrayIf(ret, y != 2026)) + 1 AS rank_best,
       count() AS halves_compared,
       min(y) AS first_year,
       anyIf(sessions, y = 2026) AS sessions_2026
FROM (
    SELECT toYear(toTimeZone(window_start, 'America/New_York')) AS y,
           ticker,
           uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS sessions,
           (argMax(toFloat64(close), window_start) / argMin(toFloat64(open), window_start) - 1) * 100 AS ret
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('DIA', 'IWM')
      AND window_start >= toDateTime('2003-01-01 00:00:00')
      AND window_start < toDateTime('2026-07-01 00:00:00')
      AND toMonth(toTimeZone(window_start, 'America/New_York')) <= 6
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY y, ticker
    HAVING sessions >= 100
)
GROUP BY ticker
ORDER BY ticker ASC

소형주 행이 이번 상반기 성과의 핵심이다. IWM은 2004 이후 23개의 상반기 중 1위를 기록했다. 이는 해당 펀드의 역대 최고 성과이며, 표에 있는 모든 회복기 상반기 성과보다 앞선다. DIA의 8.4%는 23개 중 4위를 기록했다. 산출 방식은 다음과 같다. 각 달력상 상반기 내의 정규 거래 시간 시가 대비 종가를 기준으로 하며, 매년 동일한 산식을 적용한다. 비교 대상이 향후 데이터 추가 시 무분별하게 늘어나지 않도록 상한선을 현재 기간의 말일로 고정했다.

월별 현황

조회상반기 월별 수익률 (SPY 및 QQQ, 단일 쿼리로 동일 재계산)
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT toString(toStartOfMonth(toDate(toTimeZone(window_start, 'America/New_York')))) AS period_start, ticker,
    round((argMaxIf(toFloat64(close), window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) / argMinIf(toFloat64(open), window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) - 1) * 100, 1) AS month_return_pct,
    round(argMaxIf(toFloat64(close), window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959), 2) AS month_close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'QQQ')
  AND window_start >= toDateTime('2026-01-01 00:00:00') AND window_start < toDateTime('2026-07-01 00:00:00')
GROUP BY period_start, ticker
ORDER BY period_start, ticker

주가는 상승과 하락을 반복하며 변동성을 보였습니다. 4월은 상반기의 전환점이 되었습니다 (SPY 9.9%, QQQ 14.8% — QQQ의 6개월 중 가장 성적이 좋았던 달). 6월 SPY는 -1.2%로 조용하게 상반기를 마감했습니다. 해당 수치 이면의 시장 폭(breadth)을 포함한 6월 요약은 여기에서 확인할 수 있습니다. 월별 표를 분석하면 다음과 같습니다. 연초는 거의 보합세로 시작했습니다 (1월 SPY 0.9%). 2월(-0.5%)과 3월(-4.2%)을 거치며 하락세를 보였습니다. 이후 4월에 한 달 만에 추세가 반전되었고, 5월(4.9%)에 상승세가 이어졌으며, 6월에는 상승 폭이 둔화되었습니다. 6개월 중 3개월이 마이너스를 기록했습니다. 상반기가 견고한 플러스로 마감했음에도 월별로는 반반의 확률을 보였습니다. 이는 주식 시장 상반기에서 흔히 나타나는 형태이며, 단일 월의 결과가 전체 시장의 결론인 것처럼 보일 때 유념해야 할 사실입니다.

금리: 만기별 수익률 곡선 전체 현황

국채 수익률 곡선은 이동(shift)이 아닌 트위스트(twist, 곡선 변형) 양상을 보였다. 정책 금리를 가장 밀접하게 반영하는 초단기물은 거의 움직이지 않았다. 2년물은 0.66%포인트 상승했으며, 30년물은 변화가 미미했다. 본 패널은 상반기와 하반기를 비교하여 수익률 곡선 전체를 제시한다.

조회7개 만기: 상반기 초와 말의 수익률 및 변동폭
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT maturity, start_pct, end_pct, round((end_pct - start_pct) * 100, 0) AS change_bp FROM (
    SELECT '1-month' AS maturity, (SELECT round(argMin(yield_1_month, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_1_month)) AS start_pct, (SELECT round(argMax(yield_1_month, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_1_month)) AS end_pct, 1 AS o
    UNION ALL SELECT '3-month', (SELECT round(argMin(yield_3_month, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_3_month)), (SELECT round(argMax(yield_3_month, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_3_month)), 2
    UNION ALL SELECT '1-year', (SELECT round(argMin(yield_1_year, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_1_year)), (SELECT round(argMax(yield_1_year, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_1_year)), 3
    UNION ALL SELECT '2-year', (SELECT round(argMin(yield_2_year, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_2_year)), (SELECT round(argMax(yield_2_year, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_2_year)), 4
    UNION ALL SELECT '5-year', (SELECT round(argMin(yield_5_year, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_5_year)), (SELECT round(argMax(yield_5_year, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_5_year)), 5
    UNION ALL SELECT '10-year', (SELECT round(argMin(yield_10_year, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_10_year)), (SELECT round(argMax(yield_10_year, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_10_year)), 6
    UNION ALL SELECT '30-year', (SELECT round(argMin(yield_30_year, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_30_year)), (SELECT round(argMax(yield_30_year, date), 2) FROM global_markets.treasury_yields WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') AND isNotNull(yield_30_year)), 7
) ORDER BY o

변동성 열을 위에서 아래로 읽어보면 곡선 변형이 명확히 드러난다. 6개월 동안 1개월물은 -2 basis points(bp, 0.01%포인트) 움직였고, 2년물은 67 상승했으며, 30년물은 단 5 상승하는 데 그쳤다. 평행 이동(parallel shift)은 모든 만기물의 금리가 함께 움직이는 것을 의미한다. 이번 반기 동안은 수익률 곡선의 중간 부분이 움직였으며 양 끝단은 고정되었다. 즉, 단기 금리는 정책 금리 근처에 머물렀고, 장기 금리는 재산정(repricing)이 거의 이루어지지 않았다.

수익률 곡선의 기울기에 미친 영향

조회수익률 곡선(Slope) 기록: 시작, 종료, 최저치 — 이번 상반기 중 스프레드 역전 발생하지 않음
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT
    round((argMin(yield_10_year - yield_2_year, date)) * 100, 0) AS start_bp,
    round((argMax(yield_10_year - yield_2_year, date)) * 100, 0) AS end_bp,
    round(min((yield_10_year - yield_2_year)) * 100, 0) AS min_bp,
    count() AS prints
FROM global_markets.treasury_yields
WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30')
  AND isNotNull(yield_10_year) AND isNotNull(yield_2_year)

단기 금리가 장기 금리보다 빠르게 상승하는 것이 바로 수익률 곡선 평탄화(flattening)의 정의다. 2s10s spread(2년물과 10년물 금리 차이)124124 기간 동안 72에서 30 basis points(bp, 0.01%p)로 감소했다. 해당 반기 중 가장 낮은 수치는 27였으며, 수익률 곡선은 역전(inversion) 없이 평탄화되었다. 곡선 평탄화가 향후 경제 상황에 대해 무엇을 의미하는지는 예측의 영역이며, 이 표는 예측을 제공하지 않는다.

조회2s10s 스프레드, 상반기 내 모든 기록
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT toString(date) AS d, round((yield_10_year - yield_2_year) * 100, 0) AS spread_2s10s_bp
FROM global_markets.treasury_yields
WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30')
  AND isNotNull(yield_10_year) AND isNotNull(yield_2_year)
ORDER BY date

일일 데이터에 따르면 평탄화는 단일 사건이 아니라 점진적인 과정이었다. 124124 기간 동안 수치가 단계적으로 하락했으며, spread(금리 차이)는 연초 72 basis points에서 시작하여 연말 30로 마감했다.

섹터: 지수가 숨긴 분산 현상

시장의 어느 부분이 실제로 상반기 수익을 주도했는가? 11개의 SPDR(Standard & Poor's Depositary Receipts) 섹터 ETF를 절반과 4분의 1 단위로 나누어 분석했다.

조회11개 섹터 ETF: 2026년 H1 수익률, Q1 및 Q2 구분, H1 달러 거래대금
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT ticker,
    round((argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-30') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)
         / argMinIf(toFloat64(open), window_start, toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-01-01') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) - 1) * 100, 1) AS h1_return_pct,
    round((argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-03-31') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)
         / argMinIf(toFloat64(open), window_start, toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-01-01') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) - 1) * 100, 1) AS q1_return_pct,
    round((argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-30') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)
         / argMinIf(toFloat64(open), window_start, toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-04-01') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) - 1) * 100, 1) AS q2_return_pct,
    round(sumIf(toFloat64(close) * toFloat64(volume), (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) / 1e9, 1) AS h1_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 >= toDateTime('2026-01-01 00:00:00') AND window_start < toDateTime('2026-07-01 00:00:00')
GROUP BY ticker
ORDER BY ticker

분산 현상이 핵심이다. 기술주(XLK)는 상반기에 30.8% 상승하며 42%의 2분기를 기록했다. 반면 통신 서비스(XLC)는 -9.3%로 마감했다. 이는 6개월간 최우수 섹터와 최저 섹터 간의 격차가 약 40퍼센트 포인트에 달했음을 의미한다. "시장"을 보유한다는 것은 이 양극단의 섹터를 모두 보유했음을 뜻한다. 에너지(XLE)는 장기 보유에 대한 경고 사례를 보여준다. XLE는 36.9%의 1분기에 이어 -11%의 2분기를 기록하며 건강한 18.8% 상반기를 나타냈다. 에너지 섹터는 지수가 하락한 분기에는 시장에서 가장 강력한 대형 섹터였으나, 지수가 회복된 분기에는 가장 취약한 섹터 중 하나였다. 금융(XLF)은 이와 반대의 흐름을 보였다. 1분기에는 -9.9%를 기록했고, 2분기에는 7.7%를 기록했다. 단일 상반기 수치는 이러한 변동을 평탄화하지만, 분기별 데이터가 실제 흐름을 정직하게 보여준다.

각 섹터별 거래 비용

수익률 표는 어디에나 존재하지만, 호가 데이터는 흔치 않습니다. 이 패널은 각 섹터 ETF의 전체 대표 거래 세션 동안의 중앙값 매수-매도 스프레드(bid-ask spread)를 측정합니다. 해당 세션은 123 세션 중 하나이며, 여기서는 6월 29일 데이터를 기준으로 하며 해당 날짜로 표시됩니다. 당일의 모든 NBBO(National Best Bid and Offer) 업데이트를 기준으로 측정되었습니다.

조회섹터 ETF별 중앙값 호가 스프레드, 대표 세션(2026년 6월 29일) 정규장 기준
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT ticker,
    round(quantileDeterministicIf(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000, toUInt64(toUnixTimestamp64Micro(sip_timestamp)), bid_price > 0 AND ask_price >= bid_price), 2) AS med_spread_bps,
    round(count() / 1e6, 2) AS quote_updates_m,
    countIf(NOT (bid_price > 0 AND ask_price > 0 AND ask_price >= bid_price)) AS invalid_dropped
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('XLB', 'XLC', 'XLE', 'XLF', 'XLI', 'XLK', 'XLP', 'XLRE', 'XLU', 'XLV', 'XLY')
  AND sip_timestamp >= toDateTime64('2026-06-29 13:30:00', 9) AND sip_timestamp < toDateTime64('2026-06-29 20:00:00', 9)
GROUP BY ticker
ORDER BY med_spread_bps

11개 호가 모두 몇 베이시스 포인트(basis points) 이하입니다. 가장 낮은 비용은 0.62 bps(XLV)이며, 가장 높은 비용은 2.23 bps(XLRE)입니다. 이것이 "섹터 ETF는 유동성이 높다"는 말의 실질적인 의미입니다. 즉, 특정 섹터에 대한 포지션을 구축하는 비용이 0.01% 단위로 측정된다는 뜻입니다. 개별 주식과 비교하기 위해, 6월 29일 심층 분석을 보면 동일한 세션에서 유동성이 낮은 종목의 스프레드가 이보다 수백 배 높게 측정됨을 알 수 있습니다.

반기 동안의 시장 폭

반기 규모의 시장 폭은 두 가지 관점으로 분석됩니다. 거시적 관점에서는 SPY가 해당 반기의 123 기간 중 64번 상승했고 59번 하락했습니다. 이는 견조한 상승세 속에서도 일일 차트상으로는 거의 동전 던지기 수준의 확률을 보여주며, 완만한 상승 구간의 전형적인 모습을 나타냅니다. 미세한 관점인 모든 티커(ticker) 기준으로는 월 단위로 나타납니다. 6월의 상승 종목 대비 하락 종목 비율은 6월 요약에서 확인할 수 있으며(해당 기간에는 상승한 종목보다 하락한 종목이 더 많았습니다), 분기 경계 기준 수치는 Q2 요약에 포함되어 있습니다. 6개월간의 전체 시장 상승 종목 스캔은 이 페이지의 쿼리 예산을 초과합니다. 따라서 해당 한계치를 임의로 축소하는 대신 여기에서 명시합니다.

조회상반기 내 SPY 상승 대비 하락 세션, 간략 기록
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT countIf(day_ret > 0) AS up_sessions,
       countIf(day_ret < 0) AS down_sessions,
       countIf(day_ret = 0) AS flat_sessions,
       count() AS sessions_total
FROM (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,
           round((argMax(toFloat64(close), window_start) / argMin(toFloat64(open), window_start) - 1) * 100, 2) AS day_ret
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND window_start >= toDateTime('2026-01-01 00:00:00')
      AND window_start < toDateTime('2026-07-01 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 d
)

월별 옵션 거래 내역

반기 동안의 데이터는 옵션 거래 내역(options tape)의 변화 양상만을 보여준다. 아래 각 패널은 한 달간의 전체 거래 내역을 스캔한 결과다. 여기에는 총 계약 거래량과 만기 당일에 거래된 비중(0DTE)이 포함된다. 분석 결과, 거래량은 1월 1316.1 million(백만) 계약에서 6월 1477.9 million 계약으로 증가하며 상반기 중 가장 활발한 거래를 기록했다. 또한 만기 당일 거래 비중은 1월 26.5%에서 6월 34.3%로 상승하며 상반기 중 최고치를 기록했다. 6월 옵션 거래량의 3분의 1은 당일 만기되는 계약을 통해 거래되었다.

조회1월: 전체 시장 옵션 계약 거래량 및 당일 만기 비중 (단일 스캔)
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT round(sum(toFloat64(volume)) / 1e6, 1) AS contracts_mm,
       round(100.0 * sumIf(toFloat64(volume), toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6))) = toDate(toTimeZone(window_start, 'America/New_York'))) / sum(toFloat64(volume)), 1) AS zero_dte_pct,
       uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS sessions
FROM global_markets.options_minute_aggs
WHERE window_start >= toDateTime('2026-01-01 00:00:00')
  AND window_start < toDateTime('2026-02-01 00:00:00')
조회2월: 전체 시장 옵션 계약 거래량 및 당일 만기 비중 (단일 스캔)
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT round(sum(toFloat64(volume)) / 1e6, 1) AS contracts_mm,
       round(100.0 * sumIf(toFloat64(volume), toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6))) = toDate(toTimeZone(window_start, 'America/New_York'))) / sum(toFloat64(volume)), 1) AS zero_dte_pct,
       uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS sessions
FROM global_markets.options_minute_aggs
WHERE window_start >= toDateTime('2026-02-01 00:00:00')
  AND window_start < toDateTime('2026-03-01 00:00:00')
조회3월: 전체 시장 옵션 계약 거래량 및 당일 만기 비중 (단일 스캔)
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT round(sum(toFloat64(volume)) / 1e6, 1) AS contracts_mm,
       round(100.0 * sumIf(toFloat64(volume), toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6))) = toDate(toTimeZone(window_start, 'America/New_York'))) / sum(toFloat64(volume)), 1) AS zero_dte_pct,
       uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS sessions
FROM global_markets.options_minute_aggs
WHERE window_start >= toDateTime('2026-03-01 00:00:00')
  AND window_start < toDateTime('2026-04-01 00:00:00')
조회4월: 전체 시장 옵션 계약 거래량 및 당일 만기 비중 (단일 스캔)
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT round(sum(toFloat64(volume)) / 1e6, 1) AS contracts_mm,
       round(100.0 * sumIf(toFloat64(volume), toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6))) = toDate(toTimeZone(window_start, 'America/New_York'))) / sum(toFloat64(volume)), 1) AS zero_dte_pct,
       uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS sessions
FROM global_markets.options_minute_aggs
WHERE window_start >= toDateTime('2026-04-01 00:00:00')
  AND window_start < toDateTime('2026-05-01 00:00:00')
조회5월: 전체 시장 옵션 계약 거래량 및 당일 만기 비중 (단일 스캔)
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT round(sum(toFloat64(volume)) / 1e6, 1) AS contracts_mm,
       round(100.0 * sumIf(toFloat64(volume), toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6))) = toDate(toTimeZone(window_start, 'America/New_York'))) / sum(toFloat64(volume)), 1) AS zero_dte_pct,
       uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS sessions
FROM global_markets.options_minute_aggs
WHERE window_start >= toDateTime('2026-05-01 00:00:00')
  AND window_start < toDateTime('2026-06-01 00:00:00')
조회6월: 전체 시장 옵션 계약 거래량 및 당일 만기 비중 (단일 스캔)
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT round(sum(toFloat64(volume)) / 1e6, 1) AS contracts_mm,
       round(100.0 * sumIf(toFloat64(volume), toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6))) = toDate(toTimeZone(window_start, 'America/New_York'))) / sum(toFloat64(volume)), 1) AS zero_dte_pct,
       uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS sessions
FROM global_markets.options_minute_aggs
WHERE window_start >= toDateTime('2026-06-01 00:00:00')
  AND window_start < toDateTime('2026-07-01 00:00:00')

월간 샘플링을 통한 거래 비용

조회월별 지정 샘플 세션(매월 둘째 수요일)의 SPY 중앙값 호가 스프레드, 모든 NBBO 업데이트 기준
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT toDate(toTimeZone(sip_timestamp, 'America/New_York')) AS session,
       round(quantileDeterministicIf(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000, toUInt64(toUnixTimestamp64Micro(sip_timestamp)), bid_price > 0 AND ask_price >= bid_price), 3) AS med_spread_bps,
       round(count() / 1e6, 2) AS quote_updates_m,
       countIf(NOT (bid_price > 0 AND ask_price > 0 AND ask_price >= bid_price)) AS invalid_dropped
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'SPY'
  AND ((sip_timestamp >= toDateTime64('2026-01-14 14:30:00', 9) AND sip_timestamp < toDateTime64('2026-01-14 21:00:00', 9))
    OR (sip_timestamp >= toDateTime64('2026-02-11 14:30:00', 9) AND sip_timestamp < toDateTime64('2026-02-11 21:00:00', 9))
    OR (sip_timestamp >= toDateTime64('2026-03-11 13:30:00', 9) AND sip_timestamp < toDateTime64('2026-03-11 20:00:00', 9))
    OR (sip_timestamp >= toDateTime64('2026-04-15 13:30:00', 9) AND sip_timestamp < toDateTime64('2026-04-15 20:00:00', 9))
    OR (sip_timestamp >= toDateTime64('2026-05-13 13:30:00', 9) AND sip_timestamp < toDateTime64('2026-05-13 20:00:00', 9))
    OR (sip_timestamp >= toDateTime64('2026-06-10 13:30:00', 9) AND sip_timestamp < toDateTime64('2026-06-10 20:00:00', 9)))
GROUP BY session
ORDER BY session ASC

매월 두 번째 수요일 기준 SPY의 중앙값 호가 스프레드(spread)는 다음과 같습니다. 1월 샘플은 0.145 bps, 2월은 0.144였으며, 봄철 샘플 기간에는 이 수치의 약 두 배 수준을 기록했습니다. 6월 샘플은 0.409 bps로 6개월 중 가장 넓었습니다. 참고 사항: 본 데이터는 월간 중앙값이 아니라 특정 세션(매월 두 번째 수요일)을 대상으로 한 단일 표본입니다. 6개월 전체 호가 테이프를 스캔하는 것은 본 페이지의 쿼리 예산을 초과합니다. 샘플 날짜는 패널에 표시되어 있으며, 유효하지 않은 호가는 누락하지 않고 그대로 포함했습니다.

상반기 주요 종목

편집자의 선택이 아닌 측정된 명성: 아래 목록은 분기별 달러 거래대금 상위 종목입니다. 이 페이지의 근거를 명확히 하기 위해 재계산되었으며, 각 종목의 상세 분석은 해당 링크로 연결됩니다.

조회Q2 정규장 달러 거래대금, 전체 시장 (기업 확인 대기 중인 중복 심볼 제외)
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT ticker,
    round(sum(toFloat64(close) * toFloat64(volume)) / 1e9, 1) AS dollar_bn,
    round(100 * sum(toFloat64(close) * toFloat64(volume)) / max(sum(toFloat64(close) * toFloat64(volume))) OVER (), 1) AS pct_of_leader
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= toDateTime('2026-04-01 00:00:00') AND window_start < toDateTime('2026-07-01 00:00:00')
  AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
  AND ticker NOT IN ('SPCX')
GROUP BY ticker
ORDER BY dollar_bn DESC
LIMIT 8

MU은 SPY(S&P 500 ETF)의 거래량을 앞질렀습니다(2분기 기준 $2047.5 billion 대 $2032 billion) — 이는 Q2 요약에 기재된 내용과 동일합니다. 해당 상위 목록에 포함된 6개 개별 종목의 상반기 실적은 다음과 같습니다:

조회주요 종목군의 상반기 및 Q2 수익률 및 상반기 달러 거래대금 — 티커 필터링 쿼리
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT ticker,
    round((argMaxIf(toFloat64(close), window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)
         / argMinIf(toFloat64(open), window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) - 1) * 100, 1) AS h1_return_pct,
    round((argMaxIf(toFloat64(close), window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)
         / argMinIf(toFloat64(open), window_start, window_start >= toDateTime('2026-04-01 00:00:00') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) - 1) * 100, 1) AS q2_return_pct,
    round(sumIf(toFloat64(close) * toFloat64(volume), (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) / 1e9, 1) AS h1_dollar_bn
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('MU', 'NVDA', 'TSLA', 'SNDK', 'AMD', 'INTC')
  AND window_start >= toDateTime('2026-01-01 00:00:00') AND window_start < toDateTime('2026-07-01 00:00:00')
GROUP BY ticker
ORDER BY ticker

메모리 및 반도체 섹터가 상반기를 주도했습니다. SNDK는 6개월간 830.1%의 수익률을 기록했고, MU는 290%를 기록했습니다 — 6월의 세부 분석은 여기에서 확인 가능합니다 — INTC는 269.3%를 기록했습니다. 상반기 거래대금이 $3287.9 billion에 달하며 해당 목록에서 가장 큰 규모를 차지한 NVDA의 수익률은 5.2%였습니다. 메모리 종목들이 수배의 수익을 내는 동안 NVDA는 한 자릿수 수익률을 기록했습니다; 6월 상세 분석에서 세션별로 나타난 이러한 차이를 확인할 수 있습니다. TSLA는 -8.2%를 기록하며 해당 목록 내 유일한 하락 종목이 되었습니다. 6월에 상장된 대형 종목은 재사용된 심볼로 거래되고 있으며, 법인 확인이 완료될 때까지 상위 종목 스캔에서 제외되었습니다 — 첫 달의 거래 내역은 별도 게시물로 제공됩니다. 기준: 상위 종목 세트는 2분기 정규 거래 시간 달러 거래대금을 기준으로 선정되었습니다(위의 스캔 결과 참조). 수익률 열은 상반기 기준이며, 첫 정규 거래 시작부터 마지막 정규 거래 종료 시점까지를 나타냅니다.

상반기 IPO 물량 추이

조회상반기 월별 신규 상장 건수
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT toString(toStartOfMonth(listing_date)) AS m, count() AS listings
FROM global_markets.stocks_ipos
WHERE listing_date >= toDate('2026-01-01') AND listing_date <= toDate('2026-06-30')
GROUP BY m
ORDER BY m

상장 물량은 상반기 초반에 집중되었으며 불균형한 모습을 보였습니다. 47건의 상장이 이루어진 2월이 상반기 중 가장 활발한 달이었으며, 17건으로 3월이 가장 저조했습니다. 유명한 6월의 대규모 상장은 평이한 거래량을 기록한 달(35건)에 발생했습니다.

상반기 일정

조회2026년 상반기 기업 일정 (3개 월말 공시-지수 간격 모두 공개)
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT
    (SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date >= toDate('2026-01-01') AND ex_dividend_date <= toDate('2026-06-30')) AS ex_div_events,
    (SELECT count() FROM global_markets.stocks_splits WHERE execution_date >= toDate('2026-01-01') AND execution_date <= toDate('2026-06-30')) AS splits,
    (SELECT count() FROM global_markets.stocks_ipos WHERE listing_date >= toDate('2026-01-01') AND listing_date <= toDate('2026-06-30')) AS ipos,
    (SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date >= toDate('2026-01-01') AND filing_date <= toDate('2026-06-30')) AS h1_filings,
    (SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = toDate('2026-03-31')) AS filings_mar31,
    (SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = toDate('2026-04-30')) AS filings_apr30,
    (SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = toDate('2026-06-30')) AS filings_jun30

상반기 동안 205개의 기업이 상장되었습니다. 6월의 최대 데뷔 사례는 개별 접수 내역 게시물로 확인할 수 있습니다. 이와 함께 830건의 주식 분할과 28356건의 배당락(ex-dividend) 이벤트가 발생했습니다. 규모 면에서 보면, 상반기 동안 거래일마다 평균 한 개 이상의 신규 상장이 이루어진 셈입니다. 공시 총계에는 세 가지 특이 사항이 포함됩니다. SEC(미국 증권거래위원회) 지수는 해당 상반기 중 마지막 날이 평일인 모든 월말에 데이터가 거의 비어 있습니다(3월 31일의 55건, 4월 30일의 34건, 6월 30일의 31건 공시가 인접한 날의 수천 건과 대조됨). 따라서 데이터 피드가 보충될 때까지 상반기 공시 건수는 실제보다 적게 집계됩니다. 월말 공백에 대한 진단 노트를 참조하십시오.

세션 영수증

조회상반기 내 123개 세션, 시장 기록 검증 완료
모든 수치 뒤에 숨겨진 정확한 SQL
SELECT
    (SELECT uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) FROM global_markets.delayed_stocks_minute_aggs
     WHERE ticker = 'SPY' AND window_start >= toDateTime('2026-01-01 00:00:00') AND window_start < toDateTime('2026-07-01 00:00:00')) AS h1_sessions

데이터 참고 사항

전체 데이터 참고 사항
  • 공매도 잔고는 생성 시점 기준 6월 15일 결제일을 기준으로 종료됩니다 (6월 말 데이터 공시 대기 중 — 자세한 내용은 6월 요약에서 확인 가능하며, 해당 데이터가 업데이트되면 본 게시물도 갱신됩니다).
  • 2026년 월말 신고일 중 세 곳이 비어 있습니다 (3월 31일, 4월 30일, 6월 30일 — 해당 반기의 마지막 날이 평일인 모든 월말); 데이터 수치와 함께 공개되었으며, 월말 공백 관련 노트에서 분석되었습니다. 전년도 월말에는 수천 건의 신고가 존재하므로, 이는 신고 휴일이 아닌 데이터 피드의 공백입니다.
  • 반기 규모의 리더보드는 제한적입니다: 6개월 단위의 시장 전체 스캔은 이 페이지의 쿼리 예산을 초과합니다. 따라서 주요 종목 세트는 본문에 표시된 분기 규모의 리더 스캔을 통해 선정되며, 해당 고정된 세트에 대해 반기 수익률을 계산합니다 — 기준은 사용된 위치에 명시되어 있습니다. Q26월 요약에는 각 규모에 따른 전체 리더 테이블이 포함되어 있습니다.
  • 반기 규모의 전체 시장 폭(breadth) 또한 제한적입니다 — 일일 단위 분할이 표시됩니다; 티커 단위 수치는 월간 및 분기 규모로 제공되며, 폭(breadth) 섹션에 연결되어 있습니다.
  • QQQ의 이력 시리즈는 SPY보다 짧습니다: 해당 펀드는 수년 동안 다른 루트 심볼로 거래되었습니다; 세션 수 제한에 따라 해당 연도들은 제외되었습니다 (연도별 세션 수는 표에 기재되어 있습니다).
  • 6개의 옵션 패널은 전체 테이프 월간 스캔이며, 스프레드 추세는 월별로 지정된 한 개의 세션을 샘플링합니다 — 두 방식 모두 배치 경로로 실행됩니다; 샘플 기반은 본문에 명시되어 있습니다.
  • 미시구조(Microstructure) 데이터는 6월 29일 심층 분석에서 확인할 수 있습니다.

방법론

  • 해당 기간은 2026년 1월 1일부터 6월 30일까지입니다. 관측된 봉(bar)을 통해 검증된 123 세션이 포함됩니다. 수익률은 각 구간 내 정규 거래 시간의 시가부터 종가까지를 기준으로 하며, 제시된 동일한 쿼리로 계산되었습니다.
  • 과거 데이터 비교는 생성 시점에 전체 분 단위 이력(minute history)을 바탕으로 실시간(LIVE) 재계산됩니다. 저장된 값을 읽어오지 않습니다. 데이터 깊이 검증 결과, 지연된 뷰에서 사용된 가장 이른 분 단위 봉의 날짜는 기본 테이블(2003년 9월)과 일치함을 작성 단계에서 확인했습니다. 따라서 파일에 기록된 첫 번째 완전한 상반기는 2004년입니다. 모든 이력 쿼리는 해당 기간의 말단을 상한선으로 고정하며(이후 연도가 통합되어도 비교 집단이 확장되지 않음), 연도별 세션 수와 함께 최소 세션 보호 규칙을 적용합니다.
  • 타임스탬프는 원시 UTC 범위와 함께 UTC로 저장됩니다. 다년 이력 블록은 동부 표준시(Eastern wall clock) 기준 정규 거래 시간(09:30–15:59, 행별 변환 적용 — 수십 년에 걸친 유일한 일광 절약 시간제(DST) 안전 관행)을 기준으로 필터링합니다. EDT(Eastern Daylight Time) 전용 범위의 단일 구간 블록은 이에 상응하는 원시 UTC 대역을 사용합니다. 두 관행 모두 여기에 명시되어 있습니다.
  • 생성 프로세스는 제한된 읽기 전용 경로를 통해 실행됩니다. 공개 페이지는 실시간 쿼리를 수행하지 않습니다. 데이터 웨어하우스 상태는 2026년 7월 5일 기준입니다.

본 보고서는 정기 반기 요약의 첫 번째 판이며, 연간 요약판은 1월에 발행됩니다. 분기별 상세 정보: 2026년 2분기. 비교 대상인 거시 경제 지표는 거시 경제 현황에서 확인할 수 있습니다.