技术分享

【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_holderscompany_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。
  • 需要免费试验可先 领取免费证书

本篇小结 & 往期索引

  1. #01 安装 mairui,绑定 licence
  2. #02 历史 K 线灌回测库
  3. #03 实时行情做监控
  4. #04 指标接口加速策略验证
  5. #05 财务报表做基本面过滤(本文)

后续还将更新股池、指数、北交所、基金等主题,请关注本站 技术分享网站公告

关键词:Python 财务报表 API、资产负债表接口、股票基本面数据、量化基本面选股、mairui stock_balance、麦蕊智数。

麦蕊智数 MyData 团队 · Python量化实战 #05