Valuation: VC edition - London School of Economics
Download
Report
Transcript Valuation: VC edition - London School of Economics
Testing Factor Models
Downloads
Today’s work is in: matlab_lec07.m
Functions we need today:
Datasets we need today: ff3fact.m,
ff6ret.m, aggret.m, pdin.m,
data_sandp.m
Factor Models
Suppose factors are good proxies for risk
Suppose factors are uncorrelated
Suppose factors themselves can be represented by
excess returns (ie Rm-Rf or Ri-Rk)
E[Ri-Rk]=B1iE[F1]+B2iE[F2]+… +εit where
B1i=Cov[Ri-Rk,F1]/Var[F1] …
This implies that in a regression:
Rit-Rft=αi+β1iF1t+β2iF2t+εit and αi=0 for all assets!
(this part does not need factors to be uncorrelated)
If α≠0 for some asset, either (1) This is model does
not do a good job or (2) This asset, for some reason,
has an abnormal return
What are
Size and B/M?
Book value is the value of the firm based on
accounting numbers
Market value is the value of the firm based on
its stock price
Firms with low book to market values have little
accounting value, but high market value,
market believes they have many growth
opportunities not reflected in accounting
numbers, they are growth firms
Firms with high book to market values are value
firms
Size is just the market value of the firm
Sorting
Portfolios
Fama and French calculate each firm’s size and
B/M each year and then sort them according to
those quantities
This is called a double sort
They then create 6 portfolios (3x2), ie (highest
B/M+lowest size), (middle B/M+highest size), etc
They calculate each portfolio’s return for one year
Next year they resort and form new portfolios
This is a strategy that a market participant (ie
mutual fund) could follow as well
FF factors
They use the sorted portfolios to create new,
long/short portfolios
SMB (small minus big) goes long in the small
portfolio, and finances this by going short in the
large portfolio, its return is RS-RB
HML (high minus low) goes long in the high B/M
(value) portfolio, and finances this by going
short in the low B/M (growth) portfolio, its
return is RB-RL
Note, these are zero cost portfolios, other than
transaction costs, these portfolios cost you
nothing
Download Returns
and Factors
Load the files ff3fact.m and ff6ret.m into Matlab
Alternately, save files into your matlab directory
and type their names into the matlab prompt
This data comes from Kenneth French’s website:
http://mba.tuck.dartmouth.edu/pages/faculty/ken.french/data_library.html
%
Small
Big
% Low
2
High
Low
2
High
>>disp(mean(FF6ret(:,2:7)));
1.0234 1.3215 1.5255 0.9237 1.0125 1.2404
% Mkt-RF
SMB
HML
RF
>>disp(mean(FFfactors(:,2:5)));
0.6511 0.2314 0.4097 0.3064
What is Risk?
Small and Value stocks have higher
average returns, does this imply market
is inefficient? No!
They should have higher average
returns, if they are more risky? Are they
more risky? What is risk?
Assets that covary with aggregate risk
are more risky. What is aggregate risk?
CAPM says the market return is a proxy
for aggregate risk
Test CAPM on FF6
The CAPM says that the average return on any
asset (or portfolio of assets) should depend on
the covariance of that asset (or portfolio) with
the market return
E[R-Rf]=[Cov(R,Rm)/Var(Rm)]*E[Rm-Rf]
Think back to the definition of regression: if
we regress Rt-Rtf=α+β*(Rtm-Rtf)+εt, then
β=[Cov(R-Rf,Rm-Rf)/Var(RmRf)]=[Cov(R,Rm)/Var(Rm)]
and α=E[R-Rf]-B*E[Rm-Rf]
Thus, CAPM predicts α=0 for each asset
Test CAPM on FF6
>>[T w]=size(FFfactors);
>>X=[ones(T,1) FFfactors(:,2)];
>>for i=1:6;
Y=FF6ret(:,1+i)-FFfactors(:,5);
[regcoef sterr]=regress(Y,X);
outcapm(i,:)=[regcoef(1) sterr(1,1) sterr(1,2)];
end;
>>disp(outcapm);
>>plot(mean(FF6ret(:,2:7)),mean(FF6ret(:,2:7)),'k-');
>>hold on;
>>plot(mean(FF6ret(:,2:7)),
mean(FF6ret(:,2:7))-outcapm(:,1)','b.');
Predicted
vs actual
Test FF 3 factor
A multifactor model is similar to a one factor
model
FF 3-Factor Model suggests market is not the
only source of risk, SMB and HML also proxy for
risk
The regression
Rt-Rtf=α+β1*(Rtm-Rtf)+β2*SMBt+β3*HMLt +εt
should have α=0 for each asset
Note that the factors are all excess returns, so
this conforms to definition in first slide
F1=Rm-Rf, F2=RS-RB, F3=RH-RL
Test FF 3 factor
>>[T w]=size(FFfactors);
>>X=[ones(T,1) FFfactors(:,2:4)];
>>for i=1:6;
Y=FF6ret(:,1+i)-FFfactors(:,5);
[regcoef sterr]=regress(Y,X);
out3f(i,:)=[regcoef(1) sterr(1,1) sterr(1,2)];
end;
>>disp(outcapm);
>>plot(mean(FF6ret(:,2:7)),mean(FF6ret(:,2:7)),'k-');
>>hold on;
>>plot(mean(FF6ret(:,2:7)),
mean(FF6ret(:,2:7))-out3f(:,1)','rx');
Predicted
vs actual
Return
Predictability
Returns seem to be weakly predictable
The predictability becomes stronger when we
aggregate returns over longer horizons
Several variables have predictive power, among
these are P/D, P/E, cay, long-term component
of consumption growth
This does not necessarily violate EMH
For example, expected returns may be higher
during recessions, but these are also times
when investors face the most risk, and when
they are most likely to be constrained
Getting P/D data
(optional)
From CRSP get the Market, Value Weighted Return, including
distributions, and excluding dividends for 1926-2008
Since you need to enter the name of a security, use GE (it existed for all
those years)
This is used to make the dataset aggret.m (on my website). This dataset
contains return (including dividends) in the 3rd column, and return
(excluding dividends) in the 4th column. Load this into matlab
>>[T b]=size(aggreturn);
>>price(1)=1; dividend(1)=0;
>>for t=2:T;
timeline(t)=round(aggreturn(t,2)/10000);
price(t)=price(t-1)*(aggreturn(t,4)+1);
%calculate price of firm next year using the ex-dividend return
dividend(t)=price(t-1)*(aggreturn(t,3)+1)-price(t);
%calculate dividend by subtracting ex-dividend price from
%cum-dividend price
end; dividend(1)=dividend(2); %use some number other than zero
This creates a monthly time series for prices (Jan 1926 normalized to 1)
and dividends
Download
Predictors
Load the data from pdin.m on my website
>>pdin;
matrix called pddata (996x5), contains monthly data for
Jan 1926-Dec 2006
Its columns are date, price (normalized to Jan 1926
being 1), dividend, price/dividend, aggregate return
Gordon Growth Model: P/D high implies prices are high
relative to payouts, so high growth expected
>>subplot(2,1,1); plot(pddata(:,5));
>>in=1:12:T;
>>subplot(2,1,2);
plot(round(pddata(in,1)/10000),pddata(in,4));
Note that P/D has increased over the period, have
distributions changed so dramatically?
P/E is a better measure, firms are paying less dividends,
but investors are getting paid in other ways
Monthly Predictability
In practice want to use most recent data
In historical analysis, use extra lags to make
sure you are not using contemporaneous
information
>>[T a]=size(pddata);
>>Y=pddata(7:T,5);
>>X=[ones(T-6,1) pddata(1:T-6,4)/12];
>>[regcoef sterr a3 a4 rsq]=regress(Y,X);
>>disp([regcoef sterr]); disp(rsq(1));
Regression coefficient is negative (high prices
today lead to low returns in future), but not
significant
R2 is very small
Annual
Predictability
What if we try to predict the cumulative annual return
rather than just a monthly return?
Calculate cumulative annual return for year t, regress it on
the P/D ratio in July of t-1
>>T1=floor(T/12); %number of years in our data
>>for i=2:T1;
in=(i-1)*12+1:(i-1)*12+12; %selective index for year i
Y(i,1)=sum(pddata(in,5));
X(i,1)=1;
X(i,2)=pddata((i-1)*12+1-7,4);
end;
>>[regcoef sterr a3 a4 rsq]=regress(Y(2:T1),X(2:T1,:));
>>disp([regcoef sterr]); disp(rsq(1));
R2=7.3%, annual returns over this period are predicted by
P/D!
Daily
Predictability
Technical Analysis: Claims the ability to
forecast the future direction of stock
prices through the study of past market
data, primarily price and volume.
“I realized technical analysis didn't work
when I turned the charts upside down
and didn't get a different answer”
Warren Buffet
“Market really went down [up] today, I
bet its going up [down] tomorrow!”
My dad
Daily
Predictability
>>data_sandp; %daily s&p data, date in 1st column, return
in 2nd
>>T=length(rsandp);
>>i=0; j=0; clear outlow outhigh;
>>for t=1:T-1;
if rsandp(t,2)<-.02;
i=i+1;
outlow(i,1)=rsandp(t+1,2);
end;
if rsandp(t,2)>.02;
j=j+1;
outhigh(j,1)=rsandp(t+1,2);
end;
end;
Daily
Predictability
>>disp([mean(rsandp(:,2)) mean(outlow) mean(outhigh)
std(outlow) std(outhigh)]);
0.0003
0.0004
0.0033
0.0226
>>rmin=min(rsandp(:,2));
>>rmax=max(rsandp(:,2));
>>subplot(2,1,1);
>>hist(outlow,[rmin:.01:rmax]);
>>subplot(2,1,2);
>>hist(outhigh,[rmin:.01:rmax]);
0.0134
Daily Predictability