-
Notifications
You must be signed in to change notification settings - Fork 0
/
Finding_market_alpha.sas
77 lines (59 loc) · 1.36 KB
/
Finding_market_alpha.sas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
libname mylib "/home/dtiwari40/my_courses/jaellis50/Anomalies";
libname assign "/home/dtiwari40/sasuser.v94/hw_6";
proc sql;
Create table stock60 as
Select * from mylib.crspm_small
where 2014<=year(date)<=2018
group by permno
having count(*)>=60;
Quit;
proc sql;
create table factor as
select a.*, b.*, a.ret-b.rf as exret
from stock60 as a, mylib.factors_monthly as b
where a.date=b.dateff;
quit;
proc sort data=factor;
by permno;
run;
title "FamaFrench3 factor regression for Alpha";
proc reg data = factor plots=none noprint outest=regressed;
model exret = mktrf hml smb;
by permno;
quit;
data coefficients(rename=(Intercept=Alpha));
set regressed;
if _TYPE_="PARMS";
run;
proc sort data=mylib.MSENAMES out= MSENAMES;
by permno NAMEENDT;
run;
data most_recent_name;
set MSENAMES;
by permno NAMEENDT;
if last.permno=1;
run;
proc sql;
create table Merged as
select a.*, b. COMNAM from coefficients a join most_recent_name b
on a.Permno=b.permno;
quit;
proc rank data=Merged out=rank DESCENDING;
var Alpha;
ranks que;
run;
data assign.top5(Keep= permno Alpha comnam que);
set rank;
if que<6;
format Alpha percentn10.2;
Label
Alpha="FF3-factor Monthly alpha"
comnam="CompanyName"
que="Rank for VAriable alpha"
run;
proc sort data=assign.top5;
by que ;
run;
proc sgplot data=assign.top5;
vbar que / response=Alpha;
run;