Here is a solution, change the file location before using these codes.
-------------------------------------------
*Pre-requisition:
ssc install rangestat
ssc install egenmore
*Merge two datasheets from excel format, assuming no duplicates in each datasheet. Keep only stock identifiers are inclusive in the two sheets.
clear all
import excel "C:\Users\Downloads\1.xlsx", sheet("Sheet1") firstrow
drop in 1
save "C:\Users\Desktop\masterfile.dta", replace
import excel "C:\Users\Downloads\2.xlsx", sheet("Sheet1") firstrow clear
drop in 1
merge m:1 Stkcd using "C:\Users\Desktop\masterfile.dta"
keep if _merge==3
drop _merge
*Convert data information from string type to time variable that Stata can recognises
gen date1 = date( Annodt , "MDY")
gen date2=date( date ,"MDY")
format date1 date2 %td
*Sort all observations by stock identifier and date
sort Stkcd date2
*For each stock, assgin serial number of date (datenum), obtain target date (target) as the indicator of earning announcement date, then have the time window before/after the date
by Stkcd: gen datenum = _n
by Stkcd: gen target = datenum if date2 == date1
egen td = min(target), by(Stkcd)
gen diff = datenum-td
*Obtain rollowing-window mean of ILLIQ for each stock, time interval set as 30 days. Check if "000001" matches as mannual outcome.
destring ILLIQ,replace
rangestat (mean) ILLIQ , interval( diff 1 30) by(Stkcd)
replace Annodt日后30交易日股票回报率平均值= ILLIQ_mean
keep if Stkcd=="000001" & target!=.
----------------------------------------------------
Comments welcome


雷达卡



京公网安备 11010802022788号







