楼主: changgz
16477 11

[学术言谈] Jones模型计算可操纵应计项的方法 [推广有奖]

  • 2关注
  • 27粉丝

讲师版主

已卖:40份资源

讲师

13%

还不是VIP/贵宾

-

威望
0
论坛币
749999 个
通用积分
15.3027
学术水平
59 点
热心指数
57 点
信用等级
50 点
经验
3913 点
帖子
122
精华
2
在线时间
417 小时
注册时间
2013-10-28
最后登录
2025-8-10

楼主
changgz 发表于 2013-12-29 11:25:40 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
/*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;

二维码

扫码加我 拉你入群

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

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

关键词:Jones模型 Jones ones Jon left join 应收账款 股票市场 营业收入 数据库 模型

已有 2 人评分论坛币 学术水平 热心指数 收起 理由
peng3409 + 20 精彩帖子
无尘第二 + 2 + 2 精彩帖子

总评分: 论坛币 + 20  学术水平 + 2  热心指数 + 2   查看全部评分

沙发
wuchunxian999 发表于 2014-1-5 23:47:55
一颗不沉淀的沙子

藤椅
judysmile 发表于 2015-3-4 15:14:35
请问是到什么软件里调试呢?

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

报纸
qllever 发表于 2015-9-5 14:58:41
请问csmar.Trd_co是哪个文件

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

7
sufer222 发表于 2016-4-28 15:41:18
楼主在么,最近在写论文,要求可操纵应计利润,相关数据我搜集好了,可是不会求a1,a2,a3,公式如下,求楼主帮忙啊已经崩溃好久了TAi,t/Ai,t-1=a1*1/Ai,t-1+a2*(REVi,t-RECi,t)/Ai,t-1+a3*PPEi,t/Ai,t-1+Xi,t

8
chaiko 发表于 2016-5-4 10:50:59
赞一个

9
小糊涂_ 在职认证  发表于 2016-8-12 09:08:42
您好,楼主可以给一份样本数据吗?方便大家对照数据看程序

10
M201102030 发表于 2016-10-18 17:05:02
楼主,能给一份数据样本吗?只看程度对应不上,跪求

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注ck
拉您进交流群
GMT+8, 2025-12-30 22:28