☰
A股量化数据工程:从 REST 接口到策略信号(第 11 篇):业绩报表、预告与快报事件
2026/10/8 12:14:27 网站建设 项目流程

A股量化数据工程:从 REST 接口到策略信号(第 11 篇):业绩报表、预告与快报事件

前言

前四篇把财务做成了静态因子,但财报季真正驱动股价的,是「业绩超预期」「预告扭亏」这类事件。接口hicw/yjbb(报表)、yjyg(预告)、yjkb(快报)、lr(利润细分)四张表,本篇把它们落库并自研事件标记,把财务维度从「横截面因子」升级成「事件驱动信号」。

一、接口原始字段梳理

1)业绩报表

接口地址:https://api.biyingapi.com/hicw/yjbb/{LICENCE}

字段说明
dm股票代码
mc股票名称
mgsy每股收益
mgsytb每股收益同比
mgjz每股净资产
jzsy净资产收益率
mgxjl每股现金流
jlr净利润
jlrtb净利润同比
fpfa分配方案
rdate报告期
y, q, yq年 / 季 / 年季标识

2)业绩预告

接口地址:https://api.biyingapi.com/hicw/yjyg/{LICENCE}

字段说明
dm股票代码
mc股票名称
lx预告类型
ggrq公告日期
bgq报告期
yjzy预计摘要
qntq去年同期
yjzf预计增幅
y, q, yq年 / 季 / 年季标识

3)业绩快报

接口地址:https://api.biyingapi.com/hicw/yjkb/{LICENCE}

字段说明
dm股票代码
mc股票名称
mgsy每股收益
yysr营业收入
yysrtb营收同比
jlr净利润
jlrtb净利润同比
mgjzc每股净资产
jzcsyl净资产收益率
zzc总资产
rdate报告期
y, q, yq年 / 季 / 年季标识

4)利润细分

接口地址:https://api.biyingapi.com/hicw/lr/{LICENCE}

字段说明
dm股票代码
mc股票名称
sshy所属行业
sshyr所属行业收入
ckcb存款成本(接口原始字段)
cklr存款利润
lrms利润明细
rdate报告期

二、自研衍生统计指标

  1. 业绩超预期标记:jlrtb(净利润同比)高于全市场 75 分位,标记beat=1。
  2. 预告向好:yjzy含「预增」「扭亏」关键词,标记guidance_up=1。
  3. 快报—报表差异:同一rdate下快报jlr与报表jlr偏差 > 5%,标记revision。

关键词匹配与分位判定为自研,原始字段仅做输入。

三、数据表设计

CREATETABLEIFNOTEXISTSfin_yjbb(dmTEXT,yqTEXT,mgsyREAL,mgsytbREAL,mgjzREAL,jzsyREAL,mgxjlREAL,jlrREAL,jlrtbREAL,PRIMARYKEY(dm,yq));CREATETABLEIFNOTEXISTSfin_yjyg(dmTEXT,yqTEXT,lxTEXT,ggrqTEXT,yjzyTEXT,yjzfREAL,PRIMARYKEY(dm,yq));CREATETABLEIFNOTEXISTSfin_yjkb(dmTEXT,yqTEXT,yysrREAL,jlrREAL,jlrtbREAL,PRIMARYKEY(dm,yq));CREATETABLEIFNOTEXISTSevt_earning(dmTEXT,yqTEXT,beatINTEGER,guidance_upINTEGER,revisionINTEGER,PRIMARYKEY(dm,yq));

四、完整代码

importrequestsimportsqlite3importtimeimportre 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}/hicw/{path}/{LICENCE}")returnd.get("data",[])ifisinstance(d,dict)else[]defpct_rank(vals,v):xs=sorted(xforxinvalsifxisnotNone)ifnotxsorvisNone:return0.5below=sum(1forxinxsifx<=v)returnround(below/len(xs),3)defbuild_events(bb,yg,kb):jlrtbs=[r.get("jlrtb")forrinbbifr.get("jlrtb")isnotNone]out=[]bb_map={r["dm"]:rforrinbb}kb_map={r["dm"]:rforrinkb}yg_map={r["dm"]:rforrinyg}forrinbb:dm,yq=r["dm"],r["yq"]beat=1ifpct_rank(jlrtbs,r.get("jlrtb"))>0.75else0gy=yg_map.get(dm,{})guidance_up=1ifre.search(r"预增|扭亏",gy.get("yjzy")or"")else0rev=0ifdminkb_mapandr.get("jlr")andkb_map[dm].get("jlr"):diff=abs(r["jlr"]-kb_map[dm]["jlr"])/(abs(r["jlr"])+1e-9)rev=1ifdiff>0.05else0out.append((dm,yq,beat,guidance_up,rev))returnoutif__name__=="__main__":bb,yg,kb=fetch("yjbb"),fetch("yjyg"),fetch("yjkb")con=sqlite3.connect(DB_PATH)con.executemany("INSERT OR REPLACE INTO fin_yjbb(dm,yq,mgsy,mgsytb,mgjz,jzsy,mgxjl,jlr,jlrtb)""VALUES(?,?,?,?,?,?,?,?,?)",[[r.get("dm"),r.get("yq"),r.get("mgsy"),r.get("mgsytb"),r.get("mgjz"),r.get("jzsy"),r.get("mgxjl"),r.get("jlr"),r.get("jlrtb")]forrinbb])con.executemany("INSERT OR REPLACE INTO fin_yjyg(dm,yq,lx,ggrq,yjzy,yjzf) VALUES(?,?,?,?,?,?)",[[r.get("dm"),r.get("yq"),r.get("lx"),r.get("ggrq"),r.get("yjzy"),r.get("yjzf")]forrinyg])con.executemany("INSERT OR REPLACE INTO fin_yjkb(dm,yq,yysr,jlr,jlrtb) VALUES(?,?,?,?,?)",[[r.get("dm"),r.get("yq"),r.get("yysr"),r.get("jlr"),r.get("jlrtb")]forrinkb])con.commit()ev=build_events(bb,yg,kb)con.executemany("INSERT OR REPLACE INTO evt_earning(dm,yq,beat,guidance_up,revision) VALUES(?,?,?,?,?)",ev)con.commit();con.close()beats=[eforeinevife[2]]print(f"业绩超预期事件{len(beats)}条,示例:",beats[:5])

五、关键业务说明

  • 事件需同窗口:beat用同yq全市场分位,revision用同rdate快报与报表对比,口径不能混。
  • 关键词匹配保守:guidance_up只认「预增/扭亏」等明确向好词,避免误判「预减」「续亏」。
  • 事件是触发非结论:超预期不等于必涨,需结合前四篇因子看持续性。

六、拓展练习

  1. 把evt_earning与第 7–10 篇四因子 Join,看「超预期 + 高现金质量」组合的后续表现(仅统计)。
  2. 用revision=1公司跟踪公告后价格反应,统计下修 vs 上修的差异。
  3. 把fin_lr利润细分接入,定位利润主要来自主营还是非主营。

下篇预告

A股量化数据工程:从 REST 接口到策略信号(第 12 篇):北交所列表与实时行情接入

下一篇进入差异化维度——北交所(京市),用bj/list/all与bj/stock/real/time把京市行情接进来,开辟竞品覆盖少的独立数据战场。

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

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

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

立即咨询