楼主: geffery2
4047 1

求事件研究法SAS代码 [推广有奖]

  • 0关注
  • 0粉丝

学前班

80%

还不是VIP/贵宾

-

威望
0
论坛币
4 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
80 点
帖子
2
精华
0
在线时间
0 小时
注册时间
2014-6-29
最后登录
2014-6-29

楼主
geffery2 发表于 2014-6-29 10:20:06 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
哪位大神可以指教事件研究法的SAS代码,跪谢!
二维码

扫码加我 拉你入群

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

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

关键词:sas代码 事件研究法 事件研究 研究法

沙发
shelley_a 在职认证  发表于 2014-6-30 15:42:54

proc sort data=srmr;by stkcd trddt;run; /*srmr为日股票收益数据集*/

proc sql;
    create table a as
    Select srmr.*, pceventchoose.annday, pceventchoose.eventnumber
    From srmr inner join pceventchoose ON (pceventchoose.stkcd = srmr.Stkcd);
quit;/*pceventchoose为定义数据数据集*/

proc sort data=a;by stkcd trddt;run;

data a;set a; diff=trddt-annday;run;/*trddt:股票交易日;annday:事件宣告日*/

data b;set a; if diff>=0;run; /*宣告日停牌时事件日的定位*/
data c;set b;by Stkcd;if first.Stkcd then count=-1;count+1;run;

data d;set a; if diff<0;diff=diff*(-1);run;
proc sort data=d; by stkcd diff;run;
data d;set d;
   by Stkcd;if first.Stkcd then count=0;
   count+(-1);run;

data window; set c d;run;
proc sort data=window; by Stkcd trddt;run;

data window;set window; close=trddt-lag(trddt);run;
data window;set window;by stkcd;if first.stkcd then delete;run;

/*市场调整法计算car*/
data window; set window; ar=r-mr1;if close>30/*剔除两个交易日之间间隔30天的样本;时间间隔可自己定义*/ then delete;run;

data pc;set pceventchoose;drop trddt;run;

proc sql;
    create table arf as
    Select stkcd, sum(ar) as car, count(ar) as n
    From window where count<=30 and count>=-30
    group by stkcd;
quit;
data arf; set arf; if n^=61 then delete; run;
proc sql;
    create table pc1 as
    Select pc.*
    From arf inner join  pc on (arf.stkcd=pc.stkcd);
quit;

proc sql;
    create table car3 as
    Select window.stkcd, sum(ar) as car, count(ar) as n
    From window where count<=1 and count>=-1
    group by stkcd;
quit;


data car3; set car3; if n^=3 then delete; run;/*剔除三个交易日不完整的样本*/

/后面为网上下载stata/产生估计窗口和事件窗口,为了保证观察值数目,要count,果然有,所以删除
use y1.dta,clear
gen es_period=1 if dif>=-100&dif<=-30
gen ev_period=1 if dif>=-5&dif<=5
bysort code:egen obs=count(es_period)
bysort code:egen eobs=count(ev_period)

*先用市场调整法计算ar
gen ar1=ret-mret if ev_period==1
bysort code:gen car1=sum(ar1) if ev_period==1
bysort code:egen car1_11=sum(ar1) if ev_period==1

*用市场模型法计算ar
sort code
egen code1=group(code)   
tabstat ret mret if es_period==1,s(n mean sd min max) c(s)   
set more off
gen pret=.
forvalues i=1/381{
list code if code1==`i'&dif==0
reg ret mret if code1==`i'&es_period==1
predict p if code1==`i'                  
replace pret=p if code1==`i'&ev_period==1
drop p
}

gen ar2=ret-pret if ev_period==1
bysort code:egen car2_11=sum(ar2) if ev_period==1

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-9 11:52