> Source: https://ashareapi.com/docs/guides/shareholder-structure/  ·  Markdown version for LLMs / AI agents

教程

# A 股股东户数怎么看：筹码集中度
 股东户数是窥探「筹码在谁手里」最直观的公开指标：户数减少 = 筹码向少数人集中（利好），户数暴增 = 筹码分散（散户涌入）。本文讲清三张表怎么读、字段什么意思，并附一个真实案例。

## 一、为什么要看股东户数（30 秒）
 股价短期由资金推动，**中期由筹码结构决定**。股东户数就是这个结构里最直接的公开信号：

-
 **户数减少** → 筹码从散户手里集中到少数人（大资金/机构）手里 —— 通常被解读为**蓄势**

-
 **户数增加** → 筹码从集中走向分散（更多散户接盘）—— 通常被解读为**派发/退潮**

-
 **户均持股** = 总股本 / 户数，与户数反向，同样反映集中度

 **注意**：这是"通常解读"，不是绝对信号 —— 需结合股价位置与买卖双方身份（见第四节）。

## 二、一行请求拿到三张表
 `/v1/shareholder` 是付费端点（需 Key）。只有一个参数 `code`。返回 `data` 是**对象**，内含 `tables` 数组（三张表）。

 Python：拿股东结构（三张表）
```
import requests

BASE = "https://api.ashareapi.com/v1"
H = {"Authorization": "Bearer ct-你的Key"}

b = requests.get(f"{BASE}/shareholder",
 params={"code": "sh600667"}, headers=H, timeout=60).json()
d = b["data"] # 注意：data 是对象，不是数组

for t in d["tables"]: # 三张表，每张有 title/slug/rows
 print("== [%s] %s ==" % (t["slug"], t["title"]))
 for row in t["rows"][:5]:
 print(" ", row)
```

-
 **`data` 是对象**（含 `tables` 数组），不是普通数组 —— 用 `data["tables"]` 遍历

-
 **别用 `body["structured"]`** —— shareholder 的 data 是 dict，没有这个键

## 三、三张表各读什么
 |
| | 表（slug） | 内容 | 怎么用

| | `top10_holders` | 十大股东（前 10 大） | 看谁控股/大机构在不在

| | `top10_float_holders` | 十大流通股东 | 看流通盘里谁在（更贴近交易盘）

| | `holder_count` | 股东户数统计（历史多期） | **筹码集中度核心**：户数变化趋势

 `top10_holders`
 十大股东（前 10 大）
 看谁控股/大机构在不在

 `top10_float_holders`
 十大流通股东
 看流通盘里谁在（更贴近交易盘）

 `holder_count`
 股东户数统计（历史多期）
 **筹码集中度核心**：户数变化趋势

 **`holder_count` 是最有价值的一张** —— 它按季报披露，能看到户数随时间的**变化趋势**（不是单点）。

## 四、字段怎么读
 |
| | 字段 | 含义 | 单位 | 说明

| | holdShares | 持股数 | 股 | 该股东持有多少

| | holdPct | 持股占比 | % | 占总股本比例

| | holdChange | 持股变动 | 股 | 正=增持 / 负=减持 / 0=不变

| | totalSHNum | 股东总户数 | 户 | 统计期股东数

| | avgHoldShares | 户均持股 | 股 | 总股本/户数（与户数反向）

| | date | 统计截止日 | - | 季报披露日期（重要：有滞后）

 holdShares
 持股数
 股
 该股东持有多少

 holdPct
 持股占比
 %
 占总股本比例

 holdChange
 持股变动
 股
 正=增持 / 负=减持 / 0=不变

 totalSHNum
 股东总户数
 户
 统计期股东数

 avgHoldShares
 户均持股
 股
 总股本/户数（与户数反向）

 date
 统计截止日
 -
 季报披露日期（重要：有滞后）

 **两户**：`totalSHNum`（总户数）与 `aSHNum`（A 股户数）常相等；`avgHoldShares` 与 `aAvgHoldShares` 同理。

## 五、真实案例：太极实业（600667）户数一年翻 3.5 倍
 实测 2026-09-29 返回的 `holder_count` 表：

-
 **趋势**：户数 15.4 万 → 17.8 万 → **54.9 万**，一年多翻了 3.5 倍；户均持股从 1.36 万股降到 3,810 股

-
 **含义**：**大量新散户涌入接盘，筹码从集中走向极度分散** —— 典型的"高位派发/散户化"特征

-
 **配合股价看**：如果这段时期股价大涨后回落，则"户数暴增 + 股价滞涨"是**派发信号**；如果股价低位放量、户数暴增，则可能是新一轮轮动的开始（需结合其它信息，本文不构成结论）

 |
| | 日期 | 股东户数 | 户均持股 | 解读

| | 2025-12-31 | 153,627 户 | 13,614 股 | 基准

| | 2026-03-31 | 178,193 户 | 11,738 股 | 户数 +16%，筹码开始分散

| | 2026-06-30 | 548,947 户 | 3,810 股 | **户数暴增 3.5 倍**，筹码剧烈分散

 2025-12-31
 153,627 户
 13,614 股
 基准

 2026-03-31
 178,193 户
 11,738 股
 户数 +16%，筹码开始分散

 2026-06-30
 548,947 户
 3,810 股
 **户数暴增 3.5 倍**，筹码剧烈分散

 **为什么这是好案例**：它把"股东户数变化"这个指标的作用讲透了 —— 不是看单点，是看**趋势**，以及和**股价位置**的配合。

## 六、怎么批量扫（找"筹码集中"的）

 Python：扫一批股票，找出股东户数近期明显下降的
```
CODES = ["sh600667", "sh600519", "sz300750", "sh601318",
 "sh600036", "sz000858", "sh600030", "sh601899"]

for code in CODES:
 b = requests.get(f"{BASE}/shareholder", params={"code": code},
 headers=H, timeout=60).json()
 d = b.get("data") or {}
 for t in d.get("tables", []):
 if t.get("slug") != "holder_count":
 continue
 rows = t.get("rows", []) # 倒序：最新在前
 if len(rows) < 2:
 continue
 latest = int(rows[0].get("totalSHNum") or 0)
 prev = int(rows[1].get("totalSHNum") or 0)
 if prev > 0 and latest < prev * 0.9: # 户数较上期降 >10% = 筹码集中
 print("%s %s 户数 %d → %d [筹码集中]" % (
 code, rows[0].get("date"), prev, latest))
```

-
 **找集中**：`latest 10%）—— 选筹码向少数人集中的

-
 **找分散**（反向）：`latest > prev * 1.2`（较上期增加 >20%）—— 选散户涌入的（可作回避信号）

-
 **要结合日期的滞后**：户数是季报数据（2026-06-30 的户数在 8 月底才披露）—— 不能当"今日"信号

## 七、两个常见误判（重要）

-
 **① 户数数据有滞后** —— 季报披露，不是实时的。要看"最近一期的截止日"（`date` 字段），别当成最新

-
 **② 户数减少 ≠ 一定涨，增加 ≠ 一定跌** —— 它是**筹码结构的一面镜子**，要配合：股价位置（高位分散危险 / 低位集中蓄势）、买卖双方身份（十大股东里是机构还是个人）、整体市场环境

## 常见问题
 股东户数是实时的吗？
 不是。按季报/定期报告披露（有滞后）。返回里的 date 字段标明统计截止日 —— 用它判断"这是哪一期的数据"，别当最新。

 户数减少就是看多吗？
 通常是"筹码集中"的积极信号，但不是绝对。要结合股价位置：低位筹码集中（可能蓄势）与高位筹码集中（可能已拉升结束）含义不同。这只是结构镜子，不构成买卖结论。

 为什么不直接看十大股东？
 十大股东是**单点**（当前谁持有），而股东户数是**趋势**（筹码集中度怎么变化）。两者互补：十大股东看"谁在"，户数看"筹码在集中还是分散"。

 data 为什么是对象不是数组？
 shareholder 返回多张表（十大股东/流通股东/股东户数），用对象承载（含 tables 数组）更清晰。程序化处理用 data["tables"] 遍历，不要用 body["structured"]。

 最后更新: 2026-09-29
 字段与结构取自 ashareapi /v1/shareholder 线上返回（2026-09-29 实测：三张表结构、字段含义）；案例数据为太极实业（600667）真实 holder_count 序列（2025-12-31 / 2026-03-31 / 2026-06-30 三期）。

 相关

-
[端点参考（shareholder）](/docs/endpoints/shareholder)

-
[A 股大宗交易怎么看（折价率与机构席位）](/docs/guides/block-trade-signals)

-
[因子选股入门（含数据体检）](/docs/guides/factor-screening)

-
[错误码与限流](/docs/errors)

 [← 全部教程](/docs/guides)
