Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/calcul9/public_html/wp-content/themes/suffusion/functions/media.php on line 580

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/calcul9/public_html/wp-content/themes/suffusion/functions/media.php on line 583

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/calcul9/public_html/wp-content/themes/suffusion/functions/media.php on line 586

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/calcul9/public_html/wp-content/themes/suffusion/functions/media.php on line 589

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/calcul9/public_html/wp-content/themes/suffusion/functions/media.php on line 592

Warning: Cannot modify header information - headers already sent by (output started at /home/calcul9/public_html/wp-content/themes/suffusion/functions/media.php:580) in /home/calcul9/public_html/wp-includes/rest-api/class-wp-rest-server.php on line 1673

Warning: Cannot modify header information - headers already sent by (output started at /home/calcul9/public_html/wp-content/themes/suffusion/functions/media.php:580) in /home/calcul9/public_html/wp-includes/rest-api/class-wp-rest-server.php on line 1673

Warning: Cannot modify header information - headers already sent by (output started at /home/calcul9/public_html/wp-content/themes/suffusion/functions/media.php:580) in /home/calcul9/public_html/wp-includes/rest-api/class-wp-rest-server.php on line 1673

Warning: Cannot modify header information - headers already sent by (output started at /home/calcul9/public_html/wp-content/themes/suffusion/functions/media.php:580) in /home/calcul9/public_html/wp-includes/rest-api/class-wp-rest-server.php on line 1673

Warning: Cannot modify header information - headers already sent by (output started at /home/calcul9/public_html/wp-content/themes/suffusion/functions/media.php:580) in /home/calcul9/public_html/wp-includes/rest-api/class-wp-rest-server.php on line 1673

Warning: Cannot modify header information - headers already sent by (output started at /home/calcul9/public_html/wp-content/themes/suffusion/functions/media.php:580) in /home/calcul9/public_html/wp-includes/rest-api/class-wp-rest-server.php on line 1673

Warning: Cannot modify header information - headers already sent by (output started at /home/calcul9/public_html/wp-content/themes/suffusion/functions/media.php:580) in /home/calcul9/public_html/wp-includes/rest-api/class-wp-rest-server.php on line 1673

Warning: Cannot modify header information - headers already sent by (output started at /home/calcul9/public_html/wp-content/themes/suffusion/functions/media.php:580) in /home/calcul9/public_html/wp-includes/rest-api/class-wp-rest-server.php on line 1673
{"id":892,"date":"2011-01-16T13:04:14","date_gmt":"2011-01-16T19:04:14","guid":{"rendered":"http:\/\/www.calculatinginvestor.com\/"},"modified":"2011-04-27T09:13:19","modified_gmt":"2011-04-27T14:13:19","slug":"calculating-fama-french-loading","status":"publish","type":"page","link":"http:\/\/www.calculatinginvestor.com\/octave-code\/calculating-fama-french-loading\/","title":{"rendered":"Calculating the Fama-French Factor Loadings"},"content":{"rendered":"

Note: <\/strong>This page contains the data source links and source code used in my “Fama-French Factor Loadings for Popular ETFs<\/a>” post and my “Fundamental Indexing: Up and Running for 5 Years<\/a>” post.\u00a0 <\/em><\/p>\n

If you are looking for a detailed tutorial on how to run the Fama-French regressions using R, then check out my screencast here<\/a>.<\/em><\/p>\n

Data:\u00a0 <\/strong><\/p>\n

The data for the Fama-French factors and the Fama-French 25 Portfolios comes from the Kenneth French website<\/a>.\u00a0 I removed the header information\u00a0from these files, and I removed the extra data (everything except the monthly value weighted returns) from\u00a0text file for\u00a0the Fama-French 25 Portfolios. The data for the ETFs analyzed is downloaded automatically from Yahoo! Finance.\u00a0<\/p>\n

Code:<\/strong><\/p>\n

The Fama-French factor loadings for the ETFs were calculated using the R script shown here.\u00a0 This script can be used to calculate the Fama-French factor loadings for any mutual fund or stock by changing the ticker symbol used in the script.\u00a0 Also, the date ranges can be modified by adjusting the starting and ending year\/month in rows 8-11, and by modifying the starting date for the Yahoo! Finance query in line 25.<\/p>\n

It is useful to run the regression for a broad ETF or fund (such as SPY) after changing the date range. If the dates are aligned correctly, the R-squared should be close to 0.99 for a broad index. Also, if the date specified in the Yahoo! query is prior to the earliest date available then the regression results will be misaligned, and this will show up as an error in the output or a very low R-squared.<\/p>\n

A second script, written in Octave, is also listed below. This script is used to calculate the factor loadings and historical returns of the Fama-French 25 portfolios. This data is useful for comparing to the ETF regression results.<\/p>\n

As a supplement to the data provided in the post, I’ve also included the detailed regression results at the bottom of this post.<\/p>\n

R-Code<\/strong><\/p>\n

\r\n# Goal: Using data from Yahoo finance, estimate the Fama-French Factors for any security\r\n# using monthly returns\r\n\r\nlibrary(tseries)\r\n\r\n# Load FF factor returns\r\nstartyear = 2000;\r\nstartmonth = 11;\r\nendyear = 2010;\r\nendmonth = 10;\r\n\r\nstart = (startyear-1926.5)*12+startmonth;\r\nstop = (endyear - 1926.5)*12+endmonth;star\r\n\r\nff_returns = read.table("F-F_Factors_monthly.txt")\r\nrmrf = ff_returns[start:stop,2]\/100\r\nsmb = ff_returns[start:stop,3]\/100\r\nhml = ff_returns[start:stop,4]\/100\r\nrf = ff_returns[start:stop,5]\/100\r\n\r\n# Load Fund Data\r\nprices <- get.hist.quote("VTI", quote="Adj", start="2000-10-30", retclass="zoo")\r\nprices <- na.locf(prices)               # Copy last traded price when NA\r\n\r\n# To make weekly returns, you must have this incantation:\r\nmonthly.prices <- aggregate(prices, as.yearmon, tail, 1)\r\n\r\n# Convert monthly prices to monthly returns\r\nr <- diff(log(monthly.prices))\r\nr1 <- exp(r)-1\r\n\r\n# Now shift out of zoo to become an ordinary matrix --\r\nrj <- coredata(r1)\r\nrj <- rj[1:120]\r\nrjrf <- rj - rf\r\n\r\nd <- lm(rjrf ~ rmrf + smb + hml)               # FF model estimation.\r\nprint(summary(d))\r\n\r\n<\/pre>\n

Octave Code for Calculating Factor Loadings and Returns for Fama-French 25 Portfolios<\/strong><\/p>\n

\r\nclear all; % clear data from Octave\r\nclose all; % close all open plot windows\r\n\r\n% Load Fama-French Data\r\nff_data = load('25_Portfolios_5x5_monthly_2.txt');\r\n% Load FF Factor Mimicking Portfolios\r\nff_facts = load('F-F_Factors_monthly.txt');\r\n\r\n% Starting point changed to January 1932 to avoid missing data\r\nff_data = ff_data(67:end,:);   % start after NAs end\r\nff_facts = ff_facts(67:end-1,:); % start after NAs end, factors had one extra sample, so used end-1\r\n\r\n% Remove date column\r\nr = ff_data(:,2:end);\r\n% Remove date and risk free\r\nff3f = ff_facts(:,2:end);\r\n\r\n% Prompt for User Input to get plotting range\r\nstartyear = input('Enter Starting Year between 1932 and 2010: ')\r\nstartmonth = input('Enter Starting Month 1-12: ')\r\nendyear = input('Enter Ending Year between 1932 and 2010: ')\r\nendmonth = input('Enter Ending Month 1-12: ')\r\nplottitle = input('Enter Title for Plot: ','s')\r\n\r\n% Calculate starting and ending row\r\nstart = 12*(startyear - 1932) + startmonth;\r\nendpoint = 12*(endyear-1932) + endmonth;\r\n\r\n% Extract Desired Data\r\nr = r(start:endpoint,:);\r\nff3f = ff3f(start:endpoint,:);\r\nrmrf = ff3f(:,1)\/100;\r\nsmb = ff3f(:,2)\/100;\r\nhml = ff3f(:,3)\/100;\r\nrf = ff3f(:,4)\/100;\r\n\r\n% Run 25 Fama-French Regressions\r\nrx = r.\/100 - repmat(rf,1,25);\r\n\r\n% Run FF regressions on all portfolios\r\nK = 3\r\nT = size(rx,1)\r\nX = [ones(T,1) rmrf hml smb];\r\nb = X\\rx;\r\ne = rx-X*b;\r\nsigma = cov(e);\r\nu = rx-X*b;\r\ns2 = (T-1)\/(T-K-1)*var(u)';   % this is a vector of the variance of the errors\r\n\r\nmx = inv(X'*X);\r\ndmx = diag(mx); % we\u2019re interested in standard errors,\r\n\r\n% the diagonals of the covariance matrix of bs\r\nsiga = (s2*dmx(1)).^0.5;      % std err of alpha, beta\r\nsigb = (s2*dmx(2:end)').^0.5; % s2 is a column vector of 25. dmx\u2019 is a\r\n                              % row vector corresponding to factors.\r\n                              % this produces a matrix the same size as\r\n                              % the b coefficients.\r\nsig_beta = sigb(:,1);\r\nsig_h = sigb(:,2);\r\nsig_s = sigb(:,3);\r\n\r\nR2 = 1-s2.\/(std(rx).^2)';\r\n\r\n% Pull out the regression factors\r\nff_alpha = b(1,:);\r\nff_beta = b(2,:);\r\nh = b(3,:);\r\ns = b(4,:);\r\n\r\n% Calculate Arithmetic Mean for each of 25 portfolios over range\r\narithmeans = mean(r);\r\n\r\n% Calculate Geometric Mean for each of 25 portfolios over selected range\r\ngeoreturns = r.\/100 + 1;\r\ngeomeans = 100*(exp(mean(log(georeturns)))-1);\r\n\r\n% Select if Geometric or Arithmetic mean is used by adjusting comments\r\n%meanreturns = arithmeans;  % uncomment to use arithmetic means\r\nmeanreturns = geomeans;   % uncomment to use geometric means\r\n\r\n% Expand 5x5 data to 10x10 for use in surface plot function\r\nreturns = [meanreturns ; meanreturns];\r\nreturns = reshape(returns,10,5);\r\nreturns = [returns;returns]\r\nreturns = reshape(returns,10,10);\r\n\r\n% beta can be used for surface plot of beta\r\nbeta_ff = [ff_beta;ff_beta]\r\nbeta_ff = reshape(beta_ff,10,5);\r\nbeta_ff = [beta_ff;beta_ff];\r\nbeta_ff = reshape(beta_ff,10,10);\r\n\r\n% s; s_ff can be used for surface plot of size factor\r\ns_ff = [s;s]\r\ns_ff = reshape(s_ff,10,5);\r\ns_ff = [s_ff;s_ff];\r\ns_ff = reshape(s_ff,10,10);\r\n\r\n% h; h_ff can be used for surface plot of value factor\r\nh_ff = [h;h]\r\nh_ff = reshape(h_ff,10,5);\r\nh_ff = [h_ff;h_ff];\r\nh_ff = reshape(h_ff,10,10);\r\n\r\n% Define x and y values\r\nx = [0 0.999 1 1.999 2 2.999 3 3.999 4 5];\r\ny = [0 0.999 1 1.999 2 2.999 3 3.999 4 5];\r\n\r\n% Create x-y mesh for surface plot\r\n[xx,yy] = meshgrid(x,y);\r\n\r\n% Generate Plot\r\nsurf(xx,yy,returns)\r\nxlabel('Size','fontsize',20)\r\nylabel('Value','fontsize',20)\r\n%zlabel('Arithmetic Average Monthly Return (%)','rotation',90,'fontsize',20)\r\n%zlabel('Geometric Average Monthly Return (%)','rotation',90,'fontsize',20)\r\ntitle(plottitle,'fontsize',36)\r\naxis([0 5 0 5 min(0,min(meanreturns)-.1) max(2,max(meanreturns)+0.01)])\r\n\r\n% Size Lables for corner portfolios\r\nline([4.5 4.5],[0.5 0.5],[meanreturns(21) meanreturns(21)+0.1])\r\ntext(4.5,0.5,meanreturns(21)+0.15,'LG','horizontalalignment','center','fontsize',18)\r\nline([4.5 4.5],[4.5 4.5],[meanreturns(25) meanreturns(25)+0.1])\r\ntext(4.5,4.5,meanreturns(25)+0.15,'LV','horizontalalignment','center','fontsize',18)\r\nline([0.5 0.5],[4.5 4.5],[meanreturns(5) meanreturns(5)+0.1])\r\ntext(0.5,4.5,meanreturns(5)+0.15,'SV','horizontalalignment','center','fontsize',18)\r\nline([0.5 0.5],[0.5 0.5],[meanreturns(1) meanreturns(1)+0.1])\r\ntext(0.5,0.5,meanreturns(1)+0.15,'SG','horizontalalignment','center','fontsize',18)\r\n\r\n% ETFs\r\nline([4.55 4.55],[1.1 1.1],[meanreturns(22) meanreturns(22)+0.15])\r\ntext(4.55,1.1,meanreturns(22)+0.18,'SPY','horizontalalignment','center','fontsize',18)\r\n\r\nline([4.75 4.75],[1.25 1.25],[meanreturns(22) meanreturns(22)+0.1])\r\ntext(4.75,1.25,meanreturns(22)+0.15,'DIA','horizontalalignment','center','fontsize',18)\r\n\r\nline([3.5 3.5],[0.1 0.1],[meanreturns(16) meanreturns(16)+0.1])\r\ntext(3.5,0.1,meanreturns(16)+0.15,'QQQQ','horizontalalignment','center','fontsize',18)\r\n\r\nline([4.5 4.5],[1.5 1.5],[meanreturns(22) meanreturns(22)+0.18])\r\ntext(4.50,1.5,meanreturns(22)+0.2,'IVE*','horizontalalignment','center','fontsize',18)\r\n\r\nline([1.6 1.6],[1.7 1.7],[meanreturns(7) meanreturns(7)+0.25])\r\ntext(1.6,1.7,meanreturns(7)+0.3,'IWM*','horizontalalignment','center','fontsize',18)\r\n\r\nline([1.7 1.7],[3.55 3.55],[meanreturns(9) meanreturns(9)+0.1])\r\ntext(1.7,3.55,meanreturns(9)+0.15,'IWN','horizontalalignment','center','fontsize',18)\r\n\r\nline([1.65 1.65],[1.85 1.85],[meanreturns(7) meanreturns(7)+0.1])\r\ntext(1.65,1.85,meanreturns(7)+0.15,'IJR','horizontalalignment','center','fontsize',18)\r\n\r\nline([1.6 1.6],[2.85 2.85],[meanreturns(8) meanreturns(8)+0.1])\r\ntext(1.6,2.85,meanreturns(8)+0.15,'IJS','horizontalalignment','center','fontsize',18)\r\n\r\nline([2.9 2.9],[4.6 4.6],[meanreturns(15) meanreturns(15)+0.1])\r\ntext(2.9,4.6,meanreturns(15)+0.15,'IYR','horizontalalignment','center','fontsize',18)\r\n\r\nline([3.4 3.4],[1.25 1.25],[meanreturns(19) meanreturns(19)+0.1])\r\ntext(3.4,1.25,meanreturns(19)+0.15,'MDY','horizontalalignment','center','fontsize',18)\r\n\r\n% Color range set from 0 to 1.6 rather than allowing autoscale.\r\n% This is done for easier comparison between plots, but colors will\r\n% max out for values above 1.6 or below 0.\r\n% For arithmetic averages, I think a range of 0 to 2 works better\r\ncaxis([0 1.6]);\r\nview(50, 25);\r\n% top view\r\n%view(270,90);\r\nreplot\r\n\r\n<\/pre>\n

Regression Result Details:<\/strong><\/p>\n

ETF Regressions (10-yr Monthly; November 2000 thru October 2010):<\/strong><\/p>\n

SPY:<\/strong><\/p>\n

\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Estimate Std. Error t value Pr(>|t|)\u00a0\u00a0\u00a0<\/p>\n

(Intercept) -0.0008725\u00a0 0.0005321\u00a0 -1.640\u00a0\u00a0\u00a0 0.104\u00a0\u00a0\u00a0<\/p>\n

rmrf\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 0.9620172\u00a0 0.0110702\u00a0 86.901\u00a0 < 2e-16 ***<\/p>\n

smb\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 -0.1292276\u00a0 0.0200597\u00a0 -6.442 2.78e-09 ***<\/p>\n

hml\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 0.0120373\u00a0 0.0157662\u00a0\u00a0 0.763\u00a0\u00a0\u00a0 0.447\u00a0\u00a0\u00a0<\/p>\n

—\u00a0<\/p>\n

Residual standard error: 0.005643 on 116 degrees of freedom<\/p>\n

Multiple R-squared: 0.9862,\u00a0\u00a0\u00a0\u00a0 Adjusted R-squared: 0.9858<\/p>\n

F-statistic:\u00a0 2763 on 3 and 116 DF,\u00a0 p-value: < 2.2e-16<\/p>\n

DIA:<\/strong><\/p>\n

\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Estimate Std. Error t value Pr(>|t|)\u00a0\u00a0\u00a0<\/p>\n

(Intercept)\u00a0 0.0009774\u00a0 0.0013106\u00a0\u00a0 0.746\u00a0 0.45730\u00a0\u00a0\u00a0<\/p>\n

rmrf\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 0.8925274\u00a0 0.0272691\u00a0 32.730\u00a0 < 2e-16 ***<\/p>\n

smb\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 -0.2162676\u00a0 0.0494128\u00a0 -4.377 2.65e-05 ***<\/p>\n

hml\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 0.1189867\u00a0 0.0388367\u00a0\u00a0 3.064\u00a0 0.00272 **<\/p>\n

—<\/p>\n

Residual standard error: 0.0139 on 116 degrees of freedom<\/p>\n

Multiple R-squared: 0.9074,\u00a0\u00a0\u00a0\u00a0 Adjusted R-squared: 0.905<\/p>\n

F-statistic: 378.7 on 3 and 116 DF,\u00a0 p-value: < 2.2e-16<\/p>\n

QQQQ:<\/strong><\/p>\n

\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Estimate Std. Error t value Pr(>|t|)\u00a0\u00a0\u00a0<\/p>\n

(Intercept)\u00a0 0.0005339\u00a0 0.0021967\u00a0\u00a0 0.243\u00a0 0.80839\u00a0\u00a0\u00a0<\/p>\n

rmrf\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1.3260511\u00a0 0.0457057\u00a0 29.013\u00a0 < 2e-16 ***<\/p>\n

smb\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 0.2930439\u00a0 0.0828208\u00a0\u00a0 3.538\u00a0 0.00058 ***<\/p>\n

hml\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 -0.9161538\u00a0 0.0650942 -14.074\u00a0 < 2e-16 ***<\/p>\n

—<\/p>\n

Residual standard error: 0.0233 on 116 degrees of freedom<\/p>\n

Multiple R-squared: 0.9196,\u00a0\u00a0\u00a0\u00a0 Adjusted R-squared: 0.9175<\/p>\n

F-statistic: 442.3 on 3 and 116 DF,\u00a0 p-value: < 2.2e-16<\/p>\n

IVE:<\/strong><\/p>\n

\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Estimate Std. Error t value Pr(>|t|)\u00a0\u00a0\u00a0<\/p>\n

(Intercept) -0.0020639\u00a0 0.0009668\u00a0 -2.135\u00a0\u00a0 0.0349 *\u00a0<\/p>\n

rmrf\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 0.9947619\u00a0 0.0201148\u00a0 49.454\u00a0 < 2e-16 ***<\/p>\n

smb\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 -0.0528948\u00a0 0.0364488\u00a0 -1.451\u00a0\u00a0 0.1494\u00a0\u00a0\u00a0<\/p>\n

hml\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 0.2691649\u00a0 0.0286475\u00a0\u00a0 9.396 6.19e-16 ***<\/p>\n

—<\/p>\n

Residual standard error: 0.01025 on 116 degrees of freedom<\/p>\n

Multiple R-squared: 0.9601,\u00a0\u00a0\u00a0\u00a0 Adjusted R-squared: 0.9591<\/p>\n

F-statistic: 931.3 on 3 and 116 DF,\u00a0 p-value: < 2.2e-16<\/p>\n

IWM:<\/strong><\/p>\n

\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Estimate Std. Error t value Pr(>|t|)\u00a0\u00a0\u00a0<\/p>\n

(Intercept) -0.0019862\u00a0 0.0008238\u00a0 -2.411\u00a0\u00a0 0.0175 *\u00a0<\/p>\n

rmrf\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a00.9759772\u00a0 0.0171401\u00a0 56.941\u00a0 < 2e-16 ***<\/p>\n

smb\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 0.8246550\u00a0 0.0310586\u00a0 26.552\u00a0 < 2e-16 ***<\/p>\n

hml\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 0.1899842\u00a0 0.0244109\u00a0\u00a0 7.783 3.25e-12 ***<\/p>\n

—<\/p>\n

Residual standard error: 0.008737 on 116 degrees of freedom<\/p>\n

Multiple R-squared: 0.9804,\u00a0\u00a0\u00a0\u00a0 Adjusted R-squared: 0.9799<\/p>\n

F-statistic:\u00a0 1935 on 3 and 116 DF,\u00a0 p-value: < 2.2e-16<\/p>\n

IWN:<\/strong><\/p>\n

\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Estimate Std. Error t value Pr(>|t|)\u00a0\u00a0\u00a0<\/p>\n

(Intercept) -0.001577\u00a0\u00a0 0.001138\u00a0 -1.386\u00a0\u00a0\u00a0 0.169\u00a0\u00a0\u00a0<\/p>\n

rmrf\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 0.876021\u00a0\u00a0 0.023686\u00a0 36.984\u00a0\u00a0 <2e-16 ***<\/p>\n

smb\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 0.756015\u00a0\u00a0 0.042920\u00a0 17.614\u00a0\u00a0 <2e-16 ***<\/p>\n

hml\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 0.606810\u00a0\u00a0 0.033734\u00a0 17.988\u00a0\u00a0 <2e-16 ***<\/p>\n

—<\/p>\n

Residual standard error: 0.01207 on 116 degrees of freedom<\/p>\n

Multiple R-squared: 0.9588,\u00a0\u00a0\u00a0\u00a0 Adjusted R-squared: 0.9577<\/p>\n

F-statistic:\u00a0\u00a0 899 on 3 and 116 DF,\u00a0 p-value: < 2.2e-16<\/p>\n

IJR:<\/strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/p>\n

(Intercept) -0.001384\u00a0\u00a0 0.001156\u00a0 -1.197\u00a0\u00a0\u00a0 0.234\u00a0\u00a0\u00a0<\/p>\n

rmrf\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 0.913679\u00a0\u00a0 0.024063\u00a0 37.971\u00a0 < 2e-16 ***<\/p>\n

smb\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 0.795130\u00a0\u00a0 0.043603\u00a0 18.236\u00a0 < 2e-16 ***<\/p>\n

hml\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 0.301977\u00a0\u00a0 0.034270\u00a0\u00a0 8.812 1.43e-14 ***<\/p>\n

—<\/p>\n

Residual standard error: 0.01227 on 116 degrees of freedom<\/p>\n

Multiple R-squared: 0.958,\u00a0\u00a0\u00a0\u00a0\u00a0 Adjusted R-squared: 0.957<\/p>\n

F-statistic: 882.8 on 3 and 116 DF,\u00a0 p-value: < 2.2e-16<\/p>\n

IJS:<\/strong><\/p>\n

(Intercept) -0.001711\u00a0\u00a0 0.001294\u00a0 -1.322\u00a0\u00a0\u00a0 0.189\u00a0\u00a0\u00a0<\/p>\n

rmrf\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 0.914892\u00a0\u00a0 0.026932\u00a0 33.971\u00a0\u00a0 <2e-16 ***<\/p>\n

smb\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 0.845430\u00a0\u00a0 0.048802\u00a0 17.324\u00a0\u00a0 <2e-16 ***<\/p>\n

hml\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 0.483571\u00a0\u00a0 0.038356\u00a0 12.607\u00a0\u00a0 <2e-16 ***<\/p>\n

—<\/p>\n

Residual standard error: 0.01373 on 116 degrees of freedom<\/p>\n

Multiple R-squared: 0.9511,\u00a0\u00a0\u00a0\u00a0 Adjusted R-squared: 0.9499<\/p>\n

F-statistic: 752.7 on 3 and 116 DF,\u00a0 p-value: < 2.2e-16<\/p>\n

IYR:<\/strong><\/p>\n

\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Estimate Std. Error t value Pr(>|t|)\u00a0\u00a0\u00a0<\/p>\n

(Intercept) 0.0007802\u00a0 0.0039314\u00a0\u00a0 0.198\u00a0\u00a0 0.8430\u00a0\u00a0\u00a0<\/p>\n

rmrf\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 0.9250019\u00a0 0.0817982\u00a0 11.308\u00a0 < 2e-16 ***<\/p>\n

smb\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 0.4062537\u00a0 0.1482219\u00a0\u00a0 2.741\u00a0\u00a0 0.0071 **<\/p>\n

hml\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 0.8909395\u00a0 0.1164971\u00a0\u00a0 7.648 6.54e-12 ***<\/p>\n

—<\/p>\n

Residual standard error: 0.04169 on 116 degrees of freedom<\/p>\n

Multiple R-squared: 0.6629,\u00a0\u00a0\u00a0\u00a0 Adjusted R-squared: 0.6542<\/p>\n

F-statistic: 76.05 on 3 and 116 DF,\u00a0 p-value: < 2.2e-16<\/p>\n

MDY:<\/strong><\/p>\n

\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Estimate Std. Error t value Pr(>|t|)\u00a0\u00a0\u00a0<\/p>\n

(Intercept) 0.0009243\u00a0 0.0011596\u00a0\u00a0 0.797\u00a0\u00a0\u00a0 0.427\u00a0\u00a0\u00a0<\/p>\n

rmrf\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 0.9659343\u00a0 0.0241262\u00a0 40.037\u00a0 < 2e-16 ***<\/p>\n

smb\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 0.3705806\u00a0 0.0437178\u00a0\u00a0 8.477 8.49e-14 ***<\/p>\n

hml\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 0.1572083\u00a0 0.0343607\u00a0\u00a0 4.575 1.20e-05 ***<\/p>\n

—<\/p>\n

Residual standard error: 0.0123 on 116 degrees of freedom<\/p>\n

Multiple R-squared: 0.9501,\u00a0\u00a0\u00a0\u00a0 Adjusted R-squared: 0.9488<\/p>\n

F-statistic: 736.8 on 3 and 116 DF,\u00a0 p-value: < 2.2e-16<\/p>\n

Fama-French 25 Portfolios – Regression Results (Nov. 2000 – October 2010)<\/strong><\/p>\n

\n\n\n\t\n\t\t\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t
ALPHA<\/th>Growth<\/th>2<\/th>3<\/th>4<\/th>Value<\/th>\n\t<\/tr>\n<\/thead>\n
Small<\/td>-0.68%<\/td>-0.05%<\/td>0.01%<\/td>0.02%<\/td>0.16%<\/td>\n\t<\/tr>\n\t
2<\/td>-0.22%<\/td>0.03%<\/td>0.18%<\/td>-0.09%<\/td>-0.30%<\/td>\n\t<\/tr>\n\t
3<\/td>-0.08%<\/td>0.11%<\/td>0.30%<\/td>0.17%<\/td>0.37%<\/td>\n\t<\/tr>\n\t
4<\/td>0.17%<\/td>0.20%<\/td>0.01%<\/td>0.15%<\/td>-0.09%<\/td>\n\t<\/tr>\n\t
Large<\/td>0.04%<\/td>0.12%<\/td>-0.11%<\/td>-0.27%<\/td>-0.18%<\/td>\n\t<\/tr>\n<\/tbody>\n<\/table>\n\r\n\r\n\n\n\n\t\n\t\t\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t
ALPHA (t-stat)<\/th>Growth<\/th>2<\/th>3<\/th>4<\/th>Value<\/th>\n\t<\/tr>\n<\/thead>\n
Small<\/td>-2.41<\/td>-0.28<\/td>0.07<\/td>0.16<\/td>0.96<\/td>\n\t<\/tr>\n\t
2<\/td>-1.42<\/td>0.17<\/td>1.36<\/td>-0.67<\/td>-2.06<\/td>\n\t<\/tr>\n\t
3<\/td>-0.58<\/td>0.71<\/td>1.83<\/td>0.88<\/td>1.69<\/td>\n\t<\/tr>\n\t
4<\/td>1.40<\/td>1.28<\/td>0.03<\/td>0.75<\/td>-0.43<\/td>\n\t<\/tr>\n\t
Large<\/td>0.41<\/td>0.86<\/td>-0.69<\/td>-2.06<\/td>-0.68<\/td>\n\t<\/tr>\n<\/tbody>\n<\/table>\n\r\n\r\n\n\n\n\t\n\t\t\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t
BETA<\/th>Growth<\/th>2<\/th>3<\/th>4<\/th>Value<\/th>\n\t<\/tr>\n<\/thead>\n
Small<\/td>1.18<\/td>0.98<\/td>0.83<\/td>0.77<\/td>0.98<\/td>\n\t<\/tr>\n\t
2<\/td>1.09<\/td>0.90<\/td>0.84<\/td>0.88<\/td>1.04<\/td>\n\t<\/tr>\n\t
3<\/td>1.09<\/td>0.96<\/td>0.89<\/td>0.93<\/td>0.97<\/td>\n\t<\/tr>\n\t
4<\/td>1.06<\/td>0.96<\/td>1.02<\/td>0.98<\/td>1.11<\/td>\n\t<\/tr>\n\t
Large<\/td>0.95<\/td>0.86<\/td>0.90<\/td>0.90<\/td>1.07<\/td>\n\t<\/tr>\n<\/tbody>\n<\/table>\n\r\n\r\n\n\n\n\t\n\t\t\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t
BETA (t-stat)<\/th>Growth<\/th>2<\/th>3<\/th>4<\/th>Value<\/th>\n\t<\/tr>\n<\/thead>\n
Small<\/td>20.003<\/td>28.263<\/td>27.927<\/td>24.682<\/td>28.526<\/td>\n\t<\/tr>\n\t
2<\/td>33.474<\/td>26.726<\/td>30.813<\/td>31.303<\/td>33.793<\/td>\n\t<\/tr>\n\t
3<\/td>40.148<\/td>29.188<\/td>25.975<\/td>22.508<\/td>21.314<\/td>\n\t<\/tr>\n\t
4<\/td>41.506<\/td>29.263<\/td>24.257<\/td>23.706<\/td>26.411<\/td>\n\t<\/tr>\n\t
Large<\/td>52.533<\/td>30.54<\/td>28.014<\/td>33.053<\/td>19.277<\/td>\n\t<\/tr>\n<\/tbody>\n<\/table>\n\r\n\r\n\n\n\n\t\n\t\t\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t
h<\/th>Growth<\/th>2<\/th>3<\/th>4<\/th>Value<\/th>\n\t<\/tr>\n<\/thead>\n
Small<\/td>-0.38<\/td>0.03<\/td>0.34<\/td>0.52<\/td>0.72<\/td>\n\t<\/tr>\n\t
2<\/td>-0.37<\/td>0.16<\/td>0.43<\/td>0.58<\/td>0.90<\/td>\n\t<\/tr>\n\t
3<\/td>-0.45<\/td>0.16<\/td>0.41<\/td>0.58<\/td>0.68<\/td>\n\t<\/tr>\n\t
4<\/td>-0.38<\/td>0.27<\/td>0.45<\/td>0.54<\/td>0.83<\/td>\n\t<\/tr>\n\t
Large<\/td>-0.28<\/td>0.20<\/td>0.30<\/td>0.56<\/td>0.60<\/td>\n\t<\/tr>\n<\/tbody>\n<\/table>\n\r\n\r\n\n\n\n\t\n\t\t\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t
h (t-stat)<\/th>Growth<\/th>2<\/th>3<\/th>4<\/th>Value<\/th>\n\t<\/tr>\n<\/thead>\n
Small<\/td>-4.52<\/td>0.61<\/td>8.08<\/td>11.65<\/td>14.77<\/td>\n\t<\/tr>\n\t
2<\/td>-7.91<\/td>3.25<\/td>10.96<\/td>14.29<\/td>20.67<\/td>\n\t<\/tr>\n\t
3<\/td>-11.55<\/td>3.47<\/td>8.28<\/td>9.83<\/td>10.51<\/td>\n\t<\/tr>\n\t
4<\/td>-10.31<\/td>5.78<\/td>7.53<\/td>9.17<\/td>13.87<\/td>\n\t<\/tr>\n\t
Large<\/td>-10.96<\/td>5.04<\/td>6.59<\/td>14.36<\/td>7.59<\/td>\n\t<\/tr>\n<\/tbody>\n<\/table>\n\r\n\r\n\n\n\n\t\n\t\t\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t
s<\/th>Growth<\/th>2<\/th>3<\/th>4<\/th>Value<\/th>\n\t<\/tr>\n<\/thead>\n
Small<\/td>1.18<\/td>1.07<\/td>0.94<\/td>0.98<\/td>1.06<\/td>\n\t<\/tr>\n\t
2<\/td>1.01<\/td>0.98<\/td>0.92<\/td>0.89<\/td>1.12<\/td>\n\t<\/tr>\n\t
3<\/td>0.74<\/td>0.57<\/td>0.47<\/td>0.43<\/td>0.66<\/td>\n\t<\/tr>\n\t
4<\/td>0.45<\/td>0.32<\/td>0.28<\/td>0.28<\/td>0.19<\/td>\n\t<\/tr>\n\t
Large<\/td>-0.19<\/td>-0.12<\/td>-0.02<\/td>-0.10<\/td>-0.23<\/td>\n\t<\/tr>\n<\/tbody>\n<\/table>\n\r\n\r\n\n\n\n\t\n\t\t\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t
s (t-stat)<\/th>Growth<\/th>2<\/th>3<\/th>4<\/th>Value<\/th>\n\t<\/tr>\n<\/thead>\n
Small<\/td>11.11<\/td>17.09<\/td>17.53<\/td>17.47<\/td>17.08<\/td>\n\t<\/tr>\n\t
2<\/td>17.15<\/td>16.12<\/td>18.43<\/td>17.47<\/td>20.16<\/td>\n\t<\/tr>\n\t
3<\/td>14.96<\/td>9.57<\/td>7.61<\/td>5.76<\/td>7.98<\/td>\n\t<\/tr>\n\t
4<\/td>9.63<\/td>5.37<\/td>3.66<\/td>3.80<\/td>2.49<\/td>\n\t<\/tr>\n\t
Large<\/td>-5.95<\/td>-2.40<\/td>-0.32<\/td>-2.08<\/td>-2.29<\/td>\n\t<\/tr>\n<\/tbody>\n<\/table>\n\r\n\r\n\n\n\n\t\n\t\t\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t
R2<\/th>Growth<\/th>2<\/th>3<\/th>4<\/th>Value<\/th>\n\t<\/tr>\n<\/thead>\n
Small<\/td>0.87<\/td>0.95<\/td>0.96<\/td>0.96<\/td>0.96<\/td>\n\t<\/tr>\n\t
2<\/td>0.93<\/td>0.93<\/td>0.92<\/td>0.91<\/td>0.90<\/td>\n\t<\/tr>\n\t
3<\/td>0.93<\/td>0.94<\/td>0.90<\/td>0.87<\/td>0.88<\/td>\n\t<\/tr>\n\t
4<\/td>0.93<\/td>0.95<\/td>0.87<\/td>0.87<\/td>0.92<\/td>\n\t<\/tr>\n\t
Large<\/td>0.94<\/td>0.96<\/td>0.87<\/td>0.89<\/td>0.79<\/td>\n\t<\/tr>\n<\/tbody>\n<\/table>\n<\/pre>\n","protected":false},"excerpt":{"rendered":"

Note: This page contains the data source links and source code used in my “Fama-French Factor Loadings for Popular ETFs” post and my “Fundamental Indexing: Up and Running for 5 Years” post.\u00a0 If you are looking for a detailed tutorial on how to run the Fama-French regressions using R, then check out my screencast here. […]<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":145,"menu_order":0,"comment_status":"open","ping_status":"open","template":"","meta":[],"_links":{"self":[{"href":"http:\/\/www.calculatinginvestor.com\/wp-json\/wp\/v2\/pages\/892"}],"collection":[{"href":"http:\/\/www.calculatinginvestor.com\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/www.calculatinginvestor.com\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/www.calculatinginvestor.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.calculatinginvestor.com\/wp-json\/wp\/v2\/comments?post=892"}],"version-history":[{"count":31,"href":"http:\/\/www.calculatinginvestor.com\/wp-json\/wp\/v2\/pages\/892\/revisions"}],"predecessor-version":[{"id":916,"href":"http:\/\/www.calculatinginvestor.com\/wp-json\/wp\/v2\/pages\/892\/revisions\/916"}],"up":[{"embeddable":true,"href":"http:\/\/www.calculatinginvestor.com\/wp-json\/wp\/v2\/pages\/145"}],"wp:attachment":[{"href":"http:\/\/www.calculatinginvestor.com\/wp-json\/wp\/v2\/media?parent=892"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}