11.4 get_fundamentals()函数
get_fundamentals()函数可以查询一只股票或多只股票的财务数据,真语法格式如下:
get fundamentals(query object, date=None, statDate=None)
11.4.1 各项参数的意义
get_fundamentals()函数共有3 项,各项参数意义如下:
1. query_object
参数query_object 是一个sqlalchemy.orm.query.Ouery 对象,可以通过全局的query 函数获取Ouery 对象。
2. date
参数date 是查询日期,可以是一个字符串(格式类似"2018-4-24" )或者datetime.date/datetime.datetime 对象。可以是None ,使用默认曰期,这个默认曰期在回测和研究模块上有点差别:
回测模块: 默认值会随着回测曰期变化而变化,等于context.current_dt 的前一天(实际生活中我们只能看到前一天的财报和市值数据,所以要用前一天)。
研究模块: 使用平台财务数据的最新曰期,一般是昨天。
需要注意的是,如果传入的date 不是交易日,则使用这个日期之前的最近的一个交易曰。
3. statDate
参数statDate 是一个字符串,表示财报统计的季度或者年份,有两种格式,具体如下:
季度:格式是年+ "q" +季度序号,例如: "2018q1", "2017q4" 。
年份:格式就是年份的数字,例如"2017" , "2018" 。

get_fundamentals()函数的返回值是一个pandas.DataFrame ,每一行对应数据库返回的每一行,列索引是你查询的所有字段。
需要注意的是,为了防止返回数据量过大,每次最多返回10000 行。另外,当相关股票上市前、退市后,财务数据返回各字段为空。
11.4.2 get_fundamentals()函数的应用实例
下面来显示平安银行( 000001 ) 2018 年4 月12 日的财务数据信息。创建一个Python3 文件,然后输入代码如下:

首先导入 pandas 库,然后调用全局的query 函数设置查询的股票是平安银行,然后调用get_fundamentals()函数获取平安银行2018 年4 月12日的财务数据信息。

下面来解释一下财务数据字段的意义:
id: 是每行数据的索引,不能重复。
code : 是股票的代码。
pe_ratio :是股票的市盈率(PE , TTM) ,即动态市盈率。动态市盈率是指每股市价为每股收益的倍数,反映投资人对每元净利润所愿支付的价格,用来估计股票的投资报酬和风险。
turnover_ratio :是股票的换手率。换手率是指在一定时间内市场中股票转手买卖的频率,是反映股票流通性强弱的指标之一。
pb_ratio :是股票的市净率(PB)。市净率是指每股股价与每股净资产的比率。
ps_ratio :是股票的市销率。市销率是指股票价格与每股销售收入之比,市销率越小,通常被认为投资价值越高。
pcf_ratio :是股票的市现率。市现率是指每股市价为每股现金净流量的倍数。
capit剖ization :是股票的总股本(万股)。总股本是指上市公司已发行的普通股股份总数(包含A 股, B 股和H 股的忠、股本)。
market_cap :是股票的总市值(亿元)。总市值是指在某特定的时间内,交易所挂牌交易全部证券(以总股本计)按当时价格计算的证券总值。
circulating_cap :是股票的流通股本(万股)。流通股本是指上市公司已发行的境内上市流通、以人民币兑换的股份总数(A 股市场的流通股本)。
circulating_market_cap :是股票的流通市值(亿元)。流通市值是指在某特定时间内当时可交易的流通股股数乘以当时股价得出的流通股票总价值。
day: 是指查询股票财务数据的具体日期。
pe_ratio_lyr :是股票的市盈率(PE)。以上一年度每股盈利计算的静态市盈率。
除了利用表格显示财务数据信息,还可以利用Print 函数输出指定的财务数据字段信息。创建一个Python3 文件,然后输入代码如下:


前面显示的是一只股票的财务数据信息,如何显示两只股票或多只股票的财务数据信息呢?下面举例说明。
创建一个Python3 文件,然后输入代码如下:

还可以设置用不同的财务数据条件,然后把满足条件的股票信息显示出来。创建一个Python3 文件,然后输入代码如下:

这里设置的条件是总市值大于1000 亿元并且市盈率小于10 ,选出数据后按总市值降序排列。另外,选出的股票最多显示100 只,即如果满足条件的股票大于100 只,也只显示前100 只股票的财务信息。

下面显示平安银行2016 年四个季度的季报,并放到数组中显示。创建一个Python3 文件,然后输入代码如下:


下面来解释一下各财务数据的意义:
statDate: 表示财报统计的季度的最后一天,例如2016-03-31 ,2016-06-30 。
code: 股票代码。
basic_eps: 基本每股收益(元)。基本每股收益的理论算法:归属于普通股股东的当期净利润/(当期实际发行在外的普通股加权平均数=Σ(发行在外普通股股数×发行在外月份数) / 12) 。
cash_equivalents :货币资金(元)。货币资金是指在企业生产经营过程中处于货币形态的那部分资金,按真形态和用途不同可分为包括库存现金、银行存款和其他货币资金。它是企业中最活跃的资金,流动性强,是企业的重要支付手段和流通手段,因而是流动资严的审查重点。货币资金:又称为货币资产,是指在企业生产经营过程中处于货币形态的资产。是指可以立即投入流通,用于购买商品或劳务或用于偿还债务的交换媒介物。
goods_sale_and_service_render_cash :销售商品、提供劳务收到的现金(元)。反映企业本期销售商品、提供劳务收到的现金,以及前期销售商品、提供劳务本期收到的现金(包括销售收入和应向购买者收取的增值税销项税额)和本期预收的款项,减去本期销售本期退固的商品和前期销售本期退回的商品支付的现金。企业销售材料和代购代销业务收到的现金,也在本项目中有所反映。
