ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

【零依赖量化数据实战 #23】沪深个股财务三表与股东结构

2026/9/1 23:30:15 拓冰建站 浏览量
【零依赖量化数据实战 #23】沪深个股财务三表与股东结构 【零依赖量化数据实战 #23】沪深个股财务三表与股东结构系列《零依赖量化数据实战》零依赖 · 纯 GET · 不 import 任何 SDK适用想把单只沪深股票的「资产负债表 / 利润表 / 现金流量表 / 财务指标 / 十大股东 / 股本」一次性拉成结构化数据的量化与基本面分析玩家。1. 你将得到什么6 个官方接口的最小封装覆盖个股基本面三表 指标 股东GET /hs/fin/balance/{code}?stet资产负债表GET /hs/fin/income/{code}?stet利润表GET /hs/fin/cashflow/{code}?stet现金流量表GET /hs/fin/ratios/{code}?stet财务主要指标GET /hs/fin/topholder/{code}?stet公司十大股东GET /hs/fin/capital/{code}?stet公司股本表一个对字段名不敏感的summarize_fin三表/指标返回里「总资产 / 营业收入 / 现金流」等键名随上游变用候选键命中不写死。时间窗参数st/et均为YYYYMMDD不传则取全部历史数据。2. 端点语义表GET https://api.zhituapi.com/hs/fin/balance/{code}?token你的tokenst20240101et20241231 - 资产负债表{code}股票代码(如 000001.SZ)st/et 为 YYYYMMDD可省略 GET https://api.zhituapi.com/hs/fin/income/{code}?token你的token # 利润表 GET https://api.zhituapi.com/hs/fin/cashflow/{code}?token你的token # 现金流量表 GET https://api.zhituapi.com/hs/fin/ratios/{code}?token你的token # 财务主要指标 GET https://api.zhituapi.com/hs/fin/topholder/{code}?token你的token # 公司十大股东 GET https://api.zhituapi.com/hs/fin/capital/{code}?token你的token # 公司股本表鉴权token走查询参数{code}为路径参数必须带市场后缀如000001.SZst/et可选查询参数三表/指标多期为 list单期可 dict。3. 字段名不固定用候选键命中上游财务表字段名不统一中英文混用、不同表键名不同。统一用_hit_key_to_float兜底抽取def_hit_key(d,candidates):forkincandidates:ifkind:returnkreturnNonedef_to_float(v):try:returnNoneifvisNoneelsefloat(v)except(TypeError,ValueError):returnNone4. 核心模板函数importrequests TOKEN你的tokenBASEhttps://api.zhituapi.comdef_hit_key(d,candidates):forkincandidates:ifkind:returnkreturnNonedef_to_float(v):try:returnNoneifvisNoneelsefloat(v)except(TypeError,ValueError):returnNonedeffetch(path,paramsNone):pdict(paramsor{})p[token]TOKENtry:rrequests.get(f{BASE}{path},paramsp,timeout15)exceptrequests.RequestExceptionase:returnNone,f网络异常{e}ifr.status_code!200:returnNone,f{r.status_code}{r.text.strip()[:140]}try:payloadr.json()exceptValueError:returnNone,f非 JSON{r.text[:140]}ifisinstance(payload,dict):detailpayload.get(detail)orpayload.get(error)returnNone,f业务错误{detailorlist(payload)[:6]}returnpayload,None# #23 沪深个股财务三表与股东结构 _FIN_TABLES{balance:/hs/fin/balance,income:/hs/fin/income,cashflow:/hs/fin/cashflow,}def_get(path,code,st,et):params{}ifst:params[st]stifet:params[et]etreturnfetch(f{path}/{code},paramsparamsorNone)deffin_statements(code,stNone,etNone):资产负债表 / 利润表 / 现金流量表 三表合一out{}forname,pin_FIN_TABLES.items():data,err_get(p,code,st,et)out[name](ERR,err)iferrelsedatareturnout,Nonedeffin_ratios(code,stNone,etNone):财务主要指标return_get(/hs/fin/ratios,code,st,et)deftop_holders(code,stNone,etNone):公司十大股东return_get(/hs/fin/topholder,code,st,et)defcapital_table(code,stNone,etNone):公司股本表return_get(/hs/fin/capital,code,st,et)defsummarize_fin(data,cand):从一张表里抽第一个命中字段的值演示字段名不固定时的容错ifisinstance(data,list)anddata:rowdata[0]ifisinstance(row,dict):k_hit_key(row,cand)return_to_float(row.get(k))ifkelseNoneifisinstance(data,dict):k_hit_key(data,cand)return_to_float(data.get(k))ifkelseNonereturnNone5. 代码自验结果离线selftest合成数据仅验证逻辑不含任何真实行情PASS: #23 逻辑自验通过合成数据无真实行情联网实测占位 token真实返回--- 联网实测占位 token预期 404 102:Licence证书不存在--- fin_statements - ({balance: (ERR, 404 102:Licence证书(你的token)不存在), income: (ERR, 404 102:Licence证书(你的token)不存在), cashflow: (ERR, 404 102:Licence证书(你的token)不存在)}, None) fin_ratios - (None, 404 102:Licence证书(你的token)不存在) top_holders - (None, 404 102:Licence证书(你的token)不存在) capital_table - (None, 404 102:Licence证书(你的token)不存在)把TOKEN 你的token换成你申请的真实 token上述函数即可打印真实财务三表与股东结构数据。本文未编造任何真实数值。6. 坑与注意事项102 不代表路径对404 102是「证书不存在」鉴权先于路由路径合法与否要靠客户端白名单自查。{code}必须带市场后缀写000001会路由错误必须000001.SZ/600000.SH。st/et格式是 YYYYMMDD如20240101不是2024-01-01省略则取全部历史。三表多为 list按期抽字段时用summarize_fin取首期要跨期对比直接遍历 list。字段名不固定「总资产」可能叫total_assets也可能叫总资产务必用候选键命中别硬写英文键。股东按持股比例倒序topholder返回列表ratio/持股比例字段名随上游变用候选键兜底排序。7. 小结与下篇预告本篇把「基本面三表 指标 股东」拧成了 6 个零依赖接口的最小封装重点解决了股票代码带市场后缀、时间窗 YYYYMMDD、财务字段名中英文混用三个坑配summarize_fin候选键命中即可一行取数。下一篇计划写 #24《指数技术指标实战MACD·MA·KDJ·BOLL》讲解如何直接消费官方已算好的指数 MACD、MA、KDJ、BOLL 指标序列用最近 N 条数据一行出金叉死叉、多空头排列、超买超卖、开口收口等信号。8. 免责声明本文仅演示公开数据接口的用法所有代码示例均以占位 token 自验未含任何真实数据文中合成数据仅为逻辑自验用途不构成投资建议亦不承诺收益。