Regression Analysis: Case Study 1
Dr. Kempthorne
September 23, 2013
Contents
1
Linear Regression Models for Asset Pricing
2
1.1
CAPM Theory
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.2
Historical Financial Data
. . . . . . . . . . . . . . . . . . . . . .
2
1.3
Fitting the Linear Regression for CAPM
. . . . . . . . . . . . . .
9
1.4
Regression Diagnostics
. . . . . . . . . . . . . . . . . . . . . . . .
10
1.5
Adding Macroeconomic Factors to CAPM
. . . . . . . . . . . .
16
1.6
References
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
1
1
Linear Regression Models for Asset Pricing
1.1
CAPM Theory
Sharpe (1964) and Lintner (1965) developed the Capital Asset Pricing Model
for a market in which investors have the same expectations, hold portfolios of
risky assets that are meanvariance efficient, and can borrow and lend money
freely at the same riskfree rate. In such a market, the expected return of asset
j
is
E
[
R
j
]
=
R
riskfree
+
β
j
(
E
[
R
Market
]

R
riskfree
)
β
j
=
Cov
[
R
j
, R
Market
]
/V ar
[
R
Market
]
where
R
Market
is the return on the market portfolio and
R
riskfree
is the return
on the riskfree asset.
Consider fitting the simple linear regression model of a stock’s daily excess
return on the marketportfolio daily excess return, using the S&P 500 Index as
the proxy for the market return and the 3month Treasury constant maturity
rate as the riskfree rate. The linear model is given by:
R
j
*
,t
=
α
j
+
β
j
R
M
*
arket,t
+
j,t
, t
= 1
,
2
, . . .
where
j,t
are white noise:
WN
(0
, σ
2
)
Under the assumptions of the CAPM, the regression parameters (
α
j
, β
j
) are
such that
β
j
is the same as in the CAPM model, and
α
j
is zero.
1.2
Historical Financial Data
Executing the Rscript“fm
casestudy
1
0.r”creates the timeseries matrix
casestudy
1
.data
0
.
00
which is available in the Rworkspace “casestudy
1
0.Rdata”.
> library("zoo")
> load("casestudy_1_0.RData")
> dim(casestudy1.data0.0)
[1] 3373
12
> names(casestudy1.data0.00)
[1] "BAC"
"GE"
"JDSU"
"XOM"
"SP500"
[6] "DGS3MO"
"DGS1"
"DGS5"
"DGS10"
"DAAA"
[11] "DBAA"
"DCOILWTICO"
> head(casestudy1.data0.00)
BAC
GE
JDSU
XOM
SP500 DGS3MO DGS1 DGS5 DGS10
20000103 15.79588 33.39834 752.00 28.83212 1455.22
5.48 6.09 6.50
6.58
20000104 14.85673 32.06240 684.52 28.27985 1399.42
5.43 6.00 6.40
6.49
20000105 15.01978 32.00674 633.00 29.82252 1402.11
5.44 6.05 6.51
6.62
20000106 16.30458 32.43424 599.00 31.36519 1403.45
5.41 6.03 6.46
6.57
2
20000107 15.87740 33.69002 719.76 31.27315 1441.47
5.38 6.00 6.42
6.52
20000110 15.32631 33.67666 801.52 30.83501 1457.60
5.42 6.07 6.49
6.57
DAAA DBAA DCOILWTICO
20000103 7.75 8.27
NA
20000104 7.69 8.21
25.56
20000105 7.78 8.29
24.65
20000106 7.72 8.24
24.79
20000107 7.69 8.22
24.79
20000110 7.72 8.27
24.71
> tail(casestudy1.data0.00)
BAC
GE
JDSU
XOM
SP500 DGS3MO DGS1 DGS5 DGS10 DAAA
20130523 13.20011 23.47254 13.17 91.79 1650.51
0.05 0.12 0.91
2.02 3.97
20130524 13.23009 23.34357 13.07 91.53 1649.60
0.04 0.12 0.90
2.01 3.94
20130528 13.34001 23.41301 13.37 92.38 1660.06
0.05 0.13 1.02
2.15 4.06
20130529 13.46991 23.45269 13.56 92.08 1648.36
0.05 0.14 1.02
2.13 4.04
20130530 13.81965 23.41301 13.73 92.09 1654.41
0.04 0.13 1.01
2.13 4.06
20130531 13.64978 23.13523 13.62 90.47 1630.74
0.04 0.14 1.05
2.16 4.09
DBAA DCOILWTICO
20130523 4.79
94.12
20130524 4.76
93.84
20130528 4.88
94.65
20130529 4.88
93.13
20130530 4.90
93.57
20130531 4.95
91.93
We first plot the raw data for the stock
GE
, the marketportfolio index
SP
500
,
and the riskfree interest rate.
3
> library ("graphics")
> library("quantmod")
> plot(casestudy1.data0.00[,"GE"],ylab="Price",main="GE Stock")
2000
2002
2004
2006
2008
2010
2012
5
10
15
20
25
30
35
40
Index
Price
GE Stock
4
> plot(casestudy1.data0.00[,"SP500"], ylab="Value",main="S&P500 Index")
2000
2002
2004
2006
2008
2010
2012
800
1000
1200
1400
1600
Index
Value
S&P500 Index
5
> plot(casestudy1.data0.00[,"DGS3MO"], ylab="Rate" ,
+
main="3Month Treasury Rate (Constant Maturity)")
2000
2002
2004
2006
2008
2010
2012
0
1
2
3
4
5
6
Index
Rate
3Month Treasury Rate (Constant Maturity)
Now we construct the variables with the log daily returns of GE and the
SP500 index as well as the riskfree asset returns
> # Compute daily log returns of GE stock
> r.daily.GE<zoo( x=as.matrix(diff(log(casestudy1.data0.00[,"GE"]))),
6
You've reached the end of your free preview.
Want to read all 22 pages?
 Spring '17
 Jim Angel