使用get_fundamentals查询财务指标
一、什么是财务指标?
能记账的都归属到财务数据的部分。
以企业为例子,财务报表总共有三类。
- 资产负债表
- 利润表
- 现金流量表
这些表都需要了解,因为之后做选股策略时 需要用到这些表的概念。
资产负债表
资产负债表体现企业家底和负债情况,就好比一个人 有几套房 几辆车。是全款买的还是借款买的,如果是借款,有多少是自己的,有多少是借来的。可以看到 一个公司的资产负债表是 “资产”“负债”以及两者相比这3块构成的。
利润表
利润表体现的是公司的盈利能力,赚了多少钱,怎么赚的。来源都有哪些,其中隐藏对未来增长的预期。
也是因为有这个预期,很多公司的股价也是远超真实的公司内在价值的。比如说我们听到很多互联网公司上市,拼多多,B站等等,在刚上市的时候,它的盈利情况是负增长的, 它还没有真正的实现盈利,那为什么这些公司的股价增幅很大呢?增幅会比那些大企业,发展稳定的企业涨的还要快呢,正是因为这里所说的“预期”。
也就是说,利润表体现的是公司的市场空间和成长能力。
现金流量表
现金流量表表相对来说更真实,更不容易造假,
因为资产负债表
和利润表
是基于“权责发生制”, 它是一种会计制度, 举例来说 就是我们签合同了,里面涉及1000万订单款项,只要我们签合同了,就可以记账了。记到预收款项
里面。这个预收款项
是记录到利润表的。但是现金流量表不一样,它是基于“收付实现制” 也就是说,只有当1000万真的打进公司账户了,现金流量表上才会记录下来。这是这2种会计制度的区别。所以说,一家现金流很好的公司,它一定是一家造血能力很强的公司。提现的是这家公司有极强的竞争优势和议价能力。比如说我们熟知的高端白酒行业,贵州茅台,五粮液。这些企业都是因为供不应求,他们的工艺、品牌效应很好。所以他们不担心收不到钱,不担心有欠款。这也就是他们现金流量情况很好的原因。
二、使用数据接口获取财务指标
https://www.joinquant.com/help/api/help#name:JQData
进入到上面网页直接搜索“财务数据
”
这里有“单季度/年度财务数据”和“报告期财务数据”
这2者有什么区别?他们主要是数据获取的周期不同。
- 单季度:第一、第二、第三、第四、季度分别的利润是多少。
- 年度:以年为单位的利润是多少。
- 报告期:第一季度,半年报,第三季度,一年报。半年报是覆盖1~6月,年报是1~12月。
2.1单季度/年度财务数据接口
get_fundamentals(query_object, date=None, statDate=None)
这里的“fundamentals
”翻译过来是“基本面
”的意思。
“财务数据
”也叫做企业的基本面
我们之前有介绍过根据“基本面”和“技术面”做选股策略,这里的基本面,就是“财务数据
”。
点击“财务数据文档
”查看详细的数据字段描述:
可以看到,这里会把参数和返回值都做了详细的解释。
接着我们注意到左侧的目录:
这里财务数据拆分成了8个子级菜单。
分别是
2.2市值数据
它包含“总股本”“流通股本”、“总市值”、“流通市值”“市盈率”这些数据。
这是最基本的信息 表达的是这家公司的规模大小。以及估值情况。这些数据是我们再炒股平台可以看到的。 就是股票的基本信息。
2.3 财务指标数据
这节课主要看“财务指标数据
”。它和“资产负债数据”、“现金流数据”、“利润数据”有什么区别?
简单来说,“财务指标数据
”是一种合成数据。它是基于前面三者合成的。直接看“财务指标数据
”的列的含义
这里计算了“每股收益”、“经营活动净收益”、“净资产收益率”、“总资产净利率”、“销售净利率”、“销售毛利率”等等。看到这里就可以知道,比如说“总资产净利率ROA(%)
”是由利润表的数据计算来的。
总资产净利率ROA(%) = 净利润*2/(期初总资产+期末总资产)
为什么这里的财务指标数据
都帮我们算出来了呢?因为这些数据都是最常用的。用于筛选股票盈利能力的数据。
所以我们可以获取这些数据,通过对这些数据进行限定。比如说,我要求股票的roe
每年大于15%的增长。又或者它的销售毛利率大于75%。
这样,我就可以通过限定条件,找到“基本面”最好的一些龙头企业的股票。这个就是“财务指标数据
”常用的地方。
三、实战
首先,创建一个Finamnce的文件夹,存放爬取到的csv文件。
#获取股票的财务指标数据
df = get_fundamentals(query(indicator), statDate='2021')
print(df)
df.to_csv(r'C:\Users\huang\Desktop\XuhssQuant\Data\Finance\finace2020.csv')
运行,获得一个csv文件:
打开它,可以看到它的所有“列”
这些列对应的就是“财务指标数据”种的列的列名:
列的含义:
- id:网站的数据索引
- code:股票代码
- pubDate:公司发布财报日期
- statDate:财报统计的季度的最后一天, 比如2015-03-31, 2015-06-30
- eps:每股收益EPS(元)。每股收益=净利润/期末股本;你可以理解为:假如公司股份化为了1000份,净利润除以1000就是“eps”,这个值越大越好,它代表公司的盈利能力。
- operating_profit:经营活动净收益(元),它等于:营业总收入-营业总成本
- roe:净资产收益率ROE(%),它等于:归属于母公司股东的净利润*2/(期初归属于母公司股东的净资产+期末归属于母公司股东的净资产)。它相当于一个公司资产的产出,比如2个白酒企业,他们都有自己的场子,规模差不多。但是公司1对应的产能销量是1000万,公司2是100万。那它们谁的roe高?肯定公司1高,因为同样的资产,它获得的利润越多。它体现的是净资产的使用能力。
- inc_net_profit_year_on_year:净利润同比增长率(%)。它等于:(当期的净利润-上月(上年)当期的净利润)/上月(上年)当期的净利润绝对值=净利润同比增长率。通俗的讲,它就是今年的利润比去年的利润增长了多少。比如说,去年的利润是100万,今年的利润是200万元,那增长多少呢?就是(200万-100万)/100万=100%,也就是百分百的同比增长率
所以比较需要的4个指标:
- eps
- operating_profit
- roe
- inc_net_profit_year_on_year
我们怎么利用这4个指标来选股呢?
3.1利用财务指标进行选股
对结果筛选,通过4个指标严格判断。并且存起来。
#基于盈利指标选股1. eps 2. operating_profit 3. roe 4. inc_net_profit_year_on_year
df = df[(df['eps']>0) & (df['operating_profit']>214406045.5) & (df['roe']>11) & (df['inc_net_profit_year_on_year']>10)]
print(df)
df.to_csv(r'C:\Users\huang\Desktop\XuhssQuant\Data\Finance\finace2020Filter.csv')
运行结果可以看到,有613支股票符合我们的要求: