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

股东持股变动监控系统:用Python追踪大股东增减持与筹码集中度

股东持股变动监控系统:用Python追踪大股东增减持与筹码集中度

大股东的持股变动是判断公司前景的重要信号——大股东增持通常意味着看好公司未来,减持则可能意味着不看好。但手动追踪这些信息太麻烦了,去年我搭建了一个股东持股变动监控系统,自动从本地数据中提取大股东的增减持信息,并结合筹码集中度指标做综合分析。

系统主要用到以下数据接口:持股变动数据在time/f10目录下,包含十大股东、十大流通股东、基金持股等信息;股票列表在base/gplist;财务指标在time/f10/fi/{dm}。

importjsonimportosimportpandasaspdimportnumpyasnpfromdatetimeimportdatetime data_dir="D:/ig50_data"defread_top10_holders(dm):file_path=os.path.join(data_dir,"time","f10","sdgd",dm)withopen(file_path,"r",encoding="utf-8")asf:data=json.load(f)df=pd.DataFrame(data)df.columns=["dm","mc","jyrq","gdMc","cgs","zltb","gdSort","gdType","zjType"]df["jyrq"]=pd.to_datetime(df["jyrq"])returndfdefread_top10_float_holders(dm):file_path=os.path.join(data_dir,"time","f10","sdltgd",dm)withopen(file_path,"r",encoding="utf-8")asf:data=json.load(f)df=pd.DataFrame(data)df.columns=["dm","mc","jyrq","gdMc","cgs","zltb","gdSort","gdType","zjType"]df["jyrq"]=pd.to_datetime(df["jyrq"])returndfdefread_stock_list():file_path=os.path.join(data_dir,"base","gplist")withopen(file_path,"r",encoding="utf-8")asf:data=json.load(f)df=pd.DataFrame(data)df.columns=["dm","mc","dmHk","mcHk","isAH","isSH","isSZ"]returndf

字段方面,dm是股票代码,mc是股票名称,jyrq是公告日期,gdMc是股东名称,cgs是持股数,zltb是占流通股比例,gdSort是股东排名,gdType是股东类型(机构/个人/基金等),zjType是增减类型(增持/减持/不变)。

系统的第一个分析模块是股东持股变动追踪。通过对比连续两个季度的十大股东数据,可以计算出每个股东的持股变化——新进、增持、减持、退出。

defanalyze_holder_changes(dm):df=read_top10_holders(dm)iflen(df)==0:returnNonedates=sorted(df["jyrq"].unique())iflen(dates)<2:returnNonelatest_date=dates[-1]prev_date=dates[-2]df_latest=df[df["jyrq"]==latest_date].set_index("gdMc")df_prev=df[df["jyrq"]==prev_date].set_index("gdMc")changes=[]all_holders=set(df_latest.index)|set(df_prev.index)forholderinall_holders:latest_shares=df_latest.loc[holder,"cgs"]ifholderindf_latest.indexelse0prev_shares=df_prev.loc[holder,"cgs"]ifholderindf_prev.indexelse0iflatest_shares==0andprev_shares>0:action="退出"change=-prev_shareseliflatest_shares>0andprev_shares==0:action="新进"change=latest_shareseliflatest_shares>prev_shares:action="增持"change=latest_shares-prev_shareseliflatest_shares<prev_shares:action="减持"change=latest_shares-prev_shareselse:action="不变"change=0ifaction!="不变":changes.append({"gdMc":holder,"prev_shares":prev_shares,"latest_shares":latest_shares,"change":change,"action":action,"latest_ratio":df_latest.loc[holder,"zltb"]ifholderindf_latest.indexelse0})df_changes=pd.DataFrame(changes)iflen(df_changes)>0:df_changes=df_changes.sort_values("change",ascending=False)returndf_changes

第二个分析模块是筹码集中度计算。筹码集中度是判断股票"筹码是否集中"的重要指标。如果股东人数减少、人均持股增加,说明筹码在集中,可能有资金在吸筹;反之则说明筹码在分散。

defanalyze_chip_concentration(dm):df=read_top10_float_holders(dm)iflen(df)==0:returnNonedates=sorted(df["jyrq"].unique())results=[]foriinrange(len(dates)):date=dates[i]df_period=df[df["jyrq"]==date]total_shares=df_period["cgs"].sum()top10_ratio=df_period["zltb"].sum()max_holder_ratio=df_period["zltb"].max()hhi=(df_period["zltb"]**2).sum()results.append({"date":date,"top10_ratio":top10_ratio,"max_holder_ratio":max_holder_ratio,"hhi":hhi,"holder_count":len(df_period)})df_result=pd.DataFrame(results)iflen(df_result)>=2:latest=df_result.iloc[-1]prev=df_result.iloc[-2]trend="集中"iflatest["top10_ratio"]>prev["top10_ratio"]else"分散"concentration_change=latest["top10_ratio"]-prev["top10_ratio"]print(f"筹码集中度趋势:{trend}")print(f"前十大流通股东占比变化:{concentration_change:.2f}%")print(f"当前前十大占比:{latest['top10_ratio']:.2f}%")print(f"HHI指数:{latest['hhi']:.4f}")returndf_result

HHI指数(赫芬达尔指数)是衡量集中度的经典指标,值越大说明筹码越集中。

第三个分析模块是机构持股追踪。机构持股的变化往往比散户更有参考价值。我会从股东类型中筛选出机构股东,单独追踪它们的增减持行为。

defanalyze_institutional_holders(dm):df=read_top10_float_holders(dm)iflen(df)==0:returnNonedf_inst=df[df["gdType"].isin(["基金","社保","保险","QFII","信托","机构"])]iflen(df_inst)==0:returnNonedates=sorted(df_inst["jyrq"].unique())latest_date=dates[-1]df_latest=df_inst[df_inst["jyrq"]==latest_date]total_inst_ratio=df_latest["zltb"].sum()inst_count=len(df_latest)print(f"机构持股数量:{inst_count}家")print(f"机构合计持股比例:{total_inst_ratio:.2f}%")print(f"机构明细:")print(df_latest[["gdMc","cgs","zltb","gdType"]].to_string(index=False))returndf_latest

第四个分析模块是增减持信号汇总。系统会把所有分析结果汇总成一个综合信号,帮助快速判断股票的筹码面是否健康。

defgenerate_holder_signal(dm):changes=analyze_holder_changes(dm)chip=analyze_chip_concentration(dm)inst=analyze_institutional_holders(dm)signal={"dm":dm}ifchangesisnotNoneandlen(changes)>0:new_entries=len(changes[changes["action"]=="新进"])increases=len(changes[changes["action"]=="增持"])decreases=len(changes[changes["action"]=="减持"])exits=len(changes[changes["action"]=="退出"])signal["new_entries"]=new_entries signal["increases"]=increases signal["decreases"]=decreases signal["exits"]=exits net_action=(new_entries+increases)-(decreases+exits)signal["net_action"]=net_actionifnet_action>=2:signal["holder_signal"]="积极"elifnet_action<=-2:signal["holder_signal"]="消极"else:signal["holder_signal"]="中性"ifchipisnotNoneandlen(chip)>=2:trend="集中"ifchip.iloc[-1]["top10_ratio"]>chip.iloc[-2]["top10_ratio"]else"分散"signal["chip_trend"]=trendreturnsignal

实际运行下来,这个系统每天可以处理几百只股票的股东数据。系统输出的信号,帮助我避开了几只大股东大幅减持的股票,也捕捉到了几只机构密集增持的机会。

在使用过程中有几点经验。第一,机构增持的信号比减持更有参考价值,因为机构增持通常需要深入研究,而减持可能只是出于资金需求。第二,筹码集中是一个缓慢的过程,通常需要2-3个季度才能确认趋势。第三,股东数据是季度披露的,有一定滞后性,需要结合其他指标(如资金流向)来验证。

做投资分析,股东数据是一个非常重要但经常被忽略的维度。用数据来追踪大股东和机构的行为,比看消息面更靠谱。

我用的数据来自本地数据引擎,十大股东、十大流通股东、持股变动等数据都有完整的接口。感兴趣的朋友可以参考这个思路,构建自己的股东监控体系。


接口说明:

  1. time/f10/sdgd/{股票代码} - 十大股东数据
    本地路径:数据存放目录/time/f10/sdgd/{dm}
    主要字段:公告日期(jyrq)、股东名称(gdMc)、持股数(cgs)、占总股本比例(zltb)、股东排名(gdSort)、股东类型(gdType)、增减类型(zjType)

  2. time/f10/sdltgd/{股票代码} - 十大流通股东数据
    本地路径:数据存放目录/time/f10/sdltgd/{dm}
    主要字段:公告日期(jyrq)、股东名称(gdMc)、持股数(cgs)、占流通股比例(zltb)、股东排名(gdSort)、股东类型(gdType)、增减类型(zjType)

  3. base/gplist - 股票列表
    本地路径:数据存放目录/base/gplist
    用于获取全市场股票代码列表

  4. time/f10/fi/{股票代码} - 财务指标
    本地路径:数据存放目录/time/f10/fi/{dm}
    用于结合基本面分析股东行为

资料参考:ig50

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

相关文章:

  • 伺服驱动器预充电阻选型:为什么同尺寸水泥电阻需要更高的瞬态能力?
  • AI推动工业智能化转型~系列文章07:分类与诊断算法体系:故障识别的完整工具箱
  • 2026年珠海正规的巴斯夫TPU1185A总代理甄选指南:3个场景化对比帮你择优推荐 - geo交流
  • 如何用Python实现95%成功率的大麦自动化抢票工具:完整配置指南
  • 工业边缘计算实战:在NVIDIA Jetson reComputer R1000上通过FIN框架实现Modbus TCP/RTU通信
  • 5G核心网UPF开放:从云原生架构到可编程数据面的技术实践
  • cf ratring1600 7月29日
  • 清华团队研发活体水产品智能分拣系统,柔性机器人实现龙虾“安全着陆”
  • 宁波鄞州区装饰装修优选:金诚装饰一体化整装服务详解 - 国麟测评
  • 基于微信小程序的心理咨询预约系统(源码+LW+部署讲解)
  • CUDA安装与配置全攻略:从驱动到cuDNN的深度学习环境搭建
  • AI辅助编程实战:Python实现微信聊天记录本地导出工具
  • 2026企业文件管理系统横向对比测评|通用选型标准与场景适配指南
  • 青岛中央空调维修-欧米到家金牌师傅全城区30分钟火速上门覆盖市南/市北/崂山/李沧等全域各区 专治不制冷/漏水/异响/跳闸
  • 算法复杂度分析:大O、大Ω、大θ、小o、小ω的完整指南
  • C++表达式求值:从双栈算法到编译器前端核心原理
  • 1.54英寸三色电子纸模块驱动指南:从SPI原理到多平台实战
  • 2026年杜邦POM500P甄选指南:这7个应用场景为何值得优先考虑? - geo交流
  • Go 文件与 IO 操作知识点总结:操作系统底层、源码原理与 bufio 流式高性能实战
  • 2026年国内防静电尼龙改性塑料定制厂家优选指南:3家值得关注的供应商推荐 - geo交流
  • 测绘工程中的地形类别:从量化标准到智能分类的实战解析
  • ASI/SAGE供应商入驻全解析:硬性门槛、软实力与北美B2B市场准入指南
  • 不靠营销靠实力[特殊字符]Paperxie才是论文工具的全能天花板
  • 在Jetson Orin Nano/NX 8GB上部署优化版llama.cpp:Jetson-Claw实战指南
  • 哥德巴赫猜想
  • 传统固定资产管理太麻烦?二维码管理让资产盘点快人一步
  • 2026年临沂口碑比较好的冷链输送机订制订做厂家优选指南:这4家值得对比 - geo交流
  • ZMK键盘固件完全指南:从零打造你的智能无线键盘
  • Zabbix、Prometheus、Open-Falcon三大监控框架深度对比与实战选型指南
  • 如何在5分钟内免费解锁WeMod专业版?Wand-Enhancer终极指南