🚀 AI 一键生成 joinquant 策略代码
立即体验

如何在 joinquant 中使用 get_history_fundamentals 一次性提取过去5年年报数据?

joinquant | 发布时间: 2026/8/2
以下内容由 EasyQuant 生成。

问题描述

请根据以下 SEO 主题生成完整页面内容:

Title: joinquant 财务分析:get_history_fundamentals 获取连续多期年报数据

Question: 如何使用 get_history_fundamentals 一次性提取上市股票过去5年的年报财务指标?

解决方案

在 JoinQuant 中使用 get_history_fundamentals 获取过去5年年报财务指标

在进行基本面量化选股和财务分析时,提取上市公司多年连续的年报数据是非常常见的需求。JoinQuant(聚宽)提供了专用 API get_history_fundamentals,可以避免频繁循环调用 get_fundamentals,一次性拉取多个历史报告期的财务报表及数据指标。


1. API 核心参数说明

函数签名如下:

get_history_fundamentals(security, fields, watch_date=None, stat_date=None, count=1, interval='1q', stat_by_year=False)

要提取过去 5 年的年报数据,需要关注以下关键参数设定:

  1. security: 标的代码或标的代码列表(如 '000001.XSHE'['000001.XSHE', '600000.XSHG'])。
  2. fields: 查询的财务字段列表,如 income.total_operating_revenue(营业收入)、indicator.roe(净资产收益率)等。
  3. stat_date / watch_date:
    • stat_date: 指定基准报告期,如 '2022'(提取 2022 年及之前的年报)。
    • watch_date: 指定观察日期(如 '2023-05-01'),API 会自动按该日期前已披露的最新报告期向前推算。
  4. count: 提取的历史报告期数量,获取 5 年年报则设为 5
  5. interval: 报告期间隔,获取年报必须设置为 '1y'
  6. stat_by_year: 必须设置为 True,表示按年度/年报进行统计。

2. 提取过去5年年报的 Python 代码示例

以下示例展示了如何在研究环境或策略中提取平安银行(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)

3. 注意事项与常见问题

  1. 数据限制get_history_fundamentals 每次调用最多返回 5000 条数据。如果标的数量较多,建议按股票批次分割查询。
  2. 不支持市值表:该 API 不支持查询 valuation(市值表)相关字段。市值数据请使用 get_valuation API。
  3. 避免未来函数:在回测策略中使用时,建议使用 watch_date=context.previous_date 代替 stat_date,以确保不会获取到当时尚未披露的年报数据。