🚀 AI 一键生成 joinquant 策略代码

如何用 JoinQuant 批量获取一家公司过去多个季度的财务数据?

joinquant | 发布时间: 2025/11/26
以下内容由 EasyQuant 生成。

问题描述

我想获取一只股票过去 8 个季度的净利润数据,应该怎么做?

解决方案

在 JoinQuant(聚宽)平台中,获取一只股票过去多个季度的财务数据,最直接且高效的方法是使用 get_history_fundamentals 函数。

该函数专门用于查询多个季度或年度的历史财务报表数据。

代码实现

以下是在聚宽研究环境或回测中获取某只股票(以平安银行 '000001.XSHE' 为例)过去 8 个季度净利润数据的代码示例:

# -*- coding: utf-8 -*-
from jqdata import *

# 设定要查询的股票代码
security = '000001.XSHE'

# 使用 get_history_fundamentals 获取历史财务数据
# watch_date: 观察日期,默认为 None(回测中为当前日期,研究中为最新日期)
# fields: 查询字段,income.net_profit 代表净利润
# count: 查询的数量,这里设为 8
# interval: 查询间隔,'1q' 代表按季度查询
df = get_history_fundamentals(
    security=security, 
    fields=[income.net_profit], 
    watch_date=None, 
    count=8, 
    interval='1q'
)

# 打印结果
print(df)

关键参数说明

  1. security: 股票代码,可以是单个字符串(如 '000001.XSHE')或列表。
  2. fields: 需要查询的财务字段列表。净利润位于利润表(income)中,字段名为 net_profit,所以写作 [income.net_profit]
  3. count=8: 指定获取过去 8 个周期的数据。
  4. interval='1q': 指定时间间隔为 1 个季度。如果需要按年获取,可以设置为 '1y'
  5. watch_date: 观察日期。
    • 如果指定了日期(如 '2023-01-01'),系统会返回该日期之前(包含该日期)发布的最近 8 期财报数据。
    • 如果不指定(None),在回测中默认为当前回测日期,在研究中默认为今天。

返回数据格式

函数返回一个 pandas.DataFrame

  • 索引 (Index): 通常是股票代码(如果是单只股票,索引可能是日期,具体取决于返回数据的结构,通常建议打印 df.head() 查看)。
  • 列 (Columns): 包含 statDate(财报统计日期,如 '2022q4')和请求的字段(如 net_profit)。

Q&A

Q: get_history_fundamentalsget_fundamentals 有什么区别?
A: get_fundamentals 主要用于获取某一个时间点(截面)的财务数据,常用于选股;而 get_history_fundamentals 用于获取一段时间内(时间序列)的财务数据,常用于分析单只股票的财务趋势。

Q: 如果我想获取“归属于母公司股东的净利润”而不是“净利润”,应该用哪个字段?
A: 应该使用 income.np_parent_company_ownersincome.net_profit 是包含少数股东损益的净利润。

Q: 获取的数据是单季度数据还是累积数据?
A: get_history_fundamentals 返回的数据通常是单季度数据(对于利润表和现金流量表)。这意味着 2023q4 的数据仅代表第四季度当季的数值,而不是全年的累积值。这对于趋势分析非常方便。