Estimating Missing Delisting Returns

Richard P. Rumelt and Fan Xia
(UCLA Anderson Emeritus and Rennes School of Business)

SAS code used to compute Table 1 and Table 2 in the paper

ods html;
/*Prepare daily file including dlret1 and dlret2 with decade labels */
data delist.prcret;
set bb.daily ;
year=year(date);
attrib ldecade length=$7 label=”Period Label”;
select;
    when (year in(1925:1930)) ldecade=”1926-30″;
    when (year in(1931:1940)) ldecade=”1931-40″;
    when (year in(1941:1950)) ldecade=”1941-50″;
    when (year in(1951:1960)) ldecade=”1951-60″;
    when (year in(1961:1970)) ldecade=”1961-70″;
    when (year in(1971:1980)) ldecade=”1971-80″;
    when (year in(1981:1990)) ldecade=”1981-90″;
    when (year in(1991:2000)) ldecade=”1991-00″;
    when (year in(2001:2010)) ldecade=”2001-10″;
    when (year in(2011:2020)) ldecade=”2011-20″;
end;
dlret2 = dlret;
attrib dltype length=$12 label=”Type of Delisting”;
if ~missing(dlstcd) and dlstcd > 199 then do;
    if dlret=.T then do;
        dlval = max(dlamt,dlprc);
        if ~missing(dlval) and ~missing(prc) then dlret1=divide(dlval, prc)-1;
        dlret2 = coalesce(dlret, dlret1);
    end;
end;
keep permno date year ldecade ret ret_L dlret dlret1 dlret2 dlamt dlprc dlstcd ;
run;

/*File prcdlret has only delistings */
data delist.prcdlret;
set delist.prcret;
if not missing(dlstcd) and dlstcd > 199;
run;
proc sort data=delist.prcdlret;
by ldecade year;
run;

/*MACRO to perform proc means*/
%macro domeans(thevar,theclass);
Title &thevar._&theclass;
proc means data=delist.prcdlret n nmiss mean median stddev min max;
class &theclass;
var &thevar;
output out=delist.&thevar._by_&theclass
    n= nmiss= mean= median= stddev= min= max= /autoname;
run;
%mend;

%domeans(dlret,ldecade);
%domeans(dlret1,ldecade);
%domeans(dlret2,ldecade);
%domeans(dlret,dlstcd);
%domeans(dlret2,dlstcd);

/*PROC MIXED RANDOM EFFECTS MODELS */
Title mixed dlret2=[dlstcd]
ods output solutionr=delist.mix_dl2_cd_R;
proc mixed data=delist.prcdlret;
class dlstcd;
model dlret2 = /s noint ;
random dlstcd /s;
run;

Title mixed dlret2= ret [dlstcd];
ods output solutionf=delist.mix_dl2_ret_cd_F;
ods output solutionr=delist.mix_dl2_ret_cd_R;
proc mixed data=delist.prcdlret;
class dlstcd;
model dlret2 = ret/s noint ;
random dlstcd /s;
run;

ods _all_ close;