clear pause off set more off set mem 1100m set matsize 800 cd "C:\Documents and Settings\jwolfers\My Documents\Justin@Wharton\Female CEOs\Final - JEEA" * Get the Execucomp Sample use "Execucomp", clear egen tagcusip=tag(cusip) outsheet cusip using cusips.txt if tagcusip==1, nonames noquote replace egen taggvkey=tag(gvkey) outsheet gvkey using gvkey.txt if taggvkey==1, nonames noquote replace * Start by defining my universe use "Execucomp", clear egen companies=group(gvkey) summ companies egen execs=count(execid), by(gvkey year) drop if execs==0 /*Some company-year observations are purely markers, and the company isn't really in Execucomp */ gen possibleceo=1 if becamece~=. | leftofc~=. | pceo=="CEO" | ceoann=="CEO" * gen possceo=strpos(title, "CEO") + strpos(titleann, "CEO") \ replace possibleceo=1 if possceo>0 egen ceoyears=sum(possibleceo), by(execid gvkey) keep if ceoyears>0 drop ceoyears * Fix Start and end dates replace becamece=mdy(1,1,1992) if exec_fna=="Kathleen" & exec_lna=="Wade" /*Not sure when she started, but presumably prior to 1992*/ replace becamece=mdy(1,1,1994) if exec_fna=="Nancy" & exec_lna=="Pedot" /* Started sometime in 1994; still awaiting more detail */ replace becamece=mdy(5,7,1998) if exec_fna=="Margaret" & exec_lna=="Whitman" /* Execucomp has the wrong date*/ replace execid=17966 if exec_fna=="Paula" & (exec_lna=="Rosput" | exec_lna=="Reynolds") replace exec_lna="Reynolds" if execid==17966 /*Paula Rosput got married, becoming Paula Reynolds*/ replace becamece=mdy(1,1,1994) if exec_fna=="Stephanie" & exec_lna=="Di Marco" & year==2003 /* This denotes the first of her two periods as CEO */ replace leftofc=mdy(11,19,1999) if exec_fna=="Stephanie" & exec_lna=="Di Marco" & year==2003 replace becamece=mdy(6,1,2001) if exec_fna=="Betsy" & exec_lna=="Holden" /* This is when Kraft was spun off from Philip Morris*/ replace becamece=mdy(1,1,2004) if exec_fna=="Susan" & exec_lna=="Ivey" /* This is when she started; not 6 months later. She was CEO of B&W, but they appear not to be in Compustat*/ replace becamece=mdy(9,26,2000) if exec_fna=="S." & exec_lna=="Marce" /* This is when the subsidiary she was CEO of IPO'd */ * Other cases to analyze: S. Merce Fuller replace leftofc=. if leftofcmdy(1,1,2004) | (year(becamece)==coend)) replace becamece=mdy(1,1,costart) if year==costart & becamece==. & (ceoann=="CEO" | leftofcmdy(12,31,2004) drop if leftofc==. | becamece==. * Add a simple gender identifier gen female=1 if pgender=="FEMALE" replace female=0 if pgender=="MALE" replace female=-1 if pgender=="" * Appendix Table 1 gen str40 ceoname=exec_fna+" "+exec_lna * Number of CEOs in dataset egen fceos=group(ceoname) if female==1 egen mceos=group(ceoname) if female~=1 summ mceos fceos /* Reports number of male and female ceos with unique names */ drop mceos fceos * Create dataset of female ceos gen reign=becamece collapse (mean) becamece leftofc female, by(execid ceoname gvkey cusip ticker reign) egen ceono=rank(became+execid/1000000), by(gvkey) /*Make sure to keep track of co's with >1 CEO*/ keep female became left execid ceoname cusip ceono gvkey reshape wide female became left execid ceoname, i(gvkey) j(ceono) sort gvkey compress save "FemaleCEOs.dta", replace * Ensure that CRSP_Monthly links to last day of the month use CRSP_Monthly, clear for num 1/5: replace date=date+1 if month(date+1)==month(date) & X==X egen tagcrsp=tag(permno date) keep if tagcrsp==1 /*This ensures the unit of observation is a month, not an event*/ drop tagcrsp sort permno date save, replace * Add a year variable to CCM_Annual use CCM_Annual, clear * gen year=year(fyenddt) sort gvkey year fyr save, replace /** Match on CCM and then CRSP using npermno**/ use CCM_PDE_Monthly, clear gen ccm_pde_monthly=1 sort gvkey merge gvkey using FemaleCEOs gen execucomp=1 drop if _merge==2 rename _merge _merge_female for X in num 1/8: replace becameceX=mdy(1,1,1992) if becameceXmdy(12,31,2004) gen maletime=0 gen femaletime=0 gen monthend=date gen monthbegin=mdy(month(date), 1, year(date)) for X in num 1/8: replace femaletime=femaletime+(femaleX==1)*(min(monthend, leftofcX-1)-max(monthbegin,becameceX)) if monthbegin<=leftofcX-1 & monthend>=becameceX for X in num 1/8: replace maletime = maletime+(femaleX==0)*(min(monthend, leftofcX-1)-max(monthbegin,becameceX)) if monthbegin<=leftofcX-1 & monthend>=becameceX gen female=femaletime/(femaletime+maletime) drop femaletime maletime la var female "Proportion of this month with a female CEO" for any execid becamece leftofc endfemale: gen X=. gen ceoname="" for Y in any execid ceoname becamece leftofc: for num 1/8: replace Y=YX if date>=becameceX & date=becameceX & datemdy(1,1,1992) & datemdy(1,1,1900) gen end=leftofc if leftofc=Y & siccd<=Z label define sicdiv 1 "Agriculture" 2 "Mining" 3 "Construction" 4 "Manufacturing" 5 "Transport etc." 6 "Wholesale" 7 "Retail" 8 "Finance" 9 "Services" 10 "Public Admin." label value sicdivision sicdiv egen crsp_obs=count(ret), by(execid gvkey becamece) list ceoname begin end coname ticker sicdiv if crsp_obs>0 & crsp_obs~=. & endfemale==1 & tagfem, clean compress header noobs list ceoname begin end coname ticker sicdiv if crsp_obs==0 & endfemale==1 & tagfem, clean compress header noobs pause * Merge in CCM_Annual gen year=year(date)-1 if month(date)<=fyr replace year=year(date) if month(date)>fyr la var year "Denotes the year in which we must look for last year's compustat results" sort gvkey year fyr merge gvkey year fyr using CCM_Annual tab _merge drop if _merge==2 rename _merge _merge_CCM_Annual drop year * Merge in Consumption Deflator gen month_pcon=month(fyenddt) gen year_pcon=year(fyenddt) sort year_pcon month_pcon merge year_pcon month_pcon using PConDeflator.dta drop if _merge==2 drop _merge drop year_pcon month_pcon * Merge in betas: CRSP Year-end Beta Deciles Assignment file [CRSP Portfolio Assignments] gen year=year(date)-1 sort permno year merge permno year using Betas_NYSEAMEX tab _merge drop if _merge==2 rename _merge _merge_beta_NYSEAMEX sort permno year merge permno year using Betas_Nasdaq, update tab _merge drop if _merge==2 rename _merge _merge_beta_Nasdaq drop year * Generate Gompers Ishii Metrick variables replace prc=. if prc<=0 gen dt=year(date)*12+month(date)-(1992*12+1) tsset gvkey dt gen market=shrout*prc*1000/(pcon/100) gen exchange=1 if exchcd==1 | exchcd==31 replace exchange=2 if exchcd==2 | exchcd==32 replace exchange=3 if exchcd==3 | exchcd==33 label define exchange 1 "NYSE" 2 "AMEX" 3 "Nasdaq", modify label values exchange exchange gen nasdum=(exchange==3) gen sp500=(cpspinm=="1") gen bm=data60/(data199*data25) gen size=l2.market gen price=l2.prc gen nydvol=l2.prc*100*l2.vol*(exchange==1 | exchange==2) gen nadvol=l2.prc*100*l2.vol*(exchange==3) gen totalvol=l2.prc*100*l2.vol gen yld=data21/(data199*data25) gen ret23=1*(1+l2.ret)*(1+l3.ret)-1 gen ret46=1*(1+l4.ret)*(1+l5.ret)*(1+l6.ret)-1 gen ret712=1*(1+l7.ret)*(1+l8.ret)*(1+l9.ret)*(1+l10.ret)*(1+l11.ret)*(1+l12.ret)-1 gen sgrowth=. for num 60/12: replace sgrowth=(data12/LX.data12)^(12/X)-1 if sgrowth==. for var size nydvol nadvol totalvol price: replace X=ln(X) gen sz=exp(size) gen pe=data199/data58 gen employees=data29*1000 * Append Fama-French 1997 49 industry codings (updated) gen sic=siccd replace sic=l.sic if sic==. gsort gvkey -dt replace sic=sic[_n-1] if sic==. do FamaFrenchIndustry.do gen year=year(date) gen month=month(date) sort ffind year month merge ffind year month using FFIndustry_Returns tab _merge drop if _merge==2 rename _merge _merge_FFIndustry_Returns drop year month * Merge factor data sort date merge date using fivefactors.dta rename _merge _merge_5factors save JEEAData,replace