// 327evstud4 cfb 8218 set more off capt log close log using 327evstud4.smcl, replace use 327evstud, clear su // define the event and estimation windows local wlo -2 local whi 2 local nevent = `whi' - `wlo' + 1 local elo -60 local ehi -30 bys permno: g event_window = (dif >=`wlo' & dif <=`whi') egen count_event_obs = count(event_window), by(permno) bys permno: g est_window = (dif>=`elo' & dif <= `ehi') egen count_est_obs = count(est_window), by(permno) // screen out firms with inadequate obs drop if count_est_obs < abs(`elo') - abs(`ehi') drop if count_event_obs < `whi' - `wlo' // estimate normal performance g double predicted_return = . levelsof permno, local(keys) loc nf: word count `keys' di "nfirms: `nf'" foreach f of local keys { capt reg ret vwretd if permno==`f' & est_window if _rc==0 { tempvar rhat qui predict double `rhat' if permno==`f' qui replace predicted_return = `rhat' if permno==`f' & event_window } } // calculate abnormal return and CAR, and test for significance gen double abnormal = ret - predicted_return if event_window egen CAR = sum(abnormal) if event_window, by(permno) egen arsd = sd(abnormal) if event_window, by(permno) // test average AR = 0: (CAR/N) / semean, where semean = s / sqrt(N) g test = (1/sqrt(`nevent')) * (CAR / arsd) g pval = 1-normprob(abs(test)) format test %7.2f format pval %5.4f format event_date %td sort test l permno event_date CAR test pval if dif==0 & test < ., noobs sep(0) // tabstat abnormal if permno == 76702 & event_window, stat(N mean sd semean) // ttest abnormal == 0 if permno == 76702 & event_window // test across all events reg CAR if dif==0, robust log close log2html 327evstud4.smcl, replace