问题描述
sales_gross_profit 这个销售毛利率指标不提供了?测试了一下平安银行的,发现都为空,数据有下载更新了,还是为空
解决方案
您好!sales_gross_profit(销售毛利率)这个指标在 QMT 平台中仍然是提供的(属于 PERSHAREINDEX 主要指标表)。
您在测试平安银行(000001.SZ)时发现数据为空,并不是因为接口失效或数据未更新,而是因为平安银行属于银行业,其财务报表结构与一般工商企业不同。
为什么银行股的“销售毛利率”为空?
“销售毛利率”的通用计算公式通常是:(营业收入 - 营业成本) / 营业收入。
但是,银行、保险、证券等金融类企业没有传统的“营业成本”或“销售成本”科目。银行的利润主要来源于利息净收入(利息收入 - 利息支出)以及手续费及佣金净收入等。因此,对于金融类股票,财务数据库通常不会计算“销售毛利率”,该字段会直接返回空值(NaN 或 Null)。
验证方法
为了验证该指标是否正常工作,建议您使用一家非金融类的制造业或消费类公司(例如:贵州茅台 600519.SH 或 宁德时代 000002.SZ)进行测试。
测试代码示例:
#coding:gbk
def init(ContextInfo):
# 设置股票池:包含一个银行股和一个非金融股
ContextInfo.set_universe(['000001.SZ', '600519.SH'])
def handlebar(ContextInfo):
if not ContextInfo.is_last_bar():
return
# 获取主要指标表中的销售毛利率
fieldList = ['PERSHAREINDEX.sales_gross_profit']
stockList = ContextInfo.get_universe()
startDate = '20230101'
endDate = '20231231'
# 获取财务数据
df = ContextInfo.get_financial_data(fieldList, stockList, startDate, endDate, report_type='report_time')
print("财务数据获取结果:")
print(df)
运行上述代码后,您会发现贵州茅台(600519.SH)能够正常返回销售毛利率数据,而平安银行(000001.SZ)则为空。
补充说明
如果您需要评估银行股的盈利能力,建议使用其他适用于金融行业的指标,例如:
- 净资产收益率 (ROE):
PERSHAREINDEX.du_return_on_equity - 总资产报酬率 (ROA):
Profitability_and_Earning Quality.ROA(多因子数据表) - 净利率:
PERSHAREINDEX.net_profit