Hello (╹▽╹) 简书的小伙伴们,小鱼有段时间没有更新文章啦。一方面,是因为去偷懒了 o(╯□╰)o ,不过也有一个好消息带给大家~
在企业财报分析的系列文章中呢,有大量的工具函数,每次分析新的内容时,这些函数都需要我们手动拷贝到一个 Jupyter NoteBook
中,十分不方便。而且,小鱼每次更新新的文章时,也总需要 Copy 来 Copy 去!占用大量的篇幅,导致精华内容太少。
为此,小鱼做了一个决定,创建开源项目 !
一. 开源项目的介绍
获取方式:
git clone git@gitee.com:miali/financial-report-analysis.git
没有 GIT
客户端的小伙伴们也可以直接打开 https://gitee.com/miali/financial-report-analysis 下载项目的压缩包。
通过压缩包下载时,需要在下载前选择好相应的分支,分支的选择在页面的最左侧,不同的分支对应不同的公司。获取代码之后,可以得到看到如下文件:
其中,需要关注的内容小鱼已经用彩色的方框圈出来了~这里,由于小鱼的代码是 002677
分支的分支,所以多了一个数据源文件夹,其中放置的是我们的分析数据源。
其中 generate_data.ipynb 就是从我们上述的目录中数据,进行数据的预处理、筛选等操作,然后生成供其他 .ipynb 文件分析的标准 data.csv`文件。
analysis 文件夹是一个自定义的 Python 包,其中包含了小鱼封装好的各类工具,在外部的 ipynb 中可以进行很方便的调用。
dist 中包含了分析过程中输出的各类文档报告,小鱼在提交代码时也进行了上传。如果你需要分析的公司,和小鱼分析的刚好是同一家,那么可以直接看小鱼输出的报告即可。
最后是 README.md
文档,该文档介绍了项目的设计和实现,阅读该文档,可以帮助您构建自己需要分析的公司。如果您的电脑没有安装打开 MarkDown 文档的应用,也可以在线看,文档就位于代码的下方。
注:也可以继续关注小鱼接下来更新的连载,完成学习后,相信你也可以用来分析自己心仪的公司发布的年报数据啦~
二. 使用 analysis 完成资产质量的分析
小鱼接下来的讲解,还是依据代码仓库内置的数据集,因此需要回到 main
分支。
git checkout main
资产质量分析位于 asset_quality_analysis.ipynb 文件中,其包含了默认数据集的资产质量分析过程。
注:在运行 asset_quality_analysis.ipynb 前需要在 dist 目录下有
data.csv
文件。该文件通过运行 generate_data.ipynb 生成,这里限于篇幅原因,不再介绍数据的生成过程。后续小鱼会继续更新该部分内容~
首先,导入自定义工具包:
from analysis import ANALYSIS_CONFIGS
from analysis.analysis import FinancialAnalysis
from analysis.doc_utils import ReportDocument
其中 ANALYSIS_CONFIGS
定义了各类分析使用的配置文件:
>> ANALYSIS_CONFIGS
['all_analysis.json',
'asset_quality_analysis.json',
'asset_indepth_analysis.json',
'asset_fraud_analysis.json',
'profit_analysis.json',
'cash_flow_analysis.json']
关于资产质量分析,对应的配置文件为 asset_quality_analysis.json
,配置文件定义了每步分析用到的图片、标题形成以及字段信息。详情可以在 analysis
下的 ini_files
文件中查看。
接下来,使用 asset_quality_analysis.json
配置文件初始化资产质量分析对象,并获取相关属性复制给变量。
>> ana = FinancialAnalysis(ANALYSIS_CONFIGS[1])
>> images, titles, fields = ana.images, ana.titles, ana.fields
下面,就可以使用 ana
开始你的分析工作啦~
2.1 货币资金
现金流是企业的生命。企业可以不赚钱,只要现金流不断,就不会死亡。比如靠财政补贴存活的公司、经营性负债非常高的公司(占用上下游的资金)、靠母公司强大的现金流存货的子公司等等。
为此,分析资产质量,我们首先需要看看企业总资产中的准货币资金占比。准货币资金包含了货币资金(现金)和理财产品。
初始化资产质量分析的第一个表格 t1
,并计算总货币资金和准货币资金占总资产的比率。
t1 = ana.init_table('t1')
t1['准货币资金'] = t1.T[:4].sum()
t1['准货币资金占总资产的比率'] = t1['准货币资金'] / t1['资产合计(元)']
ana.format_show_table('t1')
表格内容如下:
该公司连续 5 年的准货币资金占总资产的比例维持在 50% 左右,账上现金充裕,非常优秀。
ana.show_plot('t1')
通常情况下,准货币资金占总资产的比例小于 25% 时,则公司不够优秀。
2.2 应收账款
应收账款就是商品或者服务已经给对方了,但对方还没付款,也就是白条,是别人占你的便宜,因此我们希望总资产中应收账款占比越小越好。
合同资产为有条件的应收账款,随着条件的满足,在未收到对方账款的时候,合同资产会转换为应收账款。
分析最近 5 年的应收账款与合同资产占总资产的比例:
t2 = ana.init_table('t2')
t2['应收账款加合同资产'] = t2.T[:2].sum()
t2['应收账款与合同资产占总资产的比率'] = t2['应收账款加合同资产'] / t2['资产合计(元)']
ana.format_show_table('t2')
最近 5 年该公司的应收账款占比在不断上升,其中 2021 年达到了 11.49%。我们推测行业竞争可能在不断加剧,必须靠让渡账期来把货卖出去。
ana.show_plot('t2')
一般情况下,该比例小于 1% ,属于非常优秀的公司;优秀的公司一般小于 3%,大于 15% 则风险比较大。
2.3 预付款项
应收账款是货提前给了对方,钱没收回来;预付款项是提前把钱给了对方,货没拿回来。说白了钱都不在自己手上,均属于资产项。
分析某公司最近 5 年的预付款项占总资产的比例:
t3 = ana.init_table('t3')
t3['预付款项占总资产的比率'] = t3['预付款项(元)'] / t3['资产合计(元)']
ana.format_show_table('t3')
预付款项占总资产的比例不足 1% ,可见公司在行业内的实力强,信用好,不需要提前把钱付给上游供应商。
ana.show_plot('t3')
一般情况下,该比例小于 1% 属于优秀的公司,大于 3% 则风险比较大,可能实力不够,或者信用不好,必须要提前支付现金才能保证货源。
2.4 固定资产
资产质量分析的最后一项为固定资产,固定资产如厂房、设备等。固定资产在企业经营过程中会损耗、折旧,出现资产减值损失,并且固定资产的定期保养,也会带来额外的费用支出。
为此,我们通常选择固定资产占比小于 40% 的轻资产型公司,这样的公司,维持竞争力的成本更小。
t4 = ana.init_table('t4')
t4['固定资产+在建工程'] = t4.T[:2].sum()
t4['固定型资产占总资产的比率'] = t4['固定资产+在建工程'] / t4['资产合计(元)']
ana.format_show_table('t4')
该公司固定资产占总资产的比例最近 5 年基本维持在 10% ,属于非常轻的轻资产型公司。
ana.show_plot('t4')
以上就是资产质量分析的全部科目啦!在 Jupyter NoteBook 中完成所有分析后,执行如下语句,即可在 dist
目录下生成名为 xxxxxx ASSET_QUALITY_ANALYSIS 2017~2021.docx 的分析报告。
ReportDocument(ana).save()
总结一下,准货币资金占比越大越好,因为现金为王;应收账款、预付款项占比越小越好,因为都是别人占自己便宜,当然越小越好;固定资产会带来折旧摊销和额外费用,我们希望越小越好。
网友评论