4. 基于持仓的拥挤度指标:计算基金/机构在ESG高分股上的集中度
拥挤度,这个词在量化圈里听着就让人紧张。说白了,就是大家都在往一个方向挤,挤到一定程度,门就推不开了。
在ESG投资里,拥挤度尤其要命。你想啊,如果所有基金都去买那几只ESG高分股,一旦有个风吹草动,踩踏起来可不是闹着玩的。我2019年做ESG策略回测时就吃过这个亏——策略在样本外跑得漂亮,结果一上实盘,拥挤度直接把我收益吃掉一半。
所以这一章,咱们就专门聊聊怎么用持仓数据,算一算基金和机构在ESG高分股上的集中度。
4.1 拥挤度的核心逻辑
拥挤度指标,本质上是在回答一个问题:有多少人在买同一只股票?
如果一只ESG高分股,被超过80%的ESG基金重仓持有,那它就已经很拥挤了。你再冲进去,大概率是给别人抬轿子。
我个人习惯把拥挤度拆成两个维度:
- 横向拥挤度:同一时间点,多少基金持有同一只股票
- 纵向拥挤度:同一只基金,在ESG高分股上的持仓比例有多高
这两个维度结合起来,才能看清真正的风险。
核心公式:
拥挤度 = (持有该股票的基金数量 / 同类基金总数) × 平均持仓权重
当拥挤度 > 0.6 时,我建议你开始警惕。
4.2 数据准备:你需要哪些字段?
要算拥挤度,你得先有持仓数据。嗯,这里要注意,不是所有持仓数据都能直接用。
我一般从以下几个渠道拿数据:
- 基金季报/年报:前十大重仓股,这是最基础的
- 机构持仓数据:13F filings(美股)、上市公司年报(A股)
- ESG评分数据:至少需要知道哪些股票是ESG高分股
数据字段至少包括:
| 字段名 | 说明 | 示例 |
|---|---|---|
| fund_id | 基金代码 | 000001.OF |
| stock_code | 股票代码 | 600519.SH |
| weight | 持仓权重(%) | 5.23 |
| esg_score | ESG综合评分 | 85.6 |
| report_date | 报告期 | 2024-06-30 |
小技巧:ESG高分股的阈值怎么定?我一般取全市场ESG评分前20%的股票。你也可以用行业内的前10%,看你的策略风格。
4.3 计算步骤:手把手教你算
好,数据准备好了,咱们开始算。我会用Python代码演示,但逻辑是通用的。
步骤一:筛选ESG高分股
# 假设df是包含所有股票ESG评分的数据框
top_esg_stocks = df[df['esg_score'] > df['esg_score'].quantile(0.8)]['stock_code'].unique()
这一步很简单,就是把评分最高的那批股票挑出来。我习惯用分位数,而不是固定阈值,因为市场整体评分会漂移。
步骤二:计算每只股票的基金覆盖度
# 假设holding_df是持仓数据
fund_count = holding_df.groupby('stock_code')['fund_id'].nunique()
total_funds = holding_df['fund_id'].nunique()
# 覆盖度 = 持有该股票的基金数 / 总基金数
coverage = fund_count / total_funds
这里有个坑:总基金数怎么定义?我曾经直接用全市场基金,结果发现很多债券基金根本不买股票,覆盖度被稀释了。后来我改成只统计ESG主题基金和偏股型基金,结果合理多了。
步骤三:计算平均持仓权重
# 计算每只股票在持有它的基金中的平均权重
avg_weight = holding_df.groupby('stock_code')['weight'].mean()
# 拥挤度 = 覆盖度 × 平均权重
crowding = coverage * avg_weight
为什么要乘权重?你想想看,如果一只股票被很多基金持有,但每家只买了0.1%,那其实不拥挤。真正危险的是:大家都重仓。
4.4 实战案例:2024年Q2的ESG拥挤度扫描
我拿2024年二季度的数据跑了一遍,结果挺有意思的。
| 股票代码 | ESG评分 | 基金覆盖度 | 平均权重(%) | 拥挤度 | 预警等级 |
|---|---|---|---|---|---|
| 600519.SH | 92.3 | 0.78 | 6.52 | 5.09 | 高危 |
| 000858.SZ | 88.7 | 0.65 | 4.31 | 2.80 | 中危 |
| 300750.SZ | 85.1 | 0.52 | 3.12 | 1.62 | 低危 |
| 601012.SH | 79.4 | 0.23 | 1.87 | 0.43 | 安全 |
看到没?茅台(600519.SH)的拥挤度高达5.09,78%的基金都持有它,平均权重6.52%。这已经非常拥挤了。我当时在内部会议上就说:茅台要是出个ESG负面事件,整个ESG基金板块都得抖三抖。
避坑指南:我曾经犯过一个错误——只看拥挤度绝对值,没考虑时间序列。后来发现,有些股票拥挤度一直很高,但市场已经消化了。正确的做法是看拥挤度的变化率:如果拥挤度在快速上升,那才是真正的预警信号。
4.5 进阶:构建拥挤度热力图
光看数字不够直观。我习惯把拥挤度画成热力图,一眼就能看出哪些行业、哪些股票在「发烧」。
下面是我用SVG画的一张拥挤度热力图,展示不同ESG评分区间的股票拥挤度分布:
从这张图可以清楚看到:ESG评分越高的股票,拥挤度反而越高。这其实是个悖论——大家都在追逐高分股,结果把风险也追高了。
4.6 拥挤度预警的实战应用
算出来拥挤度之后,怎么用?我分享三个实战场景:
- 调仓信号:当某只ESG高分股的拥挤度超过3.0,且还在上升,我会考虑减仓。别跟风,风停了摔得最惨。
- 压力测试:假设拥挤度最高的5只股票同时下跌10%,你的组合会亏多少?我每周跑一次这个测试。
- 行业轮动:如果某个行业的ESG高分股整体拥挤度偏高,我会把资金转向拥挤度低的行业。说白了,就是找「洼地」。
我的经验法则:
拥挤度 > 4.0:立即减仓,不要犹豫
拥挤度 2.0 - 4.0:密切关注,设置止盈线
拥挤度 < 2.0:正常持有,但定期复查
嗯,最后说一句。拥挤度指标不是万能的,它只是帮你看到「大家都在买什么」。真正做决策时,还得结合估值、动量、基本面这些因子。但如果你连拥挤度都不看,那就像闭着眼睛开车——迟早要出事。
好了,这一章就到这里。记住:不拥挤的地方,才有超额收益。
公众号:蓝海资料掘金营,微信deep3321