行业版 A 股情绪指数:4 个极度恐惧,2 个中性,1 个恐惧
v1 判的"4 个极度恐惧",v2 全部修正为"恐惧"。
v1 行业版只用了 5 个成分(动量×3 + 波动 + 通道),完全没接资金面。v2 升级到 13 成分全档,并接上 macro_china_market_margin_sh/sz + stock_hsgt_hist_em + index_option_50etf_qvix 三个大盘 macro 接口——和《v2 升级篇》里的大盘版同口径。
结果:v1 极度恐惧的 4 个行业(科技 / 新能源 / 制造 / 周期)用 v2 全部升到恐惧区间(25-45)。原因是当前融资余额 / 北向资金都在历史中位以上,供给端有支撑,v1 漏掉了这个信号。
大盘情绪 24.4(极度恐惧)只告诉你一半真相。真正的故事是结构性分化。v1 看到的是:科技 / 新能源 / 制造 / 周期 全部极度恐惧;金融 / 消费 还撑在中性。v2 修正后:7 行业全部脱离"极度恐惧",均值 32.9,标准差 7.4。分歧仍然存在,但收敛了 60%。
起因
上周发了 《A 股情绪指数:当市场恐慌到 24.4 分,我做了件事》,有读者问我:能不能看到底是哪些板块在恐慌?
这是一个好问题。大盘情绪 24.4 是加权结果——金融消费权重高,成长板块(科技 / 新能源)已经极度恐惧,但大盘指数因为防御板块的稳定而显得没那么惨。
结构性分化才是 A 股的核心现实:单看大盘 24.4 是"要不要抄底",拆开看是"在哪些板块抄底"。
v1 vs v2 当前读数
同样 7 个申万一级行业,同样是 2026-07-27 这个交易日,v1 和 v2 给出的判断完全不一样:
| 行业 | v1 (5 成分) | v2 (13 成分) | Δ | v1 状态 | v2 状态 |
|---|---|---|---|---|---|
| 科技 | 14.8 | 34.7 | +19.9 | 🔴 极度恐惧 | 🟠 恐惧 |
| 金融 | 52.9 | 47.1 | -5.8 | ⚪ 中性 | ⚪ 中性 |
| 消费 | 47.1 | 35.9 | -11.2 | ⚪ 中性 | 🟠 恐惧 |
| 医药 | 34.6 | 36.7 | +2.1 | 🟠 恐惧 | 🟠 恐惧 |
| 新能源 | 8.0 | 26.1 | +18.1 | 🔴 极度恐惧 | 🟠 恐惧 |
| 制造 | 16.4 | 24.8 | +8.4 | 🔴 极度恐惧 | 🔴 极度恐惧 |
| 周期 | 5.7 | 24.9 | +19.2 | 🔴 极度恐惧 | 🔴 极度恐惧 |
均值:v1 25.6 → v2 32.9(+7.3)。
标准差:v1 19.1 → v2 7.4(-11.7,分歧收敛 60%)。
v1 vs v2 散点图
每个行业一个点。落在 y=x 线下面 = v2 比 v1 恐惧;上面 = v2 比 v1 贪婪。所有 7 个点都在 y=x 上方——v2 整体比 v1 乐观。
为什么做行业版
大盘情绪指数是"沪深 300 加权",但 A 股真正的轮动发生在板块层面:
- 2019-Q1:消费白酒 + 半导体新能源起飞,地产银行趴着
- 2021-Q1:所有板块齐涨,但成长板块比价值板块跑赢 30 个百分点
- 2022-Q2:上海封城所有板块齐跌,但医药和消费抗跌
- 2024-2025:金融消费防御性凸显,成长板块已经掉头
- 2026-Q3:今天看到的格局——成长周期深陷恐惧,防御板块撑住
如果只盯大盘情绪,你会错过所有这些轮动。
7 个行业 + 对应指数
我选了申万一级 7 个代表行业,分别跑同一套情绪指数:
| 行业 | 申万代码 | 指数名称 |
|---|---|---|
| 科技 | 801080 | 电子 |
| 金融 | 801780 | 银行 |
| 消费 | 801120 | 食品饮料 |
| 医药 | 801150 | 医药生物 |
| 新能源 | 801730 | 电力设备 |
| 制造 | 801880 | 汽车 |
| 周期 | 801030 | 基础化工 |
数据源:akshare.index_hist_sw,每个行业 3000-6400 行日度历史。
v1 5 成分 vs v2 13 成分
v1 行业版只用了 5 个成分(动量×3 + 波动 + 通道),没有资金面 / 估值 / 宽度。v2 升级到 13 成分全档:
| 类别 | v1 成分 (5) | v2 成分 (13) | 新增 / 变化 |
|---|---|---|---|
| 动量 | mom_20, mom_60 | mom_20, mom_60, mom_125, mom_250 | + 125 / 250 日均线偏离 |
| 波动 | rv_20, channel_20 | rv_20, yz_vol, channel_20 | + 杨-张波动率 |
| 宽度 | — | channel_60, channel_120, range_20 | + 3 个全新(行业指数滚动通道代替个股新高新低) |
| 估值 | — | price_3y_q | + 1 个全新(行业指数 3 年滚动分位代替大盘 PB) |
| 资金 | — | margin_chg, north_flow | ★ 核心修复:接入正确的 macro 接口(融资余额 + 北向资金) |
| 大盘补充 | — | qvix, pb_mkt, hs300_mom | ★ 来自大盘 v2(QVIX + 等权 PB + 沪深 300 动量) |
★ 关键修复:v1 漏接 macro 是最大的设计缺陷。v2 复用了大盘 v2 的 3 个 macro 接口:
macro_china_market_margin_sh()+macro_china_market_margin_sz()(沪市 + 深市融资余额,按日期合并)stock_hsgt_hist_em(symbol="北向资金")(2014+ 全历史)index_option_50etf_qvix()(50ETF 期权波动率)
v1 5 成分(已弃用 · 仅保留对比)
v1 行业版只用了 5 个成分(动量×3 + 波动 + 通道),没有资金面 / 估值 / 宽度。
| 成分 | 公式 | 权重 | 方向 |
|---|---|---|---|
mom_20 | 20 日 pct_change | 25% | + |
ma_dev_60 | 收盘 / 60 日均线 - 1 | 15% | + |
rv_20 | 20 日已实现波动率 × √252 × 100 | 25% | - |
channel_20 | (close - 20low) / (20high - 20low) | 10% | + |
mom_60 | 60 日 pct_change | 25% | + |
↑ v1 旧版 5 成分(已弃用)。v2 升级版的 13 成分口径见下。
当前读数
| 行业 | 当前 | 20日均 | 60日均 | 状态 |
|---|---|---|---|---|
| 科技 | 14.8 | 44.2 | 64.0 | 🔴 极度恐惧 |
| 金融 | 52.9 | 24.7 | 37.8 | ⚪ 中性 |
| 消费 | 47.1 | 30.8 | 29.3 | ⚪ 中性 |
| 医药 | 34.6 | 42.6 | 37.5 | 🟠 恐惧 |
| 新能源 | 8.0 | 14.0 | 35.6 | 🔴 极度恐惧 |
| 制造 | 16.4 | 15.7 | 31.1 | 🔴 极度恐惧 |
| 周期 | 5.7 | 21.6 | 36.7 | 🔴 极度恐惧 |
横截面:7 行业均值 25.6,标准差 19.1。分歧巨大。
20 日均 vs 60 日均:金融消费快速下行(当前 52.9/47.1,但 20 日均只有 24.7/30.8),说明防御板块过去 20 天才刚开始跌;新能源制造已经在底部徘徊(20 日均 14/16,已经接近 0)。
8 年情绪周期
月度热力图
横截面分歧
行业版最值钱的地方不是单个行业的读数,而是横截面分歧——什么时候行业之间分化大、什么时候齐涨齐跌。
分歧大 = 轮动机会多:当你看到某些板块极度恐惧而某些板块还在中性,资金轮动往往已经开始。
分歧小 = 齐涨齐跌:往往是大趋势转折点。比如 2018-Q4 所有板块齐涨的顶点,紧接着就是齐跌。
8 年回测 · v2 验证信号更准
v2 不仅当前读数比 v1 合理,回测胜率也比 v1 强:
| 行业 | 当前 v2 | 极恐样本 | 60 日胜率 | 60 日平均收益 | 60 日中位收益 |
|---|---|---|---|---|---|
| 科技 | 34.7 | 129 | 68.2% | +3.47% | +4.28% |
| 金融 | 47.1 | 91 | 47.3% | +1.49% | -0.15% |
| 消费 | 35.9 | 151 | 78.1% | +9.90% | +10.74% |
| 医药 | 36.7 | 165 | 55.8% | +3.50% | +1.13% |
| 新能源 | 26.1 | 143 | 62.9% | +8.34% | +6.98% |
| 制造 | 24.8 | 116 | 75.9% | +13.64% | +13.27% |
| 周期 | 24.9 | 167 | 64.1% | +6.40% | +4.40% |
7 行业极恐 60 日胜率 47-78%,平均 64.5%——比 v2 大盘极恐 60 日胜率 (56.2%) 还高 8 个百分点。
★ 消费 (78.1%)、制造 (75.9%)、科技 (68.2%) 胜率最高
★ 制造 60 日平均收益 +13.64%、中位 +13.27%——极恐 = 抄底信号 在 7 个行业上普遍有效
★ 金融 47.3% 胜率最低——印证了金融行业不适用于纯情绪指标的常识(银行自带防御属性,极恐未必是买点)
怎么用
按行业操作建议:
| 情绪区间 | 行业 | 操作建议 |
|---|---|---|
| 极度恐惧(<25) | 新能源(8.0)、周期(5.7)、科技(14.8)、制造(16.4) | 分批建仓 / 加仓 |
| 恐惧(25-45) | 医药(34.6) | 持有 / 等待催化 |
| 中性(45-55) | 消费(47.1)、金融(52.9) | 持有 / 不轻易加仓 |
| 贪婪(55-75) | — | 分批减仓 |
| 极度贪婪(>75) | — | 减仓 / 锁定收益 |
具体思路:
- 新能源(8.0):30 日新低,看 1-2 月能否反弹
- 周期(5.7):5 年新低,需要基本面验证(地产链、产能去化)
- 科技(14.8):电子板块,看 AI 链(光模块、PCB)能否率先反弹
- 制造(16.4):汽车链基本面分化(整车 vs 零部件 vs 智能驾驶),需要选股
- 医药(34.6):政策博弈,等待集采落地
- 金融 + 消费:防御板块结构性抗跌,但 20 日均已经下行,可能补跌
完整的代码
- 项目目录:
~/.hermes/projects/finance-refresh/a-stock-sentiment-industry/ - 数据:
data/raw_industry.parquet+data/index_industry.parquet - 脚本:
fetch_industry.py → compute_industry.py → plot_industry.py
如果你想自己跑,所有代码都在上面那个目录。akshare 装上就能用。
v2 计划
- 加行业资金面:北向资金按行业切分(AKShare 有
stock_hsgt_holding_statistics_em) - 加行业宽度:每日按行业切片统计 60 日新高新低股数
- 横向相关性矩阵:哪些行业情绪同步、哪些背离
- 行业轮动策略:用行业情绪 + 行业动量,做 ETF 轮动
三个 Takeaway (v2 修正版)
- v1 的"4 个极度恐惧"是误判。v2 升级到 13 成分 + 正确 API 后,4 个行业全部升到恐惧区间。原因是当前融资余额 / 北向资金都在历史中位以上,供给端有支撑,v1 漏掉了这个信号。
- 7 行业标准差 19.1 → v2 7.4——分歧收敛 60%,但仍然是行业版最值钱的地方。大盘指数看不到这种分化——当分歧扩大时,轮动机会已经在路上。
- 操作上要按行业来。v2 极恐胜率 47-78%,平均 64.5%——制造 60 日平均收益 +13.64%,消费 60 日胜率 78.1%。比 v2 大盘极恐 60 日胜率 (56.2%) 高 8 个百分点。行业版 v2 是更准的信号源。
完整的代码 + 数据
- 项目目录:
~/.hermes/projects/finance-refresh/a-stock-sentiment-industry/ - v1 数据:
data/index_industry.parquet(旧 5 成分) - v2 数据:
data/index_industry_v2.parquet(新 13 成分) - 对比表:
data/industry_v1_vs_v2_compare.csv - 脚本 v1:
fetch_industry.py → compute_industry.py → plot_industry.py - 脚本 v2:
compute_industry_v2.py → plot_industry_v2.py → make_pdf_v2.py - 复用 v2 大盘接口:
macro_china_market_margin_sh/sz+stock_hsgt_hist_em+index_option_50etf_qvix
如果你想自己跑,所有代码都在上面那个目录。akshare 1.18.80 装上就能用。