3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在进行基本面量化选股和财务分析时,提取上市公司多年连续的年报数据是非常常见的需求。JoinQuant(聚宽)提供了专用 API get_history_fundamentals,可以避免频繁循环调用 get_fundamentals,一次性拉取多个历史报告期的财务报表及数据指标。
函数签名如下:
get_history_fundamentals(security, fields, watch_date=None, stat_date=None, count=1, interval='1q', stat_by_year=False)
要提取过去 5 年的年报数据,需要关注以下关键参数设定:
security: 标的代码或标的代码列表(如 '000001.XSHE' 或 ['000001.XSHE', '600000.XSHG'])。fields: 查询的财务字段列表,如 income.total_operating_revenue(营业收入)、indicator.roe(净资产收益率)等。stat_date / watch_date:
stat_date: 指定基准报告期,如 '2022'(提取 2022 年及之前的年报)。watch_date: 指定观察日期(如 '2023-05-01'),API 会自动按该日期前已披露的最新报告期向前推算。count: 提取的历史报告期数量,获取 5 年年报则设为 5。interval: 报告期间隔,获取年报必须设置为 '1y'。stat_by_year: 必须设置为 True,表示按年度/年报进行统计。以下示例展示了如何在研究环境或策略中提取平安银行(000001.XSHE)和浦发银行(600000.XSHG)过去5年的营业总收入、归母净利润与 ROE(净资产收益率):
from jqdata import *
# 1. 定义股票池与财务字段
securities = ['000001.XSHE', '600000.XSHG']
fields_list = [
income.total_operating_revenue, # 营业总收入
income.np_parent_company_owners, # 归属于母公司股东的净利润
indicator.roe # 净资产收益率 ROE
]
# 2. 调用 get_history_fundamentals 获取过去 5 年年报数据
# 以 2022 年年报为最新报告期,连续向前提取 5 年(即 2018-2022 年报)
df_fundamentals = get_history_fundamentals(
security=securities,
fields=fields_list,
stat_date='2022',
count=5,
interval='1y',
stat_by_year=True
)
# 3. 打印查询结果
print(df_fundamentals)
get_history_fundamentals 每次调用最多返回 5000 条数据。如果标的数量较多,建议按股票批次分割查询。valuation(市值表)相关字段。市值数据请使用 get_valuation API。watch_date=context.previous_date 代替 stat_date,以确保不会获取到当时尚未披露的年报数据。