3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在基本面量化选股策略中,获取股票的历史多期财务数据(如连续多年的年报或连续多季度的季报)是评估公司盈利能力、成长性和财务健康度的重要步骤。聚宽(JoinQuant)提供了专门用于提取历史多期财务数据的 API:get_history_fundamentals。
get_history_fundamentals 用于获取多个季度或年度的历史财务数据,包含资产负债表(balance)、现金流量表(cash_flow)、利润表(income)以及财务指标表(indicator)等。
get_history_fundamentals(security, fields, watch_date=None, stat_date=None, count=1, interval='1q', stat_by_year=False)
'000001.XSHE' 或 ['000001.XSHE', '600000.XSHG'])。[balance.cash_equivalents, income.total_operating_revenue])。'2019'、'2019q1')。
注意:
watch_date与stat_date只能指定其中一个。
'1q'(每季度)或 '1y'(每年)。True 时必须配合 interval='1y' 使用。from jqdata import *
# 定义股票列表与查询字段
securities = ['000001.XSHE', '600000.XSHG']
fields_list = [
income.total_operating_revenue, # 营业总收入
income.net_profit # 净利润
]
# 获取 2023-01-01 之前最新发布的连续4个季度的财报数据
df_quarterly = get_history_fundamentals(
security=securities,
fields=fields_list,
watch_date='2023-01-01',
count=4,
interval='1q',
stat_by_year=False
)
print(df_quarterly.head())
from jqdata import *
# 获取截止 2022 年(包含 2022 年及之前)连续 4 年的年报数据
df_yearly = get_history_fundamentals(
security=['000001.XSHE'],
fields=[income.total_operating_revenue, balance.total_assets],
stat_date='2022',
count=4,
interval='1y',
stat_by_year=True
)
print(df_yearly)
get_history_fundamentals 返回一个 pandas.DataFrame,每只股票在每个报告期占用一行。常用 groupby 方法按股票代码进行分组和计算增长率:
# 按股票代码分组计算平均营业收入或成长率
df_grouped = df_quarterly.groupby('code')['total_operating_revenue'].mean()
print(df_grouped)
get_valuation API。watch_date=context.previous_date 或 watch_date=context.current_dt,确保仅使用当前时刻已公开发布的财报。