识别财务舞弊的“机器之眼”:本福特定律建模

其三,关联交易造假,如隐瞒与关联方之间的交易,导致利润总额虚增的康欣新材。

在大A股这充满诱惑的市场,遍地都是娇嫩的韭菜,只要通过会计分录,简简单单便能割走大把钱财,让揣着镰刀的老板,如何按耐得住心中的悸动呢。

而对于财务造假的识别,一直是一个难题,每一家上市公司看起来都是那么眉清目秀婀娜多姿,没有谁脸上写着“造假”两个字。

别说普通的投资者,就是在资本市场浸淫多年且具备专业财务技能的业内人士,也很难识破财务舞弊。

在互联网技术突飞猛进的当今社会,风云君曾想是否可以利用互联网技术来提高财务舞弊识别效率,甚至开发一种简单实用的财务舞弊辅助识别工具?

本福特定律,是一个有关于首位数字在数值数据集的频率分布,此定律已经存在很长的一段时间,但到了最近几年才被频繁地讨论和使用。

本福特定律命名来源于20世纪的英国科学家本福特,他使用的前提限制为,数据必须为自然数据,所以人为制造的数据,像手机号码、身分证字号都不适用这个定律。

本福特定律指出在这些自然数据中,如信用卡付费帐单、财务报表等,第一个首位数字1(例如:1 ,123,1234)的出现次数约为30.1%,首位数字是2的比例约为17.6%,后面数字出现的机率将逐渐变小,到首位字母为9时,数字出现机率已经小于5%。

这个结论与常人的直观结论不同,一般来说我们会认为1~9每个数字,出现的机率皆为1/9,但本福特定律指出,在自然数据下,首字母的分布,并不是这样的。

据说本福特是在翻对数表时发现这个定律的,像图书馆的书一样,前面几页的颜色总是特别深,越到后面颜色越浅,书页越新,因而让本福特想到,是不是1为首字母的数会是最多的呢,从而得出这个定律。

大A股3000多家上市公司,算上每年IPO的企业,若是一家一家用excel建模,那得到何年何月才能做完呢?

俗话说授人以鱼不如授人以渔,今天风云君便手把手教大家,如何用python建模,来检验上市公司报表的首位字母是否满足本福特定律。

ps:对于不想学的老板们,看到这边就可以直接跳到最下面的留言区,只要阅读量过万,留言区便会将源码奉上。

步骤三:定义函数(ps:此代码以东方财富choice数据提供的excel为基准建立)

1、将重复代码定义成函数,可以使代码易读性上升,修改运用起来也会比较容易。取财务报表每个单元格的首位数字,以中国平安为例:

我们得取出每个数字的首位字母,以营业收入27,712,000,000为例,会得到首位字母为2,以此类推,因此写一个函数来执行这个动作。

从东方财富choice上下载上市公司数据会分成三个excel,分别是现金流量表、资产负债表和利润表,所以我们要分别计算出各表首字母出现的次数。

我们将三张表通过函数,分别计算出他的分布结果,并将结果放入下面三个list中

文件资料档名:(ps:这是额外写一个程式,批量更改档名后的结果,源代码将在破万阅读后,放在留言区)

本次我们抓取前4季的数据,第二行的601668,其代表意义为,在这4季度中,601688无法拒绝虚无假设的季度有4季,可以拒绝虚无假设的季度为0季。亦即它的分布决大部分符合本福特定律。

我们整理出上证50与五家有舞弊行为的公司的无法拒绝虚无假设的均值作为比较

上证五十样本为:北京银行、工商银行、光大银行、国泰君安、华泰证券、交通银行、洛阳钼业、农业银行、上海银行、新华保险、浙商证券、中国电建、中国核电、中国建筑、中国交建、中国平安、中国人寿、中国石油、中国太保、中国铁建、中国银河、中国银行、中国中车、中国中铁、中国重工、宝钢股份、保利地产、北方稀土、大秦铁路、东方证券、贵州茅台、海通证券、华夏幸福、江苏银行、康美药业、绿地控股、民生银行、南方航空、浦发银行、山东黄金、上汽集团、万华化学、伊利股份、兴业银行、招商银行、招商证券、中国联通、中国神华、中国石化、中信证券。

上表中,可以发现上证五十季度资料平均值,符合本福特定律的季度数,不管在最近一年、两年、三年、四年,都高于舞弊五家的季度均值,但考量到均值差异并不是十分明显,我们推断可能是受到样本的数据量较小影响所致。

所以我们初步认为,本福特定律这个工具在实际应用中是可以起到一个初步筛选的作用,但是在实际判别时,还得深入的研究上市公司的基本面及财务数据,需运用专业的财务知识进行更严谨的分析。