在做事件研究法,前两天发了求助帖
https://bbs.pinggu.org/thread-1192259-1-1.html,问题是想把每个事件日的数据与距事件日最近的财务数据(如EPS)对应起来
今天终于把问题解决了,基本的想法是用date命令把事件日以及财务数据公布日的天数列出来,然后进行区分,借鉴了网站上教的事件研究法处理初始数据的方法(详见
http://dss.princeton.edu/online_help/stats_packages/stata/eventstudydataprep.html)想来还是把用到的命令贴出来,希望对童鞋们有用~
use 用来做每个减持事件日对应最近的EPS的.dta,clear
sort stock_code event_date
by stock_code event_date:gen n=_n
keep if n==1
save eventdates
by stock_code: gen eventcount=_N
drop n
by stock_code: keep if _n==1
by stock_code: gen eventcount=_N
drop n
by stock_code: keep if _n==1
sort stock_code
keep stock_code eventcount
save eventcount
use 只有EPS每季度的数据.dta, clear
sort stock_code
merge m:m stock_code using eventcount
use 只有EPS每季度的数据.dta, clear
sort stock_code
merge m:m stock_code using eventcount
keep if _merge==3
drop _merge
expand eventcount
drop eventcount
sort stock_code accounting_period
by stock_code accounting_period: gen set=_n
sort stock_code set accounting_period
save stockdata2
use eventdates, clear
drop n
by stock_code: gen set=_n
sort stock_code set
save eventdates2
use stockdata2, clear
merge m:m stock_code set using eventdates2
keep if _merge==3
drop _merge
egen group_id = group( stock_code set)
save 处理好的每个减持公告日对应了全部的EPS
use 处理好的每个减持公告日对应了全部的EPS.dta
gen date1=date( event_date,"YMD")
gen date2=date( accounting_period,"YMD")
gen dif1= date1- date2
sort group_id accounting_period
by group_id:egen dif2=min( dif1) if dif1>=0
keep if dif1== dif2
save 已经把每个减持公告日对应了距离最近的每股收益数据
use 做子市场反应的起点.dta,clear
drop set volume percent group_id p target
merge m:m stock_code event_date using 已经把每个减持公告日对应了距离最近的每股收益数据.dta
keep if _merge==3
drop set group_id dif1 dif2 _merge
drop date1 date2
sort stock_code event_date trading_date
egen group_id=group( stock_code event_date)
save 做不同水平EPS的基础数据