# Jones模型计算可操纵应计项的方法-经管之家官网！

>>

## TOP热门关键词

/*basedonmodifiedJonesmodel,BSmodel,DDmodel*//*GTA_cmn--公司研究数据库*//*gta_mkt--股票市场数据库*//****************************************************************//*总应计项定义/*TA=（△流动资产-△现 ...
 扫码加入财会交流群
/*based on modified Jones model, BS model, DD model*/
/* GTA_cmn--公司研究数据库*/
/*gta_mkt--股票市场数据库*/
/****************************************************************/
/*总应计项定义
/*TA=（△流动资产-△现金）-（△流动负债—△短期借款）-折旧 =(d_fa-d_cs)-(d_fb-d_sd)-ac
/*流动资产fa:FS_Combas.A001100000
/*现金cs:FS_Combas.A001101000
/*流动负债fb:FS_Combas.A002100000
/*短期借款sd:FS_Combas.A002101000
/*折旧ac:FS_Comscfi.D000103000(从2007开始)
/*回归公式:TA/A on 1/A,(△REV-△REC)/A,PPE/A
/*△REV当期营业收入与上期营业收入的差额:FS_Comins.B001100000
/*△REC当期应收账款与上期应收账款的差额:FS_Combas.A001111000(从2007开始)
/*PPE固定资产净值:FS_Combas.A001212000
/*A总资产:FS_Combas.A001000000
/*
/****************************************************************/
/*1.0 合并财务报表，仅保留年报*/
proc sql;
create table acrue_temp0
as select bas.stkcd,bas.accper,A001100000 as fa,A001101000 as cs,A002100000 as fb,A002101000 as sd,D000103000 as ac,
B001100000 as REV,A001111000 as REC,A001212000 as PPE,A001000000 as A
from csmar.FS_Combas(where=(TYPREP='A' and substr(ACCPER,6,2)='12')) as bas
left joincsmar.FS_Comins(where=(TYPREP='A' and substr(ACCPER,6,2)='12')) as ins on bas.stkcd=ins.stkcd and bas.ACCPER=ins.ACCPER
left joincsmar.FS_Comscfi(where=(TYPREP='A' and substr(ACCPER,6,2)='12')) as cfi on bas.stkcd=cfi.stkcd and bas.ACCPER=cfi.ACCPER;
quit;
data acrue_temp0;
set acrue_temp0;
ACCPER_dt=mdy(input(substr(ACCPER,6,2),2.),input(substr(ACCPER,9,2),2.),input(substr(ACCPER,1,4),4.));
format ACCPER_dt YYMMDD10.;
run;
proc sql;
create table acrue_temp1 as select a.*,b.NINDCD
from acrue_temp0 as a
left join csmar.Trd_co as b on a.stkcd=b.stkcd;
quit;
/*1.1 生成各指标滞后项*/
proc sql;
create table acrue_temp2 as select a.stkcd,a.ACCPER_dt,year(a.ACCPER_dt) as year,a.NINDCD,
case when substr(a.NINDCD,1,1)='C' then substr(a.NINDCD,1,2)
else substr(a.NINDCD,1,1)
end as NINDCD2,
a.fa,a.cs,a.fb,a.sd,a.ac,a.REV,a.REC,a.PPE,a.A,
lag.fa as l_fa,lag.cs as l_cs, lag.fb as l_fb,lag.sd as l_sd,lag.ac as l_ac,lag.REV as l_rev,lag.REC as l_rec,
lag.PPE as l_ppe,lag.A as l_a,
a.fa-lag.fa as d_fa,a.cs-lag.cs as d_cs,a.fb-lag.fb as d_fb,a.sd-lag.sd as d_sd,a.ac-lag.ac as d_ac,
a.REV-lag.rev as d_rev,a.REC-lag.rec as d_rec,a.PPE-lag.ppe as d_ppe
from acrue_temp1 as a
left join acrue_temp1 as lag on a.stkcd=lag.stkcd and year(a.ACCPER_dt)=year(lag.ACCPER_dt)+1;
quit;
/*1.2 计算总应计项*/
data acrue_temp2;
set acrue_temp2;
TA=(d_fa-d_cs)-(d_fb-d_sd)-ac;
run;
/*1.3 生成回归用指标*/
data acrue_temp2;
set acrue_temp2;
TA_sd=TA/l_a;
CA=1/l_a;
REV_REC_sd=(d_rev-d_REC)/l_a;
PPE_sd=PPE/l_a;
if year>=2000;
run;
data acrue_temp2;
set acrue_temp2;
if TA_sd~=.;
if CA~=.;
if REV_REC_sd~=.;
if PPE_sd~=.;
run;
proc sort data=acrue_temp2;by year;run;
/*1.4对于极端值，用分位点值代替Winsorizes or Trims Outliers*/
proc means data=acrue_temp2 noprint;
var TA_sd CA REV_REC_sd PPE_sd;
by year;
output out=sumstat p1=TA_sdp1 CAp1 REV_REC_sdp1 PPE_sdp1
p99=TA_sdp99 CAp99 REV_REC_sdp99 PPE_sdp99;
run;
proc sql;
create table acrue_temp3 as select a.*,b.*
from acrue_temp2 as a
left join sumstat as b on a.year=b.year;
quit;
data acrue_temp3(drop=_TYPE_ _FREQ_ TA_sdp1 CAp1 REV_REC_sdp1 PPE_sdp1 TA_sdp99 CAp99 REV_REC_sdp99 PPE_sdp99);
set acrue_temp3;
if TA_sd<TA_sdp1 then TA_sd=TA_sdp1;
if CA<CAp1 thenCA=CAp1;
if REV_REC_sd<REV_REC_sdp1 then REV_REC_sd=REV_REC_sdp1;
if PPE_sd<PPE_sdp1 then PPE_sd=PPE_sdp1;
if TA_sd>TA_sdp99 then TA_sd=TA_sdp99;
if CA>CAp99 thenCA=CAp99;
if REV_REC_sd>REV_REC_sdp99 then REV_REC_sd=REV_REC_sdp99;
if PPE_sd>PPE_sdp99 then PPE_sd=PPE_sdp99;
run;
/*1.5每年行业分组内，至少大于5个观测*/
proc sort data=acrue_temp3;
by year NINDCD2;
run;
proc sql;
create table acrue_temp4 as select year,NINDCD2,count(TA) as NUM
from acrue_temp3
group by year,NINDCD2;
quit;
proc sql;
create table acrue_temp5 as select a.*,b.num
from acrue_temp3 as a
left join acrue_temp4 as b on a.year=b.year and a.NINDCD2=b.NINDCD2;
quit;
data acrue_temp6;
set acrue_temp5;
if num>=5;
run;
/*2.0 分行业、年份回归:TA_sdresid*/
proc reg data=acrue_temp6 noprint;
model TA_sd=CA REV_REC_sd PPE_sd/noint;
by year NINDCD2;
output out=ab_acrue
p=TA_sdhat
r=TA_sdresid;
run;
proc sort data=ab_acrue;
by stkcd ACCPER_dt;
run;
data Temp.ab_acrue;
set ab_acrue;
label TA_sdresid="可操纵应计项";
run;
「经管之家」APP：经管人学习、答疑、交友，就上经管之家！

## 人气文章

#### 本文标题：Jones模型计算可操纵应计项的方法

1.凡人大经济论坛-经管之家转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责；
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性，不作出任何保证或承若；
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。