options nocenter ls=80; libname temp 'd:\empirical methods\'; filename tempdir 'd:\empirical methods\'; *Read in data created from Ken French's website for the 10 size portfolios; data ret10; informat date yymmn6.; format date yymmn6.; infile tempdir(sizedecilereturns.csv) missover firstobs=3 dlm=','; input date r1-r10; year=year(date); month=month(date); proc sort; by date; proc print data=ret10 (obs=20); proc means; run; *Read in the Fama French Factors from Ken French's website; data fffact; informat date yymmn6.; format date yymmn6.; infile tempdir(F-F_Research_Data_Factors.txt) missover firstobs=5; input date mkt smb hml rf; lmkt=lag(mkt); proc sort; by date; proc print data=fffact (obs=100); proc means; run; data all; merge ret10 fffact; by date; r1=r1-rf; r2=r2-rf; r3=r3-rf; r4=r4-rf; r5=r5-rf; r6=r6-rf; r7=r7-rf; r8=r8-rf; r9=r9-rf; r10=r10-rf; if year<1963 then delete; proc means; run; *Perform Wald test using GMM Newey West Kernel; proc model data=all; parms a1-a10 b1-b10; instruments mkt; eq.one=r1-(a1+b1*mkt); eq.two=r2-(a2+b2*mkt); eq.three=r3-(a3+b3*mkt); eq.four=r4-(a4+b4*mkt); eq.five=r5-(a5+b5*mkt); eq.six=r6-(a6+b6*mkt); eq.seven=r7-(a7+b7*mkt); eq.eight=r8-(a8+b8*mkt); eq.nine=r9-(a9+b9*mkt); eq.ten=r10-(a10+b10*mkt); fit one two three four five six seven eight nine ten/gmm kernel=(bartlett,4,0); test a1, a2, a3, a4, a5, a6, a7, a8, a9, a10,/wald; run; *Perform test of overidentifying restrictions using GMM; proc model data=all; parms b1-b10; instruments mkt; r1=b1*mkt; r2=b2*mkt; r3=b3*mkt; r4=b4*mkt; r5=b5*mkt; r6=b6*mkt; r7=b7*mkt; r8=b8*mkt; r9=b9*mkt; r10=b10*mkt; fit r1 r2 r3 r4 r5 r6 r7 r8 r9 r10/gmm kernel=(bartlett,4,0); run;