Strasmore Research
学习 Matt Connor作者: Matt Connor

COT报告什么时候发布?发布时间与三天滞后

CFTC每周五美国东部时间下午3:30发布COT报告,数据截至周二收盘。了解节假日调整、三天滞后及期货与期权合并版本的读法。

交易者持仓报告(COT报告)由美国商品期货交易委员会每周五美国东部时间下午3:30发布,统计截至前一个周二收盘时的持仓。数据采集与发布之间相隔三天。这一时间差,加上仅覆盖最大交易者的申报门槛,决定了这份免费周度文件能够如实说明什么。

COT报告每周何时发布?

美国东部时间周五下午3:30,由监管机构直接发布。CFTC交易者持仓报告页面免费提供文件,包括可查看的表格和可下载的文本。

日历上有两点比具体时刻更重要:

  • 数据日期是周二,不是周五。周五文件中的每个数字,都说明持仓截至周二收盘时的情况。
  • 联邦假日会改变发布日期。 如果报告周内有联邦假日,发布通常会推迟一到两天。CFTC会发布时间表,列明每周的实际发布日期。正常周遵循周五发布规则,但联邦假日周会有所调整。

同一个周二的数据还会出现在多个文件中:一个是仅包含期货的版本,另一个是期货与期权合并版本。后者会使用交易所提供的delta系数,将期权持仓换算为期货等值持仓。同一市场同一天出现两个不同数字,通常是因为引用了不同版本。

为什么您看到的COT报告已经滞后三天?

从数据截取到报告发布之间的时间差,是理解持仓数据最重要的一点。最大交易者在周三、周四或周五上午进行的任何操作,都不会出现在下午3:30发布的文件中。为衡量这一盲区,本页面使用跟踪COT覆盖市场的交易所交易基金进行测算,包括股票、美国国债、金属和能源。这些基金并不是期货合约,但可以合理反映这些市场在三天内的波动幅度。

查询七个市场从周二收盘至周五美东时间下午3:30的变动,2024年8月至2026年7月
每个数字背后的完整 SQL
WITH raw AS (
    SELECT ticker,
           toTimeZone(window_start, 'America/New_York') AS et,
           close
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('SPY', 'QQQ', 'TLT', 'GLD', 'SLV', 'USO', 'UNG')
      AND window_start >= toDateTime('2024-08-01 00:00:00')
      AND window_start < toDateTime('2026-08-01 00:00:00')
),
bars AS (
    SELECT ticker,
           toDate(et) AS session_date,
           toDayOfWeek(et) AS day_of_week,
           toHour(et) * 60 + toMinute(et) AS minute_of_day,
           close
    FROM raw
    WHERE toDayOfWeek(et) IN (2, 5)
      AND (toHour(et) * 60 + toMinute(et)) BETWEEN 570 AND 959
),
tuesday_snapshot AS (
    SELECT ticker,
           toMonday(session_date) AS week_start,
           argMax(close, minute_of_day) AS tuesday_close
    FROM bars
    WHERE day_of_week = 2
    GROUP BY ticker, week_start
),
friday_release AS (
    SELECT ticker,
           toMonday(session_date) AS week_start,
           argMax(close, minute_of_day) AS friday_1530
    FROM bars
    WHERE day_of_week = 5
      AND minute_of_day BETWEEN 900 AND 930
    GROUP BY ticker, week_start
)
SELECT t.ticker AS ticker,
       count() AS weeks_counted,
       round(quantileDeterministic(0.5)(abs(toFloat64(f.friday_1530) / toFloat64(t.tuesday_close) - 1) * 100,
                                        cityHash64(toString(t.week_start))), 2) AS median_abs_move_pct,
       round(quantileDeterministic(0.9)(abs(toFloat64(f.friday_1530) / toFloat64(t.tuesday_close) - 1) * 100,
                                        cityHash64(toString(t.week_start))), 2) AS p90_abs_move_pct,
       round(100 * countIf(abs(toFloat64(f.friday_1530) / toFloat64(t.tuesday_close) - 1) * 100 >= 2) / count(), 1) AS pct_weeks_over_2pct
FROM tuesday_snapshot AS t
INNER JOIN friday_release AS f
        ON t.ticker = f.ticker AND t.week_start = f.week_start
GROUP BY t.ticker
ORDER BY median_abs_move_pct DESC
Run this yourself

在两年的报告周中,从周二收盘到周五美国东部时间下午3:30成交价的中位距离,介于2.97%(UNG)和0.66%(TLT)之间,样本涵盖97周。其中一半的周度观测值低于相应中位数。真正导致周二快照失真的,是尾部情况:每十周中有一周的波动达到或超过8.68%(UNG),并且有68%的周度观测值超过2%。

逐周观察一个市场,可以看出这一时间差有多不均衡。

查询SPY:从周二收盘至周五美东时间下午3:30的变动,逐周统计,2025年8月至2026年7月
每个数字背后的完整 SQL
WITH raw AS (
    SELECT toTimeZone(window_start, 'America/New_York') AS et,
           close
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND window_start >= toDateTime('2025-08-01 00:00:00')
      AND window_start < toDateTime('2026-08-01 00:00:00')
),
bars AS (
    SELECT toDate(et) AS session_date,
           toDayOfWeek(et) AS day_of_week,
           toHour(et) * 60 + toMinute(et) AS minute_of_day,
           close
    FROM raw
    WHERE toDayOfWeek(et) IN (2, 5)
      AND (toHour(et) * 60 + toMinute(et)) BETWEEN 570 AND 959
),
tuesday_snapshot AS (
    SELECT toMonday(session_date) AS week_start,
           argMax(close, minute_of_day) AS tuesday_close
    FROM bars
    WHERE day_of_week = 2
    GROUP BY week_start
),
friday_release AS (
    SELECT toMonday(session_date) AS week_start,
           max(session_date) AS friday_date,
           argMax(close, minute_of_day) AS friday_1530
    FROM bars
    WHERE day_of_week = 5
      AND minute_of_day BETWEEN 900 AND 930
    GROUP BY week_start
)
SELECT f.friday_date AS week,
       formatDateTime(f.friday_date, '%b %e, %Y') AS friday_label,
       round((toFloat64(f.friday_1530) / toFloat64(t.tuesday_close) - 1) * 100, 2) AS change_pct,
       round(abs(toFloat64(f.friday_1530) / toFloat64(t.tuesday_close) - 1) * 100, 2) AS abs_change_pct
FROM tuesday_snapshot AS t
INNER JOIN friday_release AS f ON t.week_start = f.week_start
ORDER BY week
Run this yourself

在截至2026年7月31日的一年内,48个报告周中,图表所列第一周截至Aug 8, 2025,时间差为1.45%;最后一周截至Jul 31, 2026,时间差为0.86%。有些周的文件几乎反映当前情况。有些周的文件描述的市场已经发生变化。文件本身不会告诉您当前属于哪一种情况。卖空余额也存在类似问题,只是时间周期更长:卖空余额何时发布介绍这一时间安排,卖空余额为何滞后两周解释其中的延迟。

周五下午3:30会发生什么?

文件发布时,距离美国股市美国东部时间下午4:00收盘还有半小时。以下图表按15分钟区间展示了完整周五交易日的成交分布。

查询周五成交量按时间分布:SPY,15分钟区间,过去一年完整的周五交易时段
每个数字背后的完整 SQL
WITH raw AS (
    SELECT toTimeZone(window_start, 'America/New_York') AS et,
           volume
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND window_start >= toDateTime('2025-08-01 00:00:00')
      AND window_start < toDateTime('2026-08-01 00:00:00')
),
bars AS (
    SELECT toDate(et) AS session_date,
           toHour(et) * 60 + toMinute(et) AS minute_of_day,
           intDiv((toHour(et) * 60 + toMinute(et)) - 570, 15) AS bucket,
           volume AS shares
    FROM raw
    WHERE toDayOfWeek(et) = 5
      AND (toHour(et) * 60 + toMinute(et)) BETWEEN 570 AND 959
),
full_sessions AS (
    SELECT session_date
    FROM bars
    GROUP BY session_date
    HAVING sumIf(shares, minute_of_day >= 930) >= 0.05 * sum(shares)
)
SELECT formatDateTime(toDateTime(toDate('2026-01-02')) + (570 + b.bucket * 15) * 60, '%H:%i') AS et_time,
       round(100 * sum(b.shares) / sum(sum(b.shares)) OVER (), 2) AS share_of_session_pct,
       round(sum(b.shares) / uniqExact(b.session_date) / 1000000, 2) AS avg_volume_millions
FROM bars AS b
INNER JOIN full_sessions AS s ON b.session_date = s.session_date
GROUP BY b.bucket
ORDER BY b.bucket
Run this yourself

美国交易日的成交量呈微笑形。开盘后的第一个15分钟占当日成交股数的6.98%,12:00这一时段降至2.72%,连续交易的最后15分钟占13.17%。报告发布所在的15:30时段占4.92%。报告在交易周最后一天的收盘前成交量上升阶段发布。这只是日历事实,并不代表文件中的持仓在此时发生交易。

Legacy、Disaggregated还是TFF:不同COT报告如何区分?

共有四种报告使用COT这一名称,并以不同方式拆分同一个周二的未平仓合约。

  • Legacy将每个市场拆分为商业持仓、非商业持仓和非申报持仓。这是最早的格式,也是大多数人所说的“COT报告”。
  • Supplemental覆盖13种农产品,并将指数交易者单独列为一类。
  • Disaggregated覆盖实物商品市场,从农产品和石油到天然气、电力及金属,分为四类:生产商/贸易商/加工商/用户、掉期交易商、管理资金和其他可申报交易者。
  • Traders in Financial Futures,即TFF报告,覆盖金融合约,包括货币、美国国债、股票指数和波动率产品。其类别包括卖方的交易商/中介机构,以及买方的资产管理机构/机构投资者、杠杆基金和其他可申报交易者。

当新闻标题称对冲基金持有多年来最大的原油净空头时,其 underlying series通常是Disaggregated报告中的管理资金。若同一句话讨论标普500指数,通常指的是TFF中的杠杆基金。这些分类名称不能混用。

COT报告实际统计了哪些交易者?

只有大型交易者。清算会员、期货佣金商和外国经纪商每天申报所有持仓达到或超过CFTC规定申报水平的交易者;只有当一个市场中至少有20名交易者达到该水平时,该市场才会出现在COT报告中。可申报持仓通常覆盖一个市场未平仓合约的70%至90%。其余持仓合并为一个非申报持仓项目,不显示分类,也不提供交易者数量。

这些类别代表申报的职业属性,而不是交易策略。商业交易者,或生产商/贸易商/加工商/用户,是指其业务活动需要通过期货持仓进行对冲的企业,具体以其向CFTC提交的Form 40为准。管理资金是集合型投机资本,包括代表客户交易的顾问、基金运营商和基金。一家粮食仓储企业可以通过对冲库存持有某些合约,而一只基金可以为押注价格走势持有相同合约;两者可能出现在相反的分类栏中。报告说明谁持有某个仓位,但从不说明原因。

COT报告的两种常见误读

创纪录的净多头不是择时工具。 净持仓是在单一类别内用多头合约减去空头合约得到的一个数字,单位是合约。创纪录读数只说明该类别截至某个周二的风险敞口处于极端水平。它不说明该敞口何时或是否会平仓。不同资产类别的群体持仓指标都有这一局限:看跌/看涨期权比率FINRA卖空余额数据都描述的是已经形成的持仓状态。

原始合约数量不能用于比较不同产品。 COT表格统计合约数量,而每份合约代表某种资产的一定数量。一份COMEX黄金合约对应100金衡盎司。一份NYMEX原油合约对应1,000桶。按合约数量给市场排名,实际上是在按交易所几十年前设定的单位定义排名。同样的计算逻辑也适用于股票市场,其中股票数量就是计量单位。

查询份额与美元:追踪COT涵盖市场的七只基金,2026年7月
每个数字背后的完整 SQL
WITH raw AS (
    SELECT ticker,
           toTimeZone(window_start, 'America/New_York') AS et,
           close,
           volume
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('SPY', 'QQQ', 'TLT', 'GLD', 'SLV', 'USO', 'UNG')
      AND window_start >= toDateTime('2026-07-01 00:00:00')
      AND window_start < toDateTime('2026-08-01 00:00:00')
),
rth AS (
    SELECT ticker,
           volume AS shares,
           toFloat64(close) * volume AS dollars
    FROM raw
    WHERE (toHour(et) * 60 + toMinute(et)) BETWEEN 570 AND 959
)
SELECT ticker,
       round(sum(dollars) / sum(shares), 2) AS unit_size_usd,
       round(100 * sum(shares) / sum(sum(shares)) OVER (), 2) AS share_of_units_pct,
       round(100 * sum(dollars) / sum(sum(dollars)) OVER (), 2) AS share_of_dollars_pct
FROM rth
GROUP BY ticker
ORDER BY unit_size_usd DESC
Run this yourself

2026年7月,SPY的一个单位平均成交价为$744.99,而UNG的一个单位平均成交价为$10.52。各买入1,000个单位,并不代表投入了相同金额。在七只基金中,SPY占成交单位数的31.75%,占成交金额的50.07%;UNG占成交单位数的5.41%,占成交金额的0.12%。只有在每个单位价格完全相同时,单位数量占比才会等于金额占比。请在同一市场内比较不同时期的持仓,或者先将合约数量换算为名义价值,再进行排名。

COT报告常见问题

COT报告何时发布?

美国东部时间周五下午3:30,在CFTC网站发布。持仓统计截至前一个周二收盘,因此文件发布时已经滞后三天。如果报告周内有联邦假日,发布日期会推迟一到两天。

COT报告免费吗?

免费。CFTC免费提供可查看的表格和可下载的文件。商业持仓数据产品通常会在同一份公开数据基础上增加图表和历史数据。

Legacy和Disaggregated COT报告有什么区别?

Legacy将市场拆分为商业持仓、非商业持仓和非申报持仓。Disaggregated将实物商品市场拆分为生产商/贸易商/加工商/用户、掉期交易商、管理资金和其他可申报交易者。金融市场则在Traders in Financial Futures报告中采用相应分类。

COT报告会显示每个交易者的持仓吗?

不会。报告统计达到或超过CFTC申报水平的交易者,这些持仓通常覆盖市场未平仓合约的70%至90%;只有至少20名交易者达到该水平时,市场才会被发布。低于门槛的所有持仓都会合并到一个匿名的非申报持仓项目中。

COT报告能预测价格走势吗?

它是带有三天滞后的持仓普查,不是预测工具。它记录大型交易者截至周二的持仓状态,但极端读数并不说明该状态何时结束。


本页面的每个数字都来自对分钟级价格和成交量历史数据执行的存储查询,每个图表下方均公开SQL。COT文件仍与过去一样,每周五下午3:30免费发布。您可以在Strasmore终端上,对所关注的市场运行相同的图表查询。

#cot report#cftc#positioning#futures#release schedule