查看原文
其他

利用tushare获取财务数据

爬虫俱乐部 Stata and Python数据分析 2022-03-15

本文作者:方 言, 中南财经政法大学金融学院

本文编辑:寇晓璇

技术总编:张馨月

爬虫俱乐部云端课程

  爬虫俱乐部于2020年暑期在线上举办的Stata与Python编程技术训练营和Stata数据分析法律与制度专题训练营已经圆满结束啦~应广大学员需求,我们的课程现已在腾讯课堂全面上线,且继续提供答疑服务。现在关注公众号并在朋友圈转发推文《来腾讯课堂学Stata和Python啦》或《8月Stata数据分析法律与制度专场来啦!》,即可获得600元课程优惠券,集赞50个再领200元课程优惠券!(截图发至本公众号后台领取)原价2400元的课程,现在只要1600元!
在之前的推文《利用tushare获取股票数据》中,我们介绍了tushare的安装、如何获取股票交易的数据,以及可视化的实现,那么今天我们就将学到的知识运用到实际操作中,利用tushare获取股票的相关财务数据并进行股价估值~

一、财务数据获取

tushare除了能够获取股票的相关交易数据,还可以获取资产负债表、现金流量表、财务指标数据、主营业务构成、分红送股情况、财务报表审计意见等等数据,只需要短短的几行程序就能够在几秒钟内获取你想要的信息~下面我们展示一些在做财务分析和估值时比较常用的数据,如果你有更深入的了解,可以到tushare官网进行进一步的了解(https://waditu.com/document/2?doc_id=16)。接下来展示基本的使用方法。
每次运行tushare之前都需要先初始化,这里每次调用时只需要初始化一次即可:
1import tushare as ts
2ts.set_token('Your Token'
3pro = ts.pro_api()

成功导入tushare以及初始化以后,我们便可通过不同方法获取相关数据啦~

资产负债表

1#资产负债表
2df = pro.balancesheet(ts_code='600519.SH', end_date='20210101', fields='ts_code,ann_date,f_ann_date,end_date,report_type,comp_type,total_share,cap_rese,undistr_porfit')
3df.to_csv('茅台资产负债表.csv',encoding='gb2312',index=False)

资产负债表的项目很多,可以根据fields选项进行选择。在本文的示例中,我们选择了股票代码、公告日期、实际公告日期、报告期、报表类型、公司类型、期末总股本、资本公积金以及未分配利润。

利润表

通过pro.income可以获取利润表数据,下面代码展示了如何获取茅台在特定日期的基本每股收益:
1#利润表
2df = pro.income(ts_code='600519.SH', end_date='20210101',fields=['ts_code','basic_eps','end_date'])
3df.to_csv('茅台利润表.csv',encoding='gb2312',index=False)
输出数据如下所示,图中可以看到在最近一期报告期,茅台的基本每股收益为26.93元。

现金流量表

1#现金流量表
2df = pro.cashflow(ts_code='600519.SH', end_date='20210101',fields=['ts_code','free_cashflow','end_date'])
3df.to_csv('茅台现金流量表.csv',encoding='gb2312',index=False)
结果如图,这里只选择了自由现金流这个选项,如果你需要别的数据同样可以通过fields选项进行选择:

分红送股情况

1#分红送股情况
2df = pro.dividend(ts_code='600519.SH', end_date='20210101',fields=['ts_code','cash_div','end_date'])
3df.to_csv('茅台分红送股.csv',encoding='gb2312',index=False)
结果如下:

主营业务构成

1#主营业务构成
2df = pro.fina_mainbz(ts_code='600519.SH', end_date='20210101', type='P')
3df.to_csv('茅台主营业务构成.csv',encoding='gb2312',index=False)
通过主营业务构成,我们可以知道白酒企业中的企业主要经营的酒类项目是什么以及主营业务的收入、利润以及成本:

财务报表审计意见

1#财务报表审计意见
2df = pro.fina_audit(ts_code='600519.SH', end_date='20210101')
3df.to_csv('茅台财务报表审计意见.csv',encoding='gb2312',index=False)
我们得到了茅台近几年是由哪些会计师事务所进行审计的,以及财务报表的审计意见是什么,这对于我们进行公司基本面以及财务分析有借鉴意义:

财务指标

1#财务指标
2df = pro.query('fina_indicator', ts_code='600519.SH', end_date='20210101')
3df.to_csv('财务指标.csv',encoding='gb2312',index=False)
pro.query的参数中填入fina_indicator,可以获得基本每股收益、稀释每股收益、每股营业总收入等常用财务指标。结果如下:

二、具体应用——估值模型

想要判断一支股票当前的股价是否合理,可以通过估值模型估计股价,再与市场上的实际股价进行对比,看是否高估或是低估,比较常见的估值模型有绝对估值法中的DCF、DDM和相对估值法中的P/E模型,由于现金流折现模型与股利贴现模型在实际应用中受到很多限制,如现金流为负或是上市公司不派发或者派发很少的股利,因此这里我们运用相对市盈率法进行估值,这里先简单介绍一下相对市盈率模型。
P/E模型,又叫市盈率模型,主要通过与同行业的可比公司的平均市盈率进行比较,得出目标公司的股价是否存在高估或低估。市盈率又分为静态(当期)市盈率、动态(预期)市盈率和滚动市盈率。根据不同的情况,选择不同的市盈率进行计算。公式如下:

目标公司每股股价=可比公司平均市盈率×目标公司每股收益

为了实现这一过程,我们先获取股票的基本每股收益和动态市盈率。以茅台为例,代码如下:
1#利润表
2df = pro.income(ts_code='600519.SH', end_date='20210101',fields=['ts_code','basic_eps','end_date'])
3df.to_csv('茅台利润表.csv',encoding='gb2312',index=False)
1#茅台动态市盈率
2df = pro.daily_basic(ts_code='600519.SH', trade_date='20210129', fields='ts_code,trade_date,pe_ttm')
3df


结果显示1月29日的基本每股收益为26.93元,动态市盈率为59.6325。
接下来,按同样的方法获取五粮液、泸州老窖以及山西汾酒在1月29日的动态市盈率并计算均值,结果为81.8644。
1code=['000858.SZ','000568.SZ','600809.SH']
2for i in code:
3    df = pro.daily_basic(ts_code=i,trade_date='20210129', fields='ts_code,trade_date,pe_ttm')
4    print(df)     

用平均市盈率与贵州茅台的每股收益相乘,可以求得当前的贵州茅台股价估值为2205元每股,根据2020年1月9日当天的实际股价2116元,可以得到当前市场上对于茅台的股价存在低估,建议持有。
最后提醒大家,文中的案例仅作为tushare具体应用的参考,不提供任何投资建议以及不作任何商业用途,对于公司股价的估值,还是要回归到公司的基本面进行分析,而不是盲目的轻信各种预测和推断~




对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!
往期推文推荐

爬虫实战|Selenium爬取微信公众号标题与链接

轻轻一点,就知有没有|rqrs命令介绍

强大的正则表达式

自动群发邮件(二)——附带附件

自动群发邮件--email和smtplib基本模块的使用

批量处理变量名和标签的小方法

计算工作日的小能手——workdays

Seminar | 企业错报与银行贷款合同

Seminar | 共同基金行业的性别歧视
Seminar | 来自女儿的塑造:高管、女性社会化与企业社会责任

小贴士:Markdown的基本语法

听说相貌也能量化 | 调用百度人脸检测API实现颜值打分

列出指定属性的变量|findname命令比ds命令

新一代的标签转码小能手
【爬虫实战】亚马逊网站Top100畅销书爬取

Json文件好帮手——JsonPath

数据转置pro之sxpose2
文件"搬家"小助手:mvfiles

pyecharts绘图——河流图展示

你知道MDPI期刊的热门题目吗?

文件合并你不行,mergemany来帮宁
分组进行描述性统计的小技巧 --astx命令介绍
关于我们


微信公众号“Stata and Python数据分析”分享实用的stata、python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。

此外,欢迎大家踊跃投稿,介绍一些关于stata和python的数据处理和分析技巧。
投稿邮箱:statatraining@163.com
投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存