Strasmore Research
学习 Matt Connor作者: Matt Connor · 更新于 2026-07-23

美股暗池交易是什么?FINRA成交量数据实测

暗池交易指在不展示报价的私有场所撮合股票订单。每一笔成交都必须经FINRA申报打到综合行情带上——本文实测五只高流动性美股在同一交易日的交易所外成交占比。

暗池交易(dark pool trading)指在私有场所买卖股票——这类场所是在美国证监会(SEC)登记的另类交易系统(ATS),它们接受订单、撮合成交,事先不公布任何报价。“暗”指的是缺失的报价,而不是被藏起来的成交:美国股票的每一笔暗池执行都必须经FINRA的成交报告机构(TRF)申报,并打到综合行情带上,任何人都能在那里把它数出来。本页就用一个经核验的交易日——2026年7月2日——把它数了一遍,每个数字背后确切的SQL都只需一次点击即可查看。

什么是暗池?

暗池是一个在SEC登记为另类交易系统的私有股票交易场所。它运行着一套与交易所很像的撮合引擎,只有一个决定性的差别:它不展示任何成交前报价。在明池交易所上,订单簿会向所有人公布最优买价和最优卖价;而在暗池里,挂着的订单直到成交那一刻之前始终不可见。多数暗池按公开市场自己的报价来给撮合定价——通常取全国最优买卖报价(NBBO)的中间价,而NBBO正是明池屏幕上买卖价差的基准。

这类场所有几十家在运营;没有一家自己定出公开价格。明池提供参考价格,暗池提供一个按这个价格成交、又不必先展示订单的地方。

暗池为什么存在?

它最初要解决的问题是订单冲击。举一个假设的例子:某机构需要卖出50万股某只股票,而该股展示的买盘上只挂着800股。把整张订单挂到明池订单簿上,所有参与者会立刻看见它;把它放进暗池里挂着,这笔规模在成交逐步累积的过程中始终不被展示——这正是大宗交易的经典归宿,即市场对1万股及以上成交记录的通行叫法。

同一套交易所外管道还承载着一门很不一样的生意:批发做市商用自有库存直接对做散户订单——这种做法叫内部化(internalization)——并把这些成交经同样的机构申报。做市商如何赚钱一文拆解了那套机制;在这里,重点是这两类成交都落进行情带上同一个申报桶里。

中性地提示一句:一条成交记录上的场所标签只记录这笔交易在哪里撮合,仅此而已——它是一个结构性事实,而不是对任何股票的看多或看空解读。

暗池成交如何打到公开行情带上?

FINRA要求其会员公司在交易时段内于执行后10秒之内,把上市股票的交易所外成交申报给一家成交报告机构。该机构再把它转发到综合行情带,与交易所成交并排打出——带的是FINRA的场所代码而不是某家交易所的代码,另外还带一个记录该机构处理时刻的TRF时间戳。

这个描述是可核验的。下面的面板取出AAPL在2026年7月2日行情带上的每一条成交申报,按申报场所分组,并数出其中有多少条带TRF时间戳。

查询AAPL在2026年7月2日的成交申报来自哪些场所——以及哪些带TRF时间戳
每个数字背后的完整 SQL
SELECT
    x.name AS venue,
    x.type AS venue_type,
    t.trade_reports AS trade_reports,
    t.pct_with_trf_stamp AS pct_with_trf_stamp
FROM
(
    SELECT
        exchange,
        count() AS trade_reports,
        round(100 * countIf(trf_timestamp > toDateTime64('1970-01-02 00:00:00', 9)) / count(), 1) AS pct_with_trf_stamp
    FROM global_markets.stocks_trades
    WHERE ticker = 'AAPL'
      AND sip_timestamp >= '2026-07-02 00:00:00' AND sip_timestamp < '2026-07-03 00:00:00'
    GROUP BY exchange
    ORDER BY trade_reports DESC
    LIMIT 6
) AS t
INNER JOIN global_markets.stocks_exchanges AS x
    ON x.id = t.exchange AND x.asset_class = 'stocks'
ORDER BY t.trade_reports DESC

请看第一行:当天AAPL行情带上最繁忙的申报场所,根本不是交易所。交易所字典把它归为“TRF”类,其申报中有100%带TRF时间戳。它下面的每一家明池交易所——NasdaqNYSE Arca, Inc.Cboe BZX以及其余各家——都是0%。数据源把每一条经FINRA申报的成交记录都归在那一个场所代码之下——交易所外这个桶,只需一个过滤条件就能测量。

第二张凭证把整个交易日的闭环补上——同时核验这个交易日本身:

查询凭证:AAPL的每一条申报上,TRF时间戳与FINRA场所代码完全一致
每个数字背后的完整 SQL
WITH
    (
        SELECT countIf(window_start >= toDateTime('2026-07-02 09:30:00', 'America/New_York') AND window_start < toDateTime('2026-07-02 16:00:00', 'America/New_York'))
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'SPY' AND window_start >= toDateTime('2026-07-02 00:00:00', 'America/New_York') AND window_start < toDateTime('2026-07-03 00:00:00', 'America/New_York')
    ) AS bars_jul02
SELECT
    bars_jul02 AS spy_session_bars_jul02,
    round(count() / 1e3) AS trade_reports_thousands,
    round(countIf(exchange = 4) / 1e3) AS venue4_reports_thousands,
    round(countIf(trf_timestamp > toDateTime64('1970-01-02 00:00:00', 9)) / 1e3) AS trf_stamped_thousands,
    countIf((exchange = 4) != (trf_timestamp > toDateTime64('1970-01-02 00:00:00', 9))) AS stamp_venue_disagreements
FROM global_markets.stocks_trades
WHERE ticker = 'AAPL'
  AND sip_timestamp >= '2026-07-02 00:00:00' AND sip_timestamp < '2026-07-03 00:00:00'

当天AAPL的行情带共承载1148千条成交申报。其中552千条打在FINRA场所代码之下,552千条带TRF时间戳,而两个标签互相不一致的申报条数是0。同一行还核对了日历:SPY在7月2日打出390根常规时段分钟K线——一个完整的美东时间9:30至16:00(北京时间21:30至次日04:00)交易时段,这是实测出来的,而不是假定的。

有多少股票交易发生在交易所外?

标签核验之后,占比只差一次聚合:同一个交易日的五只高流动性标的,用撮合总成交量对上打在FINRA代码之下的成交量,每一项合计中都剔除了行政类记账消息。

查询撮合成交量中的交易所外占比——五只高流动性标的,2026年7月2日
每个数字背后的完整 SQL
SELECT
    ticker,
    round(toFloat64(sumIf(size, exchange = 4 AND NOT hasAny(conditions, [15, 16, 38]))) / 1e6, 1) AS off_exchange_shares_m,
    round(toFloat64(sumIf(size, NOT hasAny(conditions, [15, 16, 38]))) / 1e6, 1) AS total_shares_m,
    round(100 * toFloat64(sumIf(size, exchange = 4 AND NOT hasAny(conditions, [15, 16, 38]))) / toFloat64(sumIf(size, NOT hasAny(conditions, [15, 16, 38]))), 1) AS off_exchange_pct
FROM global_markets.stocks_trades
WHERE ticker IN ('SPY', 'AAPL', 'NVDA', 'TSLA', 'KO')
  AND sip_timestamp >= '2026-07-02 00:00:00' AND sip_timestamp < '2026-07-03 00:00:00'
GROUP BY ticker
ORDER BY indexOf(['SPY', 'AAPL', 'NVDA', 'TSLA', 'KO'], ticker)

2026年7月2日,SPY撮合了57.5百万股,其中27.3百万股——占47.4%——打在交易所外。AAPL的交易所外占比实测为39%,NVDA为45.7%,TSLA为49.6%,KO为41.1%。

接下来是老实话:行情带无法告诉您这些股份中有哪些是在暗池里撮合的。 FINRA这个桶里装着暗池执行、被批发商内部化的散户成交,以及其他场外(OTC)成交记录——全部经同一批机构、以同一个场所代码申报。测出来的数字是交易所外占比:它是一个把暗池成交量整个装在里面的上限,而绝不是单独的暗池数字。FINRA另行按证券逐只公布每家ATS的周度成交量,但要延迟数周;实时行情带能说的永远只有“交易所外”这四个字。同一批机构的申报还汇入FINRA的每日卖空量文件——这些数字在卖空余额与卖空量的区别一文里拆开讲过。

一条交易所外成交记录长什么样?

如果暗池的存在是为了做规模,那么交易所外的成交记录应该都很大——事实上大多并不大,而这个构成本身就是重点。下面的面板对比TSLA在同一个交易日里,交易所外与交易所内成交记录的结构。

查询TSLA在2026年7月2日的成交记录结构:交易所外与交易所内对比
每个数字背后的完整 SQL
SELECT
    if(exchange = 4, 'Off-exchange (TRF)', 'On-exchange') AS where_it_printed,
    round(count() / 1e3) AS prints_thousands,
    round(toFloat64(sum(size)) / 1e6, 1) AS shares_m,
    round(quantileDeterministic(0.5)(toFloat64(size), toUInt64(sip_timestamp))) AS median_print_shares,
    countIf(size >= 10000) AS prints_10k_plus,
    round(toFloat64(max(size)) / 1e3) AS largest_print_k_shares,
    if(maxIf(size, has(conditions, 8)) = max(size), 1, 0) AS largest_is_closing_auction
FROM global_markets.stocks_trades
WHERE ticker = 'TSLA'
  AND sip_timestamp >= '2026-07-02 00:00:00' AND sip_timestamp < '2026-07-03 00:00:00'
  AND NOT hasAny(conditions, [15, 16, 38])
GROUP BY where_it_printed
ORDER BY where_it_printed

当天TSLA交易所外成交记录的中位数是2股,交易所内则是24股——这个单笔规模远低于任何大宗门槛。而同一个桶里同时还坐着34笔1万股及以上的成交,其中最大的一笔是592千股的大宗单。交易所内最大的一笔更大,达4491千股——凭证列确认它就是结束常规交易时段的收盘集合竞价。交易所外这个桶,同时装着行情带上最小的成交记录和其中一部分真正的大宗单;单看场所代码,说不出任何一笔记录出自哪门生意。

交易所外成交在一天中的什么时候打出?

交易所外的成交记录并不是缩在交易时段的某一个角落里。下面的面板把NVDA在7月2日的行情带按美东时间的小时分桶,并测出每个小时的交易所外占比。(表中小时均为美东时间;夏令时期间加12小时即为北京时间,美东时间12:00及以后对应北京时间次日。)

查询NVDA成交量的交易所外占比,按美东时间小时划分,2026年7月2日
每个数字背后的完整 SQL
SELECT
    formatDateTime(toStartOfHour(toTimeZone(sip_timestamp, 'America/New_York')), '%H:00') AS et_hour,
    round(toFloat64(sumIf(size, exchange = 4)) / 1e6, 2) AS off_exchange_shares_m,
    round(toFloat64(sumIf(size, exchange != 4)) / 1e6, 2) AS on_exchange_shares_m,
    round(100 * toFloat64(sumIf(size, exchange = 4)) / toFloat64(sum(size)), 1) AS off_exchange_pct
FROM global_markets.stocks_trades
WHERE ticker = 'NVDA'
  AND sip_timestamp >= '2026-07-02 00:00:00' AND sip_timestamp < '2026-07-03 00:00:00'
  AND NOT hasAny(conditions, [15, 16, 38])
GROUP BY et_hour
ORDER BY et_hour

每一个完整落在常规交易时段内的小时,交易所外占比都相当可观:美东时间10:00这一小时为49.7%,12:00这一小时为44.5%,15:00这一小时为39.1%。16:00这一桶把收盘集合竞价——分母里那一笔巨大的交易所内成交记录——和盘后交易的第一个小时混在了一起,读数为39.7%。再往盘后时段深入一小时,天平就彻底翻转:在17:00这一小时里,NVDA行情带成交量的95.5%打在交易所外——1.88百万股对交易所内的0.09百万股——这正是盘后与盘前交易一文讲过的那条稀薄的行情带。

暗池受到怎样的监管?

暗池是受监管的交易场所,不是灰色市场:

  • 登记备案。 暗池按SEC于1998年通过的《另类交易系统条例》(Regulation ATS)作为另类交易系统运营;其运营方是在册的经纪自营商和FINRA会员。
  • 公开披露。 交易上市股票的ATS须提交ATS-N表格,这是一份公开文件,说明订单类型、撮合逻辑、谁可以参与,以及运营方自己的关联方如何与客户订单流互动。
  • 成交申报。 每一笔执行都要在交易时段内于10秒之内经FINRA的机构打到综合行情带上——也就是上文实测的那套机制。
  • 成交量透明度。 FINRA按证券逐只公布每家ATS的周度成交量,公布时间有延迟。
  • 最优执行。 交易所外成交同样处在《全国市场系统条例》(Regulation NMS)之内,包括保护展示报价的穿价规则;无论订单路由到哪里,券商都对客户负有最优执行义务。

这些规则并不要求成交前透明:暗池的决定性特征在制度设计上就是合法的,而撮合之后的一切,都和交易所成交一样公开。

暗池交易常见问题

暗池交易合法吗?

合法。暗池是在SEC登记的另类交易系统,由在册经纪自营商运营,受《另类交易系统条例》《全国市场系统条例》、FINRA成交申报规则以及ATS-N表格公开披露的约束。它唯一省去的那件事——展示成交前报价——恰恰是ATS这个类别所允许的。

美股暗池成交量占比有多少?

公开行情带报出的是交易所外总量,而不是暗池总量。2026年7月2日,撮合成交量中的交易所外占比:SPY为47.4%,AAPL为39%,NVDA为45.7%,TSLA为49.6%,KO为41.1%。这个桶把暗池、散户订单内部化和其他场外成交记录混在一起;行情带并不区分它们。

散户能不能用暗池交易?

不能直接使用:进入暗池要通过经纪自营商,而多数暗池服务的是机构订单流。不过散户订单仍然经常在交易所外执行——许多券商会把可成交的散户订单路由给批发做市商,这些成交经同一批FINRA机构申报。

暗池成交会体现在K线图上吗?

会。交易所外成交必须在交易时段内10秒之内申报,打到综合行情带上,并计入普通K线图上的成交量柱。永远不会出现的是成交之前的那张订单——这笔交易在发生之后可见,在挂着等待时则从不可见。


本页每一个面板都是一条已存储的查询——展开任意表格下方的SQL即可审计,然后在Strasmore终端上对任意股票代码提出同一个问题。