3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 JoinQuant 聚宽平台中,若要查询 2022 年第一季度的财务数据,get_fundamentals 函数的 statDate 参数应设置为字符串 '2022q1'。
根据聚宽 API 文档,statDate 参数用于指定财报统计的季度或年份,格式如下:
'年份' + 'q' + '季度序号'。例如:一季报为 '2022q1',中报为 '2022q2',三季报为 '2022q3',年报为 '2022q4'。'2022'(通常返回该年的年报数据)。以下是一个完整的代码示例,展示如何查询平安银行(000001.XSHE)在 2022 年第一季度的营业收入和净利润:
# -*- coding: utf-8 -*-
from jqdata import *
def initialize(context):
# 设定查询对象:平安银行
security = '000001.XSHE'
# 构造查询语句
# 查询字段:股票代码、财报统计日期、营业收入、净利润
q = query(
income.code,
income.statDate,
income.operating_revenue,
income.net_profit
).filter(
income.code == security
)
# 调用 get_fundamentals 获取 2022 年第一季度的数据
# 注意:statDate='2022q1'
df = get_fundamentals(q, statDate='2022q1')
# 打印结果
print("2022年第一季度财务数据:")
print(df)
def handle_data(context, data):
pass
未来函数风险:
使用 statDate 指定特定季度(如 '2022q1')获取数据时,系统会直接返回该季度的财务数据。在回测中,如果当前回测时间早于该财报的实际发布日期(例如 2022 年一季报通常在 4 月份发布,如果在 2022 年 3 月就调用此代码),则会引入未来函数。
date 参数(如 date=context.previous_date),系统会自动返回当时已发布的最新财报数据,从而避免未来函数。statDate。数据更新机制:
statDate='2022')通常返回的是第四季度的数据。statDate 参数且为年份格式(如 '2022'),传入季度可能会返回空值。Q: get_fundamentals 中 date 和 statDate 参数有什么区别?
A: date 参数用于查询在指定日期“能看到”的最新数据,系统会根据财报发布日期判断,避免未来函数,适合回测使用。statDate 参数用于强制查询指定会计期间(如某年某季度)的数据,不考虑发布时间,适合在研究环境中进行历史财务分析。两者只能二选一,不可同时使用。
Q: 如果查询不到数据会返回什么?
A: 如果指定了 statDate 但上市公司未发布该季度的财报,或者该股票在当时已退市/未上市,返回的 DataFrame 对应的字段将为空值或 DataFrame 为空。
Q: 如何查询 2022 年全年的年报数据?
A: 将参数设置为 statDate='2022' 即可。注意,部分专项数据(如银行专项指标)只能通过这种年份格式查询。