gt_fundamentals() 函数
该函数可查询一只股票或多只股票的财务数据,其语法如下:
get_fundamentals(query_object, date=None, statDate=None)
参数解析:
-
query_object : 这是一个 sqlalchemy.orm.query.Query 对象,可以通过全局的 query 函数获取 Query 对象
-
date : 表示查询日期,可以是一个字符串或者datetime.date/datetime.datetime对象。可以是None,使用默认日期,这个默认日期在回测和研究模块上有点差别:
- 回测模块:默认值会随着回测日期变化而变化,等于 context.current_dt 的前一天(实际生活中我们只能看到前一天的财报和市值数据,所以要用前一天)
- 研究模块:使用平台财务数据的最新日期,一般是昨天
需要注意的是,如果传入的date不是交易日,则使用这个日期之前的最近的一个交易日
-
statDate : 是一个字符串,表示财报统计的季度或者年份,有两种格式,具体如下:
- 季度:格式是年+“q”+季度序号,例如:“2018q1”,“2017q4“
- 年份:格式就是年份的数字,如”2017“,”2018“
date 和 statDate 参数只能传入一个。传入date时,查询指定日期 date 收盘后所能看到最近的数据;传入 statDate 时,查询 statDate 指定的季度或者年份的财务数据。当两个参数都没有传入成功时,相当于使用 date 参数,即使用默认日期
为了防止返回数据量过大,每次最多返回10000行。另外,当相关股票上市前、退市后,财务数据返回各字段为空
实例代码:
import pandas as pd
# query表示查询
# filter表示条件筛选
# valuation是内置市值数据对象(这里表示查询valuation下所有的属性)
# 最终返回一个Query对象
myq = query(valuation).filter(valuation.code=='000001.XSHE')
df = get_fundamentals(myq,'2018-4-12')
df
id | code | pe_ratio | turnover_ratio | pb_ratio | ps_ratio | pcf_ratio | capitalization | market_cap | circulating_cap | circulating_market_cap | day | pe_ratio_lyr | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 16898314 | 000001.XSHE | 8.53 | 0.6934 | 0.9787 | 1.8698 | -2.0521 | 1717041.125 | 1978.0314 | 1691798.375 | 1948.9517 | 2018-04-12 | 8.53 |
valuation市值数据对象中的字段有:
- id: 每行数据的索引,不重复
- code: 股票代码
- pr_ratio: 是股票的市盈率(PE,TTM),即动态市盈率。
- turnover_ratio: 是股票的换手率。
- pb_ratio: 是股票的市 净率(PB)
- ps_ratio: 是股票的市现率
- capitalization: 是股票的总股本(万股)
- market_cap: 是股票的流通股本(万股)
- circulating_market_cap: 是股票的流通市值(亿元)
- day: 是指查询股票账务数据的具体日期
- pe_ratio_lyr: 是股票的市盈率(PE)。以上一年度每股盈利计算的静态市盈率
示例:输出指定字段
import pandas as pd
# query表示查询
# filter表示条件筛选
# valuation是内置市值数据对象(这里表示查询valuation下所有的属性)
# 最终返回一个Query对象
myq = query(valuation).filter(valuation.code=='000001.XSHE')
df = get_fundamentals(myq,'2018-4-12')
print("当日动态市盈率是:", df['pe_ratio'])
print('当日换手率是:', df['turnover_ratio'])
print('当日市销率是:', df['ps_ratio'])
当日动态市盈率是: 0 8.53
Name: pe_ratio, dtype: float64
当日换手率是: 0 0.6934
Name: turnover_ratio, dtype: float64
当日市销率是: 0 1.8698
Name: ps_ratio, dtype: float64
示例:显示多只股票的财务数据
import pandas as pd
# query表示查询
# filter表示条件筛选
# valuation是内置市值数据对象( 这里表示查询valuation下所有的属性)
# 最终返回一个Query对象
myq = query(valuation).filter(valuation.code.in_(['000001.XSHE', '600000.XSHG', '000009.XSHE']))
df = get_fundamentals(myq,'2018-4-12')
df
id | code | pe_ratio | turnover_ratio | pb_ratio | ps_ratio | pcf_ratio | capitalization | market_cap | circula |
---|