全部版块 我的主页
论坛 会计与财务管理论坛 七区 会计与财务管理
16322 11
2013-12-29
/*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 join  csmar.FS_Comins(where=(TYPREP='A' and substr(ACCPER,6,2)='12')) as ins on bas.stkcd=ins.stkcd and bas.ACCPER=ins.ACCPER
  left join  csmar.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 then  CA=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 then  CA=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;

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2014-1-5 23:47:55
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-3-4 15:14:35
请问是到什么软件里调试呢?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-3-10 20:22:39
judysmile 发表于 2015-3-4 15:14
请问是到什么软件里调试呢?
在SAS 里面,直接从CSMAR中下载数据
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-9-5 14:58:41
请问csmar.Trd_co是哪个文件
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-4-22 22:55:56
changgz 发表于 2015-3-10 20:22
在SAS 里面,直接从CSMAR中下载数据
楼主您在吗?我最近要用到琼斯模型写论文,很多问题想请教,能给个联系方式吗?我qq275081163,跪求翻牌,焦虑到失眠了已经。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群