穿透财务障眼法:盈余管理指标测算及 Stata 实操

发布时间:2020-08-30 阅读 4162

Stata 连享会   主页 || 视频 || 推文

温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。

课程详情 https://gitee.com/arlionn/Course   |   lianxh.cn

课程主页 https://gitee.com/arlionn/Course

作者: 展一帆 (复旦大学)
E-Mail: simonzhanyf@163.com


目录


1. 问题背景

盈余管理是上市公司调节利润、粉饰业绩常用的障眼法,长久以来成为资本市场中顽疾之一。这种利用信息不对称调节盈余的自利行为是对处于信息弱势投资者的一种隐瞒和欺骗,是以牺牲企业长期利益为代价的短视行为。故而,抑制市公司的盈余管理行为即可以保护投资者权益,亦可在长期改善公司治理机制。针对盈余管理的研究也成为公司金融和会计领域的一个重要话题。

目前的研究普遍将盈余管理分为应计盈余管理和真实盈余管理。应计盈余管理基于权责发生制,针对会计处理,通过会计政策选择、应计项目调整和会计估计变更等方式来进行;真实盈余管理是通过改变企业真实生产经营活动(例如扩大销售、过度生产、降低酌量性费用等)来实现的。

那么想要研究盈余管理,首要任务无疑是对其准确测量。本文的重点便是聚焦在介绍主流文献中针对应计盈余管理的测算方式:修正 Jones 模型。(Jones, 1991 ; Dechow 等, 1995)。

在此前的推文中,我们也对各类盈余管理的测算方法进行了介绍,如 Stata:各类盈余管理指标估算方法残差是个宝:盈余管理、过度投资、超额收益怎么算?。但上述方法只能针对已经下载到本地的数据进行分析,无法实时估算某家或某些公司的盈余管理指标。

2. 修正 Jones 模型的原理与测算

Jones (1991) 是应计盈余管理测算的经典文献,提出了著名的 Jones 模型,核心思想是非操纵性应计主要受两个因素影响,营业收入变动和固定资产水平。营业收入的变动会带来营运资本变动导致企业的应计利润变动,固定资产会产生折旧从而带来应计利润的减少。具体模型如下:

其中,TAi,t 为第 t 年经营性应计项目总额,用营业利润 NIi,t 与经营活动现金流量净额 CFOi,t 的差值表示,Ai,t1 为滞后一期的总资产,ΔREVi,t 为营业收入增量,PPEi,t 为固定资产。通过该方程计算得到的残差即为应计盈余管理。

在 Jones(1991)的基础上,Dechow 等 (1995) 认为管理人员可以利用信用销售来操纵应计,因此要从营业收入变动中扣除应收账款的变动,提出了修正 Jones 模型,在原模型的基础上加入了应收账款的变动,具体模型如下:

其中变动的一项为应收账款变动项 ΔRECi,t。系数 α1α2α3 仍采用经典 Jones 模型进行估计,再代回修正 Jones 模型求解残差。修正的 Jones 模型也是目前文献中最常用的应计盈余管理测算方法。

3. 案例分析

为了具体演示修正 Jones 模型测算应计盈余管理的 stata 实现,我们首先可以通过两种途径获取一份示例数据,读者可以根据情况进行选择。

3.1 数据获取方式之一:cnstockcnar爬取

参考田志凡等(2019)提供的数据爬取和盈余管理代码,我们可以利用爬虫俱乐部开发的命令获取公司数据:

clear all
* 安装爬虫俱乐部开发的Stata 命令cnstock、cnar来获取上市公司的股票代码和财务报表数据
cap ssc install cnstock
cap ssc install cnar
cap ssc install fs  // 安装显示目标路径下所有文件名的命令
* 创建文件存储路径
cap mkdir D:\EM\
* 创建子路径, 用来存储每一公司的财务报表
cap mkdir D:\EM\FS\
* 获取全部上市公司的股票代码
cnstock all, path("D:\EM\")
* 删除B 股公司
drop if index(stknm," B ") | index(stknm,"B")
* 对股票代码循环, 使用cnar命令下载每一公司的财务报表
levelsof stkcd , local(stkcd)
foreach i in `stkcd'{   // 上市公司数量众多,本循环非常耗时,可酌情缩减上市公司数量
cnar `i', path("D:\EM\FS\")
disp "`i'"
}
* 纵向合并所有公司的财务报表
clear all
cd D:\EM\FS\
fs *.dta
foreach f in `r(files)'{
append using `f'
}
save D:\EM\FS.dta,replace

运行以上命令可以获取全部上市公司的财报数据,接下来需要自备一份申万一级行业数据,其应包含三个变量:stkcd(股票代码),stknm(股票名称),industry(行业)。并将该行业数据与财务数据合并:

clear all
cd D:\EM\FS\
use SwClass.dta  // 将准备好的行业数据放置于工作路径
des
/*
  obs:         3,927
 vars:             3
 size:       161,007
-------------------------------------------------------------------------------
              storage   display    value
variable name   type    format     label      variable label
-------------------------------------------------------------------------------
stkcd           str9    %9s                   code
stknm           str20   %20s                  name
industry        str12   %12s                  shenwanindustryfirst
-------------------------------------------------------------------------------
*/
* 将行业分类数据与财务报表合并
merge 1:m stkcd using D:\EM\FS.dta ,keep(match) nogen
* 剔除金融行业样本
drop if inlist(industry, " 银行", " 非银金融")
* 保留2009-2018 年的数据
keep if year>2008 & year <2019
rename (资产总计 营业收入 固定资产 应收账款 净利润 经营活动产生的现金流量净额)  ///
(Asset REV PPE REC NI CFO)  // 批量重命名
xtset stkcd year
gen TA = (NI - CFO)/L.Asset  // 标准化的总应计项目
gen A1 = 1/L.Asset // 总资产倒数
gen DREV = D.REV/L.Asset  // 营业收入增量
gen DREC = D.REC/L.Asset  // 应收账款增量
gen DS_DAR= DREV - DREC          // 营业收入的增量-应收账款的增量
gen ROA=NI/((Asset+L.Asset)/2) //ROA
replace PPE = PPE/L.Asset		 // 固定资产净额
//数据清洗:
keep stkcd year industry TA A1 Asset REV PPE REC DREV DREC ROA
* 剔除模型中存在缺失值的样本
drop if TA + A1 + DREV + PPE == .
* 删除观测值数不足6 的上市公司
bysort stkcd:drop if _N<6

save D:\EM\AEM_Rawdata.dta, replace

3.2 数据获取方式之二:模拟一份数据

我们也可以简单地自行模拟一份数据,作为范例;

*模拟数据
clear
set obs 500  // 模拟500家上市公司
gen stkcd=_n
expand 10   // 每家公司有10年数据
bys stkcd: gen year=_n
gen TA= 3+uniform()   // 财务指标均由随机数生成
gen PPE=2+rnormal()
gen A1= 0.5* rnormal()
gen DREV=rnormal()
gen DREC=rnormal()
gen industry=cond(stkcd<125,1,cond(stkcd<250,2,cond(stkcd<375,3,4)))
save D:\EM\AEM_Rawdata.dta,replace

3.3 应计盈余管理测算

最后我们采用修正 Jones 模型估计应计盈余管理:

use D:\EM\AEM_Rawdata.dta,replace

* 分行业和分年度回归,提取回归系数
statsby, by(industry year) clear: reg TA A1 DREV PPE, noconstant

* 将刚估计的系数数据合并原始数据
merge 1:m industry year using D:\EM\AEM_Rawdata.dta

gen DREV_DREC = DREV - DREC  // 营业收入增量- 应收账款增量
* 计算修正后的应计盈余管理
gen DA = TA - _b_A1 * A1 - _b_DREV * DREV_DREC - _b_PPE * PPE

至此,根据修正 Jones 模型测算的盈余管理就大功告成了,进一步就可以开展各种各样的实证研究了。

4. 参考资料

相关课程

连享会-直播课 上线了!
http://lianxh.duanshu.com

免费公开课:


课程一览

支持回看,所有课程可以随时购买观看。

专题 嘉宾 直播/回看视频
最新专题 DSGE, 因果推断, 空间计量等
Stata数据清洗 游万海 直播, 2 小时,已上线
研究设计 连玉君 我的特斯拉-实证研究设计-幻灯片-
面板模型 连玉君 动态面板模型-幻灯片-
面板模型 连玉君 直击面板数据模型 [免费公开课,2小时]

Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。


关于我们

  • Stata连享会 由中山大学连玉君老师团队创办,定期分享实证分析经验。直播间 有很多视频课程,可以随时观看。
  • 连享会-主页知乎专栏,300+ 推文,实证分析不再抓狂。
  • 公众号推文分类: 计量专题 | 分类推文 | 资源工具。推文分成 内生性 | 空间计量 | 时序面板 | 结果输出 | 交乘调节 五类,主流方法介绍一目了然:DID, RDD, IV, GMM, FE, Probit 等。
  • 公众号关键词搜索/回复 功能已经上线。大家可以在公众号左下角点击键盘图标,输入简要关键词,以便快速呈现历史推文,获取工具软件和数据下载。常见关键词:课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法

连享会主页  lianxh.cn
连享会主页 lianxh.cn

连享会小程序:扫一扫,看推文,看视频……

扫码加入连享会微信群,提问交流更方便

✏ 连享会学习群-常见问题解答汇总:
https://gitee.com/arlionn/WD