问题描述
请问一下,财务指标数据中的adjusted_profit数据对吗?
adjusted_profit 扣除非经常损益后的净利润(元)
以中集集团(SZ000039)为例,雪球和天天基金2021第三季度的值为80.18亿
但是通过聚宽平台获取的数据为4.369602e+09,即43.69亿,查询语句如下:
df = getfundamentals(query(
valuation.code,indicator.adjusted_profit
).filter(indicator.code.in(['000039.XSHE'])), statDate='2021q3')
请问是我写的不对吗?
解决方案
您好!您获取的数据是正确的,出现差异的原因在于数据统计的周期不同。
差异原因解析
-
聚宽平台的数据口径(单季度):
在聚宽平台中,当您使用statDate='2021q3'查询indicator(财务指标表)或income(利润表)等数据时,默认返回的是单季度数据。也就是说,您获取的 43.69 亿是中集集团在 2021年第三季度(7月-9月) 这三个月内产生的扣非净利润。 -
第三方平台的数据口径(累计值):
雪球、天天基金等财经网站上展示的“三季报”数据,通常是前三季度的累计数据。也就是说,他们展示的 80.18 亿是中集集团在 2021年前三季度(1月-9月) 累计产生的扣非净利润。
如何在聚宽获取前三季度的累计数据?
如果您希望在聚宽获取与雪球等平台一致的前三季度累计数据,您需要分别获取第一季度(q1)、第二季度(q2)和第三季度(q3)的单季度数据,然后将它们相加。
以下是获取前三季度累计扣非净利润的代码示例:
from jqdata import *
# 定义要查询的股票和年份
stock = '000039.XSHE'
year = '2021'
# 分别获取 q1, q2, q3 的单季度数据
q1_df = get_fundamentals(query(indicator.adjusted_profit).filter(indicator.code == stock), statDate=f'{year}q1')
q2_df = get_fundamentals(query(indicator.adjusted_profit).filter(indicator.code == stock), statDate=f'{year}q2')
q3_df = get_fundamentals(query(indicator.adjusted_profit).filter(indicator.code == stock), statDate=f'{year}q3')
# 提取数值并求和
profit_q1 = q1_df['adjusted_profit'][0] if not q1_df.empty else 0
profit_q2 = q2_df['adjusted_profit'][0] if not q2_df.empty else 0
profit_q3 = q3_df['adjusted_profit'][0] if not q3_df.empty else 0
total_profit_3q = profit_q1 + profit_q2 + profit_q3
print(f"{stock} {year}年前三季度累计扣非净利润为: {total_profit_3q} 元")
总结
聚宽考虑到量化分析中经常需要消除季节性影响或进行环比分析,因此默认提供的是单季度数据。在与其他平台核对财务数据时,请务必注意区分单季度数据与累计报告期数据。