当前位置: 首页 > news >正文

基金持股数据统计分析:用Python追踪机构持仓变化与抱团效应

基金持股数据统计分析:用Python追踪机构持仓变化与抱团效应

基金持股数据是追踪机构动向的重要窗口。每只股票被多少基金持有、基金在增持还是减持,这些信息能帮我们判断机构对某只股票的态度。我之前写了一套基金持股分析工具,把全市场的基金持股数据系统地分析了一遍。

数据用的是基金持股接口time/f10/jjcg/{股票代码},返回该股票最近500家左右的基金持股情况,按截止日期倒序排列,每周六9点更新。字段包括基金名称、持有数量、持有市值等。

importjsonimportosimportpandasaspdimportnumpyasnpfromcollectionsimportdefaultdict data_dir="D:/stock_data"defread_jjcg(dm):file_path=os.path.join(data_dir,"time","f10","jjcg",dm)ifnotos.path.exists(file_path):returnNonewithopen(file_path,"r",encoding="utf-8")asf:data=json.load(f)returndatadefread_gplist():file_path=os.path.join(data_dir,"base","gplist")withopen(file_path,"r",encoding="utf-8")asf:data=json.load(f)returndata

第一个分析:单只股票的基金持股变化。追踪某只股票被多少基金持有,基金在增持还是减持。

defanalyze_fund_holding(dm):data=read_jjcg(dm)ifnotdataorlen(data)==0:returnNoneby_date=defaultdict(list)foritemindata:jzrq=item.get("截止日期","")by_date[jzrq].append(item)dates=sorted(by_date.keys(),reverse=True)iflen(dates)<2:returnNonelatest_date=dates[0]prev_date=dates[1]latest_funds=by_date[latest_date]prev_funds=by_date[prev_date]latest_names=set(f.get("基金名称","")forfinlatest_funds)prev_names=set(f.get("基金名称","")forfinprev_funds)new_in=latest_names-prev_names exited=prev_names-latest_names latest_total_vol=sum(f.get("持有数量",0)forfinlatest_funds)prev_total_vol=sum(f.get("持有数量",0)forfinprev_funds)vol_change=(latest_total_vol-prev_total_vol)/prev_total_volifprev_total_vol>0else0result={"dm":dm,"latest_date":latest_date,"prev_date":prev_date,"latest_fund_count":len(latest_funds),"prev_fund_count":len(prev_funds),"new_funds":len(new_in),"exited_funds":len(exited),"vol_change":vol_change}iflen(new_in)>len(exited)*2andvol_change>0.1:result["signal"]="基金大幅增持"result["score"]=72eliflen(exited)>len(new_in)*2andvol_change<-0.1:result["signal"]="基金大幅减持"result["score"]=33else:result["signal"]="基金持仓稳定"result["score"]=52returnresult

第二个分析:全市场基金抱团检测。找出被最多基金持有的股票,这些就是"抱团股"。

defscan_fund_clustering(top_n=30):gp_list=read_gplist()results=[]forgpingp_list:dm=gp["股票代码"]mc=gp["股票名称"]data=read_jjcg(dm)ifnotdataorlen(data)==0:continueby_date=defaultdict(list)foritemindata:jzrq=item.get("截止日期","")by_date[jzrq].append(item)ifnotby_date:continuelatest_date=max(by_date.keys())latest_funds=by_date[latest_date]total_value=sum(f.get("持有市值",0)forfinlatest_funds)results.append({"dm":dm,"mc":mc,"fund_count":len(latest_funds),"total_value":total_value,"date":latest_date})df=pd.DataFrame(results).sort_values("fund_count",ascending=False).head(top_n)print("基金持股数量TOP{}:".format(top_n))print(df.to_string(index=False))returndf

被基金持有数量最多的股票就是市场公认的"核心资产"。当这些股票的基金持有数量开始下降时,说明抱团在瓦解。

第三个分析:基金净增持扫描。找出基金净增持最多的股票。

defscan_fund_net_increase(top_n=30):gp_list=read_gplist()results=[]forgpingp_list:dm=gp["股票代码"]mc=gp["股票名称"]result=analyze_fund_holding(dm)ifresultisNone:continueifresult.get("score",50)>=65:results.append({"dm":dm,"mc":mc,"fund_count":result["latest_fund_count"],"new_funds":result["new_funds"],"vol_change":result["vol_change"],"score":result["score"]})df=pd.DataFrame(results).sort_values("vol_change",ascending=False).head(top_n)print("基金净增持TOP{}:".format(top_n))print(df.to_string(index=False))returndf

第四个分析:头部基金动向追踪。专门追踪几家知名公募基金的持仓变化。

deftrack_top_funds(fund_names):gp_list=read_gplist()results=defaultdict(list)forgpingp_list:dm=gp["股票代码"]mc=gp["股票名称"]data=read_jjcg(dm)ifnotdata:continuelatest_date=max(item.get("截止日期","")foritemindata)foritemindata:ifitem.get("截止日期","")!=latest_date:continuefund_name=item.get("基金名称","")fortargetinfund_names:iftargetinfund_name:results[target].append({"dm":dm,"mc":mc,"vol":item.get("持有数量",0),"value":item.get("持有市值",0)})forfund_name,holdingsinresults.items():df=pd.DataFrame(holdings).sort_values("value",ascending=False).[:10]print("{}最新重仓股TOP10:".format(fund_name))print(df.to_string(index=False))returnresults

几个使用经验。第一,基金持股数据是季度披露的,有滞后性,但基金的动作往往领先股价1到2个月。第二,基金持有数量变化比持有市值变化更有参考价值,因为市值会随股价波动。第三,头部基金的动向比小基金更准,建议重点追踪易方达、中欧、景顺长城等知名公募。第四,基金抱团股瓦解前会有征兆——基金数量还在增加但股价不涨了,说明新基金在接盘但老基金在撤退。

我用的数据来源是ig50的本地数据接口,基金持股接口每周六更新,覆盖500家左右的基金,做这种机构持仓分析很方便。


接口说明:

  1. time/f10/jjcg/{股票代码} - 基金持股
    本地路径:数据存放目录/time/f10/jjcg/{股票代码}
    更新频率:每周六9点更新(耗时约9小时)
    数据格式:[{}…],按截止日期倒序
    主要字段:截止日期、基金名称、持有数量(股)、持有市值(元)等
    数据覆盖:每只股票最近500家左右的基金持股情况

资料参考:ig50

http://www.jsqmd.com/news/1336265/

相关文章:

  • 性价比高的台柜非标定制制造厂家怎么选才靠谱 - 热点品牌推荐
  • 2026 年 8 月新发布:岱山评价高的凉皮机厂家地址制造厂深度解析与优选指南,想开凉皮店别乱找?附能挖到靠谱货源的具体位置 - 企业官方推荐【认证】
  • 从零搭建AI播客工作室:硬件清单×软件链路×成本核算(含3种ROI超200%的变现组合)
  • 满语学习入门:从零搭建虚拟学习环境与高效学习路径规划
  • Unity无限滚动列表优化:OSA插件多预制体实战指南
  • 先看边界再看参数:OCR文字识别接口的适用场景与实现细节
  • 北京网站建设推广那些事儿:从0到1打造高转化流量引擎
  • Unity相机抖动插件Camera-Shake集成与应用实战指南
  • 常州离婚财产分割与子女抚养实务参考:一位15年家事律师的办案思路 - 本地品牌推荐
  • 找410钢丝定制厂家哪家靠谱?看准这几点很关键 - 热点品牌推荐
  • 140、LLC谐振变换器的PMBus协议实现
  • 找海曙不锈钢钣金制品定做热门厂家,2026年看这篇就够了 - 热点品牌推荐
  • Golang - 备忘录模式(Memento Pattern)
  • 南通三星镇中捷缝纫机购机介绍
  • SpringBoot+Vue全栈旅游管理系统架构解析
  • 2026 年现阶段,松江可靠的匹克球场护栏供货商怎么联系,别再小看球场边那圈不起眼的玩意儿,关键时刻能救你半条命! - 企业信息推荐-2
  • 2026 广东二氧化硅源头厂家优质推荐 国产高端硅基材料采购优选指南 - 天下观知
  • 2026年金属钝化剂供应商业内推荐怎么选更稳妥 - 热点品牌推荐
  • Cocos Creator 3.7微信小游戏开发:从架构设计到提审上线的全流程实战指南
  • 今天试了一下 Genspark 的网站生成(Code)功能 - AI
  • 141、LLC谐振变换器的I2C通信实现
  • 基于Transformer-BiLSTM多变量回归预测(多输入单输出) 附Matlab代码
  • 武汉管道疏通公司口碑**:2026年本地正规品牌综合对比与推荐 - 园子一号
  • 对标 3A 游戏项目标准,湖南梵映教育科技有限公司打造游戏建模全链路培养体系 - 天下观知
  • 【AI品牌叙事权威白皮书】:基于87个真实案例、92.6%转化率提升验证的7步生成法
  • JDK17安装包(附安装教程)
  • 成都管道疏通公司口碑**:2026年本地正规品牌综合对比与推荐 - 园子一号
  • 天津被辞退后赔偿怎么算?N、N+1、2N的实务区分与维权要点——高延庆律师实务解读 - 本地品牌推荐
  • 重庆全屋定制厂家横向对比:衣柜、酒柜、衣帽间选型全指南(2026版) - 天下观知
  • 证件照换背景用什么软件好?手机、电脑、在线方案一次说清 - 提词匠