做空數據延遲原因 兩週舊資料
做空數據每月兩次結算,經FINRA彙整後約八個工作日發布,加上傳輸時間,最新資料反映一至四週前持倉,延遲來自批次處理而非即時串流。
做空數據之所以總是落後,有其結構性原因:它不是即時資訊。券商會根據美國金融業監管局(FINRA)排定的結算日,每月兩次(月中與月底)對其帳戶內的做空股數進行快照,再將這些總數提交給FINRA。FINRA彙整所有會員公司的報告後,大約在八個工作日後公布彙總數據。再加上資料供應商與資料庫傳輸至你螢幕所需的時間,任何一天所能取得的最新做空餘額數字,反映的其實是一到四週前的持倉狀況。本頁面旨在衡量這個時間落差,而非直接斷言其存在。
申報延遲的實際發生過程
這個循環包含四個步驟,每個步驟都會增加數天時間。
- 結算日期。 FINRA 會公布結算日期表,一個在月中,一個在月底。在每個結算日,所有經紀交易商都會記錄其客戶帳戶與公司帳戶中持有的空頭部位。這些是結算日期,而非交易日:在 T+1 結算制度下,週一執行的交易會在週二結算,因此在結算日計算的部位,是那些交易已在該時間點前完成結算的部位。
- 申報截止日。 每家會員公司會在接下來幾個營業日內,向 FINRA 申報其每檔證券的空頭總數。此階段資料不對外公開;這是監管申報,而非市場數據串流。
- 彙整。 FINRA 將數千家公司的申報資料加總,為每檔證券製作一份檔案:每個結算日、每檔證券只有一個數字,沒有盤中歷史、沒有交易場所細節、也沒有個別公司的細項。
- 發布。 這份檔案大約在它所描述的結算日之後八個營業日對外公開。隨後,數據供應商會擷取它,交易所會重新發布它,而像本頁面背後的資料倉儲系統則會將其匯入。
沒有人刻意壓著這個數字不放。延遲是蒐集窗口、彙整窗口與分發環節的總和,每個步驟都是按日曆執行的批次處理,而非即時串流。
延遲天數究竟有多長?
以下是本倉庫以即時增量方式接收的每一筆結算日期,一側為結算日期,另一側為該筆資料首次出現在此處的日期。
每個數據背後的精確 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-07-15 於 2026-07-25 送達此處,距離其所描述的部位被記錄的時間已過了 10 天。前一次結算則花了 11 天。從整個序列來看,其型態呈現一個區間,而非固定值:
每個數據背後的精確 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在 9 筆以增量方式送達的結算資料中,最快的一筆在其結算日期後 10 天即送達,最慢的一筆則花了 26 天;中位數為 12 天,也就是標題中所謂的「兩週前」,這是實際測量而非推估的結果。
請注意這些查詢排除了哪些資料。倉庫的歷史紀錄並非揭露速度的記錄:在 2026-03-16 這一天,此資料庫一口氣載入了 197 筆結算資料,屬於一次性的歷史資料回補。這些資料列的攝入時間戳記標示的是回補時間,而非揭露時間,任何據此計算出的「延遲」都只是我們載入排程的人為產物。只有那些在檔案建立後、逐一送達的結算資料,才能衡量真正的傳遞管線,也就是上述的資料列。
當前週期所處位置
這種落差最容易在缺口本身看出:任何時刻,都會有一個結算日已經發生,但其數據尚未公布。本面板即為即時接收狀態。
每個數據背後的精確 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-07-15 結算日,涵蓋 22373 檔證券,並在結算後 10 天交付。下一個結算週期顯示 0 筆資料列:此數據尚未公布,以目前所測得的滯後時間來看,這完全屬於正常狀況。該欄位特意將上限設為零。當數據公布時,此上限便會觸發,本頁面將暫停服務以進行更新,而非靜默地提供過時的句子。這套觸發機制與 六月回顧 內嵌的機制相同,相差一個週期。
與此同時,自該結算日以來,每日放空成交量檔案已公布 7 次,其最新日的數據比最新的空頭持倉快照新了 9 天。兩個 FINRA 數據集,兩種不同的時鐘。
報告在途期間的價格變動
只有當價格在延遲期間內發生變動時,這個延遲才有意義。而價格確實會變動。本面板先取用最新結算日數據,再分別比較各標的於結算日的常規收盤價,與檔案實際送達當日的收盤價。
每個數據背後的精確 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此時間窗口涵蓋 8 個交易日。五檔標的中變動最大的是 TSLA,從結算收盤價 394.31 美元,漲至短持倉報告實際可取得當日的 313 美元,變動幅度達 -20.6%。而在這段期間內,已揭露的短持倉部位依法凍結在 70.6 百萬股。變動最小的 AAPL,仍出現 1.7% 的波動。
這就是延遲的實際影響。任何宣稱「X 股票短持倉」的新聞標題,描述的僅是最近一次結算日的部位,上述時間窗口內的所有變動均未被納入。空方可能趁漲勢回補,也可能在跌勢中加碼;這份數字無法說明,而且在下一次報告公布之前,也不會說明。
軋空天數:以過時分子計算的比率
軋空天數,即空單餘額除以日均成交量,是大多數讀者實際接觸到的比率,而這個比率繼承了雙重的過時性:分子固定在結算日,而成交量分母則是檔案本身在數週前就已計算完畢。GameStop 是最明顯的例子,因為它既是家喻戶曉的名稱,也是流動性較高的熱門股票之一。
每個數據背後的精確 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-07-15 結算日,GameStop 持有 55.4 百萬股空單。該檔案將此數據與 3.43 百萬股的日均成交量配對,並報告 16.14 天軋空天數,這是篩選工具會顯示給你的數字。
現在將分母替換為實際情況。在 7 個常規交易日中(這段期間該報告仍在處理中),GameStop 在綜合報價帶上的日均成交量為 2.74 百萬股。相同的空單部位對應此成交量,計算結果為 20.26 天,與公布的比率相差 4.12 天,且分子保持不變。只有成交量假設改變了。請將軋空天數視為一個由兩個過時輸入數據所構成的過時比率,而非衡量退出所需時間的即時指標。
軋空:延遲的真正痛點
多數人查詢這個問題,根本原因就是軋空。在軋空行情中,空頭部位是故事的核心,而這正是沒人能即時看到的數據。2021年初的GameStop就是教科書級的範例。下表標記了每個結算日的常規交易收盤價,以及八個交易日後的收盤價,以此代表FINRA約八個工作日的揭露目標。
每個數據背後的精確 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結算日。當日記錄了61.8百萬股空單,股價為$35.49。大約在該數據公開時(八個交易日後),GameStop收在$197.44,漲跌幅為456.3%。任何人在該空頭數據公布當天閱讀它,看到的都是一檔價格已不復存在的股票描述。
下一筆數據則反轉了這個陷阱。2021-01-29結算日記錄了21.4百萬股空單,大部分部位已回補,股價為$328.24。八個交易日後,股價來到$51.19,漲跌幅為-84.4%。在顯示空頭部位已回補的檔案公開之前,回補動作早已完成。軋空的兩個階段——擁擠與平倉——都是在事後才被揭露。
每日數據的親戚,以及它沒告訴你的事
FINRA 確實每日發布一項數據:短賣成交量,也就是當日回報成交量中被標記為短賣交易的占比,隔天早上就會公布。這項數據接近即時,且衡量方式不同。短賣成交量計算的是交易流量,其中很大一部分是做市商在收盤前已平倉的避險交易,而非持有的部位。一檔股票可能連續一週每天都有龐大的短賣成交量,但短賣餘額卻毫無變化。這兩個數據集的差異,就像一條路上的車流量與停在終點的車輛數之間的差別;此處詳細說明了這兩份檔案。
美國沒有每日公布的短賣餘額數字。供應商銷售的是根據證券借貸與流量數據建模的每日估計值;這些是模型,而非揭露數據。揭露的數字每月公布兩次,而且會延遲發布。
常見問題
為什麼放空數據會延遲兩週?
券商僅在FINRA每月兩次的結算日記錄放空部位,並在數個營業日後彙總申報,而FINRA則在結算日後約八個營業日發布彙整檔案。在本資料庫實際接收的結算資料中,完整流程耗時 10 至 26 天,中位數為 12 天。
券商如何計算與申報放空數據?
每家券商計算其客戶及自有帳戶在結算日當天持有的放空股數,按個別證券彙總後向FINRA申報總數。FINRA將所有會員券商的申報資料加總,得出每檔證券的單一數字,22373 筆資料收錄於 2026-07-15 次的發布報告中。這是一項監管層面的部位統計,而非交易筆數的計算。
紐約證交所、那斯達克或櫃買市場的申報週期是否不同?
不。美國各上市交易場所均適用相同的每月兩次結算日程,以及相同的彙整與發布週期;交易所是轉發FINRA的檔案,而非自行產出數據。股票在哪個交易所上市,並不會改變其放空數據的新舊程度。
放空比例多少才算好或壞?
並不存在某個門檻能據以判斷股票的好壞,高放空比例也不是預測指標。擁擠程度指標所衡量的是:放空部位相對於該股票的可交易量有多大。以遊戲驛站最新發布的數據為例,其申報的預計回補天數為 16.14 天,而多數流動性佳的股票則僅有個位數,請參閱當前擁擠程度領先者了解分布狀況。
報告延遲對放空軋空有影響嗎?
這正是延遲影響最大的地方。在 2021-01-15 年遊戲驛站的結算中,股價在衡量日與接近發布日的八個交易日之間波動了 456.3%,而到了 2021-01-29 次發布時,放空部位已降至 21.4 百萬股。軋空擁擠現象只有在事件發生後,才能在公開數據中得到確認。
上方每個面板均附有產生該數據的SQL語法,展開任一面板即可查核數字,或於Strasmore終端機執行結算日曆。