options nocenter ls=80; libname temp 'd:\empiricalmethods\jagwangcapm\'; filename tempdir 'd:\empiricalmethods\jagwangcapm\'; *Read Returns on the size portfolios (pid identifies different portfolios); data rets; infile tempdir(dat.ret) missover firstobs=5; input month ret; if month=. then delete; if _n_=1 then pid=1; else if month=1 then pid=pid+1; retain pid; proc sort; by month; proc print data=one (obs=100); proc means; run; *Read Value Weighted Index Returns; data index; infile tempdir(dat.vwd) missover firstobs=2; input month vw; proc means; *Read Factors Prem and Labor; data facs; infile tempdir(dat.fc1) missover firstobs=2; input month prem labor; proc means; run; data rets; merge rets (in=A) index (in=B) facs (in=C); by month; if A and B and C; premvw=prem*vw; proc sort; by pid month; proc means; run; * get vwbeta; proc reg data=rets noprint outest=betavw; model ret=vw; by pid; run; data betavw (keep=pid betavw); set betavw; betavw=vw; proc print data=betavw; run; * get prembeta; proc reg data=rets noprint outest=betapr; model ret=prem; by pid; run; data betapr (keep=pid betapr); set betapr; betapr=prem; proc print data=betapr; run; *Get mean returns over the sample period for each portfolio; proc means data=rets noprint; var ret; by pid; output out=mret mean=mret; run; *Merge data and estimate regression of sample mean returns.; *This gives R-Squared from the paper; data all1; merge mret (in=A) betavw (in=B) betapr (in=C); by pid; if A and B and C; run; proc reg data=all1 outest=estr edf; model mret=betavw betapr; run; proc print data=estr; var _rsq_; run; *Merge betas into monthly returns and estimate FM regressions to get t-stats in the paper; data all; merge rets (in=A) betavw (in=B) betapr (in=C); by pid; if A and B and C; betatv=betaa+betab*prem; proc sort; by month; run; proc reg data=all outest=est1 noprint; model ret=betavw; by month; run; proc means data=est1 n mean t prt; run; proc reg data=all outest=est1 noprint; model ret=betavw betapr; by month; run; proc means data=est1 n mean t prt; run;