欢迎光临
我们一直在努力

A股量化数据工程:从 REST 接口到策略信号(第 22 篇):机构持股汇总透视

A股量化数据工程:从 REST 接口到策略信号(第 22 篇):机构持股汇总透视

前言

聪明钱的去向,是基本面之外的重要维度。接口 hijg/jgcghz 给出机构持股汇总(持股比例、流通比例、日期),本篇把机构持仓落库,并自研机构持仓变动信号:同一股票跨期 gbl(持股比例)的变化,反映机构增减持方向。

一、接口原始字段梳理

1)机构持股汇总

接口地址:https://api.biyingapi.com/hijg/jgcghz/{LICENCE}

字段说明
dm 股票代码
mc 股票名称
oc 持股数(机构,接口原始字段)
occ 持股数(接口原始字段)
gbl 持股比例
gblz 持股比例(另一口径,接口原始字段)
lbl 流通比例
ltz 流通股本(接口原始字段)
dt 日期
y, q, yq 年 / 季 / 年季标识

二、自研衍生统计指标

  • 机构持仓变动:同一 dm 相邻两期 gbl 之差,正为增持、负为减持。
  • 机构偏好行业:按 gbl 做行业聚合(结合第 5 篇板块映射),找机构集中行业。
  • 高机构持仓:gbl 居前的股票,标记「机构重仓」。
  • 变动与聚合基于原始 gbl 字段二次计算。

    三、数据表设计

    CREATE TABLE IF NOT EXISTS inst_hold (
    dm TEXT, yq TEXT,
    gbl REAL, gblz REAL, lbl REAL, ltz REAL,
    PRIMARY KEY (dm, yq)
    );

    CREATE TABLE IF NOT EXISTS inst_hold_chg (
    dm TEXT, yq TEXT,
    gbl_prev REAL, gbl_chg REAL,
    PRIMARY KEY (dm, yq)
    );

    四、完整代码

    import requests
    import sqlite3
    import time

    LICENCE = "YOUR_LICENCE"
    BASE = "https://api.biyingapi.com"
    DB_PATH = "quant.db"

    def biying_api_get_retry(url, timeout=15, max_retry=3):
    for i in range(max_retry):
    try:
    r = requests.get(url, timeout=timeout)
    r.raise_for_status()
    return r.json()
    except Exception as e:
    if i == max_retry – 1:
    raise
    time.sleep(1 + i)

    def fetch_summary():
    d = biying_api_get_retry(f"{BASE}/hijg/jgcghz/{LICENCE}")
    return d.get("data", []) if isinstance(d, dict) else []

    def build_chg(rows):
    by_dm = {}
    for r in rows:
    by_dm.setdefault(r["dm"], []).append(r)
    out = []
    for dm, rs in by_dm.items():
    rs = sorted(rs, key=lambda x: x.get("yq") or "")
    for i, r in enumerate(rs):
    prev = rs[i – 1].get("gbl") if i > 0 else None
    cur = r.get("gbl")
    chg = round(cur – prev, 4) if (prev is not None and cur is not None) else 0.0
    out.append((dm, r.get("yq"), prev, chg))
    return out

    if __name__ == "__main__":
    rows = fetch_summary()
    con = sqlite3.connect(DB_PATH)
    con.executemany(
    "INSERT OR REPLACE INTO inst_hold(dm,yq,gbl,gblz,lbl,ltz) VALUES(?,?,?,?,?,?)",
    [[r.get("dm"), r.get("yq"), r.get("gbl"), r.get("gblz"),
    r.get("lbl"), r.get("ltz")] for r in rows])
    con.commit()
    chg = build_chg(rows)
    con.executemany(
    "INSERT OR REPLACE INTO inst_hold_chg(dm,yq,gbl_prev,gbl_chg) VALUES(?,?,?,?)",
    chg)
    con.commit(); con.close()
    add = sorted([c for c in chg if c[3] > 0], key=lambda x: x[3], reverse=True)[:5]
    print("机构增持 Top5:")
    for dm, yq, prev, d in add:
    print(f" {dm} 上期{gbl_prev} 变动{d}")

    五、关键业务说明

    • gbl 是核心:机构持股比例直接反映关注度,跨期差值比绝对值更说明方向。
    • 季度披露滞后:机构持股按季披露,变动信号偏滞后,适合中长线而非日内。
    • 与基本面共振:机构增持 + 第 21 篇高 ROE,是「聪明钱 + 好公司」的双确认。

    六、拓展练习

  • 把 inst_hold_chg 与第 21 篇 quality_metric 做交集,找「机构增持 + 高质量」组合。
  • 用 gbl 行业聚合(结合第 5 篇板块映射)看机构季度调仓方向。
  • 对连续两期减持股,跟踪其后续相对收益(仅统计演示)。
  • 下篇预告

    A股量化数据工程:从 REST 接口到策略信号(第 23 篇):基金、社保与 QFII 重仓股透视

    下一篇用 hijg/jj / sb / qf 拉取三类机构重仓股,自研「三类共振」信号,定位被多元聪明钱共同看好的标的。

    免责申明:本篇全部代码、接口调用仅作为量化编程学习演示,仅为数据演示,不构成投资建议。市场有风险,投资需谨慎。

    赞(0)
    未经允许不得转载:171主机测评 » A股量化数据工程:从 REST 接口到策略信号(第 22 篇):机构持股汇总透视
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址