📑 本文目录
ETF成交量热力图——从科创50与通信ETF日交4747万手看资金博弈逻辑
引子:被忽视的”红外成像仪”
2026年7月24日收盘,一组数据引起了我的注意——这不是涨跌幅排名,不是资金流向排名,而是ETF成交量排名:
| 排名 | ETF代码 | ETF名称 | 成交量(万手) | 成交额(亿) | 价格 |
|---|---|---|---|---|---|
| 1 | 588000 | 科创50ETF | 4747 | 89.8 | 1.885 |
| 2 | 515880 | 通信ETF | 4506 | 29.5 | 0.646 |
| 3 | 513130 | 恒生科技ETF | 4139 | 23.9 | 0.575 |
| 4 | 512880 | 证券ETF | 2215 | 24.6 | 1.099 |
| 5 | 512170 | 医疗ETF | 2036 | 6.5 | 0.315 |
| 6 | 513050 | 中概互联ETF | 1946 | 20.8 | 1.063 |
| 7 | 159915 | 创业板ETF | 1819 | 64.4 | 3.508 |
| 8 | 513060 | 恒生医疗ETF | 1764 | 9.5 | 0.532 |
| 9 | 512480 | 半导体ETF | 1622 | 18.1 | 1.113 |
| 10 | 512690 | 酒ETF | 1555 | 6.5 | 0.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) | 1 | 0.91 | -16.15% | 持续资金沉淀,下跌中接盘 |
| 通信(515880) | 2 | 0.65 | -62.33% | 筹码大搬家,极端换手 |
| 恒生科技(513130) | 3 | 0.63 | +4.17% | 资金共识度最高的方向 |
| 证券(512880) | 4 | 0.80 | -2.14% | 关注度冰点,底部特征 |
| 医疗(512170) | 5 | 0.80 | +1.29% | 正常换手,防御属性 |
| 中概互联(513050) | 6 | 0.64 | +8.91% | 20日涨幅冠军,资金追逐 |
| 创业板(159915) | 7 | 0.82 | -17.19% | 正常下跌换手 |
| 半导体(512480) | 8 | 0.98 | -61.74% | 和通信同命相怜 |
交叉验证:热力图 vs 个股成交 vs 板块估值
个股成交额的”科技线”确认
当日成交额最大的个股TOP5:
| 排名 | 代码 | 名称 | 成交额(亿) | 涨跌幅 | 所属方向 |
|---|---|---|---|---|---|
| 1 | 300308 | 中际旭创 | 229 | -0.38% | 光模块/AI算力 |
| 2 | 603986 | 兆易创新 | 229 | +2.93% | 芯片/AI算力 |
| 3 | 002156 | 通富微电 | 198 | +12.66% | 封测/AI算力 |
| 4 | 300502 | 新易盛 | 163 | -1.23% | 光模块/AI算力 |
| 5 | 000938 | 紫光股份 | 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()
局限性与下一步方向
局限性
-
成交量是温度计,不是预测器。高成交量告诉你”资金在这里”,但不会告诉你”资金接下来去哪里”。
-
量比的时间窗口选择敏感。20天的基准窗口对某些ETF(如新上市或近期大规模申赎的ETF)可能不适用。实际使用中应该支持多窗口切换(5天/20天/60天)。
-
ETF成交量受申赎机制影响。一级市场的大规模申购/赎回会在二级市场成交量上产生噪音。需要结合IOPV溢价率做二次验证。
-
缩量不等于不关注。在某些阶段,缩量向上突破可能比放量更可靠(如证券ETF当前的情况)。
下一步方向
-
ETF成交量-动量交叉信号:将成交量热力图与动量评分系统结合,构建”成交量确认的动量策略”——只有同时满足动量排名前20%和成交量排名前20%的ETF才纳入候选。
-
板块级别的成交量聚合:同一板块的多个ETF成交量聚合,构建真正的板块级资金关注度指标(目前单个ETF只能反映该产品的情况)。
-
成交量热力图的时间序列:不是只看一天,而是跟踪每日成交TOP10的变化率——哪些ETF持续出现,哪些新晋,哪些消失。这本身就是趋势信号。
-
与主力资金流交叉验证:当ETF成交量热力图显示科技线高量,而主力资金流显示科技板块净流出时——这是分歧信号,值得深入分析。
结论
ETF成交量热力图用一个最简单的指标——“今天哪些ETF交易最多”——揭示了7月24日市场的真实面貌:
-
科技线是绝对主战场(科创50+通信+半导体占成交前3中的2席),但科技线内部正在经历剧烈的筹码结构调整。
-
港股科技是当前资金共识度最高的方向(中概互联+8.9%,恒生科技+4.2%),与A股科技形成”双轨”格局。
-
证券/消费等低估值板块处于关注度冰点(量比0.8以下),历史经验表明这往往是底部区域的特征。
-
商品方向(油气+13.9%)已启动但成交量尚未进入前10,属于”少数人先跑”阶段。
成交量热力图的最大价值不是告诉我们”现在应该买什么”,而是告诉我们”市场的注意力现在在哪里”——在这个信息过载的时代,注意力本身就是最稀缺的量化信号。
数据来源:自有DuckDB量化数据库(quant_v2.duckdb),数据截至2026-07-24。所有回测数据均为历史表现,不构成投资建议。