Fund Holdings

查看基金持仓并计算多只基金之间的持仓重叠度。输入基金代码,获取完整持仓数据,生成重叠度矩阵。

cloud26 Updated

File contents

用户想要查看并对比多只基金的底层持仓,计算它们之间的重叠程度。

输入

用户会提供若干基金代码(如 160615 005788 217027),通过 $ARGUMENTS 传入。

步骤

1. 获取每只基金的基本信息

对每只基金代码,用 WebFetch 抓取:

https://fundf10.eastmoney.com/jbgk_{基金代码}.html

从中提取:基金名称、成立日期、基金类型、跟踪指数。

关键判断:如果是 ETF联接基金,需要找到母ETF代码,后续用母ETF代码查持仓。

2. 获取完整持仓

对每只基金(或其母ETF),用 WebFetch 抓取:

https://fundf10.eastmoney.com/FundArchivesDatas.aspx?type=jjcc&code={基金代码}&topline=9999&year={年}&month={月}
  • 完整持仓只在半年报(month=6)和年报(month=12)披露
  • 先尝试最近的年报(12月),如果数据不全再尝试半年报(6月)
  • 季报只有前10大持仓,如果用户只需要前10大,可以用最近的季度

返回的格式是 JS 变量赋值包裹 HTML 表格(var apidata={content:"<HTML>"}),需要解析其中的股票名称和占净值比例。

3. 计算重叠度

对任意两只基金,计算:

  • 重叠股票数:两只基金共同持有的股票数量
  • Jaccard系数:重叠股票数 / 合并去重股票数
  • 加权重叠度:对每只重叠股票,取两只基金中较小的权重,求和。这个指标反映实际资金暴露的重叠程度。

4. 输出

生成清晰的重叠度矩阵和明细:

  • 矩阵形式展示任意两只基金的加权重叠度
  • 列出每对基金的重叠股票明细(股票名、两边权重)
  • 按重叠度从高到低排序
  • 给出分散度评估建议

备用数据源

如果天天基金网接口失败,可尝试新浪财经(仅前10大):

https://finance.sina.com.cn/fund/quotes/{基金代码}/bc.shtml

注意事项

  • ETF联接基金的直接持仓几乎全是母ETF份额,必须查母ETF才能看到真实股票持仓
  • 同一公司在不同市场上市(如民生银行A股/H股)应视为相关但不完全相同的持仓
  • 指数基金的持仓基本就是指数成分股,权重也高度一致

cloud26/awesome-fund-skills/tree/main/fund-holdings commit 81c18d9b52

Frequently asked questions

npx skillmds@latest add cloud26/fund-holdings