首页 / 资讯中心 / 文章详情

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

A股量化数据工程:从 REST 接口到策略信号(第 11 篇):业绩报表、预告与快报事件 ★ FEATURED ARTICLE
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报告期二、自研衍生统计指标业绩超预期标记jlrtb净利润同比高于全市场 75 分位标记beat1。预告向好yjzy含「预增」「扭亏」关键词标记guidance_up1。快报—报表差异同一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 LICENCEYOUR_LICENCEBASEhttps://api.biyingapi.comDB_PATHquant.dbdefbiying_api_get_retry(url,timeout15,max_retry3):foriinrange(max_retry):try:rrequests.get(url,timeouttimeout)r.raise_for_status()returnr.json()exceptExceptionase:ifimax_retry-1:raisetime.sleep(1i)deffetch(path):dbiying_api_get_retry(f{BASE}/hicw/{path}/{LICENCE})returnd.get(data,[])ifisinstance(d,dict)else[]defpct_rank(vals,v):xssorted(xforxinvalsifxisnotNone)ifnotxsorvisNone:return0.5belowsum(1forxinxsifxv)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,yqr[dm],r[yq]beat1ifpct_rank(jlrtbs,r.get(jlrtb))0.75else0gyyg_map.get(dm,{})guidance_up1ifre.search(r预增|扭亏,gy.get(yjzy)or)else0rev0ifdminkb_mapandr.get(jlr)andkb_map[dm].get(jlr):diffabs(r[jlr]-kb_map[dm][jlr])/(abs(r[jlr])1e-9)rev1ifdiff0.05else0out.append((dm,yq,beat,guidance_up,rev))returnoutif__name____main__:bb,yg,kbfetch(yjbb),fetch(yjyg),fetch(yjkb)consqlite3.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()evbuild_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只认「预增/扭亏」等明确向好词避免误判「预减」「续亏」。事件是触发非结论超预期不等于必涨需结合前四篇因子看持续性。六、拓展练习把evt_earning与第 7–10 篇四因子 Join看「超预期 高现金质量」组合的后续表现仅统计。用revision1公司跟踪公告后价格反应统计下修 vs 上修的差异。把fin_lr利润细分接入定位利润主要来自主营还是非主营。下篇预告A股量化数据工程从 REST 接口到策略信号第 12 篇北交所列表与实时行情接入下一篇进入差异化维度——北交所京市用bj/list/all与bj/stock/real/time把京市行情接进来开辟竞品覆盖少的独立数据战场。免责申明本篇全部代码、接口调用仅作为量化编程学习演示仅为数据演示不构成投资建议。市场有风险投资需谨慎。
阅读完成 · 觉得有帮助?
咨询建站