☰
A股量化数据工程:从 REST 接口到策略信号(第 28 篇):大宗交易与解禁数据
2026/10/15 8:54:32 网站建设 项目流程

A股量化数据工程:从 REST 接口到策略信号(第 28 篇):大宗交易与解禁数据

前言

大宗交易折价反映机构接盘的意愿与成本,解禁则是潜在的供给冲击。接口hitc/dzjy(大宗交易)、jjxs(解禁限售)给出这两类事件数据,本篇自研大宗折价率与解禁压力,补齐事件风险维度。

一、接口原始字段梳理

1)大宗交易

接口地址:https://api.biyingapi.com/hitc/dzjy/{LICENCE}

字段说明
t日期
dm股票代码
mc股票名称
p收盘价
v成交量
dp大宗交易价
buyi买方营业部(接口原始字段)
selli卖方营业部(接口原始字段)
type类型(接口原始字段)

2)解禁限售

接口地址:https://api.biyingapi.com/hitc/jjxs/{LICENCE}

字段说明
dm股票代码
mc股票名称
rdate解禁日期
ramount解禁数量
rprice解禁价格
batch批次
pdate公告日期

二、自研衍生统计指标

  1. 大宗折价率:(dp − p) / p,为负即折价,幅度越大机构拿货成本越低(也暗示卖压)。
  2. 解禁压力:ramount / 流通股本(流通股本取第 22 篇ltz或近似),比例越高潜在抛压越大。
  3. 大宗买方集中度:同一buyi出现次数,识别活跃接盘方。

折价率与压力比为自研,原始dp/p/ramount为接口输入。

三、数据表设计

CREATETABLEIFNOTEXISTSblock_trade(dmTEXT,tTEXT,pREAL,vREAL,dpREAL,discountREAL,buyiTEXT,selliTEXT,PRIMARYKEY(dm,t));CREATETABLEIFNOTEXISTSunlock_ahead(dmTEXT,rdateTEXT,ramountREAL,rpriceREAL,batchTEXT,pdateTEXT,PRIMARYKEY(dm,rdate,batch));

四、完整代码

importrequestsimportsqlite3importtime LICENCE="YOUR_LICENCE"BASE="https://api.biyingapi.com"DB_PATH="quant.db"defbiying_api_get_retry(url,timeout=15,max_retry=3):foriinrange(max_retry):try:r=requests.get(url,timeout=timeout)r.raise_for_status()returnr.json()exceptExceptionase:ifi==max_retry-1:raisetime.sleep(1+i)deffetch(path):d=biying_api_get_retry(f"{BASE}/hitc/{path}/{LICENCE}")returnd.get("data",[])ifisinstance(d,dict)else[]defdiscount_rate(p,dp):ifnotpornotdp:return0.0returnround((dp-p)/p,4)if__name__=="__main__":dz=fetch("dzjy");jj=fetch("jjxs")con=sqlite3.connect(DB_PATH)forrindz:disc=discount_rate(r.get("p"),r.get("dp"))con.execute("INSERT OR REPLACE INTO block_trade(dm,t,p,v,dp,discount,buyi,selli)""VALUES(?,?,?,?,?,?,?,?)",[r.get("dm"),r.get("t"),r.get("p"),r.get("v"),r.get("dp"),disc,r.get("buyi"),r.get("selli")])forrinjj:con.execute("INSERT OR REPLACE INTO unlock_ahead(dm,rdate,ramount,rprice,batch,pdate)""VALUES(?,?,?,?,?,?)",[r.get("dm"),r.get("rdate"),r.get("ramount"),r.get("rprice"),r.get("batch"),r.get("pdate")])con.commit();con.close()big_disc=sorted([(r.get("dm"),discount_rate(r.get("p"),r.get("dp")))forrindz],key=lambdax:x[1])[:5]print("大宗折价最深 Top5(负=折价):",big_disc)print(f"待解禁标的{len(jj)}只,近期解禁示例:",[(r.get('dm'),r.get('rdate'))forrinjj[:5]])

五、关键业务说明

  • 折价率是双刃剑:深度折价可能代表机构低位接货(偏多),也可能是原始股东急售(偏空),需结合买方身份。
  • 解禁压力看比例:ramount绝对量大不可怕,占流通比高才是真冲击,计算时取流通股本做分母。
  • 与持股维度呼应:解禁冲击会稀释第 22 篇机构持股比例,事件前需关注。

六、拓展练习

  1. 把unlock_ahead按rdate排序,做「未来一月解禁压力榜」预警(仅统计)。
  2. 对大宗深度折价股,跟踪其后市相对收益,区分「接货」与「出货」(仅统计)。
  3. 把block_trade买方buyi聚合,识别活跃机构席位(呼应第 27 篇)。

下篇预告

A股量化数据工程:从 REST 接口到策略信号(第 29 篇):多源数据融合:统一因子表设计

下一篇把前 28 篇所有维度(指数/板块/财务/北交/选股/机构/龙虎榜)融合成一张统一因子表,给出跨源对齐与落库设计。

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询