Strasmore Research
학습 Matt Connor작성자 Matt Connor · 업데이트됨 2026-09-05 · data as of September 5, 2026 · refreshed weekly

공매도 잔고 데이터가 항상 2주 늦는 이유

공매도 잔고는 월 두 차례 결제일에 집계된 뒤 약 8영업일 후 공개됩니다. FINRA 보고 주기와 지연 기간, 공개 전 변동, days to cover를 설명합니다.

공매도 잔고 데이터가 항상 오래된 상태인 데는 구조적인 이유가 있다. 실시간으로 제공되는 데이터가 아니기 때문이다. 브로커는 FINRA가 정한 결제일에 계좌에서 보유한 공매도 주식 수를 월 두 차례, 월중과 월말에 집계한다. 이후 해당 총계를 FINRA에 제출한다. FINRA는 모든 회원사의 보고서를 취합해 약 8영업일 후 합산 수치를 공개한다. 여기에 파일이 벤더와 데이터베이스를 거쳐 화면에 표시되기까지의 과정까지 더하면, 특정일에 이용 가능한 가장 최신 공매도 잔고 수치는 실제 포지션이 1~4주 전에 어떻게 설정돼 있었는지를 보여준다. 이 페이지는 이를 단정하지 않고 그 시차를 측정한다.

보고 지연이 실제로 발생하는 방식

이 과정은 네 단계로 진행되며, 각 단계에서 며칠씩 추가됩니다.

  1. 결제일. FINRA는 월중과 월말에 각각 한 번씩 결제일 일정을 공표합니다. 각 결제일에 모든 브로커-딜러는 고객 계좌와 자기매매 계좌에 보유된 공매도 포지션을 기록합니다. 이는 거래일이 아니라 결제일입니다. T+1 결제에서는 월요일에 체결된 거래가 화요일에 결제되므로, 결제일에 집계되는 포지션은 해당 시점까지 결제가 완료된 거래에 따른 포지션입니다.
  2. 보고 기한. 각 회원사는 다음 영업일 며칠 이내에 종목별 공매도 잔고 합계를 FINRA에 제출합니다. 이 단계에서는 어떤 정보도 공개되지 않습니다. 이는 시장 데이터 피드가 아니라 규제기관 제출 자료입니다.
  3. 취합. FINRA는 모든 종목에 대해 수천 개 회원사의 보고 자료를 합산하고 하나의 파일을 작성합니다. 결제일별·종목별 단일 수치만 포함되며, 장중 이력이나 거래 장소별 세부 정보, 회원사별 내역은 제공되지 않습니다.
  4. 공개. 해당 파일은 보통 설명 대상 결제일로부터 영업일 기준 약 8일 후에 공개됩니다. 이후 데이터 제공업체가 파일을 가져오고, 거래소가 이를 재공표하며, 이 페이지의 기반이 되는 데이터 웨어하우스와 같은 시스템이 자료를 수집합니다.

누군가 수치를 보류하고 있는 것이 아닙니다. 지연은 수집 기간, 취합 기간, 배포 단계가 합쳐진 결과입니다. 각 단계는 스트리밍 방식이 아니라 일정에 따라 일괄 처리됩니다.

측정된 날짜 기준 지연 기간은 얼마인가?

다음은 이 데이터 웨어하우스가 실시간 증분 데이터로 수신한 모든 결제일이다. 한쪽에는 결제일을, 다른 쪽에는 해당 행이 이곳에 처음 나타난 날짜를 표시했다.

조회단계적으로 전달된 각 결제 데이터: 한 날짜에 측정되고 며칠 후 파일에 기록됨
settlement_date여기에 도착했다공표 지연 일수
2026-03-132026-04-0119
2026-03-312026-04-1010
2026-04-152026-05-0116
2026-04-302026-05-1111
2026-05-152026-06-1026
2026-05-292026-06-1012
2026-06-152026-07-0116
2026-06-302026-07-1111
2026-07-152026-08-0117
2026-07-312026-08-1111
2026-08-142026-09-0118
모든 수치 뒤에 숨겨진 정확한 SQL
WITH first_arrival AS (
    SELECT settlement_date,
           toDate(min(_ingest_time)) AS arrived
    FROM global_markets.stocks_short_interest
    GROUP BY settlement_date
),
bulk_days AS (
    SELECT arrived
    FROM first_arrival
    GROUP BY arrived
    HAVING count() > 5
)
SELECT settlement_date,
       toString(arrived) AS arrived_here,
       dateDiff('day', settlement_date, arrived) AS publication_lag_days
FROM first_arrival
WHERE arrived NOT IN (SELECT arrived FROM bulk_days)
ORDER BY settlement_date
직접 실행해 보기

현재 파일에 기록된 가장 최근 결제일 2026-08-142026-09-01에 이곳에 도착했다. 해당 결제일이 나타내는 포지션이 기록된 후 18일이 지난 시점이다. 그 직전 결제일은 11일이 걸렸다. 전체 시계열을 보면 지연 기간은 일정하지 않고 범위로 나타난다.

조회한 행에 나타낸 파이프라인 지연: 이 수치에서 의도적으로 제외한 대량 백필분 포함
측정된 결제 건수최단 지연 일수중간 지연 일수최장 지연 일수일괄 적재된 결제 건수일괄 적재일
111016261972026-03-16
모든 수치 뒤에 숨겨진 정확한 SQL
WITH first_arrival AS (
    SELECT settlement_date,
           toDate(min(_ingest_time)) AS arrived
    FROM global_markets.stocks_short_interest
    GROUP BY settlement_date
),
bulk_days AS (
    SELECT arrived
    FROM first_arrival
    GROUP BY arrived
    HAVING count() > 5
),
organic AS (
    SELECT settlement_date,
           dateDiff('day', settlement_date, arrived) AS lag
    FROM first_arrival
    WHERE arrived NOT IN (SELECT arrived FROM bulk_days)
)
SELECT count() AS settlements_measured,
       min(lag) AS fastest_lag_days,
       round(quantileDeterministic(0.5)(lag, cityHash64(settlement_date)), 1) AS median_lag_days,
       max(lag) AS slowest_lag_days,
       (SELECT count() FROM first_arrival WHERE arrived IN (SELECT arrived FROM bulk_days)) AS settlements_bulk_loaded,
       (SELECT toString(max(arrived)) FROM bulk_days) AS bulk_load_date
FROM organic
직접 실행해 보기

증분 방식으로 전달된 11건의 결제일 가운데 가장 빠른 데이터는 결제일 후 10일 만에 도착했고, 가장 늦은 데이터는 26일이 걸렸다. 중앙값은 16일이다. 제목의 “2주 경과”라는 표현은 추정이 아니라 측정 결과다.

이 쿼리에서 제외되는 항목에 유의해야 한다. 데이터 웨어하우스의 이력은 게시 속도를 기록한 자료가 아니다. 2026-03-16에 이 데이터베이스는 아카이브를 한 번에 백필하면서 197건의 결제일을 동시에 적재했다. 해당 행의 수집 타임스탬프는 공시 시점이 아니라 백필 시점을 나타낸다. 따라서 이를 이용해 계산한 “지연 기간”은 당사의 적재 일정이 만든 인위적인 결과다. 아카이브가 구축된 후 한 건씩 도착한 결제일만 실제 데이터 파이프라인을 측정한다. 위의 행들이 이에 해당한다.

현재 주기가 진행된 위치

지연은 그 자체의 간극에서 가장 쉽게 확인할 수 있습니다. 어느 시점이든 이미 지나갔지만 아직 공개되지 않은 결제일이 존재합니다. 이 패널은 현재 상태를 보여주는 영수증입니다.

조회현재 사이클 상태: 파일에 기록된 최신 발표값과 아직 파이프라인에 있는 값
파일에 기록된 최신 결제해당 공시의 증권 수해당 공표 지연 일수파일의 다음 결제 행 수이후 일별 공매도 거래량 파일결제일부터 최신 일별 파일까지의 일수
2026-08-14224801801521
모든 수치 뒤에 숨겨진 정확한 SQL
WITH (SELECT max(settlement_date) FROM global_markets.stocks_short_interest) AS latest
SELECT toString(latest) AS latest_settlement_on_file,
       (SELECT count() FROM global_markets.stocks_short_interest
        WHERE settlement_date = latest) AS securities_in_that_print,
       (SELECT dateDiff('day', latest, toDate(min(_ingest_time))) FROM global_markets.stocks_short_interest
        WHERE settlement_date = latest) AS its_publication_lag_days,
       (SELECT count() FROM global_markets.stocks_short_interest
        WHERE settlement_date > latest AND settlement_date <= latest + 16) AS next_settlement_rows_on_file,
       (SELECT count(DISTINCT date) FROM global_markets.stocks_short_volume
        WHERE date > latest) AS daily_short_volume_files_since,
       (SELECT dateDiff('day', latest, max(date)) FROM global_markets.stocks_short_volume) AS days_from_settlement_to_newest_daily_file
직접 실행해 보기

현재 기록된 가장 최근 공매도 잔고 데이터는 2026-08-14 결제분입니다. 22480개 종목을 포함하며, 결제일 이후 18일이 지나 공개되었습니다. 주기상 다음 결제분에는 0개 행이 표시됩니다. 아직 공개되지 않았으며, 앞서 측정한 지연 수준을 고려하면 전적으로 정상입니다. 해당 열은 의도적으로 0을 상한으로 설정했습니다. 데이터가 공개되면 이 제한 조건이 작동합니다. 이에 따라 이 페이지는 오래된 문장을 조용히 제공하는 대신 업데이트 대기 상태로 유지됩니다. 한 주기 전 6월 정리에 인라인으로 적용했던 것과 동일한 트립와이어입니다.

한편 일일 공매도 거래량 파일은 해당 결제일 이후 15회 공개되었습니다. 가장 최근 데이터는 최신 공매도 잔고 스냅샷보다 21일 더 새롭습니다. FINRA 데이터 세트는 두 개이며, 시계도 서로 다릅니다.

데이터가 집계되는 동안 움직이는 것

가격이 그 사이에 움직일 때만 시차가 의미가 있다. 실제로 가격은 움직인다. 이 패널은 최신 결제 가격을 기준으로 각 종목의 결제일 정규장 종가와 파일이 실제로 도착한 날의 종가를 비교한다.

조회정보 공백 기간: 결제일과 공매도 잔고가 발표된 날 사이에 5개 종목에서 발생한 변동
티커공매도 주식 수(M)결제일 종가공표 시점 종가보류 중 변동률(%)기간 내 세션 수
AAPL116.3305.98325.146.313
MU30971.98933.24-413
TSLA69.2342.28356.12413
NVDA286225.12217.54-3.413
GME5418.6518.80.813
모든 수치 뒤에 숨겨진 정확한 SQL
WITH latest AS (SELECT max(settlement_date) AS d FROM global_markets.stocks_short_interest),
arrived AS (
    SELECT toDate(min(_ingest_time)) AS a
    FROM global_markets.stocks_short_interest
    WHERE settlement_date = (SELECT d FROM latest)
),
daily AS (
    SELECT ticker,
           toDate(toTimeZone(window_start, 'America/New_York')) AS session,
           argMax(toFloat64(close), window_start) AS rth_close
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('AAPL', 'TSLA', 'NVDA', 'GME', 'MU')
      AND toDate(toTimeZone(window_start, 'America/New_York')) >= (SELECT d FROM latest)
      AND toDate(toTimeZone(window_start, 'America/New_York')) <= (SELECT a FROM arrived)
      AND toHour(toTimeZone(window_start, 'America/New_York')) * 60
          + toMinute(toTimeZone(window_start, 'America/New_York')) BETWEEN 570 AND 959
    GROUP BY ticker, session
)
SELECT si.ticker AS ticker,
       round(si.short_interest / 1e6, 1) AS shares_short_m,
       round(argMin(d.rth_close, d.session), 2) AS close_at_settlement,
       round(argMax(d.rth_close, d.session), 2) AS close_when_published,
       round((argMax(d.rth_close, d.session) / argMin(d.rth_close, d.session) - 1) * 100, 1) AS move_while_pending_pct,
       count() AS sessions_in_window
FROM global_markets.stocks_short_interest AS si
INNER JOIN daily AS d ON d.ticker = si.ticker
WHERE si.settlement_date = (SELECT d FROM latest)
GROUP BY si.ticker, si.short_interest
ORDER BY abs(move_while_pending_pct) DESC, si.ticker ASC
직접 실행해 보기

이 기간은 13거래 세션에 걸쳐 있었다. 다섯 종목 중 가장 큰 폭으로 움직인 종목은 AAPL였다. 이 종목은 결제일 종가 기준 $305.98에서 공매도 잔고 데이터가 공개된 날 $325.14로 움직였다. 이는 공시된 공매도 포지션이 정의상 116.3백만 주로 고정돼 있던 기간 동안 6.3% 변동한 것이다. 변동 폭이 가장 작았던 종목은 GME였지만, 여전히 0.8% 움직였다.

이것이 시차의 실질적인 의미다. “X의 공매도 잔고”를 보도하는 모든 헤드라인은 마지막 결제 시점의 포지션을 설명한다. 위 기간에 발생한 모든 움직임은 해당 수치에 반영되지 않는다. 공매도 세력은 상승세에서 포지션을 청산했을 수도 있고, 약세에서 포지션을 추가했을 수도 있다. 이 수치만으로는 알 수 없으며, 다음 공시가 나올 때까지도 알 수 없다.

오래된 분자를 사용해 산출한 days to cover

days to cover는 공매도 잔고를 일평균 거래량으로 나눈 값이다. 대부분의 독자가 실제로 접하는 비율이며, 두 가지 측면에서 시차가 발생한다. 분자는 결제일 기준으로 고정되고, 분모인 거래량은 파일 자체가 몇 주 전에 산출한 값이다. GameStop은 가장 분명한 사례다. 대중적으로 잘 알려진 종목인 동시에 거래가 활발한 종목 가운데 공매도 포지션이 집중된 종목이기 때문이다.

조회GME 상환 소요일: 파일에 보고된 값과 발표 대기 중 거래량으로 재계산한 값
결제공매도 주식 수(M)파일 기준 ADV(M)보고된 days to cover결제 이후 테이프 기준 ADV(M)최근 거래량 기준 days to cover차이 일수측정된 세션 수
2026-08-145410.175.315.59.824.5112
모든 수치 뒤에 숨겨진 정확한 SQL
WITH latest AS (SELECT max(settlement_date) AS d FROM global_markets.stocks_short_interest),
arrived AS (
    SELECT toDate(min(_ingest_time)) AS a
    FROM global_markets.stocks_short_interest
    WHERE settlement_date = (SELECT d FROM latest)
),
tape AS (
    SELECT count(DISTINCT toDate(toTimeZone(window_start, 'America/New_York'))) AS sessions,
           sum(toFloat64(volume)) AS shares
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'GME'
      AND toDate(toTimeZone(window_start, 'America/New_York')) > (SELECT d FROM latest)
      AND toDate(toTimeZone(window_start, 'America/New_York')) <= (SELECT a FROM arrived)
      AND toHour(toTimeZone(window_start, 'America/New_York')) * 60
          + toMinute(toTimeZone(window_start, 'America/New_York')) BETWEEN 570 AND 959
)
SELECT toString((SELECT d FROM latest)) AS settlement,
       round(si.short_interest / 1e6, 1) AS shares_short_m,
       round(si.avg_daily_volume / 1e6, 2) AS file_adv_m,
       round(si.days_to_cover, 2) AS reported_days_to_cover,
       round(tape.shares / tape.sessions / 1e6, 2) AS tape_adv_since_settlement_m,
       round(si.short_interest / (tape.shares / tape.sessions), 2) AS days_to_cover_on_recent_volume,
       round(abs(si.short_interest / (tape.shares / tape.sessions) - si.days_to_cover), 2) AS days_of_difference,
       tape.sessions AS sessions_measured
FROM global_markets.stocks_short_interest AS si, tape
WHERE si.ticker = 'GME'
  AND si.settlement_date = (SELECT d FROM latest)
직접 실행해 보기

행을 왼쪽에서 오른쪽으로 읽으면 된다. 2026-08-14 결제일 기준 GameStop의 공매도 잔고는 54백만 주였다. 파일은 여기에 10.17백만 주의 일평균 거래량을 적용해 스크리너에 표시되는 수치인 5.31일의 days to cover를 제시한다.

이제 분모를 실제 거래량으로 바꿔 보자. 해당 공시 데이터가 아직 처리 중이던 기간에 거래된 12개의 정규 거래 세션에서 GameStop의 통합 거래 테이프 기준 일평균 거래량은 5.5백만 주였다. 동일한 공매도 잔고를 이 거래량으로 나누면 9.82이 된다. 이는 공시된 비율보다 4.51일 짧은 수치이며, 분자는 동일하게 유지했다. 달라진 것은 거래량 가정뿐이다. days to cover는 두 개의 특정 시점 데이터로 산출한 날짜 기준 비율로 봐야 하며, 포지션을 청산하는 데 실제로 얼마나 걸릴지를 보여주는 실시간 지표로 해석해서는 안 된다.

공매도 압박: 실제로 지연이 문제가 되는 지점

대부분의 사람들이 이 질문을 검색하는 이유는 공매도 압박 때문이다. 공매도 압박에서는 공매도 포지션이 핵심이며, 이는 실시간으로 누구도 확인할 수 없는 수치다. 2021년 초 GameStop 사례가 대표적인 예다. 아래 열은 각 결제일의 정규장 종가와 그로부터 8거래일 후의 종가를 보여준다. 이는 FINRA의 약 8영업일 공시 목표 시점을 대신 나타낸다.

조회GME, 2020~21년 겨울: 각 공매도 잔고 발표값과 공개 전 가격 변동(실제 거래 가격 기준)
결제공매도 주식 수(M)결제일 종가8개 세션 후 종가보류 중 변동률(%)
2020-12-1568.113.8720.9851.3
2020-12-3171.218.8131.4467.1
2021-01-1561.835.49197.44456.3
2021-01-2921.4328.2451.19-84.4
2021-02-1216.552.33109.16108.6
2021-02-2614.2101.6263.05158.9
모든 수치 뒤에 숨겨진 정확한 SQL
WITH daily AS (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS session,
           argMax(toFloat64(close), window_start) AS cl
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'GME'
      AND window_start >= toDateTime('2020-12-01 00:00:00')
      AND window_start < toDateTime('2021-03-15 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 session
),
ranked AS (
    SELECT session, cl, row_number() OVER (ORDER BY session) AS n
    FROM daily
)
SELECT toString(si.settlement_date) AS settlement,
       round(si.short_interest / 1e6, 1) AS shares_short_m,
       round(r0.cl, 2) AS close_at_settlement,
       round(r8.cl, 2) AS close_8_sessions_later,
       round((r8.cl / r0.cl - 1) * 100, 1) AS move_while_pending_pct
FROM global_markets.stocks_short_interest AS si
INNER JOIN ranked AS r0 ON r0.session = si.settlement_date
INNER JOIN ranked AS r8 ON r8.n = r0.n + 8
WHERE si.ticker = 'GME'
  AND si.settlement_date >= toDate('2020-12-15')
  AND si.settlement_date <= toDate('2021-02-26')
ORDER BY si.settlement_date
직접 실행해 보기

2021-01-15 결제일을 살펴보자. 해당 결제일에는 주가가 $35.49일 때 공매도 잔고가 61.8백만 주로 집계됐다. 이와 같은 수치가 대중에게 공개될 무렵인 8거래일 후, GameStop의 종가는 $197.44456.3%만큼 움직였다. 공매도 잔고 수치를 공시 당일에 확인한 사람은 이미 해당 가격에 존재하지 않는 주식의 상황을 읽고 있었던 셈이다.

다음 공시에서는 반대의 문제가 나타난다. 2021-01-29 결제일에는 공매도 포지션 대부분이 청산된 상태였고, 주가가 $328.24일 때 공매도 잔고는 21.4백만 주로 집계됐다. 8거래일 후 주가는 $51.19로, -84.4%였다. 해당 수치를 보여주는 파일이 공개되기 전에 이미 공매도 포지션 청산이 진행된 것이다. 공매도 압박의 두 단계인 포지션 집중과 청산은 모두 사후에 공개됐다.

매일 발표되는 유사 지표와 그 한계

FINRA는 매일 발표하는 지표를 제공한다. 바로 short volume(공매도 체결로 표시된 당일 신고 거래량의 비중)이며, 다음 날 아침 공개된다. 이는 실시간에 가까운 지표지만, 측정 대상은 다르다. Short volume은 거래 흐름을 집계한다. 이 중 상당 부분은 장 마감 전에 포지션이 상쇄되는 market maker의 헤지 거래다. 반면 보유 포지션을 집계하지는 않는다. 어떤 종목은 일주일 내내 매일 높은 short volume을 기록하면서도 short interest는 전혀 변하지 않을 수 있다. 두 데이터세트의 차이는 도로 위의 교통량과 도착 지점에 주차된 차량의 차이와 같다. 두 파일에 대한 설명은 여기에 자세히 나와 있다.

미국에는 매일 공시되는 short interest 수치가 없다. 데이터 제공업체들은 securities lending 및 거래 흐름 데이터를 바탕으로 산출한 일일 추정치를 판매한다. 이는 공시 수치가 아니라 모델에 따른 추정치다. 공시 수치는 한 달에 두 번 존재하며, 발표도 늦다.

FAQ

공매도 잔고 데이터는 왜 2주 전 자료입니까?

브로커는 월 2회의 결제일에만 공매도 포지션을 스냅샷으로 기록하고, 영업일 기준 며칠 후 총잔고를 제출합니다. FINRA는 결제일로부터 약 8영업일 후 집계된 파일을 공개합니다. 실시간으로 전달받은 결제 자료를 기준으로 전체 처리 과정에는 10~26일이 걸렸으며, 중앙값은 16일이었습니다.

브로커는 공매도 잔고를 어떻게 계산하고 보고합니까?

각 브로커-딜러는 결제일 기준으로 고객 계좌와 자기계정에 보유한 공매도 주식 수를 집계합니다. 이후 종목별로 합산해 해당 총량을 FINRA에 제출합니다. FINRA는 모든 회원사의 보고를 종목별 하나의 수치로 합산하며, 2026-08-14 프린트에 포함된 종목은 22480개입니다. 이는 거래 건수가 아니라 포지션에 대한 규제 목적의 집계치입니다.

NYSE, Nasdaq 또는 OTC 종목은 보고 주기가 다릅니까?

아닙니다. 미국의 모든 상장 시장에는 동일한 월 2회 결제 일정과 동일한 집계·공개 주기가 적용됩니다. 거래소는 자체적으로 수치를 산출하지 않고 FINRA 파일을 재공개합니다. 종목의 상장 시장은 공매도 잔고 수치가 얼마나 오래된 자료인지에 영향을 주지 않습니다.

공매도 잔고 비율이 높거나 낮다는 것은 무엇을 의미합니까?

특정 기준치만으로 종목이 좋은 보유 종목인지 나쁜 보유 종목인지 판단할 수 없습니다. 높은 수치가 향후 주가를 예측하는 것도 아닙니다. 다만 수급 쏠림 지표는 공매도 포지션이 해당 종목의 거래 가능한 유통량에 비해 얼마나 큰지를 보여줍니다. GameStop의 최근 프린트에는 5.31일의 보고 기준 공매도 상환 소요 기간이 반영되어 있습니다. 대부분의 유동성 높은 종목은 한 자릿수 초반 수준입니다. 분포는 현재 수급 쏠림 상위 종목에서 확인할 수 있습니다.

보고 지연은 공매도 스퀴즈에 영향을 줍니까?

보고 지연의 영향이 가장 크게 나타나는 부분입니다. 2021-01-15 GameStop 결제일 이후 공표 시점을 근사하는 8개 거래 세션 시점까지 주가는 456.3% 움직였습니다. 2021-01-29 프린트가 발표될 때에는 공매도 포지션이 이미 21.4백만 주로 감소한 상태였습니다. 스퀴즈에 따른 수급 쏠림은 사건이 발생한 뒤에야 공개 데이터로 확인됩니다.


위의 모든 패널에는 해당 결과를 산출한 SQL이 함께 제공됩니다. 하나를 펼쳐 수치를 검증하거나, Strasmore terminal에서 결제일 캘린더를 실행할 수 있습니다.

#short interest#data quality#settlement#reporting lag#short squeeze