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

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

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

交易商持仓报告(Commitments of Traders,简称 COT 报告)由美国商品期货交易委员会每周五美国东部时间下午 3:30 发布,统计截至前一个周二收盘时的持仓。持仓统计与报告发布之间相隔三天。这一时滞,加上仅纳入最大型交易者的报告门槛,决定了这份免费的周度数据能够真实反映什么。

COT报告每周何时发布?

每周五美国东部时间下午3:30发布,由监管机构直接公布。CFTC的交易商持仓承诺报告页面免费提供相关文件,既可查看表格,也可下载文本。

日历上有两个细节比具体发布时间更重要:

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

同一个周二的数据也会出现在不止一个文件中:一个是仅包含期货的版本,另一个是期货与期权合并版本。后者会根据交易所提供的Delta因子,将期权持仓换算为期货等价基准。同一市场、同一天出现两个不同报价时,相关人士通常是在读取不同版本的数据。

Why is the COT report three days old when you read it?

The snapshot-to-release gap is the most important thing to know about positioning data. Whatever the largest traders did on Wednesday, Thursday, or Friday morning is absent from the file that publishes at 3:30. To size that blind spot, the panels here measure exchange-traded funds that track the markets the COT covers: stocks, Treasuries, metals, and energy. The funds are not the futures contracts. They are a fair ruler for how far these markets travel over three days.

查询2024年8月至2026年7月,七个市场从周二收盘至周五美东时间下午3:30的波动幅度
每个数字背后的完整 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

Across two years of report weeks, the median distance from Tuesday's close to Friday's 3:30 p.m. print ran from 2.97% in UNG down to 0.66% in TLT, measured over 97 weeks. Half the weeks came in under those medians. The tail is what makes a Tuesday snapshot stale: one week in ten moved 8.68% or more in UNG, and 68% of its weeks cleared two percent.

One market, week by week, shows how uneven that gap is.

查询SPY:按周统计,2025年8月至2026年7月从周二收盘至周五美东时间下午3:30的波动
每个数字背后的完整 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

Across the 48 report weeks in the year to July 31, 2026, the first week charted, ending Aug 8, 2025, carried a 1.45% gap, and the last, ending Jul 31, 2026, carried 0.86%. Some weeks the file is nearly current. Some weeks it describes a market that has already moved on. Nothing printed in the file tells you which week you are in. Short interest has the same shape of problem on a longer clock: when short interest is released walks that calendar, and why short interest is two weeks old explains the lag.

周五下午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报告)涵盖金融合约,包括货币、美国国债、股票指数和波动率。其类别包括卖方的交易商/中介机构,以及买方的资产管理机构/机构投资者、杠杆基金和其他报告类交易者。

当标题称对冲基金持有多年来规模最大的原油空头头寸时,所依据的序列通常是Disaggregated报告中的管理资金。涉及标普500指数时,同样的表述指的是TFF报告中的杠杆基金。这些标签不能互换。

COT报告实际统计了哪些参与者?

只有大型交易者。其他人不计入。清算会员、期货佣金商和外国经纪商每天都要报告所有持仓达到或超过美国商品期货交易委员会(CFTC)规定报告门槛的交易者。只有当至少20名交易者持有达到上述门槛的头寸时,某个市场才会出现在COT报告中。可报告头寸通常占某个市场未平仓合约量的70%至90%。其余头寸会合并在一项不可报告头寸中,不附带类别或交易者数量。

这些类别代表申报的职业身份,而不是交易策略。商业性交易者,或生产商、贸易商、加工商和用户,是指其业务活动需要由期货头寸进行套期保值的企业,具体身份以其向CFTC提交的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免费提供可查看的表格和可下载的文件。商业持仓数据产品会在同一份公开数据基础上,重新制作图表并增加历史数据。

传统COT报告与分类COT报告有何区别?

传统报告将市场持仓分为商业持仓、非商业持仓和不可报告持仓。分类报告则将实物商品市场分为生产商/贸易商/加工商/用户、掉期交易商、管理资金和其他可报告交易者。金融市场则在《金融期货交易者报告》中采用对应的分类方式。

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

不会。报告统计达到或超过CFTC报告门槛的交易者。这通常覆盖一个市场未平仓合约量的70%至90%。只有在至少有20名交易者达到该门槛时,CFTC才会发布该市场的数据。低于门槛的所有交易者会合并为一项匿名的不可报告持仓。

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

COT报告是持仓普查,并且存在三天延迟,不是预测工具。它记录大型交易者在某个周二的持仓方向,而极端读数本身并不说明何时会结束。


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

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