【Python量化实战 #05】Python读取上市公司财报:资产负债表与利润表API实战
技术面看节奏,基本面看家底。「Python量化实战」第 5 篇(#05),带你用 stock_balance / stock_income / stock_cashflow 等接口,在 Python 里拉取上市公司财务报表,做简易基本面筛选。
往期可按序号回看:#01 安装入门 → #02 历史 K 线 → #03 实时行情 → #04 技术指标。本系列持续更新,不止本篇。SDK 入口: https://www.mairuiapi.com/sdk。
常用财务方法
stock_balance(code)资产负债表stock_income(code)利润表stock_cashflow(code)现金流量表stock_pershareindex(code)每股指标等- 更通用:
stock_financial(table, code)(按文档表名)
另有股东、股本、F10 等接口(如 stock_top_holders、company_profile),可按研究问题组合使用。字段释义见
API 文档。
拉取三张表
from mairui import Client
import pandas as pd
code = "000001.SZ"
with Client(licence="你的证书UUID") as api:
bal = pd.DataFrame(api.stock_balance(code))
inc = pd.DataFrame(api.stock_income(code))
cf = pd.DataFrame(api.stock_cashflow(code))
print("balance", bal.shape)
print("income", inc.shape)
print("cashflow", cf.shape)
print(inc.tail())
做一个「粗筛」小例子
def latest_row(df):
if df is None or len(df) == 0:
return None
return df.iloc[-1]
with Client(licence="你的证书UUID") as api:
universe = ["000001.SZ", "600519.SH", "000002.SZ"]
rows = []
for code in universe:
inc = pd.DataFrame(api.stock_income(code))
last = latest_row(inc)
rows.append({"code": code, "income_last": last.to_dict() if last is not None else None})
print(rows[0])
真实选股请自行定义营收、净利、ROE 等字段映射,并处理财报期、合并口径与单位。
财务 + 行情:组合研究
with Client(licence="你的证书UUID") as api:
code = "600519.SH"
bars = api.stock_history(code, "d", "n", lt=30)
bal = api.stock_balance(code)
print("近30日线条数", len(bars))
print("资产负债表条数", len(bal) if bal is not None else None)
这种「价量 + 财报」组合,是基本面量化的常见起点。
合规与使用建议
- 财报有发布时滞,策略勿把「当日能取到」等同于「市场已知时点」。
- 注意证书日限;批量扫描全市场请控制并发与缓存。
- 不确定返回结构时,先用 Playground 查看 JSON。
- 需要免费试验可先 领取免费证书。
本篇小结 & 往期索引
- #01 安装 mairui,绑定 licence
- #02 历史 K 线灌回测库
- #03 实时行情做监控
- #04 指标接口加速策略验证
- #05 财务报表做基本面过滤(本文)
后续还将更新股池、指数、北交所、基金等主题,请关注本站 技术分享 与 网站公告。
关键词:Python 财务报表 API、资产负债表接口、股票基本面数据、量化基本面选股、mairui stock_balance、麦蕊智数。
麦蕊智数 MyData 团队 · Python量化实战 #05



