真实盈余管理 Stata程序
1. 真实盈余管理的基本原理
文献中广泛采用真实盈余管理的方法是 Roychowdhury (2006) 。
其基本原理是:分别计算经营活动的异常现金流 ABCFO_{i,t} 、异常生产成本 ABPROD_{i,t} 、异常酌量性费用 ABDISEXP_{i,t} ,进而得到真实盈余管理。
具体计算方法如下:
当公司进行向上的真实盈余管理时,会通过扩大生产以降低单位产品的成本获得更高的单位产品利润,表现出存货成本的增加,即异常生产成本增加;通过加大折扣放松信用销售增加利润,会带来现金流的减少,即异常经营现金流净额减少;通过减少R&D支出、广告费用、管理费用等方式增加利润时,则会导致酌量性费用下降。
Roychowdhury\left( 2006 \right) 计算真实盈余管理总量时,可用下列公式:
REM_{i,t}= -\left( \frac{ABCFO_{i,t}}{A_{i,t-1}} \right)+\left( \frac{ABPROD_{i,t}}{A_{i,t-1}} \right) -\left( \frac{ABDISEXP_{i,t}}{A_{i,t-1}} \right)
2. 真实盈余管理的分析步骤
2.1 第一步:估计正常生产经营活动现金流量及计算abCFO
*- 按行业年度回归分析
use CFO, clear
*-变量winsorise
sum cfo At_1 s ds, detail
winsor2 cfo At_1 s ds, cuts(1 99) replace
sum cfo At_1 s ds, detail
replace ind = "C9" if ind=="C2"
*-每年度每个行业至少保留 15 家公司
bysort ind year: egen num_ind_year = count(stkcd)
keep if num_ind_year >=15
*-基本统计分析
tab ind year
egen g=group(year ind)
return list
local n=r(max)
g e=.
forv i=1/`n'{
qui reg cfo At_1 s ds if g==`i'
qui predict r if e(sample),r
qui replace e=r if e(sample)
drop r
drop g
rename e abcfo
save abCFO, replace
2.2 第二步:估计正常生产成本及计算AbPROD
use PROD, clear
sum prod At_1 s ds ds_L, detail
winsor2 prod At_1 s ds ds_L, cuts(1 99) replace
sum prod At_1 s ds ds_L, detail
egen g=group(year ind)
local n=r(max)
gen e=.
forv i=1/`n'{
qui reg prod At_1 s ds ds_L if g==`i'
qui predict r if e(sample),r
qui replace e=r if e(sample)
drop r
drop g
rename e abprod
save abPROD, replace
2.3 第三步:计正常费用支出及计算AbDISX
*- 按行业年度回归分析
use DISX, clear
sum disx At_1 s, detail
winsor2 disx At_1 s, cuts(1 99) replace
sum disx At_1 s, detail
egen g=group(year ind)
local n=r(max)
gen e=.
forv i=1/`n'{
qui reg disx At_1 s if g==`i'
qui predict r if e(sample),r
qui replace e=r if e(sample)
drop r
drop g
rename e abdisx
save abDISX, replace
2.4 第四步:构建RM可以综合衡量企业真实盈余管理水平
use abCFO1, clear
merge 1:1 stkcd year using abPROD, nogen keep(3)