3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 JoinQuant 聚宽平台上,关于 get_history_fundamentals 函数获取财务数据更新的问题,主要与上市公司财报披露规则、平台数据同步机制以及函数参数设置有关。以下是详细的解答:
如果您发现某家公司已经公布了2023年年报,但您导出的数据仍然是2023年第三季度(2023q3),通常有以下几种原因:
请确认该上市公司是正式发布了《2023年年度报告》,还是仅仅发布了《业绩预告》或《业绩快报》。get_history_fundamentals 获取的是正式财报数据,业绩预告和快报的数据不会更新到该接口中。
get_history_fundamentals 函数的参数设置决定了您获取数据的维度。如果您想获取年度数据,需要特别注意 stat_date、interval 和 stat_by_year 参数的配合。
如果您没有指定 stat_date,而是使用了 watch_date(或者在回测中默认使用当前日期),函数会返回在该日期之前已发布的最新财报。如果此时年报尚未入库,它自然会返回上一期(即三季报)的数据。
如果您明确知道某公司已经发布了年报,并希望获取年度数据,建议使用 stat_date 和 stat_by_year=True 参数进行精确查询。
示例代码:获取2023年年度财务数据
from jqdata import *
# 假设我们要查询平安银行(000001.XSHE)的2023年年报数据
security = ['000001.XSHE']
# 指定查询的字段,例如:现金及现金等价物、营业总收入
fields = [balance.cash_equivalents, income.total_operating_revenue]
# 方法一:精确指定 stat_date 为 '2023',并设置 stat_by_year=True
# 这将强制返回2023年度的年报数据(如果平台已更新)
df_year = get_history_fundamentals(
security,
fields=fields,
stat_date='2023', # 指定年份
count=1,
interval='1y', # 间隔为1年
stat_by_year=True # 明确表示按年度统计
)
print("按年度查询结果:\n", df_year)
# 方法二:指定 stat_date 为 '2023q4' (第四季度即年报)
# 注意:有些字段在单季度表中可能与年度表有差异,具体视字段而定
df_q4 = get_history_fundamentals(
security,
fields=fields,
stat_date='2023q4', # 指定2023年第四季度
count=1,
interval='1q',
stat_by_year=False
)
print("按季度(Q4)查询结果:\n", df_q4)
stat_date='2023' 配合 stat_by_year=True 强制拉取年度数据测试。watch_date(或不填,默认使用 context.current_dt 的前一天),这样可以严格模拟真实交易时您能看到的最新财报,避免引入未来函数。如果此时取到的是三季报,说明在那个历史时刻,年报确实还未发布或未被市场消化。