事件研究法

本文主要讲的是事件研究法的sas代码的编程实现过程,所以关于事件研究法的定义,理论框架,应用范围等等均不在文章范围内。根据下面的过程即可完成相应的结果,

1,首先你要准备好2-3个数据集:

     1,事件数据集a:包含股票名称,事件日日期,具体事件等几个变量;

     2,股票数据集b,包含股票代码,日期,收益率或收盘价,

    3,市场指数数据集c,包含股票代码,日期,收益率或收盘价,对应的无风险收益率;如果你使用因子模型估计,那就要包含对应的因子数据

2,具体实现思路:

             其实最难的就是如何找到对应公告日前后10个交易日或前220到前10个交易日的数据。

1,首先你要有对应的全时期内的交易日:这个你直接根据市场指数数据集来,然后找到对应的所有交易日对应的前220个交易日的日期,前10个交易日的日期,前7个交易日的日期,后7个交易日的日期(这里假设你计算时间窗口期为-7,7)。代码如下:

首先生成所有交易日-220,-10的日期:

data  rq1;
  set c;
   do i = -220 to -10;
       date1 = date + i;output;
   end;
run;

再生成所有交易日-7,7的日期:

data  rq2;
  set c;
   do i = -7 to 7;
       date1 = date + i;output;
   end;
run;

然后找到对应的前置日期:

proc expand data = c out = c1;
convert date = lag_220 / transformout = (lag 221);
convert date = lag_10 / transformout = (lag 11);
convert date = lag_7 / transformout = (lag 8);
convert date = lea_7 / transformout = (lead 8);
run;

然后将c1数据集和事件数据集合并,也就是说将报告日期对应的前置日期找出来了。

然后将合并数据集d与总的股票数据集b合并,根据筛选条件得到相应的窗口期数据集和事件期数据集,代码如下:

data ck;
  merge b d;
  by code;
  if lag_7 < time < lea_7;
run;

data sj;
  merge b d;
  by code;
  if lag_220 < time < lag_10;
run;

后续的工作就比较简单了,将ck,sj与c再合并,生产c1,c2,先在c1中分组求beta,与c2合并后求异常收益率AR即可:分组代码如下:

proc reg data = hg outest=beta noprint;
by code;
model r = rm;
quit;
run;

异常收益率:

data all;
  merge c2 beta;
  by code;
  ar = r - ( beta*rm + Intercept) ;
run;

注:上述公告期需要为交易日,如果公告期不是交易日,你可以先将期转化为最近的一个交易日。如果你需要求的是自然日而非交易日的异常收益率则更为简单,求日期窗口的思路如下:

data 窗口期;
   set a;
   do i = -220 to -10;date1=date+i;
   output;end;
run;

data 事件期;
   set a;
   do i = -7 to 7;date1=date+i;
   output;end;
run;
————————————————

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值