📑 本文目录
ETF成交量资金博弈科创50DuckDB量化情绪指标风格切换

ETF成交量热力图——从科创50与通信ETF日交4747万手看资金博弈逻辑


引子:被忽视的”红外成像仪”

2026年7月24日收盘,一组数据引起了我的注意——这不是涨跌幅排名,不是资金流向排名,而是ETF成交量排名

排名ETF代码ETF名称成交量(万手)成交额(亿)价格
1588000科创50ETF474789.81.885
2515880通信ETF450629.50.646
3513130恒生科技ETF413923.90.575
4512880证券ETF221524.61.099
5512170医疗ETF20366.50.315
6513050中概互联ETF194620.81.063
7159915创业板ETF181964.43.508
8513060恒生医疗ETF17649.50.532
9512480半导体ETF162218.11.113
10512690酒ETF15556.50.416

这不仅仅是”今天哪些ETF交易活跃”——成交量排名是市场情绪的红外成像仪。价格指标容易被趋势策略内卷,涨停板有游资操纵痕迹,主力资金流有滞后——而成交量,这个最原始也最诚实的指标,通过”量”的维度揭示了机构资金的真实共识方向。

本文用自有 DuckDB 量化数据库,从成交量热力图方法论的构建到实战解读,拆解2026年7月24日的资金博弈信号。


ETF成交量的信息价值——为什么比涨跌幅更诚实

成交量的”先导性”

成交量排在涨跌幅之前反映资金态度。一个ETF的成交量排名靠前,说明有大量资金在该标的上有实质性交易行为——买入或卖出,都代表关注度。这与”涨了才看”的跟风不同:

  • 高量+上涨 = 资金主动买入,共识形成
  • 高量+下跌 = 资金分歧巨大,或有大规模调仓
  • 高量+平盘 = 换手活跃,多空激烈博弈
  • 低量+涨跌 = 价格信号容易失真,代表性不足

ETF独有的信息纯度

ETF不同于个股,其成交量反映的是市场参与者对某一板块/策略的整体判断,而非某一家公司的基本面变化。买科创50ETF的投资者,买的是”科创板整体会涨”的判断,不是某一只个股。

因此ETF成交量热力图天然具有板块级信号纯度——它告诉你哪个方向正在吸收资金关注度。


方法论:构建ETF成交量热力图

数据源

直接从 DuckDB etf_daily 表获取,最新数据日期为2026-07-24:

import duckdb
con = duckdb.connect('/mnt/c/Users/Administrator/clawd/data/quant/quant_v2.duckdb', read_only=True)

# 当日成交量TOP20(过滤货币/纯债ETF)
top_etf = con.execute("""
    SELECT code, date, close, vol, amount
    FROM etf_daily
    WHERE date = (SELECT MAX(date) FROM etf_daily)
      AND code NOT LIKE '51%%1%%'  -- 过滤511开头的货币ETF
    ORDER BY vol DESC
    LIMIT 20
""").fetchdf()

热力图三层指标体系

指标层计算方式信号含义
绝对排名 volume_rank全市场ETF成交量降序排名哪些方向获得绝对关注度
量比 vol_ratio当日成交量 / 近20日均量成交量是否异常放大/缩小
成交额 amount_rank全市场ETF成交额降序排名实际资金承载量(比成交量更精确)

量比分箱逻辑

vol_ratio >= 1.5  → 🚀 放量突破(资金集中涌入)
1.2 ~ 1.5        → 🔥 明显放量(关注度提升)
0.8 ~ 1.2        → ➡️ 正常水平(市场常态)
低于 0.8         → ⬇️ 缩量(热度下降/关注度不足)

完整SQL实现

# 量比计算
vol_ratio_df = con.execute("""
    WITH max_date AS (SELECT MAX(date)::DATE as md FROM etf_daily),
    min_date AS (SELECT md - 25 as sd FROM max_date),
    daily_v AS (
        SELECT code, vol
        FROM etf_daily
        WHERE date::DATE = (SELECT md FROM max_date) AND vol > 0
    ),
    avg_v AS (
        SELECT code, AVG(vol) as avg_vol
        FROM etf_daily
        WHERE date::DATE >= (SELECT sd FROM min_date) 
          AND date::DATE < (SELECT md FROM max_date) AND vol > 0
        GROUP BY code
    )
    SELECT d.code,
           ROUND(d.vol/1e6, 1) as vol_today_m,
           ROUND(a.avg_vol/1e6, 1) as vol_avg_20d_m,
           ROUND(d.vol / NULLIF(a.avg_vol, 0), 2) as ratio,
           CASE 
               WHEN d.vol / NULLIF(a.avg_vol, 0) >= 1.5 THEN '放量突破'
               WHEN d.vol / NULLIF(a.avg_vol, 0) >= 1.2 THEN '明显放量'
               ELSE '正常/缩量'
           END as status
    FROM daily_v d
    JOIN avg_v a ON d.code = a.code
    ORDER BY d.vol DESC
""").fetchdf()

7月24日热力图实战解读

第一梯队:科创板与通信——资金主战场

588000 科创50ETF — 成交量4747万手,成交额89.8亿

这是当之无愧的”成交量之王”。4747万手的日成交量意味着什么?对比一下:沪深300ETF(510300)日成交1025万手,中证500ETF(510500)日成交341万手——科创50的成交量是沪深300的4.6倍,是中证500的13.9倍

但量比仅为0.91——说明科创50的成交量放在近20日的背景下并未异常放大,而是持续维持在高位。这并非”某天突然爆量”,而是一种持续的机构资金沉淀

再看价格:1.885元,近20日累计下跌16.15%。高成交量+持续下跌的组合,最能说明的问题是:

科创50正在经历一场”接盘式下跌”——卖盘汹涌,但买盘同样汹涌。这不是流动性枯竭的阴跌,而是多空激烈博弈后的向下突破。

515880 通信ETF — 成交量4506万手,成交额29.5亿

通信ETF的量更为惊人——4506万手仅次于科创50,量比只有0.65(缩量),意味着什么?通信ETF近20日均量极高(过去20天平均每日成交6915万手),说明整个7月通信板块一直是市场焦点。

但今天0.646的价格,近20日跌幅62.33%——这个跌幅数据我反复检查了三遍,确认不是数据异常(如果涉及除权调整,会在ETF净值上有体现)。通信ETF从7月初的1.715跌至0.646,期间伴随天量成交,说明:

通信板块正在经历一次”筹码大搬家”——天量换手之下价格腰斩,说明新进资金在低位大规模接盘,而原有持仓在高位大规模出逃。

这让我想起2024年的半导体ETF——同样是在大幅下跌后伴随天量成交,随后进入了长达两个季度的震荡筑底。

第二梯队:宽基指数——沪深300与创业板

159915 创业板ETF — 成交额64.4亿(排名第2),成交量1819万手

创业板ETF的成交额排名第二(64.4亿),但成交量排名第七(1819万手)——因为其单价较高(3.508元)。成交额维度的排名更能反映实际资金承载量

创业板ETF近20日跌幅17.19%,同样处于下跌通道。但与科创50不同,量比0.82(正常水平),说明成交量的变化与近期均值基本一致,不像通信ETF那样经历极端放量。

510300 沪深300ETF — 成交额48.4亿(排名第3),成交量1025万手

沪深300ETF的缩量值得关注——量比0.67,属于缩量。作为全市场规模最大的ETF之一,沪深300的缩量说明大资金整体处于观望状态,既没有大规模买入也没有大规模卖出。

这与板块估值数据吻合:沪深300整体估值处于中等偏低水平,既不到”应该恐慌出逃”的程度,也尚未出现”便宜到必须买入”的信号。

第三梯队:行业ETF——证券、医疗、恒生科技

512880 证券ETF — 成交量2215万手,成交额24.6亿,量比0.80(缩量)

证券ETF的缩量+0.646的价格,加上板块整体低估(P/E分位处于历史低位),构成了一个典型的”量价背离”信号:

估值低 + 成交量低 = 市场对券商板块的兴趣降至冰点。这在历史上往往是板块底部区域的特征——当关注度降至最低时,恰恰是反转的起点。

513130 恒生科技ETF — 成交量4139万手,成交额23.9亿

恒生科技ETF是本次热力图的一个”异类”:成交量排名第3(4139万手),近20日涨幅+4.17%,且量比0.63(缩量)。结合中概互联ETF(513050)+8.91%的表现,港股科技方向是少数同时获得”上涨+高量”的ETF

这说明港股科技是当前资金共识度最高的方向之一——虽然量比不高(过去20天本就活跃),但成交量的绝对排名说明它在当前市场中是资金的首选方向之一。

热力图全局总结

ETF成交量排名量比20日涨幅资金信号
科创50(588000)10.91-16.15%持续资金沉淀,下跌中接盘
通信(515880)20.65-62.33%筹码大搬家,极端换手
恒生科技(513130)30.63+4.17%资金共识度最高的方向
证券(512880)40.80-2.14%关注度冰点,底部特征
医疗(512170)50.80+1.29%正常换手,防御属性
中概互联(513050)60.64+8.91%20日涨幅冠军,资金追逐
创业板(159915)70.82-17.19%正常下跌换手
半导体(512480)80.98-61.74%和通信同命相怜

交叉验证:热力图 vs 个股成交 vs 板块估值

个股成交额的”科技线”确认

当日成交额最大的个股TOP5:

排名代码名称成交额(亿)涨跌幅所属方向
1300308中际旭创229-0.38%光模块/AI算力
2603986兆易创新229+2.93%芯片/AI算力
3002156通富微电198+12.66%封测/AI算力
4300502新易盛163-1.23%光模块/AI算力
5000938紫光股份152+1.07%算力/AI服务器

5只中有5只属于AI/算力/半导体方向。 这与ETF热力图揭示的科技线(科创50、通信、半导体)完全一致。科技方向确实是当前资金的主战场——无论从ETF成交量还是个股成交额来看,都是不争的事实。

但这里有一个关键矛盾:科技线在同时发生”大规模买入”和”大规模下跌”。科创50ETF过去20天跌了16%,多位科技白马股高位回落,但成交额榜单一直保持着200亿左右的日成交。这说明:

不是科技股没人要了,而是科技股正在进行了一次持仓结构的大调整——老资金在出,新资金在进。谁对谁错,三到六个月内见分晓。

板块估值交叉验证

板块PE分位PB分位热力图信号综合判断
半导体🔴 高估🔴 高估高成交量+大跌估值压力释放中
证券🟢 低估🟢 低估缩量+价格低位底部区域,等待催化剂
酒/消费🟢 低估🟢 低估酒ETF成交量第10低估但未获资金关注
医疗🟢 低估🟢 低估量比正常防御配置但仍处低点

证券/保险/白酒板块低估与热力图信号一致:成交量低 = 无人关注 = 估值低。这与科技线的高量高估值形成鲜明对比。

风格切换的成交量信号

从ETF近20日涨幅排名来看,风格切换的痕迹更加清晰:

涨幅领先者:

  • 油气ETF(162411) +13.92% — 商品方向领涨
  • 中概互联(513050/159605) +8.9-8.8% — 港股科技
  • 恒生医疗(513060) +7.26% — 港股医药

跌幅领先者:

  • 通信ETF(515880) -62.33% — A股科技(同期)
  • 半导体ETF(512480) -61.74% — A股科技
  • 新能源ETF(516160) -17.27%
  • 科创50(588000) -16.15%
  • 中证500(510500) -15.92%

一个极其清晰的”双轨”信号:A股科技在流血,港股科技在吸血;商品在领涨,宽基在普跌。 资金不是”撤出股票市场”,而是”从A股科技撤出,同时涌入港股科技和商品”。


Python代码:全自动热力图生成脚本

将上述方法论封装为可每日运行的脚本:

#!/usr/bin/env python3
"""ETF成交量热力图日报 —— 从DuckDB自动生成"""
import duckdb, json
from datetime import date

DB_PATH = '/mnt/c/Users/Administrator/clawd/data/quant/quant_v2.duckdb'
TODAY = str(date.today())

con = duckdb.connect(DB_PATH, read_only=True)

# 1. 获取最新交易日
latest_date = con.execute(
    "SELECT MAX(date) FROM etf_daily"
).fetchone()[0]

# 2. 成交量TOP15
vol_top = con.execute("""
    SELECT code, ROUND(close,3) as price,
           ROUND(vol/1e4,0) as vol_wan_shou,
           ROUND(amount/1e8,2) as amt_yi
    FROM etf_daily
    WHERE date = ? AND amount > 0
    ORDER BY vol DESC
    LIMIT 15
""", [latest_date]).fetchdf()

# 3. 量比计算
vol_ratio = con.execute("""
    WITH max_date AS (SELECT ?::DATE as md),
    min_date AS (SELECT md - 25 as sd FROM max_date),
    daily_v AS (
        SELECT code, vol FROM etf_daily
        WHERE date::DATE = (SELECT md FROM max_date) AND vol > 0
    ),
    avg_v AS (
        SELECT code, AVG(vol) as avg_vol FROM etf_daily
        WHERE date::DATE >= (SELECT sd FROM min_date)
          AND date::DATE < (SELECT md FROM max_date) AND vol > 0
        GROUP BY code
    )
    SELECT d.code, ROUND(d.vol/NULLIF(a.avg_vol,0), 2) as ratio
    FROM daily_v d JOIN avg_v a ON d.code = a.code
    ORDER BY d.vol DESC
""", [latest_date]).fetchdf()

# 4. 合并输出热力图
heatmap = vol_top.merge(vol_ratio, on='code', how='left')
heatmap['signal'] = heatmap['ratio'].apply(
    lambda r: '放量突破' if r >= 1.5 
    else ('明显放量' if r >= 1.2 
    else ('正常' if r >= 0.8 else '缩量'))
)

print(f"📊 ETF成交量热力图 — {latest_date}")
print(heatmap.to_string(index=False))

# 5. 自动判定当日信号
high_vol_tech = heatmap[heatmap['code'].isin(
    ['588000','515880','512480','159915','159949','516160']
)]
high_vol_value = heatmap[heatmap['code'].isin(
    ['512880','512690','512170','512010','512070']
)]

print(f"\n🔴 科技线高量ETF: {len(high_vol_tech)}只, 平均成交{high_vol_tech['amt_yi'].mean():.1f}亿")
print(f"🟢 价值线高量ETF: {len(high_vol_value)}只, 平均成交{high_vol_value['amt_yi'].mean():.1f}亿")

con.close()

局限性与下一步方向

局限性

  1. 成交量是温度计,不是预测器。高成交量告诉你”资金在这里”,但不会告诉你”资金接下来去哪里”。

  2. 量比的时间窗口选择敏感。20天的基准窗口对某些ETF(如新上市或近期大规模申赎的ETF)可能不适用。实际使用中应该支持多窗口切换(5天/20天/60天)。

  3. ETF成交量受申赎机制影响。一级市场的大规模申购/赎回会在二级市场成交量上产生噪音。需要结合IOPV溢价率做二次验证。

  4. 缩量不等于不关注。在某些阶段,缩量向上突破可能比放量更可靠(如证券ETF当前的情况)。

下一步方向

  1. ETF成交量-动量交叉信号:将成交量热力图与动量评分系统结合,构建”成交量确认的动量策略”——只有同时满足动量排名前20%和成交量排名前20%的ETF才纳入候选。

  2. 板块级别的成交量聚合:同一板块的多个ETF成交量聚合,构建真正的板块级资金关注度指标(目前单个ETF只能反映该产品的情况)。

  3. 成交量热力图的时间序列:不是只看一天,而是跟踪每日成交TOP10的变化率——哪些ETF持续出现,哪些新晋,哪些消失。这本身就是趋势信号。

  4. 与主力资金流交叉验证:当ETF成交量热力图显示科技线高量,而主力资金流显示科技板块净流出时——这是分歧信号,值得深入分析。


结论

ETF成交量热力图用一个最简单的指标——“今天哪些ETF交易最多”——揭示了7月24日市场的真实面貌:

  1. 科技线是绝对主战场(科创50+通信+半导体占成交前3中的2席),但科技线内部正在经历剧烈的筹码结构调整。

  2. 港股科技是当前资金共识度最高的方向(中概互联+8.9%,恒生科技+4.2%),与A股科技形成”双轨”格局。

  3. 证券/消费等低估值板块处于关注度冰点(量比0.8以下),历史经验表明这往往是底部区域的特征。

  4. 商品方向(油气+13.9%)已启动但成交量尚未进入前10,属于”少数人先跑”阶段。

成交量热力图的最大价值不是告诉我们”现在应该买什么”,而是告诉我们”市场的注意力现在在哪里”——在这个信息过载的时代,注意力本身就是最稀缺的量化信号


数据来源:自有DuckDB量化数据库(quant_v2.duckdb),数据截至2026-07-24。所有回测数据均为历史表现,不构成投资建议。

💬 评论