尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

A股量化数据工程:从 REST 接口到策略信号(第 9 篇):偿债与运营能力因子

A股量化数据工程:从 REST 接口到策略信号(第 9 篇):偿债与运营能力因子 A股量化数据工程从 REST 接口到策略信号第 9 篇偿债与运营能力因子前言盈利和成长讲「赚多少、长多快」偿债与运营讲「稳不稳、转不转得动」。高成长公司若现金流断裂、周转停滞风险极高。本篇用hicw/cznl偿债与hicw/yy运营两组接口自研安全因子与周转因子补齐财务风控视角。一、接口原始字段梳理1偿债能力接口接口地址https://api.biyingapi.com/hicw/cznl/{LICENCE}字段说明dm股票代码mc股票名称ldbl流动比率sdbl速动比率xjbl现金比率lxbs利息保障倍数gdbl股东权益比率zcfzl资产负债率y, q, yq年 / 季 / 年季标识2运营能力接口接口地址https://api.biyingapi.com/hicw/yy/{LICENCE}字段说明dm股票代码mc股票名称yszzzl应收账款周转率yszts应收账款周转天数chzzl存货周转率chzzts存货周转天数ldzczzl流动资产周转率ldzczzts流动资产周转天数y, q, yq年 / 季 / 年季标识二、自研衍生统计指标安全因子z(ldbl) z(xjbl) - z(zcfzl)越高越稳资产负债率反向。周转因子z(yszzzl) z(chzzl)越高资产越活。风险扫描zcfzl过高如 80%标记高杠杆lxbs为空标记利息覆盖存疑。字段为接口原始比率z-score 与合成规则为自研。三、数据表设计CREATETABLEIFNOTEXISTSfin_cznl(dmTEXT,yqTEXT,ldblREAL,sdblREAL,xjblREAL,lxbsREAL,gdblREAL,zcfzlREAL,PRIMARYKEY(dm,yq));CREATETABLEIFNOTEXISTSfin_yy(dmTEXT,yqTEXT,yszzzlREAL,ysztsREAL,chzzlREAL,chzztsREAL,ldzczzlREAL,ldzczztsREAL,PRIMARYKEY(dm,yq));CREATETABLEIFNOTEXISTSfactor_safety(dmTEXT,yqTEXT,safety_scoreREAL,turnover_scoreREAL,high_leverageINTEGER,PRIMARYKEY(dm,yq));四、完整代码importrequestsimportsqlite3importtime 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)defzscore(vals):xs[vforvinvalsifvisnotNone]iflen(xs)2:return{}musum(xs)/len(xs)varsum((x-mu)**2forxinxs)/len(xs)sdvar**0.5or1return{v:round((v-mu)/sd,3)forvinxs}deffetch_cznl():dbiying_api_get_retry(f{BASE}/hicw/cznl/{LICENCE})returnd.get(data,[])ifisinstance(d,dict)else[]deffetch_yy():dbiying_api_get_retry(f{BASE}/hicw/yy/{LICENCE})returnd.get(data,[])ifisinstance(d,dict)else[]defbuild(rows_a,rows_b):va[rforrinrows_aifNonenotin(r.get(ldbl),r.get(xjbl),r.get(zcfzl))]zlzscore([r[ldbl]forrinva]);zxzscore([r[xjbl]forrinva])zzzscore([r[zcfzl]forrinva])by{}forrinrows_b:ifNonenotin(r.get(yszzzl),r.get(chzzl)):by[r[dm]]r zyzscore([r[yszzzl]forrinby.values()])zczscore([r[chzzzl]forrinby.values()])out[]forrinva:dm,yqr[dm],r[yq]safetyround(zl.get(r[ldbl],0)zx.get(r[xjbl],0)-zz.get(r[zcfzl],0),3)rbby.get(dm)turnoverround(zy.get(rb[yszzzl],0)zc.get(rb[chzzl],0),3)ifrbelse0lev1if(r.get(zcfzl)or0)80else0out.append((dm,yq,safety,turnover,lev))returnoutif__name____main__:a,bfetch_cznl(),fetch_yy()consqlite3.connect(DB_PATH)con.executemany(INSERT OR REPLACE INTO fin_cznl(dm,yq,ldbl,sdbl,xjbl,lxbs,gdbl,zcfzl)VALUES(?,?,?,?,?,?,?,?),[[r.get(dm),r.get(yq),r.get(ldbl),r.get(sdbl),r.get(xjbl),r.get(lxbs),r.get(gdbl),r.get(zcfzl)]forrina])con.executemany(INSERT OR REPLACE INTO fin_yy(dm,yq,yszzzl,yszts,chzzl,chzzts,ldzczzl,ldzczzts)VALUES(?,?,?,?,?,?,?,?),[[r.get(dm),r.get(yq),r.get(yszzzl),r.get(yszts),r.get(chzzl),r.get(chzzts),r.get(ldzczzl),r.get(ldzczzts)]forrinb])con.commit()facbuild(a,b)con.executemany(INSERT OR REPLACE INTO factor_safety(dm,yq,safety_score,turnover_score,high_leverage)VALUES(?,?,?,?,?),fac)con.commit();con.close()topsorted(fac,keylambdax:x[2],reverseTrue)[:5]print(安全因子 Top5:)fordm,yq,s,t,levintop:print(f{dm}安全分{s}周转分{t}{[高杠杆]iflevelse})五、关键业务说明资产负债率反向zcfzl越高风险越大合成时取负向。周转天数 vs 周转率yszts/chzzts是天数越小越好yszzzl/chzzl是次数越大越好因子用周转率。三因子联动盈利、成长、安全三张表拼起来才能区分「高质量成长」与「高杠杆虚胖」。六、拓展练习把安全因子、盈利因子、成长因子三表 Join做「三维财务画像」散点。对high_leverage1公司跟踪其后续现金流第 10 篇是否恶化。用turnover_score筛选「高周转零售/制造」细分池仅统计演示。下篇预告A股量化数据工程从 REST 接口到策略信号第 10 篇现金流量质量分析下一篇用hicw/xj拉取经营现金流、现金净利比、现金负债比自研「造血能力」因子识别「账面利润有、真金白银无」的公司。免责申明本篇全部代码、接口调用仅作为量化编程学习演示仅为数据演示不构成投资建议。市场有风险投资需谨慎。
返回列表