Strasmore Research
学习 Matt Connor作者: Matt Connor · 更新于 2026-07-23 · data as of July 23, 2026 · refreshed weekly

为什么卖空数据总是滞后两周

了解卖空数据滞后的成因,深入分析 FINRA 结算周期、数据汇总流程及发布延迟。

由于结构性原因,卖空数据总是存在滞后,因为它并非实时数据。经纪商会在 FINRA 规定的结算日(每月两次,分别为月中和月末)对账户中的卖空股份进行快照,然后向 FINRA 提交总量。FINRA 汇总所有成员公司的报告,并在约 8 个工作日后发布汇总数据。考虑到数据从供应商传输到数据库再到屏幕的流程,任何给定日期能获取的最新的 卖空头寸 数据,反映的也是 1 到 4 周前的持仓情况。本页面旨在衡量这一时间差,而非断言数据的实时性。

报告滞后的实际成因

该周期包含四个步骤,每一步都会增加数天的延迟。

  1. 结算日。 FINRA 会公布结算日时间表——每月月中一次,月末一次。在每个结算日,每家经纪自营商都会记录其客户账户和自有账户中的空头头寸。这些是结算日而非交易日:在 T+1 结算制度下,周一达成的交易在周二结算,因此结算日统计的是截至该日已完成清算的头寸。
  2. 报告截止日期。 每家会员机构须在随后的几个工作日内,向 FINRA 提交每种证券的空头总额。此阶段数据不对外公开;这属于监管备案,而非市场数据流。
  3. 汇总。 FINRA 会汇总每种证券的数千份机构级报告,并整合为一个文件:每种证券在每个结算日仅对应一个数值——不包含日内历史数据、交易场所详情或单家机构的明细。
  4. 发布。 该文件在描述的结算日约八个工作日后公开。随后,数据供应商会提取该文件,交易所会重新发布,而像本页面背后的数据仓库则会进行摄取。

数据并非被刻意扣留。延迟是收集窗口、汇总窗口和分发环节的总和——每一步都是基于日历的批处理过程,而非实时流处理。

以天数为单位,滞后时间是多少?

以下是该仓库收到的所有增量交付结算日期。左侧为结算日期,右侧为该行数据首次出现在此处的日期。

查询每笔增量结算:测量日期与文件日期之间的延迟
每个数字背后的完整 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-06-30,其数据于 2026-07-11 进入系统,比其描述的头寸记录晚了 11 天。前一笔结算的滞后时间为 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

8 笔增量交付的结算中,最快的记录在结算后 10 天入库,最慢的需要 26 天;中位数为 14 天——这即是标题中所说的“两周前”,是经过测量的而非假设。

请注意这些查询排除的内容。仓库的历史记录并不等同于发布速度:在 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-06-30 结算数据,涵盖 22207 份证券,且在结算 11 天后发布。周期中的下一个结算日包含 0 行数据:该数据尚未公布,且在上述滞后时间范围内,这属于正常现象。该列刻意设为零。一旦数据发布,限制条件将被触发,本页面将等待更新,而不是继续显示过时数据——这与 六月回顾 中包含的触发机制相同,仅延迟了一个周期。

与此同时,每日卖空成交量文件自该结算日以来已发布 12 次,其最新日期比最新的卖空头寸快照新 17 天。两套 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 个交易日。五个标的中波动最大的是 MU,其价格从结算日收盘时的 $1151.01 变动至数据公布当日的 $978.69,涨跌幅为 -15%。在此期间,根据定义,披露的空头头寸固定在 31.7 百万股。波动最小的 GME 仍有 -1.9% 的变动。

这就是延迟的实际影响。任何关于“X 股票空头头寸”的新闻报道描述的都是最后一次结算时的头寸——上述窗口期内的所有变动,该数据都无法体现。空头可能在股价上涨时平仓,也可能在股价下跌时增仓;该数据无法反映这些行为,直到下一次数据发布。

基于陈旧分子计算的卖空回补天数

卖空回补天数(Days to cover)——即卖空股数除以日均成交量——是读者最常接触的指标,但它存在双重滞后性:分子固定在结算日,而分母(成交量)则是该文件数周前计算的结果。GameStop 是最典型的案例,因为它既是知名股票,也是交易活跃的品种之一。

查询GME 回补天数:文件报告值及公布期间成交量重算值
每个数字背后的完整 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-06-30 结算日,GameStop 的卖空股数为 55.9 百万股。该文件将其与 5.2 百万股的日均成交量结合,得出10.75 天的回补天数——这也是筛选器显示的数据。

现在请代入实际情况重新计算。在数据发布前的 7 个常规交易日中,GameStop 在综合行情中的日均成交量为 3.09 百万股。基于该成交量计算相同的卖空头寸,结果为 18.08——即在分子保持不变的情况下,仅比公布的比例多出 7.33 天。请将卖空回补天数视为由两个陈旧数据构建的过时指标,而非衡量平仓所需时间的实时指标。

轧空:滞后效应的真实影响

大多数人关注此问题的原因在于“轧空”(short squeeze)。在轧空过程中,空头头寸是核心,但其具体数量无法实时获取。2021年初的 GameStop 是一个典型案例。下表记录了每次结算日的常规交易收盘价,以及八个交易日后的收盘价,以此代表 FINRA 约八个工作日的发布周期。

查询GME, 2020-21冬季:每期空头头寸公布前后的价格变动(实际成交价)
每个数字背后的完整 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 会在结算日后约八个工作日发布汇总文件。在数据库接收到的实时交付数据中,整个流程耗时 1026 天,中位数为 14 天。

券商如何计算并报告卖空头寸?

每家经纪交易商会统计其客户账户和自有账户在结算日持有的卖空股数,按证券进行汇总,并向 FINRA 提交总数。FINRA 将所有会员公司的报告汇总为每只证券的一个数值 —— 在 2026-06-30 报告中包含 22207 只证券。这是对头寸的监管统计,而非交易笔数统计。

NYSE、Nasdaq 或 OTC 股票的报告周期是否不同?

不。所有美国上市场所均适用相同的每月两次结算安排及相同的汇总发布周期。交易所直接从 FINRA 文件中重新发布数据,而非自行统计。股票的上市场所不会改变其卖空数据的滞后程度。

卖空占比高低的标准是什么?

没有统一的标准来判断股票的持有价值,高数值并不代表预测。拥挤度指标描述的是卖空头寸相对于股票可交易成交量的规模:GameStop 最新的数据报告其回补天数(days to cover)为 10.75 天,而大多数高流动性股票仅为个位数 —— 请参阅 当前的拥挤度领先股 查看分布情况。

报告滞后对挤压空头(Short Squeeze)有影响吗?

这是滞后影响最大的领域。在 2021-01-15 GameStop 结算期间,该股在测量值与接近发布的第八个交易日之间波动了 456.3% —— 到 2021-01-29 报告时,卖空头寸已降至 21.4 百万股。挤压拥挤度只能在事件发生后通过公开数据得到证实。


上述每个面板均附带生成该数据的 SQL 语句 —— 您可以展开任何一个面板来审计数据,或在 Strasmore 终端上运行结算日历。